��澧��ㄧ讲

�ㄥ��涔���绫�瀛�涔���绋���浣�涔���锛�璇锋�ㄥ������涓��㈡�ラ�ゅ�����虹���澧���寤哄��婧���涓�杞斤�纭�淇�宸插��瑁�NPU椹卞�ㄣ���轰欢��CANN杞�浠讹�Ascend-cann-toolkit��Ascend-cann-ops锛�绛���

��澧�瀹�瑁�

��椤圭����渚�澶�绉���寤烘���剧��澧����瑰�锛�璇锋�������┿��

**璇存��**锛��������扮��缂�璇�����杩�琛�����涔�濡�涓�锛�璇锋�规��瀹������甸���┿��

  • 缂�璇���锛���瀵逛�缂�璇���椤圭��涓�杩�琛����烘��锛�����瀹�瑁�CANN toolkit����
  • 杩�琛���锛���瀵硅�琛���椤圭�����烘��锛�缂�璇�杩�琛���绾�杩�琛�锛�锛���瀹�瑁�椹卞�ㄤ��轰欢��CANN toolkit����CANN ops����
瀹�瑁��瑰� 浣跨�ㄨ�存�� 浣跨�ㄥ�烘��
CANNLab 涓�绔�寮�寮���骞冲�帮���渚��ㄧ嚎�存�ヨ�琛������剧��澧�锛��������ㄥ��瑁���
褰�������渚����虹����锛�榛�璁ゅ��瑁����板������CANN����
���ㄤ�娌℃�����捐�惧���寮�������
Docker Docker������涓�绉�楂����ㄧ讲�瑰�锛�宸查�����CANN����蹇�澶�渚�璧���
褰���浠����ㄤ�Atlas A2绯诲��浜у��锛�OS浠�����Ubuntu��浣�绯荤���榛�璁ゅ��瑁����板������CANN����
���ㄦ�����捐�惧�锛���瑕�蹇�����寤虹��澧���寮�������
���ㄥ��瑁� ���ㄥ��瑁�CANN�����虹�渚�璧�锛��垫椿�ч���� ���ㄦ�����捐�惧�锛��充�楠����ㄥ��瑁�CANN����浣�楠�����master�����藉����寮�������
Spack ��绠$��宸ュ�凤����ㄥ��瑁�渚�璧�骞剁�$��缂�璇���椤癸�����涓���寮���������瀹�涔���缃���
**���ㄥ��瑁�CANN����缂�璇�渚�璧�**锛�杩�琛�����瀹夸富�烘����瀹�瑁�椹卞�ㄤ��轰欢锛���
���ㄦ�����捐�惧�锛���瑕����ㄥ��绠$��CANN��������缂�璇���椤瑰��渚�璧�锛�����澶���缃�涓�瀹��跺����寤虹��寮�����锛�灏ゅ�堕����HPC��澧�锛���

�瑰�1锛�CANNLab

瀵逛������捐�惧���寮�����锛����存�ヤ娇��CANNLab浜�寮�����澧�锛��斥��涓�绔�寮�寮���骞冲����锛�璇ュ钩�颁负�ㄦ��渚��ㄧ嚎���存�ヨ�琛������剧��澧�锛���澧�涓�宸插��瑁�蹇�澶���椹卞�ㄥ�轰欢��杞�浠跺����渚�璧�锛��������ㄥ��瑁���

**璇存��**锛���澧�榛�璁ゅ��瑁����板������CANN��锛�婧���涓�杞芥�舵敞��涓�杞�浠堕��濂����村��充�寮���骞冲�扮��浠�缁�璇峰����CANNLab��瀵���

  1. 杩��ュ�婧�椤圭��锛����烩��CANNLab������锛�浣跨�ㄥ凡璁よ��杩�����涓轰�璐��风�诲����ユ��娉ㄥ����璁よ��锛�璇锋�规��椤甸�㈡��绀鸿�琛�娉ㄥ����璁よ����

    浜�骞冲��
  2. �规��椤甸�㈡��绀哄��寤�NPU��澧�骞堕��缃�瑙��硷����ㄤ�寮�����澧���锛����烩��杩��� > WebIDE��杩��ヤ�绔�寮�寮���骞冲�般��

    褰���寮�婧�椤圭��璧�婧�榛�璁ゅ��/mnt/workspace/gitCode/${gitCode_id}��褰�涓�锛�${gitCode_id}琛ㄧず寮�����涓�浜�gitCode璐��枫��

    浜�骞冲��

�瑰�2锛�Docker�ㄧ讲

瀵逛������捐�惧���寮�����锛��ユ�ㄦ�冲揩����寤烘���剧��澧�锛���浣跨��Docker�����ㄧ讲��

**璇存��**锛�

  • ������浠舵��杈�澶э�涓�杞介��瑕�涓�瀹��堕�达�璇锋�ㄨ��蹇�绛�寰����充�docker�戒护����椤逛�缁�����杩�docker --help�ヨ����
  • ��澧�榛�璁ゅ��瑁����板������CANN��锛�婧���涓�杞芥�舵敞��涓�杞�浠堕��濂���
  1. 瀹�瑁�椹卞�ㄤ��轰欢锛�杩�琛���渚�璧�锛�

    椹卞�ㄤ��轰欢��杩�琛���渚�璧�锛��ヤ�缂�璇�绠�瀛�锛���浠ヤ�瀹�瑁���浣跨��npu-smi info妫��ユ������NPU�稿�充俊��锛��ユ病��锛�璇峰������CANN蹇���瀹�瑁���瀹���椹卞�ㄤ��轰欢瀹�瑁���

  2. 涓�杞介����

    • 姝ラ��1锛�浠�root�ㄦ�风�诲�瀹夸富�恒��纭�淇�瀹夸富�哄凡瀹�瑁�Docker寮���锛�����1.11.2��浠ヤ�锛�锛�浣跨��docker --version妫���Docker����锛��ユ病��锛�璇峰����Docker瀹��瑰��瑁�������

    • 姝ラ��2锛�浠����鹃����浠�搴�����宸查�����CANN杞�浠跺����ops-math����渚�璧���������

      绀轰�濡�涓�锛�璇疯��琛��挎��CANN�����枫������绯诲������浣�绯荤���python����淇℃����

      # 浠�cann:9.1.0-beta.1����涓轰�
      docker pull swr.cn-south-1.myhuaweicloud.com/ascendhub/cann:9.1.0-beta.1-910b-openeuler24.03-py3.12-devel
      
  3. 杩�琛�Docker

    ����������锛���瑕�浠ョ�瑰�����板���ㄥ�瑰��锛�浠ヤ究瀹瑰�ㄥ���借�块��瀹夸富�����捐�惧���

    docker run --name cann_container --device /dev/davinci0 --device /dev/davinci_manager --device /dev/devmm_svm --device /dev/hisi_hdc -v /usr/local/dcmi:/usr/local/dcmi -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi -v /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/ -v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info -v /etc/ascend_install.info:/etc/ascend_install.info -it swr.cn-south-1.myhuaweicloud.com/ascendhub/cann:9.1.0-beta.1-910b-openeuler24.03-py3.12-devel bash
    
    ���� 璇存�� 娉ㄦ��浜�椤�
    --name cann_container 涓哄�瑰�ㄦ��瀹���绉帮�渚夸�绠$���� ����瀹�涔���
    --device /dev/davinci0 �稿�锛�灏�瀹夸富�虹��NPU璁惧��℃��灏��板�瑰�ㄥ��锛�����瀹���灏�澶�寮�NPU璁惧��°�� 蹇�椤绘�规��瀹������佃��达�davinci0瀵瑰�绯荤�涓���绗�0寮�NPU�°��璇峰���ㄥ�夸富�烘�ц�npu-smi info�戒护锛��规��杈��烘�剧ず��璁惧��凤�濡�NPU 0, NPU 1锛��ヤ慨�规�ょ��枫��
    --device /dev/davinci_manager ��灏�NPU璁惧�绠$���ュ�c�� -
    --device /dev/devmm_svm ��灏�璁惧���瀛�绠$���ュ�c�� -
    --device /dev/hisi_hdc ��灏�涓绘�轰�璁惧��寸����淇℃�ュ�c�� -
    -v /usr/local/dcmi:/usr/local/dcmi ��杞借�惧�瀹瑰�ㄧ�$���ュ�o�DCMI锛��稿�冲伐�峰��搴��� -
    -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi ��杞�npu-smi宸ュ�枫�� 浣垮�瑰�ㄥ����浠ョ�存�ヨ�琛�姝ゅ�戒护�ユ�ヨ��NPU�舵�����ц�戒俊����
    -v /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/ �抽����杞斤�灏�瀹夸富�虹��NPU椹卞�ㄥ���灏��板�瑰�ㄥ���� -
    -v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info ��杞介┍�ㄧ����淇℃����浠躲�� -
    -v /etc/ascend_install.info:/etc/ascend_install.info ��杞�CANN杞�浠跺��瑁�淇℃����浠躲�� -
    -it -i锛�浜や�寮�锛���-t锛�����浼�缁�绔�锛���缁������般�� -
    swr.cn-south-1.myhuaweicloud.com/ascendhub/cann:9.1.0-beta.1-910b-openeuler24.03-py3.12-devel ��瀹�瑕�杩�琛���Docker������ 璇风‘淇�姝ら����������绛撅�tag锛�涓�浣���杩�docker pull����������瀹��ㄤ��淬��
    bash 瀹瑰�ㄥ���ㄥ��绔��虫�ц����戒护�� -

�瑰�3锛����ㄥ��瑁�

瀵逛������捐�惧���寮�����锛��ユ�ㄦ�虫���ㄦ��寤烘���剧��澧�锛�璇峰����涓�杩版�ラ�ゃ��

瀹�瑁�杞�浠�

  • �烘��1锛�浣�楠�master�����藉�����轰�master����杩�琛�寮���

    1. 瀹�瑁�椹卞�ㄤ��轰欢锛�杩�琛���渚�璧�锛�

      椹卞�ㄤ��轰欢��杩�琛���渚�璧�锛��ヤ�缂�璇�绠�瀛�锛���浠ヤ�瀹�瑁���浣跨��npu-smi info妫��ユ������NPU�稿�充俊��锛��ユ病��锛�璇峰������CANN蹇���瀹�瑁���瀹���椹卞�ㄤ��轰欢瀹�瑁���

    2. 瀹�瑁�CANN��

      璇峰����涓�杞介�炬��锛����╂���版�堕�寸����锛�骞舵�规��浜у�����峰����澧��舵��涓�杞藉�瑰�����瀹�瑁��戒护濡�涓�锛��村���瀵煎������CANN蹇���瀹�瑁�����

      • 瀹�瑁�CANN toolkit��

        bash ./Ascend-cann-toolkit_${cann_version}_linux-${arch}.run --install --install-path=${install_path}
        
      • 瀹�瑁�CANN ops��锛�杩�琛���渚�璧�锛�

        ops����杩�琛���渚�璧�锛��ヤ�缂�璇�绠�瀛�锛���涓�瀹�瑁�姝ゅ����

        bash ./Ascend-cann-${soc_name}-ops_${cann_version}_linux-${arch}.run --install --install-path=${install_path}
        

      ������涔�璇存��锛�

      • ${cann_version}锛�琛ㄧずCANN�������枫��
      • ${arch}锛�琛ㄧずCPU�舵��锛�����杩�uname -m�ヨ��锛�渚�濡�aarch64��x86_64��
      • ${soc_name}锛�琛ㄧずNPU���峰��绉般��
      • ${install_path}锛�琛ㄧず��瀹�瀹�瑁�璺�寰�锛�ops����涓�toolkit��瀹�瑁��ㄧ�稿��璺�寰�锛�root�ㄦ�烽�璁ゅ��瑁���/usr/local/Ascend��褰���
  • �烘��2锛�浣�楠�宸插��甯������藉�����轰�宸插��甯�����杩�琛�寮���

    璇疯�块��CANN瀹�缃�涓�杞戒腑蹇�锛����╁��甯�����锛�浠�����CANN 8.5.0����缁�����锛�锛�骞舵�规��浜у�����峰����澧��舵��涓�杞藉�瑰���锛���������缃�椤垫��渚����戒护瀹���瀹�瑁���

瀹�瑁��虹�渚�璧�

��椤圭���虹�渚�璧�濡�涓�锛�娉ㄦ��婊¤冻�����疯�姹���

  • python >= 3.7.0锛�寤鸿������ <= 3.10锛�
  • gcc/g++ >= 7.3.0
  • cmake >= 3.16.0
  • pigz锛�����锛�瀹�瑁���������������搴�锛�寤鸿������ >= 2.4锛�
  • dos2unix
  • make
  • patch
  • googletest锛�浠��ц�UT�朵�璧�锛�寤鸿������ release-1.11.0锛�

涓�杩颁�璧�����杩�椤圭������涓���瀹�瑁�锛���浣�姝ラ�ゅ�涓�锛�

  1. 涓�杞芥�����

    涓�杞戒�CANN������濂�������婧���锛��戒护濡�涓�锛�${tag_version}�挎��涓哄������绛惧����

    git clone -b ${tag_version} https://gitcode.com/cann/ops-math.git
    
  2. 瀹�瑁�渚�璧���

    ����杩�椤圭���圭��褰�install_deps.sh涓���瀹�瑁�涓�杩颁�璧�锛��戒护濡�涓�锛��ラ���颁�����绯荤�锛�璇峰����璇ユ��浠惰��琛�������

    bash install_deps.sh
    

    瀹�瑁�瀹���锛�����杩�椤圭���圭��褰�requirements.txt缁х画瀹�瑁�python涓��瑰�渚�璧�锛��戒护濡�涓���

    pip3 install -r requirements.txt
    

�瑰�4锛�Spack瀹�瑁�

���ㄤ�甯���蹇���瀹�瑁�渚�璧�骞剁�垫椿��缃�缂�璇���椤圭��寮�������Spack浼����ㄥ��瑁�CANN杞�浠跺��锛�toolkit��ops锛���缂�璇�渚�璧�锛�杩�琛���浠���瀹夸富�烘����瀹�瑁�椹卞�ㄤ��轰欢锛��ヤ�缂�璇�绠�瀛���涓�瀹�瑁�锛���

��缃�渚�璧�

灏界��Spack浼����ㄥ��瑁��稿�充�璧�锛�浣���Spack渚��ч��瑕�涓�浜���缃�渚�璧��ユ������韬���杩�琛�锛�

  • python >= 3.7.0锛�寤鸿������ <= 3.10锛�
  • gcc/g++ >= 7.3.0
  • patch ����琛����ㄥ��瑁�锛�涔�������瀹�瑁��虹�渚�璧�

蹇�����寤�

杩��ラ」���圭��褰�锛�杩�琛�涓���寮�����锛�

cd ${local_repo_path}/ops-math # ${local_repo_path}涓烘���颁唬��浠���璺�寰�
source spack/prepare_cann_env.sh
spack install --add cann-ops@${cann_version} soc=${soc_name} # ops����杩�琛���渚�璧�锛��ヤ�缂�璇�绠�瀛�锛���涓�瀹�瑁�姝ゅ����

prepare_cann_env.sh浼����ㄥ��瑁�Spack����寤烘��寤虹��澧��������稿�充�璧�骞跺������寤猴���寤哄�烘��榛�璁や负缂�璇�ops-math��锛�濡����朵���寤哄�烘��璇峰����compile.md

浜х�╀�缃�

�ョ��浜х�╀�缃�锛�spack location -i cann-ops-math 姝ゅ�浜х�╂��run��锛�瀹���涓�run��宸茶���ㄥ��瑁���$ASCEND_HOME_PATH涓�锛��ㄤ唬���圭��褰�涓���build_out��褰�涓�浜����惧��run��

�村�Spack��浣�

濡����寸簿缁��颁娇��Spack�у�跺��瑁�杩�绋�锛�璇峰����spack_quick_install.md

��澧�楠�璇�

瀹�瑁�瀹�CANN����锛���楠�璇���澧���椹卞�ㄦ����姝e父��

  • 妫���NPU璁惧�

    # 杩�琛�npu-smi锛��ヨ�芥�e父�剧ず璁惧�淇℃��锛���椹卞�ㄦ�e父
    npu-smi info
    
  • 妫���CANN����

    # �ョ��CANN toolkit������淇℃��锛�榛�璁よ矾寰�瀹�瑁�锛�
    cat /usr/local/Ascend/cann/${arch}-linux/ascend_toolkit_install.info # docker�ㄧ讲�����ㄥ��瑁��烘��
    cat /home/developer/Ascend/cann/${arch}-linux/ascend_toolkit_install.info # CANNLab�烘��
    spack location -i cann-toolkit # Spack瀹�瑁��烘��
    # �ョ��CANN ops������淇℃��锛�榛�璁よ矾寰�瀹�瑁�锛�
    cat /usr/local/Ascend/cann/${arch}-linux/ascend_ops_install.info # docker�ㄧ讲�����ㄥ��瑁��烘��
    cat /home/developer/Ascend/cann/${arch}-linux/ascend_ops_install.info # CANNLab�烘��
    spack location -i cann-ops # Spack瀹�瑁��烘��
    

    �朵腑${arch}����杩�uname -m�ヨ�㈠����舵��锛�濡�aarch64��x86_64��

��澧�������缃�

�������╁�������戒护浣跨��澧���������锛�Spack�烘��涓�宸茶���ㄨ�剧疆��澧�����锛�璺宠�姝ゆ�ラ��

# 榛�璁よ矾寰�瀹�瑁�锛�浠�root�ㄦ�蜂负渚�锛���root�ㄦ�凤�灏�/usr/local�挎��涓�${HOME}锛�
source /usr/local/Ascend/cann/set_env.sh
# ��瀹�璺�寰�瀹�瑁�
# source ${install_path}/cann/set_env.sh