#!/usr/bin/env python import sys import os from optparse import OptionParser from interp.grid.gmsh import ggrid from interp.tools import baker_exact_3D as exact, exact_me from interp.cluster import QueueManager, get_qs if __name__ == '__main__': parser = OptionParser(usage="usage: %s [options] ") parser.add_option("-v", "--verbose", action="store_true", dest="verbose", default=False, help="verbose flag (default: %default)") parser.add_option('-p', '--port', type="int", dest="port", default=6666, help="specify the port to use on the server (default: %default)") (options, args) = parser.parse_args() if len(args) != 2: parser.print_usage() sys.exit(1) server, input_file = args myname = "%s-%d" % (os.uname()[1], os.getpid()) if options.verbose: print "%s: started" % myname m = QueueManager(address=(server, options.port), authkey='asdf') m.connect() tasksq, resultsq, masterq, minionsq = get_qs(m) if options.verbose: print "%s: starting parse input file" % myname g = ggrid(input_file) g.values = exact_me(g.points, exact) if options.verbose: print "%s: done parsing input file" % myname while True: if options.verbose: print "%s: letting master know that I am ready" % myname masterq.put(myname) if options.verbose: print "%s: waiting for master to tell me to start" % myname action = minionsq.get() if options.verbose: print "%s: master said go!!" % myname if action in ('teardown', 'slay'): break while not tasksq.empty(): i, o, e, X = tasksq.get() try: a = g.interpolate(X, order=o, extra_points=e) resultsq.put((i, myname, a.qlin, a.error, a.final, exact(X))) except Exception as e: print X, e resultsq.put((i, myname, 0.0, 0.0, 0.0, 0.0)) if options.verbose: print "%s: exiting" % myname