# LazyAdam **Repository Path**: wang-bairu/lazy-adam ## Basic Information - **Project Name**: LazyAdam - **Description**: No description available - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-01-31 - **Last Updated**: 2024-07-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # KernelLaunch方式 ## 调试步骤 1. 配置环境变量 ``` source $HOME/Ascend/ascend-toolkit/latest/bin/setenv.bash export ASCEND_INSTALL_PATH=$HOME/Ascend/ascend-toolkit/latest ``` 2. 生成输入数据和真值数据 ``` 1. cd $HOME/LazyAdam/KernelLaunch/scripts 2. python3 gen_data.py ``` 3. 编译可执行文件 ``` bash build.sh -n [OP_NAME] -r [RUN_MODE] -t [CORE_TYPE] -v [SOC_VERSION] ``` - OP_NAME: 算子名称 - RUN_MODE:编译方式,可选择CPU调试,NPU仿真,NPU上板。支持参数为[cpu /sim / npu] - CORE_TYPE: 算子使用的Core类型。向量算子:VectorCore; Cube算子: AiCore - SOC_VERSION:昇腾AI处理器型号,如果无法确定具体的[SOC_VERSION],则在安装昇腾AI处理器的服务器执行npu-smi info命令进行查询,在查询到的“Name”前增加ascend信息,例如“Name”对应取值为xxxyy,实际配置的[SOC_VERSION]值为ascendxxxyy。支持以下参数取值(xxx请替换为具体取值): - Atlas 推理系列产品(Ascend 310P处理器)参数值:ascend310P1、ascend310P3 - Atlas 训练系列产品参数值:ascendxxxA、ascendxxxB - Atlas A2训练系列产品参数值:ascendxxxB1、ascendxxxB2、ascendxxxB3、ascendxxxB4 示例如下: ``` bash build.sh -n lazy_adam -r npu -t VectorCore -v ascend910B1 ``` 4. 运行可执行文件 示例如下: ``` bash build.sh -n lazy_adam -r npu -t VectorCore -v ascend910B1 ``` 5. 对比精度是否正常 示例如下: ``` 1. cd $HOME/LazyAdam/KernelLaunch/scripts 2. python3 verify_result_npu.py ``` # FrameworkLaunch方式 1. 通过msopgen创建算子工程 示例: ``` /home/data/wbr/Ascend/latest/python/site-packages/bin/msopgen gen -i /home/data/wbr/LazyAdam/lazy_adam.json -c ai_core-Ascend910B1 -lan cpp -out /home/data/wbr/LazyAdam/FramworkLaunch ``` 2. 执行如下命令,切换到算子工程 FramworkLaunch 目录 ``` cd /home/data/wbr/LazyAdam/FramworkLaunch ``` 3. 修改CMakePresets.json中ASCEND_CANN_PACKAGE_PATH为CANN软件包安装后的实际路径。 ``` { …… "configurePresets": [ { …… "ASCEND_CANN_PACKAGE_PATH": { "type": "PATH", "value": "/usr/local/Ascend/ascend-toolkit/latest" //请替换为CANN软件包安装后的实际路径。eg:/home/HwHiAiUser/Ascend/ascend-toolkit/latest }, …… } ] } ``` 4. 将 KernelLaunch中的tiling计算逻辑写入 op_host 中 5. 将kernel.cpp中的实现写入op_kernel即可 6. 在算子工程FramworkLaunch目录下执行如下命令,进行算子工程编译 ``` ./build.sh ``` 编译成功后,会在当前目录下创建build_out目录,并在build_out目录下生成自定义算子安装包custom_opp__.run,例如“custom_opp_openEuler_aarch64.run”。 7. 部署算子包 - 执行如下命令,在自定义算子安装包所在路径下,安装自定义算子包。 ``` cd build_out ./custom_opp__.run ``` 命令执行成功后,自定义算子包中的相关文件将部署至当前环境的OPP算子库的vendors/customize目录中。