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