summaryrefslogtreecommitdiff
path: root/benchmarks/CUDA/CP/driver/process.py
diff options
context:
space:
mode:
Diffstat (limited to 'benchmarks/CUDA/CP/driver/process.py')
-rw-r--r--benchmarks/CUDA/CP/driver/process.py181
1 files changed, 0 insertions, 181 deletions
diff --git a/benchmarks/CUDA/CP/driver/process.py b/benchmarks/CUDA/CP/driver/process.py
deleted file mode 100644
index 56e7e98..0000000
--- a/benchmarks/CUDA/CP/driver/process.py
+++ /dev/null
@@ -1,181 +0,0 @@
-# (c) 2007 The Board of Trustees of the University of Illinois.
-
-# Process-management and directory management routines are collected here.
-
-import os
-import os.path as path
-import stat
-from itertools import imap, ifilter, chain
-
-import globals
-
-def scan_for_files(topdir, directory=False, boring=[]):
- """Scan the contents of the directory 'topdir'. If 'directory' is
- True, return a sequence of all directories found in that directory;
- otherwise, return a sequence of all files found in that directory.
- Directories whose names are found in the 'boring' list are excluded."""
-
- # Look for directories or regular files, depending on the 'directory'
- # parameter
- if directory: valid_test = path.isdir
- else: valid_test = path.isfile
-
- def interesting(fname):
- # True if 'dirname' is not a boring name, and it is a directory
- if fname in boring: return False
-
- fpath = path.join(topdir, fname)
- try: return valid_test(fpath)
- except OSError: return False # Ignore file-not-found errors
-
- if not path.isdir(topdir):
- raise OSError, "Cannot access '" + str(topdir) + "' as a directory"
-
- # Return names of all directories found
- return ifilter(interesting, os.listdir(topdir))
-
-def scan_for_benchmarks(topdir):
- """Scan subdirectories of the benchmark repository to find
- benchmarks. Return a sequence containing all benchmark
- directory names."""
-
- return scan_for_files(path.join(topdir, "benchmarks"), True, boring=['_darcs','.svn'])
-
-def scan_for_benchmark_versions(bmkdir):
- """Scan subdirectories of a benchmark directory 'bmkdir' to find
- benchmark versions. Return a sequence containing all benchmark
- version names."""
-
- return scan_for_files(path.join(bmkdir, "src"), True, boring=['.svn'])
-
-def scan_for_benchmark_datasets(bmkdir):
- """Scan subdirectories of a benchmark directory 'bmkdir' to find
- data sets. Return a sequence containing all data set names."""
-
- # Get input and output subdirectories
- inp_dir = path.join(bmkdir, "input")
- if path.exists(inp_dir):
- inp_dirs = scan_for_files(path.join(bmkdir, "input"), True, boring=['.svn'])
- else:
- # Assume no input files are found because the benchmark
- # doesn't need input
- inp_dirs = []
-
- out_dirs = scan_for_files(path.join(bmkdir, "output"), True, boring=['.svn'])
-
- # Return the union of the dataset directories
- return dict(imap(lambda x: (x, None), chain(inp_dirs, out_dirs))).keys()
-
-def read_description_file(dirpath):
- """Read the contents of a file in 'dirpath' called DESCRIPTION,
- if one exists. This returns the file text as a string, or None
- if no description was found."""
-
- descr_path = os.path.join(dirpath, 'DESCRIPTION')
- if os.access(descr_path, os.R_OK):
- descr_file = file(descr_path, 'r')
- descr = descr_file.read()
- descr_file.close()
- return descr
-
- # else, return None
-
-def touch_directory(dirpath):
- """Ensures that the directory 'dirpath' and its parent directories
- exist. If they do not exist, they will be created. It is an
- error if the path exists but is not a directory."""
- if path.isdir(dirpath):
- return
- elif path.exists(dirpath):
- raise OSError, "Path exists but is not a directory"
- else:
- (head, tail) = path.split(dirpath)
- if head: touch_directory(head)
- os.mkdir(dirpath)
-
-def with_path(wd, action):
- """Executes an action in a separate working directory. The action
- should be a callable object."""
- cwd = os.getcwd()
- os.chdir(wd)
- try: result = action()
- finally: os.chdir(cwd)
- return result
-
-def makefile(target=None, action=None, filepath=None, env={}):
- """Run a makefile. An optional command, makefile path, and dictionary of
- variables to define on the command line may be defined. The return code
- value is the return code returned by the makefile.
-
- If no action is given, 'make' is invoked. Returns True if make was
- successful and False otherwise.
-
- A 'q' action queries whether the target needs to be rebuilt. True is
- returned if the target is up to date."""
-
- args = ["make"]
-
- if action is None:
- def run():
- rc = os.spawnvp(os.P_WAIT, "make", args)
- return rc == 0
- elif action in ['q']:
- args.append('-q')
-
- def run():
- rc = os.spawnvp(os.P_WAIT, "make", args)
- if rc == 0:
- # Up-to-date
- return True
- elif rc == 1:
- # Needs remake
- return False
- else:
- # Error
- return False
- else:
- raise ValueError, "invalid action"
-
- # Pass the target as the second argument
- if target: args.append(target)
-
- # Pass the path the the makefile
- if filepath:
- args.append('-f')
- args.append(filepath)
-
- # Pass variables
- for (k,v) in env.iteritems():
- args.append(k + "=" + v)
-
- # Print a status message, if running in verbose mode
- if globals.verbose:
-
- print "Running '" + " ".join(args) + "' in " + os.getcwd()
-
- # Run the makefile and return result info
- return run()
-
-def spawnwaitv(prog, args):
- """Spawn a program and wait for it to complete. The program is
- spawned in a modified environment."""
-
- env = dict(os.environ)
- env.update(globals.program_env)
-
- # Print a status message if running in verbose mode
- if globals.verbose:
- print "Running '" + " ".join(args) + "' in " + os.getcwd()
-
- # Check that the program is runnable
- if not os.access(prog, os.X_OK):
- raise OSError, "Cannot execute '" + prog + "'"
-
- # Run the program
- return os.spawnve(os.P_WAIT, prog, args, env)
-
-def spawnwaitl(prog, *argl):
- """Spawn a program and wait for it to complete. The program is
- spawned in a modified environment."""
-
- return spawnwaitv(prog, argl)