tomwalters@54: #!/bin/bash tomwalters@54: tomwalters@54: # Test for the existence of AIMCopy in the path tomwalters@54: AIMCOPY=`which AIMCopy` tomwalters@165: if [ $AIMCOPY == "" ]; then tomwalters@54: echo "Please build AIM-C and make AIMCopy available in the path" tomwalters@54: fi tomwalters@54: tomwalters@54: set -e tomwalters@54: set -u tomwalters@54: tomwalters@165: FEATURES_DIR=$1 tomwalters@165: MACHINE_CORES=$2 tomwalters@54: FILE_LIST=feature_generation_script tomwalters@54: tomwalters@54: echo "Splitting data files over cores..." tomwalters@54: total_cores=$(($MACHINE_CORES)) tomwalters@54: echo -n $total_cores tomwalters@54: echo " cores available" tomwalters@54: total_files=`cat $FEATURES_DIR/$FILE_LIST | wc -l | sed 's/ *//'` tomwalters@54: echo -n $total_files tomwalters@54: echo " files to process" tomwalters@54: files_per_core=$(($total_files/$total_cores+1)) tomwalters@54: echo -n $files_per_core tomwalters@54: echo " files per core" tomwalters@54: split -l $files_per_core $FEATURES_DIR/$FILE_LIST $FEATURES_DIR/split_list tomwalters@54: splits=( $(ls $FEATURES_DIR/split_list*)) tomwalters@54: element=0 tomwalters@54: echo -n "Spawning " tomwalters@54: echo -n $total_cores tomwalters@54: echo " tasks..." tomwalters@54: for ((c=1;c<=$MACHINE_CORES;c+=1)); do tomwalters@54: s=${splits[$element]} tomwalters@165: AIMCopy -D $FEATURES_DIR/aimcopy_config.out -S $s & tomwalters@54: let element=element+1 tomwalters@54: done tomwalters@54: tomwalters@54: echo "Waiting for tasks to complete..." tomwalters@54: wait tomwalters@54: echo "Done!"