Skip to content

[2026春季][T2-2-1]ChaoticLuna#188

Open
ChaoticLuna wants to merge 13 commits into
InfiniTensor:masterfrom
ChaoticLuna:2026-spring-ChaoticLuna-T2-2-1
Open

[2026春季][T2-2-1]ChaoticLuna#188
ChaoticLuna wants to merge 13 commits into
InfiniTensor:masterfrom
ChaoticLuna:2026-spring-ChaoticLuna-T2-2-1

Conversation

@ChaoticLuna

@ChaoticLuna ChaoticLuna commented Jul 12, 2026

Copy link
Copy Markdown

Generator_抽象赛题报告.pdf
HONOR_CODE.md
REFERENCE.md

2026 春季人工智能大赛赛题报告

1. 总体架构

实现由四层组成:

  • 抽象层: Generator 句柄与 GeneratorImpl 多态接口,统一管理 seed、state、device 和 mutex;
  • 后端层: CPUGeneratorImpl 管理 std::mt19937 状态,CUDAGeneratorImpl 管理 Philox seed/subsequence;
  • 默认状态层: CPU 维护全局默认 Generator,CUDA 按 device 维护独立默认 Generator,manual_seed(uint64_t) 统一重置默认状态;
  • 算子层: UniformNormalKaimingUniformRandRandn 和普通 Dropout 接收显式 Generator,缺省时使用目标设备默认 Generator。

CPU/CUDA 随机分布与 Dropout 支持 FLOAT16BFLOAT16FLOAT32FLOAT64。当前不覆盖 AlphaDropout、FeatureDropout、inplace Dropout 和 CUDA Graph RNG 状态管理。

2. Generator / GeneratorImpl 模块

本章介绍随机数基础设施的核心抽象,包括 Generator Handle、GeneratorImpl 多态接口、默认 Generator 管理及辅助接口,并分析其与 PyTorch Generator 的接口语义关系。该模块主要完成以下内容:

  • Generator Handle 与 GeneratorImpl 多态架构;
  • Generator 生命周期、seed 与 state 管理;
  • CPU/CUDA 默认 Generator 管理;
  • 工厂函数、类型检查和默认选择辅助接口;
  • Generator 与 PyTorch 接口语义对齐分析。

2.1. 实现概述与接口对齐说明

Generator 模块负责随机数系统的状态管理,不直接绑定某一种随机算法。整体职责如下:

  • Generator:用户侧可持有的轻量句柄,对外提供统一的 seed、state、device 与 clone 接口;
  • GeneratorImpl:后端实现的抽象基类,定义统一随机数状态接口;
  • CPUGeneratorImpl / CUDAGeneratorImpl:CPU 与 CUDA 后端的具体实现;
  • Default Generator:维护 CPU 全局状态和各 CUDA 设备的独立默认状态;
  • 工厂与辅助接口:负责 Generator 创建、默认 Generator 获取、后端检查和显式/默认 Generator 选择。

随机算子不直接依赖 std::mt19937curand 或 Philox 的实现细节,而是先接收可选的 Generator 句柄,再由 get_generator_or_default 解析为对应后端实现。未传入 Generator 时,算子根据目标 Tensor 的设备选择默认 Generator;显式传入时优先使用用户指定状态。这使随机数消费者与底层随机数生成器解耦,也为后续接入其他设备后端预留了扩展位置。

相关核心实现在以下文件中:

  • infini_train/include/generator.h
  • infini_train/src/generator.cc
  • infini_train/src/core/runtime/cpu/cpu_generator_impl.{h,cc}
  • infini_train/src/core/runtime/cuda/cuda_generator_impl.{h,cc}

Generator 持有 std::shared_ptr<GeneratorImpl>。复制 Generator 时复制的是句柄,两个句柄共享同一个随机状态;需要独立状态时使用 clone() 深拷贝 Impl。默认构造的 Generator 为 undefined 状态,与 PyTorch at::Generator 的默认构造语义一致,不能作为已初始化的随机源使用。

2.2. 状态与线程安全设计

seed 用于初始化随机序列,state 则表示随机序列已经推进到的位置。一次随机算子调用会推进 Generator 的内部状态,因此连续调用不会重复得到同一段随机序列;通过保存并恢复 state,可以准确重放保存点之后的随机结果。

GeneratorImpl 提供 mutex_。CPU 随机 kernel 在整个生成循环期间持锁;CUDA kernel 在预留 Philox subsequence 时持锁,随后将 seed 和 subsequence 作为 kernel 参数传入设备端。全局 manual_seed 也会在重置默认状态时持锁。该策略遵循 PyTorch 的调用方持锁惯例:Generator 不承诺所有公开状态操作自动线程安全,调用方在需要组合多个状态读写操作时可通过 Generator::mutex() 建立临界区。

2.3. 默认 Generator 与全局种子

CPU 后端通过 getDefaultCPUGenerator() 返回进程内唯一的默认 CPU Generator。CUDA 后端通过 getDefaultCUDAGenerator(device_index) 返回指定设备的默认 Generator,每个设备对应独立状态来源。默认 Generator 首次获取时使用非确定性随机种子初始化,后续获取同一设备时返回同一状态来源。

框架级 manual_seed(uint64_t seed) 依次重置 CPU 默认 Generator 和所有可用 CUDA 设备的默认 Generator。这样,参数初始化、Rand/Randn 和 Dropout 在相同 seed、相同设备、相同调用顺序下可以稳定复现。

2.4. 与 PyTorch 的对齐与差异

基本一致的行为如下:

  • Handle 与 Impl 分层,Generator 句柄共享底层状态;
  • set_current_seedcurrent_seedseedget_stateset_statedeviceclone 的职责一致;
  • 默认 CPU Generator 为全局状态,CUDA 默认 Generator 按设备维护;
  • 显式 Generator 优先,未传入时选择默认 Generator;
  • Generator 类型不匹配时拒绝将 CPU Generator 用于 CUDA 后端,或反向使用;
  • 随机状态访问采用公开 mutex、调用方在状态操作处持锁的方式。

当前未完全对齐的部分如下:

  1. 智能指针类型不同。InfiniTrain 使用 std::shared_ptr,PyTorch 使用 c10::intrusive_ptr,因此没有 PyTorch 中 unsafeReleaseGeneratorImpl() 一类的所有权转移接口。
  2. CPU state 的内部格式不同。InfiniTrain 基于 std::mt19937 的流序列化结果和正态缓存构造 UINT8 Tensor state;该格式可在同一构建环境恢复,但不承诺跨标准库实现或跨编译器版本稳定。
  3. 当前未实现 PyTorch 的 CUDA Graph graph-safe state 接口。CUDA Graph 尚未进入框架范围,因而没有 graphsafe_get_state()graphsafe_set_state() 及 capture 专属随机状态。
  4. 未实现 PyTorch 的全部随机分布、全部随机算子和全部 Dropout 变体。

3. CPU 后端、CUDA 后端与随机算子接入

本章介绍 CPU Generator 与 CUDA Generator 的状态组织、随机数消费方式,以及初始化和训练期随机算子如何接入统一 Generator 接口。CPU 与 CUDA 共享 Generator 抽象,但不要求同一 seed 下产生逐元素一致的随机值。

3.1. 后端设计概览

能力 CPU Generator CUDA Generator
底层状态 std::mt19937 engine 与正态缓存 seed 与 Philox subsequence
随机数消费位置 CPU host kernel CUDA device kernel
默认 Generator 进程内全局实例 每个 CUDA device 一个实例
state 保存恢复 支持 支持
连续状态推进 engine 每次取样推进 每次 kernel 预留 subsequence
设备随机 kernel CPU distribution kernel curandStatePhilox4_32_10_t kernel

3.2. CPU Generator 实现

CPU 后端使用 std::mt19937 作为核心随机引擎。CPUGeneratorImpl 保存初始 seed、Mersenne Twister engine 状态,以及 float/double 正态分布的 Box-Muller 缓存样本。重设 seed 时会清空两种正态缓存并重新初始化 engine,避免旧缓存影响新序列。

CPU 分布 kernel 使用 uniform_real_distributionnormal_distribution 辅助实现。Uniform 会通过 random()random64() 取原始随机比特并映射至目标区间;Normal 使用 Box-Muller 变换,在可用时保存第二个样本以减少随机数消耗。该设计确保 Normal 的缓存也会被 state 保存和恢复。

CPU state 以 CPU UINT8 Tensor 返回。set_state 会检查 state 的 device、dtype、最小长度、缓存标志以及 std::mt19937 反序列化结果;全部验证通过后才更新 Generator,避免部分非法输入损坏原状态。

3.2.1. 与 PyTorch 基本一致的行为

  • 都使用 Mersenne Twister 系列随机引擎;
  • 支持 seed 重设、非确定性 seed、默认 Generator、clone 与 state 恢复;
  • Normal 的缓存属于 Generator 状态的一部分,重设 seed 时会清空缓存;
  • CPU 随机 kernel 在使用 engine 时持有 Generator mutex。

3.2.2. 与 PyTorch 的差异

  • PyTorch 使用自行实现的 at::mt19937,而当前实现使用 C++ 标准库的 std::mt19937
  • PyTorch 的 CPU state 是稳定的内部 POD 表示,当前 CPU state 使用标准库流序列化,因此跨构建兼容性较弱;
  • CPU 端没有公开的 offset 接口。CPU engine 按抽样推进内部状态,外部无需直接操作 offset。

3.3. CUDA Generator 实现

CUDA Generator 保持与 CPU 相同的 seed/state/clone/device 接口,但内部状态采用适合并行 kernel 的 Philox 模型。CUDAGeneratorImpl 保存 seed_next_philox_subsequence_。每次 Uniform、Normal 或 Dropout CUDA kernel 启动前,主机端在 mutex 保护下为该调用预留一段 subsequence;kernel 中每个元素由 seed + subsequence + index 初始化独立的 curandStatePhilox4_32_10_t 状态。

这种方式避免了不同 kernel 调用重复使用同一随机序列区间,也不会要求 GPU kernel 修改共享 Generator 对象。CUDA state 由 seed 和 subsequence 构成,并以 CPU UINT8 Tensor 保存;恢复 state 后,后续 CUDA 随机调用会从相同 subsequence 继续执行。

3.3.1. 与 PyTorch 基本一致的行为

  • CUDA 默认 Generator 按 device 维护,彼此状态独立;
  • seed 与 Philox counter/subsequence 共同表示 CUDA RNG 的推进状态;
  • 支持显式 seed、非确定性 seed、state 保存恢复与 clone;
  • CUDA kernel 在设备端使用 Philox/curand 状态生成随机数;
  • 同一 seed、同一设备和同一调用顺序下可复现。

3.3.2. 暂未对齐的语义及原因

  • PyTorch 使用共享的 CUDAGeneratorState 管理更复杂的 CUDA Graph capture 状态;当前实现仅维护 Generator 私有 seed/subsequence 状态;
  • 未实现 PyTorch 对 CUDA Graph capture 期间随机状态操作的限制与 graph-safe state;
  • 当前 subsequence 分配面向已接入的分布和 Dropout kernel,尚未覆盖 PyTorch 的全部随机消费模型;
  • 多 GPU 默认 Generator 已实现,尚未覆盖分布式训练中全部跨 rank 随机数策略。

3.4. 初始化、随机张量与 Dropout 接入

初始化层的 UniformNormalKaimingUniform 接收可选 Generator,并根据 Tensor 的设备经 dispatch stub 选择 CPU 或 CUDA kernel。RandRandn 在函数式接口中创建指定 shape、dtype、device 的 Tensor 后,分别复用 Uniform 和 Normal 初始化路径。

普通 Dropout 同时接入 CPU 和 CUDA。前向阶段随机生成 UINT8 mask,并对保留元素乘以 1 / (1 - p);反向阶段使用前向保存的同一 mask 计算梯度,不生成新的随机数,也不额外推进 Generator。Dropout 支持显式 Generator;未传入时自动使用输入 Tensor 所在设备的默认 Generator。

CPU 与 CUDA 随机分布、Dropout 均支持 FLOAT16BFLOAT16FLOAT32FLOAT64。对非浮点 dtype 的随机初始化和 Dropout 会进行参数/类型检查,避免以错误的存储布局写入数据。

4. 测试与验证

当前测试覆盖 Generator 接口、state 恢复、默认/显式 Generator、初始化、随机张量和 Dropout 等核心路径;完整训练工作流的端到端随机测试仍可作为后续补充。

4.1. 测试内容

  1. 接口与状态测试:验证 CPU/CUDA Generator 的 device、seed、state、默认 Generator 获取,以及 state 的 UINT8 CPU Tensor 约定。
  2. 种子可复现性测试:验证 Uniform、Normal、KaimingUniform、Rand、Randn 和 Dropout 在相同 seed 下可复现,在不同 seed 下发生变化。
  3. 状态恢复测试:保存 Generator state,生成下一段随机数,恢复 state 后重新生成,验证两段结果相同。
  4. 默认与显式 Generator 测试:验证显式 Generator 不推进默认 Generator;未传 Generator 时目标设备默认状态被推进。
  5. 多设备默认状态测试:在至少两张 GPU 的环境中,验证 cuda:1 随机调用只推进 cuda:1 默认 Generator。单 GPU 环境会按条件跳过该测试。
  6. Autograd 兼容性验证:完整构建验证远端 FunctionCtx 重构后,Exp 与 Dropout 的保存状态逻辑能够正确接入新的 Autograd 上下文;Exp 反向回归测试已执行。Dropout 的正式 Generator 测试当前重点覆盖前向随机性与可复现性,独立的反向数值断言可作为后续补充。

相关测试文件包括:

  • tests/generator/test_generator.cc
  • tests/generator/test_generator_interface.cc
  • tests/generator/cuda_only/test_cuda_generator.cc
  • tests/autograd/test_autograd_elementwise_backward.cc

4.2. 本地复现命令

以下命令已在 WSL Ubuntu 22.04、CUDA 环境下从新的构建目录实际执行。当前工程的 CUDA 源文件需要 C++20 标准库,因此使用 GCC 13,并显式指定 NVCC 的 host compiler 同为 GCC 13;CMAKE_POLICY_VERSION_MINIMUM 用于兼容项目引入的旧版 gflags CMake 配置。无 CUDA 环境可将 USE_CUDA 设为 OFF 并省略 CMAKE_CUDA_HOST_COMPILER,CPU Generator 测试仍可执行。

git submodule update --init --recursive
cmake -S . -B build-report-repro \
  -DBUILD_TEST=ON \
  -DUSE_CUDA=ON \
  -DUSE_NCCL=OFF \
  -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
  -DCMAKE_C_COMPILER=gcc-13 \
  -DCMAKE_CXX_COMPILER=g++-13 \
  -DCMAKE_CUDA_HOST_COMPILER=/usr/bin/g++-13
cmake --build build-report-repro -j8
ctest --test-dir build-report-repro \
  -R 'Generator|test_generator' \
  --output-on-failure -j1

完整回归可使用:

ctest --test-dir build-report-repro --output-on-failure -j4

在本次最终合并后的 CPU+CUDA 构建环境中,上述命令从干净目录完成配置与编译。Generator 相关的 19 个 CPU/CUDA 测试全部通过;完整 CTest 共 270 项,其中 256 项通过,3 项为禁用测试,11 项因特定 Transformer 配置或其他测试条件而跳过,无失败项。

4.3. 本章小结

测试结果表明,Generator 状态在初始化、随机张量和 Dropout 调用之间能够连续推进;全局 seed 和显式 state 恢复均可稳定控制随机行为;CPU 与 CUDA 后端通过同一 Generator 接口提供一致的使用方式。当前覆盖已满足赛题要求的基础设施验证,后续可继续补充训练脚本级端到端可复现性测试和更多随机算子测试。

5. 附录

5.1. Generator / GeneratorImpl 接口与 PyTorch 对齐表

InfiniTrain 接口或机制 PyTorch 对应接口/概念 作用 对齐情况
Generator at::Generator 用户持有的随机状态句柄 基本一致
GeneratorImpl c10::GeneratorImpl 后端多态实现基类 基本一致
set_current_seed(seed) set_current_seed(seed) 设置当前 seed 并重置随机序列 一致
current_seed() current_seed() 获取当前 seed 一致
seed() seed() 使用非确定性 seed 重置并返回 seed 一致
get_state() get_state() 返回 CPU Byte state 基本一致
set_state(state) set_state(state) 恢复随机状态 基本一致
device() device() 查询 Generator 所属设备 一致
mutex() mutex() 提供随机状态同步锁 一致,调用方持锁
clone() clone() 复制当前随机状态到独立 Generator 一致
make_generator make_generator 创建指定 Impl 的 Generator 一致
check_generator check_generator 校验后端类型并转为具体 Impl 一致
get_generator_or_default get_generator_or_default 选择显式或默认 Generator 一致
getDefaultCPUGenerator getDefaultCPUGenerator 获取 CPU 默认 Generator 一致
getDefaultCUDAGenerator getDefaultCUDAGenerator 获取指定 CUDA 设备默认 Generator 一致
manual_seed(seed) at::manual_seed / torch.manual_seed 重置 CPU 与 CUDA 默认 Generator 基本一致
CUDA graph-safe state graphsafe_get_state / graphsafe_set_state CUDA Graph 随机状态切换 暂未实现
CPU/CUDA offset 公共接口 set_offset / get_offset 直接管理部分后端 offset 暂未提供
image-2 image-3 --- # 2026 春季启元人工智能大赛诚信守则(Honor Code)

本人作为 2026 春季启元人工智能大赛(以下简称“比赛”)的参赛选手,郑重承诺严格遵守比赛规则及本诚信守则,秉持诚信、公正、廉洁的参赛原则,自觉维护比赛的公平性与严肃性。本人充分理解并认可,违反本准则将导致参赛资格被取消、比赛成绩作废等相应后果,且愿意承担由此产生的一切责任。

一、参赛诚信承诺

  1. 本人保证所提交的赛题PR(Pull Request)中包含的算子实现代码及相关文档,均为本人(及参赛团队,如为团队参赛)在比赛期间独立完成或在明确标注参考来源的基础上进行开发,不存在任何欺诈、抄袭、作弊行为。

  2. 本人承诺主动、全面、真实地披露赛题实现过程中所有参考的外部资源,尤其是开源代码资源,不隐瞒任何可能影响比赛公平性的信息。

  3. 本人保证不采用任何不正当手段获取比赛优势,包括但不限于窃取其他参赛选手的代码成果、利用非比赛允许的工具或技术、与他人串通作弊等。

二、参考资源说明

本人确认已按比赛要求,将本次赛题实现过程中涉及的参考资源信息单独撰写至REFERENCE.md文件中,该文件将与本诚信守则一同作为PR附件提交。REFERENCE.md需根据实际参考情况,按以下要求完整填写,信息不完整或虚假填写将视为违反本准则:

情况1:无参考外部开源代码及核心实现思路

REFERENCE.md中需明确声明:“本次赛题提交的算子代码、核心算法逻辑及实现方案均为本人(及参赛团队)独立设计与开发,未参考任何外部开源项目、技术文档中的核心代码片段或实现思路,未接受任何第三方的技术指导或代码支持。”

情况2:有参考外部开源代码及相关资源

对每个参考资源提供以下信息陈述:

  1. 参考开源项目/资源名称

  2. 参考资源链接(GitHub/Gitee/论文/技术文档等)

  3. 参考的具体内容(请明确说明参考的代码片段、算法逻辑、实现思路等,需标注对应资源的具体位置,如文件路径、代码行数等)

  4. 本人对参考内容的修改与优化说明:(请详细说明在参考基础上,本人所做的独立开发、修改、优化工作,体现自身技术贡献)

  5. 若是开源项目,提供参考资源的开源协议类型:(如MIT、Apache 2.0、GPL等)

  6. 其他需要补充说明的信息

三、禁止行为确认

本人明确知晓并承诺避免以下违反比赛公平性的行为,若存在以下任一情况,自愿接受比赛组委会的相应处罚:

  1. 未经授权复制、抄袭他人(包括其他参赛选手、开源项目、商业代码)的代码、算法或技术方案,且未进行明确标注;

  2. 隐瞒或虚假披露参考资源信息,包括遗漏重要参考来源、伪造参考内容说明等;

  3. 与其他参赛选手或第三方串通,进行代码共享、成果交换等违规协作;

  4. 利用比赛平台漏洞、技术缺陷或非比赛允许的工具获取不正当利益;

  5. 伪造比赛相关证明材料、提交虚假信息;

  6. 其他违反比赛规则及公序良俗的不诚信行为。

四、责任与确认

  1. 本人充分理解,比赛组委会将对所有提交的PR进行代码溯源、参考信息核查等公平性审查,若发现本人存在违反本准则的行为,有权随时取消本人的参赛资格、作废比赛成绩,情节严重的将在比赛相关平台进行公示。

  2. 若因本人违反本准则导致比赛争议或第三方权益受损(如开源协议侵权等),本人将独立承担全部法律责任及相关损失,与比赛组委会无关。

  3. 本人确认已仔细阅读并完全理解本诚信守则的全部内容,自愿签署本准则,接受比赛组委会的监督与审查。

五、签署信息

参赛选手姓名(团队参赛需填写所有成员姓名)
李源,王柯翰,狄凡瑞

签署日期
2026年7月12日


REFERENCE

本次 Generator 抽象赛题在比赛提供的 InfiniTrain 代码库基础上完成。实现过程中参考了 PyTorch 的 Generator 抽象、CPU/CUDA 随机状态管理、分布采样和 Dropout 的接口语义与实现思路;未将 PyTorch 源码直接整体复制到本项目。所有代码均结合 InfiniTrain 的 TensorDeviceDispatcher、Autograd 和 CMake 结构重新实现,并由参赛团队完成集成、调试和验证。

1. PyTorch Generator、随机分布与 Dropout 实现

资源名称: PyTorch

资源链接:

参考的具体内容:

  1. Generator 抽象与辅助接口

    • 参考 aten/src/ATen/core/Generator.hGeneratormake_generatorcheck_generatorget_generator_or_default 的分层设计及接口语义;
    • 参考 PyTorch 对 undefined Generator、后端类型校验、显式 Generator 优先和公开 mutex 的处理方式;
    • 对应本项目新增/修改:infini_train/include/generator.hinfini_train/src/generator.cc
  2. CPU Generator 与 state 管理

    • 参考 aten/src/ATen/CPUGeneratorImpl.cpp 中 CPU 默认 Generator、seed 重设、正态分布缓存、clone、state 保存恢复的语义;
    • 对应本项目新增:infini_train/src/core/runtime/cpu/cpu_generator_impl.hinfini_train/src/core/runtime/cpu/cpu_generator_impl.cc
    • 本项目使用 std::mt19937 与流序列化实现 CPU state,而非直接使用 PyTorch 的 at::mt19937 和内部 POD state。
  3. CUDA Generator 与 Philox 状态推进

    • 参考 aten/src/ATen/cuda/CUDAGeneratorImpl.cpp 中每 GPU 一个默认 Generator、seed/offset 状态、state 保存恢复和 Philox 随机状态推进的设计;
    • 对应本项目新增:infini_train/src/core/runtime/cuda/cuda_generator_impl.hinfini_train/src/core/runtime/cuda/cuda_generator_impl.cc
    • 本项目将状态简化为 seed_next_philox_subsequence_,为每次 CUDA kernel 启动预留 subsequence;未实现 PyTorch 的 CUDA Graph capture 和 graph-safe state。
  4. 随机分布与 dtype dispatch

    • 参考 aten/src/ATen/core/DistributionsHelper.h 中 Uniform、Normal、Box-Muller 缓存及“Generator 负责状态、kernel 负责消费”的设计;
    • 参考 aten/src/ATen/native/cpu/DistributionKernels.cpp 与 CUDA distribution 代码中默认/显式 Generator 选择、随机分布参数检查和 dtype dispatch 的组织方式;
    • 对应本项目新增/修改:infini_train/include/core/runtime/distributions_helper.hinfini_train/include/core/runtime/distribution_stubs.hinfini_train/src/core/distribution_kernels.ccinfini_train/src/kernels/cuda/distribution.cu
  5. 普通 Dropout 的随机语义

    • 参考 aten/src/ATen/native/cuda/Dropout.cu 中以随机 mask 驱动前向、反向复用前向 mask、随机状态仅在前向推进的语义;
    • 对应本项目新增:infini_train/include/autograd/dropout.hinfini_train/src/autograd/dropout.ccinfini_train/src/core/dropout_kernels.ccinfini_train/src/kernels/cpu/dropout.ccinfini_train/src/kernels/cuda/dropout.cu
    • 本项目仅实现普通 Dropout,不实现 PyTorch 的 AlphaDropout、FeatureDropout、inplace 和 CUDA Graph 专用逻辑。

修改与优化说明:

  • 代码并非从 PyTorch 逐文件或逐函数复制。参赛团队依据上述设计,在 InfiniTrain 的 std::shared_ptrTensorDeviceDispatchStubDispatcherFunctionCtx 与现有 CUDA stream 管理接口下重新组织和实现;
  • 将 PyTorch 的张量迭代器/ATen dispatch 模式替换为 InfiniTrain 的 Tensor& 与 CPU/CUDA dispatch stub;
  • CPU 端补充了 std::mt19937 状态的解析校验、Normal 缓存 state 保存恢复和明确的 dtype/参数检查;
  • CUDA 端基于 InfiniTrain 的 stream 与 curandStatePhilox4_32_10_t kernel 实现 subsequence 分配和设备端随机数消费;
  • 新增并维护 Generator、状态恢复、默认/显式 Generator、种子可复现性和多设备默认状态等测试;
  • 不以“与 PyTorch 逐 bit 相同”为目标,重点对齐接口和可复现语义。CPU/CUDA 后端允许在相同 seed 下产生不同的逐元素随机值。

2. AI工具

资源名称:OpenAI Codex,Claude Code

资源链接:https://openai.com/codex

参考内容:用于协助整理实验记录、分析 benchmark 结果、撰写报告,并辅助生成小范围代码改动方案。

修改与优化:最终代码与实验决策均由参赛团队确认;

协议:不涉及开源代码复用。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant