ARM架构绑核

场景解析

ARM架构多核处理器数据处理性能低。

调优思路

ARM侧通过绑核提升性能。设定某个线程/进程与某个处理器核的亲和力,让该线程/进程只在所绑定的核运行。

优化方法

在训练脚本中使能,如下所示:

RANK_ID_START=0
RANK_SIZE=8

for((RANK_ID=$RANK_ID_START;RANK_ID<$((RANK_SIZE+RANK_ID_START));RANK_ID++));
do

KERNEL_NUM=$(($(nproc)/8))
PID_START=$((KERNEL_NUM * RANK_ID))
PID_END=$((PID_START + KERNEL_NUM - 1))

#以下拉起训练的代码需根据实际修改。**为端口号,根据实际选择一个闲置端口填写。
nohup taskset -c $PID_START-$PID_END python3 xxx.py ${Dataset_Path} --lr 0.8 --arch resnet50 --dist-url 'tcp://127.0.0.1:**' --dist-backend 'hccl'  --world-size 8 --batch-size 1024 --epochs 20 --rank $RANK_ID -j ${KERNEL_NUM} --local_rank $RANK_ID & 
done

样例参考

绑核实际应用代码可参考GhostNet模型8P训练脚本。ResNet50模型绑核样例代码可参考本文档中的ARM架构绑核优化样例