94 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/bash
 | 
						||
 | 
						||
# GRASP×ELS parameters
 | 
						||
n=24 # 4,8,12,16,20
 | 
						||
o=20 # 1,10,20,30,40,50 (n=4?)
 | 
						||
i=20
 | 
						||
 | 
						||
seeds=(std::mt19937::default_seed 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29)
 | 
						||
 | 
						||
# Script shenanigans
 | 
						||
root=.
 | 
						||
 | 
						||
cxx=g++
 | 
						||
cxx_flags="-Wall -Wextra -DNDEBUG -O2 -pthread -I${root}/src -I${root}/inc -DGRASP_N=${n} -DELS_ITER_MAX=${o} -DELS_GEN=${i}"
 | 
						||
ld_flags="-L${root}/release -ltsp"
 | 
						||
src="${root}/bench/graspels/*.cpp"
 | 
						||
# preload="LD_PRELOAD=~bachelet/local/kephren/lib64/libstdc++.so.6"
 | 
						||
repeat=5
 | 
						||
 | 
						||
outdir="rtbenchmarks/data_graspels"
 | 
						||
 | 
						||
exe=bench_graspels
 | 
						||
quit() {
 | 
						||
	rm "${exe}"
 | 
						||
	exit 0
 | 
						||
}
 | 
						||
trap quit SIGINT
 | 
						||
 | 
						||
# Utility
 | 
						||
compile_link() {
 | 
						||
	function=$1; shift
 | 
						||
	ncores=$1; shift
 | 
						||
	in=$1; shift
 | 
						||
 | 
						||
	data=$(echo "${root}/data/${in}"|sed "s,^$(pwd)/,,")
 | 
						||
 | 
						||
	${cxx} ${cxx_flags} -DDATA_FILE="\"${data}\"" -DFUNC="${function}" -DNTHREADS="${ncores}" -o"${exe}" ${src} ${ld_flags}
 | 
						||
}
 | 
						||
 | 
						||
run() {
 | 
						||
	coreset=$1; shift
 | 
						||
 | 
						||
	for i in $(seq ${repeat}); do
 | 
						||
		seed=${seeds[$i-1]}
 | 
						||
		eval "${preload} taskset -c ${coreset} ./${exe} --seed '${seed}'"
 | 
						||
	done
 | 
						||
}
 | 
						||
 | 
						||
# Functions
 | 
						||
benchSeq() {
 | 
						||
	coreset=0
 | 
						||
	ncores=1
 | 
						||
 | 
						||
	echo "---- benchSeq ----"
 | 
						||
 | 
						||
	for dataset in dj38 qa194; do
 | 
						||
		echo "==== dataset: ${dataset}"
 | 
						||
		for function in hw_seq_v sk_seq; do
 | 
						||
			echo ">> function: ${function}"
 | 
						||
 | 
						||
			compile_link "${function}" "${ncores}" "${dataset}"
 | 
						||
			run "${coreset}"|tee -a "${outdir}/rt_seq_${dataset}_${function}"
 | 
						||
		done
 | 
						||
	done
 | 
						||
}
 | 
						||
 | 
						||
benchPar() {
 | 
						||
	# cores=(1 2 4 6 8 10 12 14 16 18)
 | 
						||
	cores=(1 2 4)
 | 
						||
 | 
						||
	echo "---- benchPar ----"
 | 
						||
 | 
						||
	for dataset in dj38 qa194; do
 | 
						||
		echo "==== dataset: ${dataset}"
 | 
						||
		for function in hw_par_v sk_par_firstlevel sk_par_staticpool sk_par_dynamicpool sk_par_thread; do
 | 
						||
			echo ">> function: ${function}"
 | 
						||
			for ncores in ${cores[@]}; do
 | 
						||
				echo "cores: ${ncores}"
 | 
						||
				maxcore=$((ncores*4 - 1))
 | 
						||
				coreset="$(seq -s, 0 4 ${maxcore})"
 | 
						||
 | 
						||
				compile_link "${function}" "${ncores}" "${dataset}"
 | 
						||
				run "${coreset}"|tee -a "${outdir}/rt_cores_${dataset}_${function}"
 | 
						||
			done
 | 
						||
		done
 | 
						||
	done
 | 
						||
}
 | 
						||
 | 
						||
# Script
 | 
						||
benchSeq
 | 
						||
benchPar
 | 
						||
 | 
						||
quit
 |