Exemple #1
0
def launch_run(scriptname, options, option_strings):

    timereqstr = options.pop('timereq', None)
    if timereqstr is not None:
        hh, mm, ss = timereqstr.split(':')
        t = hpclauncher.TimeRequest(int(hh), int(mm), int(ss))
    else:
        t = get_timerequest(options)

    # strip additional options
    nproc = options.pop('nproc', 1)
    queue = options.pop('queue', None)
    dev_test = options.pop('dev', False)
    test_only = options.pop('test', False)
    verbose = options.pop('verbose', False)
    # generate command for running python script
    optstrs = [
        ' '.join([option_strings[k], str(v)]).strip()
        for k, v in options.items()
    ]
    cmd = ['{mpiexec}', 'python', scriptname] + optstrs
    cmd = ' '.join(cmd)

    # generate HPC job submission script
    if queue is None:
        queue = 'normal'
    job_name = ''.join([scriptname.split('.')[0]] +
                       [s.replace(' ', '') for s in optstrs])
    if dev_test:
        # do shorter run in development queue instead
        queue = 'development'
        nproc = 1  # need to run in serial to ensure all compiles go through
        job_name = 'dev_' + job_name

    j = hpclauncher.BatchJob(jobname=job_name,
                             queue=queue,
                             nproc=nproc,
                             timereq=t,
                             logfile='log_' + job_name)

    j.append_new_task(cmd)
    # submit to queue manager
    hpclauncher.submit_jobs(j, testonly=test_only, verbose=verbose)
Exemple #2
0
def get_timerequest(options):
    """
    User defined function that will return time allocation based on run options
    """
    default = hpclauncher.TimeRequest(2, 0, 0)
    devel = hpclauncher.TimeRequest(0, 20, 0)
    timedef = {
        'coarse': hpclauncher.TimeRequest(4, 0, 0),
        'coarse2': hpclauncher.TimeRequest(4, 0, 0),
        'medium': hpclauncher.TimeRequest(8, 0, 0),
        'medium2': hpclauncher.TimeRequest(8, 0, 0),
        'fine': hpclauncher.TimeRequest(24, 0, 0),
        'ilicak': hpclauncher.TimeRequest(8, 0, 0),
        '2000-1': hpclauncher.TimeRequest(4, 0, 0),
        '1000-1': hpclauncher.TimeRequest(4, 0, 0),
        '1000-2': hpclauncher.TimeRequest(4, 0, 0),
        '500-0.5': hpclauncher.TimeRequest(16, 0, 0),
        '500-1': hpclauncher.TimeRequest(10, 0, 0),
        '500-2': hpclauncher.TimeRequest(8, 0, 0),
        '500-5': hpclauncher.TimeRequest(8, 0, 0),
        '250-0.5': hpclauncher.TimeRequest(20, 0, 0),
        '250-1': hpclauncher.TimeRequest(16, 0, 0),
    }
    if 'dev' in options and options['dev'] is True:
        return devel
    return timedef.get(options['reso_str'], default)