Exemple #1
0
def submit_on_slurm(name, args, debug=False):
    # Check arguments #
    GPU = args.find("--GPU") != -1
    output = args.find("--output") != -1

    config = Configuration()
    config.sbatch_partition = parameters.partition
    config.sbatch_qos = parameters.QOS
    config.sbatch_workdir = parameters.main_path
    config.sbatch_time = parameters.time
    #config.sbatch_mem = parameters.mem
    config.sbatch_additionalOptions = ['-n ' + str(parameters.tasks)]
    if GPU:
        config.sbatch_additionalOptions += ['--gres gpu:1', '--export=NONE']
    config.inputSandboxContent = []
    config.useJobArray = True
    config.inputParamsNames = []
    config.inputParams = []
    if output:
        config.inputParamsNames += ["--verbose"]
        config.inputParams += [[""]]
    if not output:
        config.inputParamsNames += ['scan', 'task']

    config.payload = """ """

    if GPU:
        config.payload += "export PYTHONPATH=/root6/lib:$PYTHONPATH\n"
        config.payload += "module load cp3\n"  # needed on gpu to load slurm_utils
        config.payload += "module load slurm/slurm_utils\n"
    config.payload += "python3 {script} "
    if not output:
        config.payload += "--scan ${{scan}} --task ${{task}} "
    config.payload += args

    timestamp = datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
    out_dir = parameters.main_path

    slurm_config = copy.deepcopy(config)
    slurm_working_dir = os.path.join(out_dir, 'slurm', name + '_' + timestamp)

    slurm_config.batchScriptsDir = os.path.join(slurm_working_dir, 'scripts')
    slurm_config.inputSandboxDir = slurm_config.batchScriptsDir
    slurm_config.stageoutDir = os.path.join(slurm_working_dir, 'output')
    slurm_config.stageoutLogsDir = os.path.join(slurm_working_dir, 'logs')
    slurm_config.stageoutFiles = ["*.csv", "*.zip", "*.png"]

    slurm_config.payload = config.payload.format(
        script=os.path.join(out_dir, "ZAMachineLearning.py"))

    if not output:
        for f in glob.glob(
                os.path.join(parameters.main_path, 'split', name, '*.pkl')):
            task = os.path.basename(f)
            slurm_config.inputParams.append([name, task])

    # Submit job!

    logging.info("Submitting job...")
    if not debug:
        submitWorker = SubmitWorker(slurm_config,
                                    submit=True,
                                    yes=True,
                                    debug=False,
                                    quiet=False)
        submitWorker()
        logging.info("Done")
    else:
        logging.debug(slurm_config.payload)
        logging.debug(slurm_config.inputParamsNames)
        logging.debug(slurm_config.inputParams)
        logging.info('... don\'t worry, jobs not sent')
Exemple #2
0
nnnJobs = 0
with open("config.json", "r") as f:
    jjj = json.loads(f.read())
    nnnJobs = len(jjj)

from CP3SlurmUtils.Configuration import Configuration

config = Configuration()

#--------------------------------------------------------------------------------
# 1. SLURM sbatch command options
#--------------------------------------------------------------------------------

config.sbatch_partition = 'cp3'
config.sbatch_qos = 'cp3'
config.sbatch_workdir = './slurm/'
config.sbatch_time = '0-02:30:00'
config.sbatch_mem = '1024'

config.sbatch_output = ''
config.sbatch_error = ''

# Example: config.sbatch_additionalOptions = ['--mail-type=END', '--mail-user=<your-email-address>']
config.sbatch_additionalOptions = []

#--------------------------------------------------------------------------------
# 2. User batch script parameters that are same for all jobs
#--------------------------------------------------------------------------------

config.environmentType = ''