added mechanism to download benchmark results on work.global on success
This commit is contained in:
		
							parent
							
								
									75c4b98be0
								
							
						
					
					
						commit
						733fda5517
					
				|  | @ -1,5 +1,5 @@ | |||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| # this job file is a template file used by launch-perf-jobs.sh | ||||
| 
 | ||||
| git_repos_url="$1" # eg "https://github.com/hibridon/hibridon" | ||||
| git_user="$2" # eg 'g-raffy' | ||||
|  | @ -10,16 +10,23 @@ benchmark_command="$6"  # eg 'ctest -L ^arch4_quick$' | |||
| env_vars_bash_commands="$7"  # defines extra environment variables prior to launch starbench. eg "export MKLROOT=/opt/intel/compilers_and_libraries_2020.1.217/linux/mkl" | ||||
| 
 | ||||
| cmake_path='/opt/cmake/cmake-3.23.0/bin/cmake' | ||||
| executed_by_sge='' | ||||
| 
 | ||||
| if [ "${JOB_ID}" = '' ] | ||||
| then | ||||
| 	executed_by_sge='false' | ||||
| 	# this script is not executed by sge... set dummy values for test | ||||
| 	TMPDIR=/tmp | ||||
| 	JOB_ID=666666 | ||||
| 	NSLOTS=2 | ||||
| else | ||||
| 	executed_by_sge='true' | ||||
| fi | ||||
| 
 | ||||
| echo "Executing job ${JOB_ID} on $(hostname)" | ||||
| launch_dir="$(pwd)" | ||||
| 
 | ||||
| echo "Executing job ${JOB_ID} on $(hostname) from ${launch_dir}" | ||||
| echo "date: $(date --iso-8601=seconds)" | ||||
| temp_dir=${TMPDIR}/$(whoami)/${JOB_ID} | ||||
| if [ -d "${temp_dir}" ] | ||||
| then | ||||
|  | @ -59,5 +66,22 @@ do | |||
| 	command="${command} --cmake-option=${cmake_option}" | ||||
| done | ||||
| command="${command} --benchmark-command=\"${benchmark_command}\"" | ||||
| echo "command: $command" | ||||
| eval $command | ||||
| 
 | ||||
| echo "command: ${command}" | ||||
| eval ${command} | ||||
| if [ "$?" = '0' ] | ||||
| then | ||||
| 	echo "the command ${command} succeeded" | ||||
| 	rsync -va --exclude 'build' --exclude 'source.git' "${output_dir}/"  ${launch_dir}/  # exclude the source.git and build directories (one for each worker) because they are big and not that precious | ||||
| 	# TMPDIR will be deleted by sge at the end of the job | ||||
| else | ||||
| 	if [ ${executed_by_sge} = 'true' ] | ||||
| 	then | ||||
| 		# TMPDIR will be deleted by sge at the end of the job. Backup data for investigation | ||||
| 		backup_dir="/opt/ipr/cluster/work.local/$(whoami)/${JOB_ID}" | ||||
| 		echo "moving ${output_dir} to ${backup_dir} to that it doesn't get deleted by sge at the end of the job. This way, data gets a chance to be investagated then manually deleted."  | ||||
| 		mv "${output_dir}" "${backup_dir}" | ||||
| 	fi | ||||
| 	echo "the command ${command} failed... the output data dir (${output_dir}) is expected to be cleaned up manually after investigation" | ||||
| 	exit 1 | ||||
| fi | ||||
|  |  | |||
|  | @ -235,8 +235,9 @@ def starbench_cmake_app(git_repos_url: str, code_version: str, tmp_dir: Path, nu | |||
|         subprocess.run(['git', 'checkout', '%s' % (code_version)], cwd=str(src_dir), check=True) | ||||
| 
 | ||||
|     # we need one build for each parallel run, otherwise running ctest on parallel would overwrite the same file, which causes the test to randomly fail depnding on race conditions | ||||
|     build_dir = tmp_dir / 'worker<worker_id>' | ||||
|     print('creating build directory %s' % build_dir) | ||||
|     worker_dir = tmp_dir / 'worker<worker_id>' | ||||
|     build_dir = worker_dir / 'build' | ||||
|     print('creating build directory %s' % worker_dir) | ||||
|     create_build_dir = StarBencher( | ||||
|         run_command=['mkdir', '-p', build_dir], | ||||
|         num_cores_per_run=1, | ||||
|  | @ -259,8 +260,8 @@ def starbench_cmake_app(git_repos_url: str, code_version: str, tmp_dir: Path, nu | |||
|         max_num_cores=num_cores, | ||||
|         stop_condition=StopAfterSingleRun(), | ||||
|         run_command_cwd=build_dir, | ||||
|         stdout_filepath=build_dir / 'configure_stdout.txt', | ||||
|         stderr_filepath=build_dir / 'configure_stderr.txt') | ||||
|         stdout_filepath=worker_dir / 'configure_stdout.txt', | ||||
|         stderr_filepath=worker_dir / 'configure_stderr.txt') | ||||
|     configure_duration = configure.run()  # noqa: F841 | ||||
| 
 | ||||
|     print('building %s ...' % (build_dir)) | ||||
|  | @ -271,8 +272,8 @@ def starbench_cmake_app(git_repos_url: str, code_version: str, tmp_dir: Path, nu | |||
|         max_num_cores=num_cores, | ||||
|         stop_condition=StopAfterSingleRun(), | ||||
|         run_command_cwd=build_dir, | ||||
|         stdout_filepath=build_dir / 'build_stdout.txt', | ||||
|         stderr_filepath=build_dir / 'build_stderr.txt') | ||||
|         stdout_filepath=worker_dir / 'build_stdout.txt', | ||||
|         stderr_filepath=worker_dir / 'build_stderr.txt') | ||||
|     build_duration = build.run()  # noqa: F841 | ||||
| 
 | ||||
|     print('benchmarking %s ...' % (build_dir)) | ||||
|  | @ -284,8 +285,8 @@ def starbench_cmake_app(git_repos_url: str, code_version: str, tmp_dir: Path, nu | |||
|         max_num_cores=num_cores, | ||||
|         stop_condition=stop_condition, | ||||
|         run_command_cwd=build_dir, | ||||
|         stdout_filepath=build_dir / 'bench_stdout.txt', | ||||
|         stderr_filepath=build_dir / 'bench_stderr.txt') | ||||
|         stdout_filepath=worker_dir / 'bench_stdout.txt', | ||||
|         stderr_filepath=worker_dir / 'bench_stderr.txt') | ||||
|     mean_duration = bench.run() | ||||
|     print('duration : %.3f s' % (mean_duration)) | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue