def submit_job(
    wall_time_i=None,
    nodes_i=None,
    job_0_dir_i=None,
):
    CC = ComputerCluster()

    if os.environ["COMPENV"] == "sherlock":
        def_params = {
            "wall_time": wall_time_i,
            "nodes": nodes_i,
            "path_i": job_0_dir_i
        }

    elif os.environ["COMPENV"] == "slac":
        def_params = {
            "wall_time": wall_time_i,
            "cpus": 12,
            "queue": "suncat2",
            "path_i": job_0_dir_i
        }

    else:
        def_params = {
            "wall_time": wall_time_i,
            # "queue": "premium",
            "queue": "regular",
            "architecture": "knl",
            "nodes": nodes_i,
            "path_i": job_0_dir_i
        }

    CC.submit_job(**def_params)
Ejemplo n.º 2
0
def set_up__submit__new_job(
    latest_revision,
    new_job_file_dict,
    run_calc=False,
):
    """
    """
    # | - set_up__submit__new_job
    path = latest_revision["path"]
    pre_path = latest_revision["pre_path"]
    current_revision = latest_revision["revision"]
    num_prev_steps = latest_revision["num_steps"]

    job_state = latest_revision["job_state"]
    timed_out = latest_revision["timed_out"]
    isif = latest_revision["isif"]

    new_revision = current_revision + 1
    job_0_dir_i = os.path.join(pre_path, "_" + str(new_revision))

    try:
        os.makedirs(job_0_dir_i)
    except:
        pass

    # | - Copy files into new directory
    for file_path_i, dist_name in new_job_file_dict.items():
        copyfile(file_path_i, os.path.join(job_0_dir_i, dist_name))
    #__|

    dft_params_dict = {
        # "encut": 600,
        # "kpar": 5,
        # "ediffg": 5e-3,
        # "ediff": 1e-6
    }

    if os.environ["COMPENV"] == "sherlock":
        print("iksfijsijfisddfi8998y0934389 | TEMP")
        print("In Sherlock")
        dft_params_dict["npar"] = 4

    # Write atoms object
    # atoms_i = row_i["init_atoms"]
    # io.write(os.path.join(job_0_dir_i, "init.cif"), row_i["init_atoms"])

    atoms_i = io.read(os.path.join(job_0_dir_i, "init.cif"))

    if num_prev_steps < 10:
        wall_time_factor = 2.5
    elif num_prev_steps < 4:
        wall_time_factor = 3
    else:
        wall_time_factor = 1.8

    num_atoms = atoms_i.get_number_of_atoms()
    wall_time_i = calc_wall_time(num_atoms, factor=wall_time_factor)
    wall_time_i = int(wall_time_i)

    if os.environ["COMPENV"] != "slac":
        if wall_time_i > 600:
            wall_time_i = 600
    else:
        wall_time_i = 8. * wall_time_i

        if wall_time_i > 2760:
            wall_time_i = 2760

    if num_atoms > 100:
        nodes_i = 10
        dft_params_dict["kpar"] = 10
    else:
        nodes_i = 5
        dft_params_dict["kpar"] = 5

    if os.environ["COMPENV"] == "slac":
        dft_params_dict["kpar"] = 3
        dft_params_dict["npar"] = 4

    # Write dft paramters json file to job dir
    with open(os.path.join(job_0_dir_i, "dft-params.json"), "w+") as fle:
        json.dump(dft_params_dict, fle, indent=2, skipkeys=True)

    # # Copy model job script
    # copyfile(model_file, os.path.join(job_0_dir_i, "model.py"))

    # Submit job ##############################################################
    CC = ComputerCluster()

    wall_time_i = int(wall_time_i)

    def_params = {
        "wall_time": wall_time_i,
        # "queue": "premium",
        "queue": "regular",
        "architecture": "knl",
        "nodes": nodes_i,
        "priority": "scavenger",
        "path_i": job_0_dir_i
    }

    if os.environ["COMPENV"] == "sherlock":
        print("Found SHERLOCK env var")

        def_params = {
            "wall_time": wall_time_i,
            "nodes": nodes_i,
            "queue": "iric",
            "path_i": job_0_dir_i
        }
    elif os.environ["COMPENV"] == "slac":
        print("Found SLAC env var")

        def_params = {
            "wall_time": wall_time_i,
            "cpus": 12,
            "queue": "suncat2",
            "path_i": job_0_dir_i
        }

    if run_calc:
        CC.submit_job(**def_params)
Ejemplo n.º 3
0
def submit_job(
    # wall_time_i=None,
    nodes_i=None,
    path_i=None,
    num_atoms=None,
    wall_time_factor=1.0,
    queue=None,
    ):
    #| - submit_job

    #| - Wall time
    # wall_time_i = calc_wall_time(num_atoms, factor=wall_time_factor)
    wall_time_i = calc_wall_time(num_atoms=num_atoms, num_scf=50)

    print("wall_time_i:", wall_time_i)
    wall_time_i = wall_time_factor * wall_time_i
    print("wall_time_i:", wall_time_i)
    #__|

    CC = ComputerCluster()
    if os.environ["COMPENV"] == "nersc":
        #| - nersc
        # nodes_i = 1
        nodes_i = 10

        dft_params_file = os.path.join(path_i, "dft-params.json")
        my_file = Path(dft_params_file)
        if my_file.is_file():

            with open(dft_params_file, "r") as fle:
                dft_calc_settings = json.load(fle)

            kpar_i = dft_calc_settings.get("kpar", None)
            npar_i = dft_calc_settings.get("npar", None)

            if kpar_i == 10 and npar_i == 6:
                nodes_i = 10
            else:
                nodes_i = 1

        def_params = {
            "wall_time": wall_time_i,
            # "queue": "premium",
            "queue": "regular",
            "architecture": "knl",
            "nodes": nodes_i,
            "path_i": path_i}
        #__|

    elif os.environ["COMPENV"] == "sherlock":
        #| - sherlock
        def_params = {
            "wall_time": wall_time_i,
            # "nodes": nodes_i,
            "nodes": 1,
            "path_i": path_i}
        #__|

    elif os.environ["COMPENV"] == "slac":
        #| - slac
        print("queue:", queue)

        if queue == "suncat":
            cpus_i = 8
        elif queue == "suncat2":
            cpus_i = 12
        elif queue == "suncat3":
            cpus_i = 16

        def_params = {
            "wall_time": wall_time_i,
            "cpus": cpus_i,
            "queue": queue,
            "path_i": path_i}
        #__|

    else:
        def_params = {
            "wall_time": wall_time_i,
            # "queue": "premium",
            "queue": "regular",
            # "architecture": "knl",
            "nodes": 1,
            "path_i": path_i}

    CC.submit_job(**def_params)