Mercurial > repos > malex > gaussian
diff gaussian_job_rules.py @ 2:ed472dc06c20 draft default tip
Uploaded 1.0.0
author | malex |
---|---|
date | Tue, 18 Sep 2012 23:03:01 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gaussian_job_rules.py Tue Sep 18 23:03:01 2012 -0400 @@ -0,0 +1,54 @@ +def gaussian(job): + inp_data = dict( [ ( da.name, da.dataset ) for da in job.input_datasets ] ) + inp_data.update( [ ( da.name, da.dataset ) for da in job.input_library_datasets ] ) + src_comfile = inp_data[ "infile" ].file_name + comfile = open(src_comfile, 'r') + ppn='1' + pmem = '900mb' + overhead = 200 + walltime = '11:59:59' + for line in comfile: + line = line.strip().lower() + if ( "%nproc=" in line): + try: + ppn = line.split('=')[1] + except Exception, e: + log.debug(e) + sys.stdout.write(e) + if ("%mem=" in line): + try: + mem_str = line.split('=')[1] + if ( "kb" in mem_str ): + mem_num = mem_str.split('kb')[0] + mem_num = int(int(mem_num) / 1024.0) + overhead + if ( "mb" in mem_str ): + mem_num = mem_str.split('mb')[0] + mem_num = int(mem_num) + overhead + elif ( "gb" in mem_str ): + mem_num = mem_str.split('gb')[0] + mem_num = (int(mem_num) * 1024) + overhead + elif ( "kw" in mem_str ): + mem_num = mem_str.split('kw')[0] + mem_num = int(int(mem_num) * 8 / 1024.0) + overhead + elif ( "mw" in mem_str ): + mem_num = mem_str.split('mw')[0] + mem_num = (int(mem_num) * 8) + overhead + elif ( "gw" in mem_str ): + mem_num = mem_str.split('gw')[0] + mem_num = (int(mem_num) * 8 * 1024) + overhead + else: + #Assume words + mem_num = int(int(mem_str) * 8 / 1024.0 / 1024.0) + overhead + pmem_num = int(mem_num / int(ppn)) + pmem = str(pmem_num) + 'mb' + except Exception, e: + log.debug(e) + sys.stdout.write(e) + if ("!walltime=" in line): + try: + walltime = line.split('=')[1] + except Exception, e: + log.debug(e) + sys.stdout.write(e) + request = "-l nodes=1:ppn=%s,pmem=%s,walltime=%s" % (ppn, pmem, walltime) + return 'drmaa://%s/' % request