This tool will extract the total number of CPU cores/threads and GPU platforms from the user's environment and utilize them in running a list of apps/args specified in the benchCFG file. Using less than total number of CPU threads can be specified in the command line. This tool will read a list of MB apps/args from the benchCFG file and search for the specified MB apps in the APP_CPU and APP_GPU directories to validate and determine platform. It will then leverage allocated threads, as specified, to run all benchmark jobs, storing results in the testData directory. Use the --help option to get a description of valid command line arguments.
By default, a summary list of all jobs will update in the display as the program progresses. If there are a large number of jobs, then this display may not be useful and the --display_slots option can be used to display the status of each slot as the program progresses. In some cases, there will be too many slots to display, and the --display_compact option can used to further optimize the progress display.
You may need to use the --boinc_home command option to specify the boinc home directory, which is required, since boinccmd is used. An alternative BenchCFG file can be specified with the command line option --cfg_file filename.
All WUs in the WU_test directory will be used in the creation of jobs to be run, unless the --ref_signals option is used, in which case, WUs in the WU_std_signal will be used. The APPS_GPU and APPS_CPU can have more apps than are specified to run in the BenchCFG file, but must contain apps specified in BenchCFG. The APPS_REF must contain a single CPU reference app with a file prefix of "ref-cpu.". The stock CPU app is suggested, as this is only used to test integrity of the results. Elapsed time analysis is expected to be limited to apps/arg combinations specified in BenchCFG.
The results will be stored in a unique subdir of the testData directory. There is an overall run log txt file, a .psv file useful for importing into an analytics tools, and the .sah and stderr files for each job run. A run name can be specified with the --run_name commane line option. This name will be included in the name of the testData subdirectory for the current run.
- working down my TODO list
- Fixed a problem with the when lock_file was created and checked. Now placed before slot initialization.
- Fixed issue where program would exit if Reference file didn't exist. Now an error message is printed and no comparison results are printed to summary files.
- Added commmand line option --no_ref which will not create reference results when selected. This is useful for characterizing potential reference WUs.
- Added color to status display.
- Modified so that status display will not show skipped jobs (Reference data already exists).
- Updated reference WUs in the WU_test/safe directory. Still need a WU with a Gaussian signal.
- Command line options can now be specified in mode lines of the BenchCFG file. Options given on the command line will override modes specified in the CFG file.
- An alternative CFG file can now be specified as a command line option.
- Signal counts and Angle Range are now included in the psv and txt summary files.
- Remove app -device N arg if specified, since -device is automatically added based on slot assignment.
- Added --gpu_devices x,y command line option to specify which GPU devices the user would like to include in the benchmark run.
- Added a lock_file in the working directory to prevent a second occurrence of benchMT from using the same directory.
- Updated reference WUs in the WU_test/safe directory.
- Changed --ref_signals option to --std_signals for clarity.
- Implement a --force_ref which will generate new reference results even if they already exist.
- Currently, running more than one job at a time on a single GPU is not supported.
- Consider using opencl instead of lshw to get valid GPU compute platforms, but maybe won't work for cuda apps
- Should consider executing job with time command. This should give total and CPU time metrics
- Need to figure out how to run a job without a shell
- Deal with an immediate fail to spawn a process when executing a job