当前位置: 首页 > news >正文

CANN / ops-rand:算子调用

算子调用

【免费下载链接】ops-randops-rand是CANN (Compute Architecture for Neural Networks)算子库中提供的随机数生成库。项目地址: https://gitcode.com/cann/ops-rand

前提条件

  • 环境部署:调用项目算子之前,请先参考环境部署完成基础环境搭建。
  • 调用算子列表:项目可调用的算子参见算子列表。

编译执行

基于社区版CANN包对算子源码修改时,可采用如下方式进行源码编译:

  • ops-rand包:选择整个项目编译生成的包称为ops-rand包,可完整替换CANN包对应部分。该包支持aclnn和图模式调用AI Core算子。

ops-rand包

  1. 编译ops-rand包

    进入项目根目录,执行如下编译命令:

    说明:编译过程依赖第三方开源软件,联网场景会自动下载,离线编译场景需要自行安装,具体参考未联网编译。

    # 编译所有算子并生成安装包 bash build.sh --pkg --soc=ascend950
    • --pkg:生成安装包(RUN文件)。
    • --soc:目标SoC版本,当前支持ascend950(Ascend 950PR/950DT产品)。

    若提示如下信息,说明编译成功。

    Self-extractable archive "cann-950-ops-rand_9.0.0_linux-x86_64.run" successfully created. Build package success: build_out/cann-950-ops-rand_9.0.0_linux-x86_64.run

    编译成功后,run包存放于项目根目录的build_out目录下。

未联网编译

若在没有连接互联网的环境下编译,需要提前准备好依赖的第三方软件,再进行源码编译。具体过程如下:

  1. 检查基础环境是否完备

    请确保已按环境部署完成基础环境搭建,包括CANN包安装、源码下载等。

    • 在联网环境中,进入本项目主页,通过下载ZIPclone按钮,根据指导完成源码下载。
    • 连接离线环境,上传源码至您指定的目录下。若下载的是源码压缩包,请先进行解压。
  2. 下载第三方软件依赖

    在联网环境中提前下载第三方软件,目前有如下方式,请按需选择:

    • 方式1:根据第三方软件依赖提供的表格手动下载,若从其他地址下载,请确保版本号一致。

    • 方式2:通过third_lib_download.py脚本一键下载,该脚本在本项目scripts/tools/目录,下载该脚本并执行如下命令:

      python ${scripts_dir}/third_lib_download.py

    ${scripts_dir}表示脚本存放路径,下载的第三方软件包默认存放在当前脚本所在目录。

  3. 编译算子包

    将下载好的第三方软件上传至离线环境,可存放在third_party目录或自定义目录下。推荐前者,其编译命令与联网编译场景下的命令一致。

    • third_party目录(推荐)

      请在本项目根目录创建third_party目录(若有则无需创建),将第三方软件拷贝到该指定目录。此时编译命令与联网编译命令一致。

      bash build.sh --pkg --soc=ascend950
    • 自定义目录

      在离线环境的任意位置新建${cann_3rd_lib_path}目录,将第三方软件拷贝到该目录,请确保该目录有权限访问。

      mkdir -p ${cann_3rd_lib_path}

      此时编译命令需在联网编译命令基础上额外增加--cann_3rd_lib_path=${cann_3rd_lib_path}用于指定第三方软件所在路径。假设存放路径为/path/cann_3rd_lib_path,命令如下:

      bash build.sh --pkg --soc=ascend950 --cann_3rd_lib_path=/path/cann_3rd_lib_path
  4. 安装/卸载算子包

    未联网和联网场景下编译得到的算子包结果一样,安装和卸载的操作命令也一样,具体参见下文步骤2和步骤4。

第三方软件依赖

本项目编译过程依赖的第三方开源软件列表如下:

开源软件版本下载地址
makeself2.5.0makeself-release-2.5.0-patch1.tar.gz

若您的编译环境可以访问网络,编译脚本会自动联网下载第三方软件。否则,请参考未联网编译手动下载第三方软件。

  1. 安装ops-rand包

    # 安装命令 ./build_out/cann-${soc_name}-ops-rand_${cann_version}_linux-${arch}.run --full --install-path=${install_path}
    • ${soc_name}:表示NPU型号名称,即${soc_version}删除"ascend"后剩余的内容,如950
    • ${cann_version}:表示CANN版本号,如9.0.0
    • ${arch}:表示CPU架构,如aarch64x86_64
    • ${install_path}:表示指定安装路径,需要与toolkit包安装在相同路径,默认安装在/usr/local/Ascend目录。

    ops-rand安装在${install_path}/cann路径中。

  2. 配置环境变量

    source ${install_path}/cann/set_env.bash
  3. (可选)卸载ops-rand包

    # 卸载命令 ./${install_path}/cann/share/info/ops_rand/script/uninstall.sh

本地验证

通过项目根目录build.sh脚本,可快速调用算子和UT用例,验证项目功能是否正常,build参数介绍参见build参数说明。

运行测试

# 编译并运行测试 bash build.sh --run # 编译指定算子并运行测试 bash build.sh --ops=stateless_random_uniform_v2 --run

执行测试后会打印执行结果,以stateless_random_uniform_v2算子为例,结果如下:

100% tests passed, 0 tests failed

编译选项说明

选项说明示例
--ops=NAME编译指定算子--ops=stateless_random_uniform_v2
--soc=VERSION目标SoC版本--soc=ascend950
--build-type=TYPE构建类型(Release/Debug)--build-type=Debug
--run编译后运行测试--run
--pkg生成安装包--pkg
-j[N]并行编译线程数-j8
-v详细输出-v

常用命令示例

# 基本编译 bash build.sh # 编译所有算子 bash build.sh --soc=ascend950 # 编译并运行测试 bash build.sh --run # 编译指定算子并运行测试 bash build.sh --ops=stateless_random_uniform_v2 --run # 编译生成安装包 bash build.sh --pkg --soc=ascend950 # 多线程编译 bash build.sh -j16 --soc=ascend950 # 调试模式编译 bash build.sh --build-type=Debug --run # 详细输出 bash build.sh -v --run

更多帮助

  • CANN 开发文档
  • Ascend C API 参考

【免费下载链接】ops-randops-rand是CANN (Compute Architecture for Neural Networks)算子库中提供的随机数生成库。项目地址: https://gitcode.com/cann/ops-rand

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/784138/

相关文章:

  • 数字孪生大脑:构建、挑战与脑疾病干预新范式
  • 2026年西安活页环装定制与企业印刷品一站式解决方案完全指南 - 企业名录优选推荐
  • 基于MCP协议的Testmo-AI集成:测试管理智能化实践指南
  • 2026年昆明短视频运营与AI全网推广:本地化精准投流完全方案 - 年度推荐企业名录
  • CANN/ops-nn Sigmoid算子接口
  • 空间记忆模型在视频分析中的应用与优化
  • 大语言模型在教育领域的应用、风险与政策应对
  • 告别迷茫:一文读懂STM32MP135的TF-A、OP-TEE与U-Boot在EMMC中的布局奥秘
  • 生成式AI如何重塑劳动力市场:从技能变迁到教育适应
  • 2026靠谱商用音乐版权平台排行榜 诚信版权服务品牌推荐 - 拾光而行
  • 基于大语言模型的教育数字孪生:从学生认知模拟到个性化教学策略仿真
  • 科研党必备:用Matlab scatter画论文级散点图,从数据美化到子图排版一篇搞定
  • BARP框架:LLM智能路由与多模型调度优化实践
  • 河北明煌金属网栏:市政护栏全品类定制与交付服务商 - 奔跑123
  • 企业内网系统安全集成大模型api的taotoken实践方案
  • 2026收藏版|零基础自学大模型面试全复盘!小白程序员转行必看避坑攻略
  • 前端安全:安全审计实战指南
  • 杀疯了!7 款国内外 IDEA AI 插件大乱斗,谁是 AI Coding 世界第一?
  • CANN/elec-ops-inspection:电力巡检算子库
  • 黑盒式人工智能的终结?科学家开发出一种透明系统蓝图,该系统能够揭示其学习及决策过程
  • 企业私有化AI训练推理一体工作站/制造业AI质检工作站DLTM一站式AI训推解决方案
  • 别再混淆了!一文讲透AutoSAR里ComM通道与PNC集群的区别与联系
  • 视频可解释AI评估:基于移除技术的原理、实现与应用实践
  • 河北明煌金属网栏:专业防抛网研发生产与配套服务提供商 - 奔跑123
  • 多模态大模型如何重塑科学教育:从虚拟实验到个性化辅导
  • CANN/cann-bench评测平台快速入门指南
  • StateLM:大语言模型的自主上下文管理技术解析
  • 对比直接使用原生API与通过Taotoken聚合调用的账单清晰度差异
  • CANN/opbase预留执行器接口
  • CANN / pto-isa PTO Tile 内部函数编程模型