0263e951ff
- Added script to merge multiprocess output automatically to one file when there are multiprocess proto files written into output folder - Execute the merge multiprocess script from the rank 0 process - Added the scripts folder path to env path, via setup-env.sh - Installed merge_multiprocess_output.sh to /share/rocprofiler-systems/bin dir Co-authored-by: David Galiffi <David.Galiffi@amd.com>
46 lines
1.1 KiB
Bash
Executable File
46 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Check if the folder path is provided
|
|
if [ -z "$1" ]; then
|
|
echo "Usage: $0 <folder_path>"
|
|
exit 1
|
|
fi
|
|
|
|
# Assign the folder path to a variable
|
|
FOLDER_PATH=$1
|
|
|
|
# Check if the folder exists
|
|
if [ ! -d "$FOLDER_PATH" ]; then
|
|
echo "Error: Folder '$FOLDER_PATH' does not exist."
|
|
exit 1
|
|
fi
|
|
|
|
# Check if there are more than one .proto files
|
|
PROTO_FILES=("$FOLDER_PATH"/*.proto)
|
|
if [ ${#PROTO_FILES[@]} -le 1 ]; then
|
|
exit 0
|
|
fi
|
|
|
|
echo "Merging multiprocess files ..."
|
|
# Check if all .proto files have been fully written or wait
|
|
TIMEOUT=60 # Timeout in seconds
|
|
for file in "${PROTO_FILES[@]}"; do
|
|
SECONDS=0
|
|
while lsof "$file" > /dev/null 2>&1; do
|
|
if [ $SECONDS -ge $TIMEOUT ]; then
|
|
echo "Timeout reached while waiting for $file to be released."
|
|
break
|
|
fi
|
|
echo "Waiting for $file to be released..."
|
|
sleep 1
|
|
done
|
|
done
|
|
|
|
# Output file name
|
|
OUTPUT_FILE="merged.proto"
|
|
|
|
# Merge all .proto files into one file
|
|
cat "$FOLDER_PATH"/*.proto > "$FOLDER_PATH"/"$OUTPUT_FILE"
|
|
|
|
echo "All multiprocess .proto files in '$FOLDER_PATH' have been merged into '$OUTPUT_FILE'."
|