def run(): # Print a banner message print "Parboil parallel benchmark suite, version 0.2" print # Global variable setup if not globals.root: globals.root = os.getcwd() python_path = (os.path.join(globals.root, 'common', 'python') + ":" + os.environ.get('PYTHONPATH', "")) bmks = parboilfile.Directory(os.path.join(globals.root, 'benchmarks'), [], benchmark.benchmark_scanner()) globals.benchdir = bmks globals.datadir = parboilfile.Directory( os.path.join(globals.root, 'datasets'), [], benchmark.dataset_repo_scanner()) globals.benchmarks = benchmark.find_benchmarks() globals.program_env = { 'PARBOIL_ROOT': globals.root, 'PYTHONPATH': python_path, } # Parse options act = options.parse_options(sys.argv) # Perform the specified action if act: return act()
def create_dataset_dir(dpath): simple_scan = lambda x: pbf.scan_file(x) expected = [pbf.Directory(path.join(dpath,'input'), [_desc_file(path.join(dpath,'input'))], simple_scan), pbf.Directory(path.join(dpath,'output'), [], simple_scan), _desc_file(dpath)] return pbf.Directory(dpath, expected)
def create_benchmark_dir(dpath): expected = [pbf.Directory(path.join(dpath,'src'), [], version_scanner()), pbf.Directory(path.join(dpath,'tools'), [pbf.File(path.join(dpath,'compare-output'))]), pbf.Directory(path.join(dpath,'build'), must_exist=False), pbf.Directory(path.join(dpath,'run'), must_exist=False), _desc_file(dpath)] return pbf.Directory(dpath, expected)
def version_scanner(): """version_scanner() -> (path -> pbf.Directory) Return a function to find benchmark versions in the src directory for the benchmark.""" return lambda x: pbf.scan_file(x, True, lambda y: pbf.Directory(y), ['.svn'])
def dataset_repo_scanner(): """dataset_repo_scanner -> (path -> pbf.Directory) Returns a function which will scan a filename and create a pbf.Directory for a folder containing a dataset repository for parboil benchmarks.""" benchmark_dsets_scanner = lambda x: pbf.Directory(x, [], dataset_scanner()) return lambda x: pbf.scan_file(x, True, benchmark_dsets_scanner)
def getTemporaryOutputDir(self, benchmark): """Get the pbf.Directory for the output of a benchmark run. This function should always return the same pbf.Directory if its parameters are the same. The output path is not the path where the reference output is stored.""" rundir = globals.benchdir.getChildByName(benchmark.name).getChildByName('run') if rundir.getChildByName(self.name) is None: datasetpath = path.join(rundir.getPath(), self.name) filepath = path.join(datasetpath, self.outFiles[0]) rundir.addChild(pbf.Directory(datasetpath, [pbf.File(filepath, False)])) return rundir.getChildByName(self.name)