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架构绑核优化样例。