CANN/shmem调度GMM组合示例
2026/5/9 12:21:29 网站建设 项目流程
  1. 【免费下载链接】shmemCANN SHMEM 是面向昇腾平台的多机多卡内存通信库,基于OpenSHMEM 标准协议,实现跨设备的高效内存访问与数据同步。项目地址: https://gitcode.com/cann/shmem

  2. 编译项目
    shmem/根目录下执行编译脚本:

    bash scripts/build.sh -examples
  3. 数据生成
    2.1 -config 文件参数:

    • dataType数据类型,默认为2(INT8INT8_INT32_FP16),具体可见gen_data.py中的定义。
    • peSize卡数,一般为2 4 6 8 16 32。
    • mtoken数。
    • k激活矩阵的Hidden维。
    • n权重矩阵的Hidden维。
    • weightNz权重矩阵是否是Nz数据格式,默认为1。
    • dequantGranularity反量化的方式,默认为3。
    • local_expert_nums每张卡上的专家数量。
    • EP与peSize保持一致。
    • maxOutputSizealltoall后的最大的token数,多余的则截断,默认开两倍的m。
    • topK每个token复制的份数。
    • transB权重矩阵是否转置,默认为0。

    2.2 -执行生成脚本:

    该步骤会在scripts/run.sh中自动执行,无需单独执行。

    cd examples/dispatch_gmm_combine # 基于cpu实现 python3 utils/gen_data.py # 基于torch-npu实现(默认用gen_data.py生成的输入) python3 utils/gen_data_by_torch_npu.py

    注:运行用例需安装torch-npu

  4. 运行Dispatch-Gmm-Combine示例程序进入示例目录并执行运行脚本,参数同config中的保持一致:

    cd examples/dispatch_gmm_combine bash scripts/run.sh -pes {peSize} -M {m} -K {k} -N {n} -expertPerPe {local_expert_nums} -dataType {dataType} -weightNz {weightNz} -transB {transB}

    scripts/run.sh会执行算子(输出结果保存在examples/dispatch_gmm_combine/out目录下)并进行结果校验。 也可以单独对结果进行校验:

    cd examples/dispatch_gmm_combine python3 utils/check_result.py
  5. 运行示例

    # 先将配置写入config.ini cd examples/dispatch_gmm_combine bash ./scripts/run.sh -pes 2 -M 64 -K 7168 -N 4096 -expertPerPe 2 -dataType 2 -weightNz 1 -transB 0

【免费下载链接】shmemCANN SHMEM 是面向昇腾平台的多机多卡内存通信库,基于OpenSHMEM 标准协议,实现跨设备的高效内存访问与数据同步。项目地址: https://gitcode.com/cann/shmem

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询