41 lines
1.1 KiB
Bash
41 lines
1.1 KiB
Bash
#!/bin/bash
|
|
|
|
rank_size=$1
|
|
yamlPath=$2
|
|
modelDir=$3
|
|
config_section=$4
|
|
currentDir=$(cd "$(dirname "$0")"; pwd)
|
|
|
|
# 从 yaml 获取配置
|
|
eval $(${currentDir}/get_params_for_yaml.sh ${yamlPath} ${config_section})
|
|
|
|
# device 列表, 若无指定 device 时根据 rank_size 顺序选择
|
|
eval device_group=\$device_group_${rank_size}p
|
|
if [ x"${device_group}" == x"" ];then
|
|
device_group="$(seq 0 "$(expr $rank_size - 1)")"
|
|
fi
|
|
|
|
arr=($device_group)
|
|
if [ ${#arr[@]} -ne ${rank_size} ];then
|
|
echo "ERROR: device_group: $device_group, quantity is not equal to rank_size: $rank_size"
|
|
exit 1
|
|
fi
|
|
|
|
HCCL_dir=$modelDir/config
|
|
cp ${currentDir}/hccl_sample.json ${HCCL_dir}/${rank_size}p.json
|
|
|
|
DEVICES=""
|
|
|
|
rank_id=0
|
|
for device_id in $device_group;do
|
|
DEVICE_IP=`hccn_tool -i ${device_id} -ip -g|awk -F ":" '/ipaddr/{print $2}'`
|
|
DEVICES+="\n\
|
|
{\n\
|
|
\"device_id\": \"${device_id}\",\n\
|
|
\"device_ip\": \"${DEVICE_IP}\",\n\
|
|
\"rank_id\": \"${rank_id}\"\n\
|
|
},"
|
|
let rank_id++
|
|
done
|
|
sed -i 's#{devices}#'"${DEVICES%?}"'#g' ${HCCL_dir}/${rank_size}p.json
|