| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix: 规范 random 目录算子日志输出(级别错配/拼写/语法/格式符/中文残留) Co-authored-by: liangtongxue<lianglihui@h-partners.com> # message auto-generated for no-merge-commit merge: !5347 merge fix/log-spec-20260903-v2 into master fix: 规范 random 目录算子日志输出(级别错配/拼写/语法/格式符/中文残留) Created-by: liangtongxue Commit-by: liangtongxue Merged-by: cann-robot Description: ## 描述 对 random/ 全目录 26 个算子(含 examples、tests)的日志输出做规范整改,修复以下缺陷: - **级别错配(36 处)**:12 个 geir examples 失败分支 - INFO - [XIR]: xxx failed 改为 - ERROR -,按级别过滤时故障信息不再被忽略 - **拼写错误**:samller→smaller、excepted→expected(语义相反)、RadixSortTIling→RadixSortTiling、Infershape→InferShape 等修正 - **语法错误(100+ 处)**:only support→only supports、not support→does not support、should same with→should be the same as、must >→must be greater than、is begin→begins、running begin→started、序数 1th 改写、字符串拼接双空格/逗号粘连等 - **错误描述不完整(40+ 处)**:dtype/shape/size/coreNum/ubSize 校验失败补当前实际值;allowed set 补允许集合内容;onnx dtype 支持列表文案与 kvlist 实现对齐 - **格式符与实参类型不匹配**:按头文件实类型逐项核对修正(%lld→%llu、%d→%ld、%u→%lu、%f→%ld 等),消除 -Werror 编译失败与输出垃圾值 - **魔鬼数字**:GE version 裸数字 90000000 统一为 9.0.0(6 处) - **中文输出**:ST executor/golden.py 中文文案改英文(10 处);Format 支持列表中文顿号改半角逗号 - **统一日志接口**:random_infershape_base.cpp 业务代码 std::cerr 改 OP_LOGD/OP_LOGW/OP_LOGE(4 处);删除 random_dtype_fmt_gen.h 中无调用点的调试打印函数 Print/PrintByColsCore - **UT 修复**:truncated_normal_v2 tiling 用例期望串补齐尾部 3 个字段(RandomUnifiedSimtTilingDataStruct 实为 51 个 int64 字段,期望串原为 48 个;master 上存量失败) ### 改动方法 仅修改日志语句的文案/级别/格式符与配套标识符拼写(如 isContinous_→isContinuous_ 等全量同步改名),不改动任何校验逻辑与控制流。 ## 关联的Issue #3083 ## 测试 - pre-commit 全部通过(clang-format / ruff-check / ruff-format / codespell / OAT 等 10 项) - bash build.sh --pkg --jit --soc=ascend950 编译打包通过(含 -Werror=format 严格校验) - random 目录全部改动算子 UT:153 个测试全部 PASSED(含修复后的 truncated_normal_v2) - 输出文案中文残留、业务代码私有打印残留均为 0 ## 文档更新 无 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5347 | 26 天前 | |
fix: 规范 random 目录算子日志输出(级别错配/拼写/语法/格式符/中文残留) Co-authored-by: liangtongxue<lianglihui@h-partners.com> # message auto-generated for no-merge-commit merge: !5347 merge fix/log-spec-20260903-v2 into master fix: 规范 random 目录算子日志输出(级别错配/拼写/语法/格式符/中文残留) Created-by: liangtongxue Commit-by: liangtongxue Merged-by: cann-robot Description: ## 描述 对 random/ 全目录 26 个算子(含 examples、tests)的日志输出做规范整改,修复以下缺陷: - **级别错配(36 处)**:12 个 geir examples 失败分支 - INFO - [XIR]: xxx failed 改为 - ERROR -,按级别过滤时故障信息不再被忽略 - **拼写错误**:samller→smaller、excepted→expected(语义相反)、RadixSortTIling→RadixSortTiling、Infershape→InferShape 等修正 - **语法错误(100+ 处)**:only support→only supports、not support→does not support、should same with→should be the same as、must >→must be greater than、is begin→begins、running begin→started、序数 1th 改写、字符串拼接双空格/逗号粘连等 - **错误描述不完整(40+ 处)**:dtype/shape/size/coreNum/ubSize 校验失败补当前实际值;allowed set 补允许集合内容;onnx dtype 支持列表文案与 kvlist 实现对齐 - **格式符与实参类型不匹配**:按头文件实类型逐项核对修正(%lld→%llu、%d→%ld、%u→%lu、%f→%ld 等),消除 -Werror 编译失败与输出垃圾值 - **魔鬼数字**:GE version 裸数字 90000000 统一为 9.0.0(6 处) - **中文输出**:ST executor/golden.py 中文文案改英文(10 处);Format 支持列表中文顿号改半角逗号 - **统一日志接口**:random_infershape_base.cpp 业务代码 std::cerr 改 OP_LOGD/OP_LOGW/OP_LOGE(4 处);删除 random_dtype_fmt_gen.h 中无调用点的调试打印函数 Print/PrintByColsCore - **UT 修复**:truncated_normal_v2 tiling 用例期望串补齐尾部 3 个字段(RandomUnifiedSimtTilingDataStruct 实为 51 个 int64 字段,期望串原为 48 个;master 上存量失败) ### 改动方法 仅修改日志语句的文案/级别/格式符与配套标识符拼写(如 isContinous_→isContinuous_ 等全量同步改名),不改动任何校验逻辑与控制流。 ## 关联的Issue #3083 ## 测试 - pre-commit 全部通过(clang-format / ruff-check / ruff-format / codespell / OAT 等 10 项) - bash build.sh --pkg --jit --soc=ascend950 编译打包通过(含 -Werror=format 严格校验) - random 目录全部改动算子 UT:153 个测试全部 PASSED(含修复后的 truncated_normal_v2) - 输出文案中文残留、业务代码私有打印残留均为 0 ## 文档更新 无 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5347 | 26 天前 | |
修复cleancode问题 Co-authored-by: sikaiwei<sikaiwei1@h-partners.com> # message auto-generated for no-merge-commit merge: !5452 merge fix_codecheck into master 修复cleancode问题 Created-by: sikaiwei Commit-by: sikaiwei Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复cleancode问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/3115 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 冒烟已通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:cleancode See merge request: cann/ops-math!5452 | 24 天前 | |
随机数算子重构优化 Co-authored-by: fenglin28<fenglin28@huawei.com> # message auto-generated for no-merge-commit merge: !949 merge hh into master 随机数算子重构优化 Created-by: guankarl Commit-by: fenglin28 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 随机数算子重构优化,使用统一模板实现。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> https://gitcode.com/cann/ops-math/issues/552 <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x ] 其他,请描述: 随机数算子重构,总共分为 5 个部分: 算子infershape/inferdtype 实现了公共逻辑提取CommonInferShape,不同算子根据算子原型配置对应mode,新算子开发10行代码搞定 示例: static graphStatus InferShapeRandomUniformV2(gert::InferShapeContext* context) { const std::unordered_map<std::string, size_t>& input_map = { {"shape", RANDOM_UNIFORM_V2_X}, {"offset", RANDOM_UNIFORM_V2_OFFSET}}; const std::unordered_map<std::string, size_t>& output_map = { {"y", RANDOM_UNIFORM_V2_Y}, {"offset", RANDOM_UNIFORM_V2_OFFSET}}; int32_t mode = RANDOM_UNIFORM_V2_MODE_TYPE; return ops::common::CommonInferShape(context, input_map, output_map, mode); } IMPL_OP_INFERSHAPE(RandomUniformV2).InferShape(InferShapeRandomUniformV2); 算子信息库注册def 算子的不同输入如果有多组dtype时候,在算子信息库的枚举中,可能会有几十种组合,手写容易漏掉或者重复,且不好检查,通过提供RandomDtypeFmtGen类,调用对应接口即可获取全部组合类型。 示例: gen.GetSequence("inOutType") this->Input("x") .ParamType(REQUIRED) .DataType({gen.GetSequence("inOutType")}) .Format({baseFormatSeq}) .UnknownShapeFormat({baseFormatSeq}); 融合规则 有状态算子转无状态算子,存在范式的融合规则,通过提取公共类,定义公共接口,后续类似融合规则无需重新开发,直接调用对应接口即可。 class FusionRandomUtils { public: FusionRandomUtils() = default; ~FusionRandomUtils() = default; // FusionRandomUtils(const FusionRandomUtils&) = delete; // FusionRandomUtils& operator=(const FusionRandomUtils&) = delete; /** * @param graph 计算图对象 * @param opDesc 算子描述指针 * @param offsetNode 输出:创建的offset Variable节点 * @param shapeDesc Shape输入的Tensor描述 * @param outputDesc 主输出Y的Tensor描述 * @param opNode 基准算子节点(用于拼接新节点名) * @param fusionPassName 日志标识(用于日志溯源) * @param fusedOpType 融合算子类型(用于日志/错误信息溯源) * @return Status SUCCESS/FAILED/PARAM_INVALID */ static bool CheckSocVersion(const std::string& fusedOpType); static Status AddVariableNode( ge::ComputeGraph& graph, ge::NodePtr opNode, const ge::GeTensorDesc& offsetDesc, ge::NodePtr& newNode, const uint8_t* dataPtr, size_t size, const std::string& fusionPassName); static Status CreateInputOpDesc( ge::OpDescPtr& opDesc, ge::GeTensorDesc shapeDesc, ge::GeTensorDesc offsetDesc, const std::string& fusedOpType); static Status CreateOutputOpDesc( ge::OpDescPtr& opDesc, ge::GeTensorDesc outputDesc, ge::GeTensorDesc offsetDesc, const std::string& fusedOpType); static Status AddOpNodeAndDesc(ge::ComputeGraph& graph, ge::OpDescPtr& opDesc, ge::NodePtr& offsetNode, ge::GeTensorDesc shapeDesc, ge::GeTensorDesc outputDesc, ge::NodePtr opNode, const std::string& fusionPassName, const std::string& fusedOpType); static Status UpdateAttr(ge::NodePtr opNode, int64_t seed, int64_t seed2, ge::DataType dtype, const std::string& fusionPassName, const std::string& fusedOpType); static Status CreateNode(ge::ComputeGraph& graph, ge::NodePtr opNode, std::vector<ge::NodePtr>& fusionNodes, ge::NodePtr& opV2Node, const std::string& fusionPassName, const std::string& fusedOpType, const std::set<ge::DataType> aicoreDtypeSupportList); static Status RemoveNode(ge::NodePtr node, ge::ComputeGraph& graph, const std::string& fusedOpType); static Status ReplaceNode(ge::NodePtr oldNode, ge::NodePtr newNode, ge::ComputeGraph& graph, const std::string& fusedOpType, const std::string& fusionPassName); }; 算子tiling 抽象并统一流程,更加适合随机数算子,统一tilingData,按照配置做检查。 统一流程: ge::graphStatus RandomTilingArch35::DoTiling() { opName_ = context_->GetNodeName(); OP_LOGD(opName_, "Start tiling for op: %s", opName_.c_str()); // 步骤1:校验输入输出和属性 auto ret = CheckInputsOutputsAndAttrs(); if (ret != ge::GRAPH_SUCCESS) { OP_LOGE(opName_, "Check inputs/outputs/attrs failed"); return ret; } // 步骤2: 获取硬件信息 ret = GetPlatformInfo(); if (ret != ge::GRAPH_SUCCESS) { OP_LOGE(opName_, "Get platform info failed"); return ret; } // 步骤3: 填充TilingData ret = FillUnifiedTilingData(); if (ret != ge::GRAPH_SUCCESS) { OP_LOGE(opName_, "Fill tiling data failed"); return ret; } // 步骤4:计算tilingKey和workspace ret = CalcTilingKeyAndWorkspace(); if (ret != ge::GRAPH_SUCCESS) { OP_LOGE(opName_, "Calc tiling key/workspace failed"); return ret; } // 步骤5:后置处理(可选) ret = UniqueProcess(); if (ret != ge::GRAPH_SUCCESS) { OP_LOGE(opName_, "Unique process failed"); return ret; } // 步骤6:写入context ret = WriteBackToContext(); if (ret != ge::GRAPH_SUCCESS) { OP_LOGE(opName_, "Write tiling data to context failed"); return ret; } // 步骤7:调用dump函数 auto info = tilingData_.DumpTilingInfo(); OP_LOGI("RandomTiling", "%s", info.str().c_str()); OP_LOGD(opName_, "Tiling success for op: %s", opName_); return ge::GRAPH_SUCCESS; } 统一tilingData int64_t usedCoreNum = 0; int64_t normalCoreProNum = 0; int64_t tailCoreProNum = 0; int64_t singleBufferSize = 0; uint32_t key[2] = {0}; uint32_t counter[4] = {0}; int64_t outputSize = 0; int64_t probTensorSize = 0; int64_t sharedTmpBufSize = 0; 当前tilingData较少,后续如有需要,按需添加 按照配置做检查: OpTilingConfig config; config.inputCheckRules = { // 输入索引: dtype列表,shapeSize,dim_num {0, {{ge::DT_INT32, ge::DT_INT64}, -1, {1}, nullptr}}, // shape {1, {{ge::DT_INT64}, 1, {}, nullptr}}, // offset }; config.outputCheckRules = { // 输出索引: dtype列表,shapeSize,dim_num {0, {{ge::DT_FLOAT, ge::DT_FLOAT16, ge::DT_BF16}, -1, {1,2,3,4,5,6,7,8}, nullptr}} }; // y 算子kernel kernel抽取了RandomKernelBaseOp类,专门管理tilingData,内置了Skip函数和生成随机数函数,其他算子只需调用VarsInit接口即可 See merge request: cann/ops-math!949 | 7 个月前 | |
RandomUniformV2 set dim0 Co-authored-by: zhaozi3<zhaozi3@h-partners.com> # message auto-generated for no-merge-commit merge: !2656 merge master into master RandomUniformV2 set dim0 Created-by: zhaozi3 Commit-by: zhaozi3 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> RandomUniformV2算子支持0维输入,放开tiling侧拦截 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 网络用例测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!2656 | 4 个月前 | |
concat/pad/slice等算子支持新平台 Co-authored-by: ASCEND222<dongfei16@h-partners.com> # message auto-generated for no-merge-commit merge: !5184 merge master into master concat/pad/slice等算子支持新平台 Created-by: ASCEND222 Commit-by: ASCEND222 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 算子支持新平台 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/2992 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5184 | 1 个月前 | |
md大模型检测低错修改 Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !5183 merge master into master md大模型检测低错修改 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> md大模型检测低错修改 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [# 2466](https://gitcode.com/cann/ops-math/issues/2446) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ok ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> *.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5183 | 1 个月前 |
RandomUniformV2
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR/Ascend 950DT | √ |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | × |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | × |
| Atlas 200I/500 A2 推理产品 | × |
| Atlas 推理系列产品 | × |
| Atlas 训练系列产品 | × |
功能说明
- 算子功能:返回均匀分布的随机数列。
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| shape | 输入 | 输出张量的形状。 | INT64、INT32 | ND |
| offset | 输入 | 偏移值。 | INT64 | ND |
| seed | 属性 | 随机数种子。 | INT | ND |
| seed2 | 属性 | 随机数种子。 | INT | ND |
| dtype | 属性 | 指定输出的数据类型。 | INT | ND |
| y | 输出 | 生成的随机数序列。 | FLOAT16、FLOAT、BF16 | ND |
| offset | 输出 | 偏移值。 | INT64 | ND |
约束说明
无
调用说明
| 调用方式 | 样例代码 | 说明 |
|---|---|---|
| 图模式调用 | test_geir_random_uniform_v2 | 通过算子IR构图方式调用RandomUniformV2算子。 |