Merge proto files from multiprocess run into one file. (#63)
- 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>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
3fa37c991e
Коммит
0263e951ff
Исполняемый файл
+45
@@ -0,0 +1,45 @@
|
||||
#!/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'."
|
||||
Ссылка в новой задаче
Block a user