| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
conv2d squeeze bias add fusion pass开源 Co-authored-by: huafeng793<chenhuafeng2@huawei.com> # message auto-generated for no-merge-commit merge: !9511 merge conv2d_sequeeze into master conv2d squeeze bias add fusion pass开源 Created-by: huafeng793 Commit-by: huafeng793 Merged-by: cann-robot Description: ## 描述 新增 Conv2D→Squeeze→BiasAdd 融合 Pass: Conv2DSqueezeBiasaddFusionPass。 将 Conv2D → Squeeze → BiasAdd 重排为 Conv2D → BiasAdd → Squeeze,使 BiasAdd 直接作用在 Conv2D 的 4D 输出上。 同时更新ut测试文件。 ## 关联的Issue [#5342](https://gitcode.com/cann/ops-nn/issues/5342) ## 测试 bash build.sh -u --opgraph,27 个 UT 全部通过。 覆盖正向融合、负向拒绝、可重入、属性保留等场景。 RDV通过。 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9511 | 1 个月前 | |
fmap partload support a16w8 Co-authored-by: weixin_45565792<linbojin@huawei.com> # message auto-generated for no-merge-commit merge: !9534 merge 0829_small_kernel into master fmap partload support a16w8 Created-by: weixin_45565792 Commit-by: weixin_45565792 Merged-by: cann-robot Description: ## 描述 适配conv算子small kernel fmap partload场景 A16W8量化,优化parallelism的a16w8 CinL1迭代计算次数 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue [#4835](https://gitcode.com/cann/ops-nn/issues/4835) <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> rdv pass;daily用例pass(除主线失败的case外) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9534 | 1 个月前 | |
实现 avg_pool3_d_grad Co-authored-by: liuchuangdev<liuchuang51@huawei.com> # message auto-generated for no-merge-commit merge: !9094 merge dev/avg_pool3d_grad_merge_all into master 实现 avg_pool3_d_grad Created-by: liuchuangdev Commit-by: liuchuangdev Merged-by: cann-robot Description: # PR 描述 ## 描述 实现 avg_pool3_d_grad(AvgPool3DGrad)算子在 arch35(Ascend 950)上的 AscendC 支持,补齐此前该算子仅有 910B TBE 通路、arch35 无实现的空白。 主要改动: - **tiling(pooling/avg_pool3_d_grad/op_host/arch35/)** - 新增 NCDHW / NDHWC / SIMT 三套切分方案,通过 tiling template 按输入场景选择路由; - 公共解析/校验逻辑收敛到 AvgPool3DGradTilingBase:dim/format/dtype/attr 校验、orig_input_shape 与输出 shape 对齐(含 N*C 合并布局)、kernel/stride/pad 归一化、ceil_mode 下输出尺寸与 drop 窗口规则; - 评审修正:操作 inputData 的自由函数收纳为类私有成员,纯几何函数保留 file-static; - 移除 SIMT 路径下无效的 SetScheduleMode(1)(SIMT kernel 无 SyncAll/跨核协作);legacy TBE 通路的 BATCH_MODE 保持不变; - GetTilingData 后补充 OP_CHECK_NULL_WITH_CONTEXT 空指针校验。 - **kernel(pooling/avg_pool3_d_grad/op_kernel/arch35/)** - NCDHW / NDHWC / SIMT 三套实现,支持 fp16 / bf16 / fp32,int32/int64 索引,pad、ceil_mode、count_include_pad、divisor_override 语义对齐 torch。 - **golden(pooling/avg_pool3_d_grad/tests/assets/golden.py)** - 3D 反向参考新增 numpy 实现(含 include_pad 除数、ceil/越界窗口语义); - 在任一空间维 input < kernel(torch 会抛 input image smaller than kernel size,且 padding 不计入)时提前走 numpy,保证 e2e/aclnn 测试不因 torch 限制中断;2D 路径不动。 - **infershape** - 补充 IsUnknownRank -> SetUnknownRank 分支,对齐同族算子(max_pool_grad / avg_pool_v2_grad)的未知 shape 处理。 - **torch_extension** - 注册 torch.ops.cann_ops_nn.avg_pool3d_backward(schema/meta)及 graph_convert_avg_pool3_d_grad.py 图转换器,支持 torch.compile 图模式落 GE AvgPool3DGrad。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#5136](https://gitcode.com/cann/ops-nn/issues/5136) ## 测试 白盒测试、门槛用例测试、冒烟测试 ## 文档更新 NA ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9094 | 1 个月前 | |
fix: conv3d dx 1x1 bias kernelsplit Co-authored-by: hexinhui<hexinhui5@huawei.com> Co-authored-by: hexinhui<mzXgxpu2ojiXPDkxsuT_n> # message auto-generated for no-merge-commit merge: !6943 merge bias_ks_1 into master fix: conv3d dx 1x1 bias kernelsplit Created-by: hexinhui Commit-by: hexinhui Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 库上当前Convtranspose带bias场景filterhw=1,stride=2场景性能较差, 实现对应场景的kernel拆分模板适配 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5245 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 泛化用例,冒烟测试通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!6943 | 1 个月前 | |
实现 avg_pool3_d_grad Co-authored-by: liuchuangdev<liuchuang51@huawei.com> # message auto-generated for no-merge-commit merge: !9094 merge dev/avg_pool3d_grad_merge_all into master 实现 avg_pool3_d_grad Created-by: liuchuangdev Commit-by: liuchuangdev Merged-by: cann-robot Description: # PR 描述 ## 描述 实现 avg_pool3_d_grad(AvgPool3DGrad)算子在 arch35(Ascend 950)上的 AscendC 支持,补齐此前该算子仅有 910B TBE 通路、arch35 无实现的空白。 主要改动: - **tiling(pooling/avg_pool3_d_grad/op_host/arch35/)** - 新增 NCDHW / NDHWC / SIMT 三套切分方案,通过 tiling template 按输入场景选择路由; - 公共解析/校验逻辑收敛到 AvgPool3DGradTilingBase:dim/format/dtype/attr 校验、orig_input_shape 与输出 shape 对齐(含 N*C 合并布局)、kernel/stride/pad 归一化、ceil_mode 下输出尺寸与 drop 窗口规则; - 评审修正:操作 inputData 的自由函数收纳为类私有成员,纯几何函数保留 file-static; - 移除 SIMT 路径下无效的 SetScheduleMode(1)(SIMT kernel 无 SyncAll/跨核协作);legacy TBE 通路的 BATCH_MODE 保持不变; - GetTilingData 后补充 OP_CHECK_NULL_WITH_CONTEXT 空指针校验。 - **kernel(pooling/avg_pool3_d_grad/op_kernel/arch35/)** - NCDHW / NDHWC / SIMT 三套实现,支持 fp16 / bf16 / fp32,int32/int64 索引,pad、ceil_mode、count_include_pad、divisor_override 语义对齐 torch。 - **golden(pooling/avg_pool3_d_grad/tests/assets/golden.py)** - 3D 反向参考新增 numpy 实现(含 include_pad 除数、ceil/越界窗口语义); - 在任一空间维 input < kernel(torch 会抛 input image smaller than kernel size,且 padding 不计入)时提前走 numpy,保证 e2e/aclnn 测试不因 torch 限制中断;2D 路径不动。 - **infershape** - 补充 IsUnknownRank -> SetUnknownRank 分支,对齐同族算子(max_pool_grad / avg_pool_v2_grad)的未知 shape 处理。 - **torch_extension** - 注册 torch.ops.cann_ops_nn.avg_pool3d_backward(schema/meta)及 graph_convert_avg_pool3_d_grad.py 图转换器,支持 torch.compile 图模式落 GE AvgPool3DGrad。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#5136](https://gitcode.com/cann/ops-nn/issues/5136) ## 测试 白盒测试、门槛用例测试、冒烟测试 ## 文档更新 NA ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9094 | 1 个月前 | |
Conv算子 doc和DFX整改 Co-authored-by: huafeng793<chenhuafeng2@huawei.com> # message auto-generated for no-merge-commit merge: !8970 merge conv_opt into master Conv算子 doc和DFX整改 Created-by: huafeng793 Commit-by: huafeng793 Merged-by: cann-robot Description: ## 描述 1、conv算子日志易用性整改 2、conv算子资料整改 3、conv ut asan识别问题修复 ## 关联的Issue [#5117](https://gitcode.com/cann/ops-nn/issues/5117) [#5120](https://gitcode.com/cann/ops-nn/issues/5120) [#5135](https://gitcode.com/cann/ops-nn/issues/5135) ## 测试 rdv验证 ## 文档更新 conv/conv2d_v2/README.md conv/conv3d_v2/README.md conv/convolution_forward/README.md conv/convolution_forward/docs/aclnnConvDepthwise2d.md conv/convolution_forward/docs/aclnnConvolution.md conv/convolution_forward/docs/aclnnQuantConvolution.md conv/convolution_forward/docs/aclnnQuantConvolutionWeightNz.md conv/extend_conv2d/README.md conv/quant_conv2d/README.md conv/quant_conv3d/README.md ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8970 | 1 个月前 | |
AIDD扫描链接问题修改 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !9611 merge master into master AIDD扫描链接问题修改 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 AIDD扫描链接问题修改 ## 关联的Issue 例如:关联Issue #5254 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9611 | 1 个月前 | |
【文档易用性】修改属性初始值 Co-authored-by: yejiani<yejiani2@huawei.com> # message auto-generated for no-merge-commit merge: !9617 merge fix_doc into master 【文档易用性】修改属性初始值 Created-by: yejiani Commit-by: yejiani Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> convStrides、convPads等属性在后续aclCreateIntArray(xxx, 2)取值时只取了前两维,但数组却声明为4维,与文档"数组长度需等于input维度减2"的约束形式不符,容易误导读者 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5416 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 页面已更新显示为2维 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> aclnnConvolution.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9617 | 1 个月前 | |
打标签 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !8369 merge master into master 打标签 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 nn仓打标签 ## 关联的Issue 关联Issue [#4600](https://gitcode.com/cann/ops-nn/issues/4600) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8369 | 2 个月前 | |
fix: 整改 23 个 Ascend950 算子 arch35 日志规范 Co-authored-by: wangrunfa<wangrunfa1@huawei.com> # message auto-generated for no-merge-commit merge: !9472 merge cherry-pick-mr-9347-1787965804708-auto into master fix: 整改 23 个 Ascend950 算子 arch35 日志规范 Created-by: wkx12138 Commit-by: wangrunfa Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 依据 cann-log-evaluation 12 条《CANN 日志规范》对 ops-nn 仓 Ascend950(arch35)算子扫描整改报告进行整改。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5343 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 冒烟已跑 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:日志整改 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9472 | 1 个月前 | |
fix: 整改 23 个 Ascend950 算子 arch35 日志规范 Co-authored-by: wangrunfa<wangrunfa1@huawei.com> # message auto-generated for no-merge-commit merge: !9472 merge cherry-pick-mr-9347-1787965804708-auto into master fix: 整改 23 个 Ascend950 算子 arch35 日志规范 Created-by: wkx12138 Commit-by: wangrunfa Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 依据 cann-log-evaluation 12 条《CANN 日志规范》对 ops-nn 仓 Ascend950(arch35)算子扫描整改报告进行整改。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5343 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 冒烟已跑 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:日志整改 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9472 | 1 个月前 | |
Temporarily shielding the fm_partload scenario. Co-authored-by: ray-shaw<shaorui4@huawei.com> # message auto-generated for no-merge-commit merge: !9519 merge master_829 into master Temporarily shielding the fm_partload scenario. Created-by: ray-shaw Commit-by: ray-shaw Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 卷积算子临时屏蔽smallkernel模板中 L1不全载场景,因为该场景在K轴全载时的L1 pingpong实现存在流水串行问题,导致性能劣化。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue #5346 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 本地测试精度pass,性能劣化问题解决 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9519 | 1 个月前 | |
Conv3D DX/DW算子单仓重名文件修改,arch35与arch22同名头文件添加_arch35后缀避免歧义 Co-authored-by: cheng_gao<cheng.gao@huawei.com> # message auto-generated for no-merge-commit merge: !8907 merge repeat_filename_0819 into master Conv3D DX/DW算子单仓重名文件修改,arch35与arch22同名头文件添加_arch35后缀避免歧义 Created-by: cheng_gao Commit-by: cheng_gao Merged-by: cann-robot Description: ## 描述 Conv3D DX/DW算子单仓重名文件修改,arch35与arch22同名头文件添加_arch35后缀避免歧义 ## 关联的Issue 单仓重名文件整改,不涉及Issue ## 测试 RDV验证 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x ] 其他,请描述:单仓重名文件整改 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8907 | 2 个月前 | |
fix conv op proto Co-authored-by: huafeng793<chenhuafeng2@huawei.com> # message auto-generated for no-merge-commit merge: !9416 merge conv_proto into master fix conv op proto Created-by: huafeng793 Commit-by: huafeng793 Merged-by: cann-robot Description: ## 描述 ops_proto_nn.h和ops_proto_legacy.h中存在重复的conv2d、conv3d、deformableconv2d的原型定义。如果ops_proto_nn.h和ops_proto_legacy.h同时引用,会产生重复定义的错误,所以需要进行头文件引用保护。 ## 关联的Issue [#5380](https://gitcode.com/cann/ops-nn/issues/5380) ## 测试 RDV执行通过 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9416 | 1 个月前 | |
Conv算子 doc和DFX整改 Co-authored-by: huafeng793<chenhuafeng2@huawei.com> # message auto-generated for no-merge-commit merge: !8970 merge conv_opt into master Conv算子 doc和DFX整改 Created-by: huafeng793 Commit-by: huafeng793 Merged-by: cann-robot Description: ## 描述 1、conv算子日志易用性整改 2、conv算子资料整改 3、conv ut asan识别问题修复 ## 关联的Issue [#5117](https://gitcode.com/cann/ops-nn/issues/5117) [#5120](https://gitcode.com/cann/ops-nn/issues/5120) [#5135](https://gitcode.com/cann/ops-nn/issues/5135) ## 测试 rdv验证 ## 文档更新 conv/conv2d_v2/README.md conv/conv3d_v2/README.md conv/convolution_forward/README.md conv/convolution_forward/docs/aclnnConvDepthwise2d.md conv/convolution_forward/docs/aclnnConvolution.md conv/convolution_forward/docs/aclnnQuantConvolution.md conv/convolution_forward/docs/aclnnQuantConvolutionWeightNz.md conv/extend_conv2d/README.md conv/quant_conv2d/README.md conv/quant_conv3d/README.md ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8970 | 1 个月前 | |
Format update: Adjusted the license description format in all relevant files. Co-authored-by: jiangqi<jiangqi47@h-partners.com> # message auto-generated for no-merge-commit merge: !293 merge license into master Format update: Adjusted the license description format in all relevant files. Created-by: jiangqi2025 Commit-by: jiangqi Merged-by: turing_project1 Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!293 | 10 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 10 个月前 |