@@ -21,12 +21,9 @@ VOLUME_SIZE=10 # in GB
2121
2222PROJECT_DIR=$( basename $( pwd) )
2323
24- for INSTANCE_NAME in " ${INSTANCES_x86_64[@]} " " ${INSTANCES_aarch64[@]} " ; do
25- if printf ' %s\n' " ${INSTANCES_aarch64[@]} " | grep -qx " ${INSTANCE_NAME} " ; then
26- AMI_ID=${AMI_ID_aarch64}
27- else
28- AMI_ID=${AMI_ID_x86_64}
29- fi
24+ process_instance () {
25+ INSTANCE_NAME=$1
26+ AMI_ID=$2
3027 echo " Running instance for ${INSTANCE_NAME} with AMI ${AMI_ID} "
3128
3229 INSTANCE_ID=$( aws ec2 run-instances \
@@ -38,17 +35,18 @@ for INSTANCE_NAME in "${INSTANCES_x86_64[@]}" "${INSTANCES_aarch64[@]}"; do
3835 --security-group-ids ${SECURITY_GROUP} \
3936 --count " 1" --query ' Instances[0].InstanceId' --output text)
4037
38+ echo " Waiting for instance ${INSTANCE_ID} to be ready..."
4139 aws ec2 wait instance-status-ok --instance-ids ${INSTANCE_ID}
4240 echo " Started instance: ${INSTANCE_ID} "
4341
4442 PUBLIC_IP=$( aws ec2 describe-instances \
4543 --instance-ids ${INSTANCE_ID} \
4644 --query " Reservations[0].Instances[0].PublicIpAddress" \
4745 --output text)
48- echo " Instance public IP: ${PUBLIC_IP} "
46+ echo " Instance ${INSTANCE_ID} public IP: ${PUBLIC_IP} "
4947
5048 rsync -avz --partial --progress --exclude " .git" --exclude " build" -e " ${SSH_COMMAND} " \
51- ${PROJECT_DIR} / ubuntu@${PUBLIC_IP} :~ /${PROJECT_DIR}
49+ . / ubuntu@${PUBLIC_IP} :~ /${PROJECT_DIR}
5250 ${SSH_COMMAND} ubuntu@${PUBLIC_IP} << 'EOF '
5351 set -e # Exit on error
5452
@@ -63,11 +61,26 @@ for INSTANCE_NAME in "${INSTANCES_x86_64[@]}" "${INSTANCES_aarch64[@]}"; do
6361 ./scripts/generate_multiple_tables.py
6462EOF
6563
66- echo " Script executed successfully"
64+ echo " Script executed successfully on ${INSTANCE_NAME} "
6765 mkdir -p " ${PROJECT_DIR} /outputs/${INSTANCE_NAME} "
6866 rsync -avz --partial --progress -e " ${SSH_COMMAND} " \
69- ubuntu@${PUBLIC_IP} :~ /${PROJECT_DIR} /outputs/ ${PROJECT_DIR} /outputs/${INSTANCE_NAME} /
67+ ubuntu@${PUBLIC_IP} :~ /${PROJECT_DIR} /outputs/ . /outputs/${INSTANCE_NAME} /
7068
7169 aws ec2 terminate-instances --instance-ids ${INSTANCE_ID}
7270 echo " Terminated instance: ${INSTANCE_ID} "
71+ }
72+
73+ echo " Launching ${# INSTANCES_aarch64[@]} aarch64 instances and ${# INSTANCES_x86_64[@]} x86_64 instances in parallel..."
74+ for INSTANCE_NAME in " ${INSTANCES_x86_64[@]} " " ${INSTANCES_aarch64[@]} " ; do
75+ if printf ' %s\n' " ${INSTANCES_aarch64[@]} " | grep -qx " ${INSTANCE_NAME} " ; then
76+ AMI_ID=${AMI_ID_aarch64}
77+ else
78+ AMI_ID=${AMI_ID_x86_64}
79+ fi
80+
81+ process_instance " ${INSTANCE_NAME} " " ${AMI_ID} " 2>&1 | tee " ${INSTANCE_NAME} .log" &
7382done
83+
84+ # Wait for all background jobs to finish
85+ wait
86+ echo " All instances completed."
0 commit comments