diff --git a/Python_CLI/README.md b/Python_CLI/README.md deleted file mode 100644 index 8992cc8b75ff20629ef14400c592a5855b75b8d4..0000000000000000000000000000000000000000 --- a/Python_CLI/README.md +++ /dev/null @@ -1,176 +0,0 @@ -# lamec_ml: job script generator - -*currently in prototype stage.* - -Automatically generate module statements based on software dependencies. -Current support: - -+ **DEEP** - - DDP - - HeAT - - DeepSpeed - - Horovod - - TensorFlow -+ **JURECA** - - DDP - - DeepSpeed - - HeAT - - Horovod - - RayTune -+ **JUWELS** - - DDP -+ **LUMI** - - DDP -+ **VEGA** - - Basilisk - -## Requirements - -TODO. - -## Installation - -TODO. - -## lamec_ml usage - -``` -./lamec_ml --help -``` - -displays the command line interface: - -``` -usage: ./lamec_ml [-h] <access token> {eval,gen} ... - -positional arguments: - {eval,gen} - eval evaluate directives in a script - gen generate a module block - -options: - -h, --help show this help message and exit -``` - -## Gen sub-command - -``` -./lamec_ml gen --help -``` - -displays the command line interface for the `gen` sub-command: - -``` -usage: ./lamec_ml gen [-h] <access token> [-o OUTPUT] system software [software ...] - -positional arguments: - access token access token - system name of system - software list of software - -options: - -h, --help show this help message and exit - -o OUTPUT, --output OUTPUT - write to file -``` - -The `gen` sub-command allows users to generate module statements based on `system` and `software`. - -``` -./lamec_ml gen <access token> deep ddp heat -``` - -outputs - -``` -#MODULES BEGIN deep ddp,heat -ml --force purge -ml use $OTHERSTAGES -ml Stages/2022 GCC/11.2.0 OpenMPI/4.1.2 cuDNN/8.3.1.22-CUDA-11.5 NCCL/2.11.4-CUDA-11.5 Python/3.9.6 -#MODULES END -``` - -The `gen` sub-command generates a *module block* which opens with `#MODULES BEGIN system software` and closes with `#MODULES END`. -These are called directives and can be further manipulated with the `eval` sub-command. - -## Eval sub-command - -The `eval` sub-command evaluates directives in a script by parsing the module directives. - -``` -./lamec_ml eval --help -``` - -displays the command line interface for the `eval` sub-command - -``` -usage: ./lamec_ml eval [-h] <access token> [--add-software ADD_SOFTWARE [ADD_SOFTWARE ...]] [--remove-software REMOVE_SOFTWARE] [--alt-system ALT_SYSTEM] [-o OUTPUT] - script - -positional arguments: - script script containing directives to be evaluated - -options: - -h, --help show this help message and exit - --add-software ADD_SOFTWARE [ADD_SOFTWARE ...] - add new software - --remove-software REMOVE_SOFTWARE - remove software - --alt-system ALT_SYSTEM - use an alternative system - -o OUTPUT, --output OUTPUT - write to file -``` - -If we have the following script called `myscript.sh` - -``` -#SBATCH... - -#MODULES BEGIN jureca raytune -ml --force purge -ml Stages/2022 GCC/11.2.0 OpenMPI/4.1.2 PyTorch/1.11-CUDA-11.5 torchvision/0.12.0-CUDA-11.5 -#MODULES END -``` - -then - -``` -./lamec_ml eval <access token> --add-software=ddp myscript.sh -``` - -outputs - -``` -#MODULES BEGIN jureca raytune,ddp -ml --force purge -ml Stages/2022 GCC/11.2.0 OpenMPI/4.1.2 PyTorch/1.11-CUDA-11.5 torchvision/0.12.0-CUDA-11.5 NVHPC/22.3 ParaStationMPI/5.5.0-1-mt NCCL/2.12.7-1-CUDA-11.5 cuDNN/8.3.1.22-CUDA-11.5 Python/3.9.6 libaio/0.3.112 HDF5/1.12.1-serial mpi-settings/CUDA -#MODULES END -``` - -which can be written directly to a file using the `-o` option. The `--remove-software` and `--alt-system` work the same way. - -Additionally, users can simply add a module directive into their script themselves - -``` -#SBATCH... - -#MODULES BEGIN jureca raytune -#MODULES END -``` - -and - -``` -./lamec_ml eval <access token> myscript.sh -``` - -will evaluate the directives - -``` -#MODULES BEGIN deep ddp -ml --force purge -ml use $OTHERSTAGES -ml Stages/2022 GCC/11.2.0 OpenMPI/4.1.2 cuDNN/8.3.1.22-CUDA-11.5 NCCL/2.11.4-CUDA-11.5 Python/3.9.6 -#MODULES END -``` diff --git a/Python_CLI/lamec_ml b/Python_CLI/lamec_ml deleted file mode 100755 index d67cc930b18e2fa410a4bdb16f38e8d68b12ce1e..0000000000000000000000000000000000000000 --- a/Python_CLI/lamec_ml +++ /dev/null @@ -1,280 +0,0 @@ -#!/usr/bin/env python3 - -# need to: pip install --upgrade python-gitlab - -import gitlab -import sys -import json - -class Module: - """ - Global variables - """ - BEGIN = '#MODULES BEGIN ' - END = '#MODULES END' - -def read_access_to_repository(): - return gitlab \ - .Gitlab(url='https://gitlab.jsc.fz-juelich.de') \ - .projects \ - .get('CoE-RAISE/FZJ/lamec-oa') - -def fetch_startscript(system, software, repo): - # TODO: make a pull request to standardize the naming convention - # - # if using DEEP and DDP the path should be: - # - # deep/ddp_startscript.sh - # - # I assume that python-gitlab throws an exception if the path doesn't exist. - - path = None - system = system.lower() - software = software.lower() - - if system == 'deep': - if software == 'ddp': - path = 'scripts/Deep_DDP/DDP_startscript_deep.sh' - elif software == 'deepspeed': - path = 'scripts/Deep_DeepSpeed/DS_startscript_deep.sh' - elif software == 'heat': - path = 'scripts/Deep_HeAT/HeAT_startscript_deep.sh' - elif software == 'horovod': - path = 'scripts/Deep_Horovod/Hor_startscript_deep.sh' - elif software == 'tensorflow': - path = 'scripts/Deep_TensorFlow/TF_startscript_deep.sh' - elif system == 'jureca': - if software == 'ddp': - path = 'scripts/Jureca_DDP/DDP_startscript.sh' - elif software == 'deepspeed': - path = 'scripts/Jureca_DeepSpeed/DS_startscript_deep.sh' - elif software == 'heat': - path = 'scripts/Jureca_HeAT/HeAT_startscript_deep.sh' - elif software == 'horovod': - path = 'scripts/Jureca_Horovod/Hor_startscript_deep.sh' - elif software == 'graphcore': - path = 'scripts/Jureca_Graphcore/GC_startscript.sh' - elif software == 'raytune': - path = 'scripts/Jureca_RayTune/jureca_run_ray.sh' - elif system == 'juwels': - if software == 'ddp': - path = 'scripts/Juwels_DDP/env_batch.sh' - elif system == 'lumi': - if software == 'ddp': - path = 'scripts/LUMI_DDP/env_startscript.sh' - elif system == 'vega': - if software == 'basilisk': - path = 'scripts/Vega_ Basilisk/basilisk_pde.sh' - - - # Software is not supported - if path is None: - print('\'%s\' is not supported for \'%s\'' % \ - (software, system), file=sys.stderr) - sys.exit(1) - - return repo.files.get(file_path=path, ref='main').decode().decode('utf-8') - -def new_module_commands(): - return {'purge': set(), 'use': set(), 'modules': list()} - -def parse_module_commands(startscript: str, module_commands: dict): - - def is_module_keyword(token: str): - return token == 'module' or token == 'ml' - - lines = startscript.splitlines() - for line in lines: - tokens = line.split() - if len(tokens) != 0 and is_module_keyword(tokens[0]): - if 'purge' in tokens: - module_commands['purge'].add(line.strip()) - elif 'use' in tokens: - module_commands['use'].add(line.strip()) - else: - for t in tokens: - if not is_module_keyword(t): - if t not in module_commands['modules']: - module_commands['modules'].append(t) - -def generate_module_statements(system, software, repo): - module_commands = new_module_commands() - - startscript = fetch_startscript(system, software, repo) - parse_module_commands(startscript, module_commands) - - module_statements = '' - for purge in module_commands['purge']: - module_statements += (purge + '\n') - - for use in module_commands['use']: - module_statements += (use + '\n') - - module_statements += 'ml' - for module in module_commands['modules']: - module_statements += (' ' + module) - module_statements += '\n' - - return module_statements - -def generate_module_block(system, software, repo): - module_block = Module.BEGIN - module_block += (system + ' ' + software + '\n') - module_block += generate_module_statements(system, software, repo) - module_block += (Module.END + '\n\n') - return module_block - -def eval_module_directives(args, repo): - has_begin = False - has_end = False - lines = args.script.split('\n') - for line in lines: - if Module.BEGIN in line: - has_begin = True - if Module.END in line: - has_end = True - - # file doesn't contain a valid module block - if not (has_begin and has_end): - return args.script - - script = '' - skip_line = False - for line in lines: - if Module.BEGIN in line: - #TODO: handle error when there is no software specified. - system, software = line.strip().replace(Module.BEGIN, '').split(' ') - script += generate_module_block(system, software, repo) - skip_line = True - elif Module.END in line: - skip_line = False - else: - if not skip_line: - script += (line + '\n') - - return script - -def update_command(args): - repo = read_access_to_repository() - script = eval_module_directives(args, repo) - print(script, end='') - -def generate_param_block(args): - if args.system == 'jureca': - partition = 'dc-gpu' - gpus_pernode = 4 - elif args.system == 'juwels': - partition = 'dc-gpu' - gpus_pernode = 4 - elif args.system == 'deep': - partition = 'dc-gpu' - gpus_pernode = 1 - else: - partition = '' - gpus_pernode = 1 - - if args.software == 'ddp': - ntask_pernode = 1 - else: - ntask_pernode = gpus_pernode - - param_block = '#!/bin/bash\n' - param_block += '#SBATCH --job-name=job\n' + '#SBATCH --output=job.out\n' + '#SBATCH --error=job.err\n' - param_block += '#SBATCH --account=' + str(args.account) + '\n' - param_block += '#SBATCH --partition=' + partition + '\n' - param_block += '#SBATCH --nodes=' + str(args.nodes) + '\n' - param_block += '#SBATCH --gpus-per-node=' + str(gpus_pernode) + '\n' - param_block += '#SBATCH --ntasks-per-node=' + str(ntask_pernode) + '\n' - param_block += '#SBATCH --cpus-per-task=1' + '\n' - param_block += '#SBATCH --exclusive' + '\n' - param_block += '#SBATCH --gres=gpu:' + str(gpus_pernode) + '\n\n' - - return param_block - -def generate_env_block(system, software, repo): - #environment variable, export 1.CUDA_VISIBLE_DEVICES - #source python venv - env_block = '' - startscript = fetch_startscript(system, software, repo) - lines = startscript.splitlines() - for line in lines: - tokens = line.split() - if len(tokens) > 1 and tokens[0] == 'export' and 'CUDA_VISIBLE_DEVICES' in tokens[1]: - env_block += line.strip() - - env_block += '\n' - if system == 'jureca' and software == 'ddp': - env_block += 'source your/env_path/bin/activate\n' - elif system == 'deep' and software == 'ddp': - env_block += 'source your/env_path/bin/activate\n' - elif system == 'juwels': - env_block += 'source your/env_path/bin/activate\n' - else: - env_block += 'source your/env_path/bin/activate\n' - - return env_block - -def generate_launch_block(exe, system, software, repo): - system = system.lower() - launch_block = '\n' - def keyword_exist(tokens=list()): - keywords=['srun','nnodes','nproc_per_node','rdzv'] - result = False - for kw in keywords: - result = True in (kw in item for item in tokens) - if result == True: - break - - return result - - software = software.lower() - if software == 'ddp': - startscript = fetch_startscript(system, software, repo) - lines = startscript.splitlines() - for line in lines: - tokens = line.split() - if len(tokens)!=0 and '#' not in tokens[0] and keyword_exist(tokens): - launch_block +=line + '\n' - launch_block += (exe +'"') - launch_block += '\n' - return launch_block - -def create_command(args): - repo = read_access_to_repository() - param_block = generate_param_block(args) - module_block = generate_module_block(args.system, args.software, repo) - env_block = generate_env_block(args.system, args.software, repo) - launch_block = generate_launch_block(args.exe, args.system, args.software, repo) - outp = param_block + module_block + env_block + launch_block - print(outp, end='') - -class Args(object): - - def __init__(self, argv): - - if len(argv) == 1: - data = sys.stdin - args = json.load(data) - else: - args = json.loads(argv[1]) - - for arg in args: - setattr(self, arg, args[arg]) - - if args['which'] == "create": - args['software'].lower() - args['system'].lower() - -def main(): - - args = Args(sys.argv) - - if args.which == 'create': - create_command(args) - elif args.which == 'update': - update_command(args) - - sys.exit(0) - -if __name__ == '__main__': - main() diff --git a/Python_CLI/old_lamec_ml b/Python_CLI/old_lamec_ml deleted file mode 100644 index b13b8051bf1ae9e0b4f260d78bea3ed96342b67c..0000000000000000000000000000000000000000 --- a/Python_CLI/old_lamec_ml +++ /dev/null @@ -1,333 +0,0 @@ -#!/usr/bin/env python3 - -# need to: pip install --upgrade python-gitlab - -import gitlab -import sys, socket -import argparse - -class Module: - """ - Global variables - """ - BEGIN = '#MODULES BEGIN ' - END = '#MODULES END' - -def read_access_to_repository(): - return gitlab \ - .Gitlab(url='https://gitlab.jsc.fz-juelich.de') \ - .projects \ - .get('CoE-RAISE/FZJ/lamec-oa') - -def fetch_startscript(system: str, software: str, repo: str) -> str: - # TODO: make a pull request to standardize the naming convention - # - # if using DEEP and DDP the path should be: - # - # deep/ddp_startscript.sh - # - # I assume that python-gitlab throws an exception if the path doesn't exist. - - path = None - software = software.lower() - system = system.lower() - - if system == 'deep': - if software == 'ddp': - path = 'scripts/Deep_DDP/DDP_startscript_deep.sh' - elif software == 'deepspeed': - path = 'scripts/Deep_DeepSpeed/DS_startscript_deep.sh' - elif software == 'heat': - path = 'scripts/Deep_HeAT/HeAT_startscript_deep.sh' - elif software == 'horovod': - path = 'scripts/Deep_Horovod/Hor_startscript_deep.sh' - elif software == 'tensorflow': - path = 'scripts/Deep_TensorFlow/TF_startscript_deep.sh' - elif system == 'jureca': - if software == 'ddp': - path = 'scripts/Jureca_DDP/DDP_startscript.sh' - elif software == 'deepspeed': - path = 'scripts/Jureca_DeepSpeed/DS_startscript_deep.sh' - elif software == 'heat': - path = 'scripts/Jureca_HeAT/HeAT_startscript_deep.sh' - elif software == 'horovod': - path = 'scripts/Jureca_Horovod/Hor_startscript_deep.sh' - elif software == 'graphcore': - path = 'scripts/Jureca_Graphcore/GC_startscript.sh' - elif software == 'raytune': - path = 'scripts/Jureca_RayTune/jureca_run_ray.sh' - elif system == 'juwels': - if software == 'ddp': - path = 'scripts/Juwels_DDP/env_batch.sh' - elif system == 'lumi': - if software == 'ddp': - path = 'scripts/LUMI_DDP/env_startscript.sh' - elif system == 'vega': - if software == 'basilisk': - path = 'scripts/Vega_ Basilisk/basilisk_pde.sh' - # Software is not supported - if path is None: - print('\'%s\' is not supported for \'%s\'' % \ - (software, system), file=sys.stderr) - sys.exit(1) - - return repo.files.get(file_path=path, ref='main').decode().decode('utf-8') - -def new_module_commands(): - return {'purge': set(), 'use': set(), 'modules': list()} - -def parse_module_commands(startscript: str, module_commands: dict): - - def is_module_keyword(token: str): - return token == 'module' or token == 'ml' - - lines = startscript.splitlines() - for line in lines: - tokens = line.split() - if len(tokens) != 0 and is_module_keyword(tokens[0]): - if 'purge' in tokens: - module_commands['purge'].add(line.strip()) - elif 'use' in tokens: - module_commands['use'].add(line.strip()) - else: - for t in tokens: - if not is_module_keyword(t): - if t not in module_commands['modules']: - module_commands['modules'].append(t) - -def generate_module_statements(system: str, software=list()): - repo = read_access_to_repository() - module_commands = new_module_commands() - - for sw in software: - startscript = fetch_startscript(system, sw, repo) - parse_module_commands(startscript, module_commands) - - module_statements = '' - for purge in module_commands['purge']: - module_statements += (purge + '\n') - - for use in module_commands['use']: - module_statements += (use + '\n') - - module_statements += 'ml' - for module in module_commands['modules']: - module_statements += (' ' + module) - module_statements += '\n' - - return module_statements - -def generate_module_block(system: str, software=list()): - module_block = Module.BEGIN - module_block += (system + ' ') - n = len(software) - 1 - for i, s in enumerate(software): - if i != n: - module_block += (s + ',') - else: - module_block += (s + '\n') - module_block += generate_module_statements(system, software) - module_block += (Module.END + '\n\n') - return module_block - -def eval_module_directives(script: str, add_software=[], remove_software=[], alt_system=None): - has_begin = False - has_end = False - with open(script, 'r') as f: - lines = f.readlines() - for line in lines: - if Module.BEGIN in line: - has_begin = True - if Module.END in line: - has_end = True - - if not (has_begin and has_end): - return - - module_block = '' - skip_line = False - for line in lines: - if Module.BEGIN in line: - #TODO: handle error when there is no software specified. - system, software = line.strip().replace(Module.BEGIN, '').split(' ') - if alt_system: - system = alt_system - software = software.split(',') - for s in add_software: - if s not in software: - software.append(s) - software = [s for s in software if s not in remove_software] - module_block += generate_module_block(system, software) - skip_line = True - elif Module.END in line: - skip_line = False - else: - if not skip_line: - module_block += line - - return module_block - -def eval_command(args): - alt_system = None - add_software = list() - remove_software = list() - if args.alt_system: - alt_system = args.alt_system - if args.add_software: - add_software = args.add_software - if args.remove_software: - remove_software = args.remove_software - module_block = eval_module_directives(args.script, add_software, remove_software, alt_system) - if args.output: - with open(args.output, 'w') as f: - f.write(module_block) - else: - print(module_block, end='') - -def generate_param_block(args): - partition = args.partition - if args.system == 'jureca': - gpus_pernode = 4 - elif args.system == 'juwels': - gpus_pernode = 4 - elif args.system == 'deep': - gpus_pernode = 1 - else: - gpus_pernode = 1 - - if args.software == 'ddp': - ntask_pernode = 1 - else: - ntask_pernode = gpus_pernode - - param_block = '#!/bin/bash\n' - param_block += '#SBATCH --job-name=job\n' + '#SBATCH --output=job.out\n' + '#SBATCH --error=job.err\n' - param_block += '#SBATCH --account=' + str(args.account) + '\n' - param_block += '#SBATCH --partition=' + partition + '\n' - param_block += '#SBATCH --nodes=' + str(args.nnode) + '\n' - param_block += '#SBATCH --gpus-per-node=' + str(gpus_pernode) + '\n' - param_block += '#SBATCH --ntasks-per-node=' + str(ntask_pernode) + '\n' - param_block += '#SBATCH --cpus-per-task=1' + '\n' - param_block += '#SBATCH --exclusive' + '\n' - param_block += '#SBATCH --gres=gpu:' + str(gpus_pernode) + '\n\n' - - return param_block - -def generate_env_block(system: str, software=list()): - #environment variable, export 1.CUDA_VISIBLE_DEVICES - #source python venv - repo = read_access_to_repository() - sw = software[0] #for now!!! - env_block = '' - startscript = fetch_startscript(system, sw, repo) - lines = startscript.splitlines() - for line in lines: - tokens = line.split() - if len(tokens) > 1 and tokens[0] == 'export' and 'CUDA_VISIBLE_DEVICES' in tokens[1]: - env_block += line.strip() - - env_block += '\n' - if system == 'jureca' and sw == 'ddp': - env_block += 'source your/env_path/bin/activate\n' - elif system == 'deep' and sw == 'ddp': - env_block += 'source your/env_path/bin/activate\n' - elif system == 'juwels': - env_block += 'source your/env_path/bin/activate\n' - else: - env_block += 'source your/env_path/bin/activate\n' - - return env_block - -def generate_launch_block(exe:str,system: str, software=list()): - system = system.lower() - repo = read_access_to_repository() - launch_block = '\n' - def keyword_exist(tokens=list()): - keywords=['srun','nnodes','nproc_per_node','rdzv'] - result = False - for kw in keywords: - result = True in (kw in item for item in tokens) - if result == True: - break - - return result - - for sw in software: - sw = sw.lower() - if sw == 'ddp': - startscript = fetch_startscript(system, sw, repo) - lines = startscript.splitlines() - for line in lines: - tokens = line.split() - if len(tokens)!=0 and '#' not in tokens[0] and keyword_exist(tokens): - launch_block +=line + '\n' - launch_block += exe +'"' - else: #!!! - launch_block += 'srun ' + exe - - #!!!launch_block += exe +'"' - launch_block += '\n' - return launch_block - -def gen_command(args): - module_block = generate_module_block(args.system, args.software) - - param_block = generate_param_block(args) - env_block = generate_env_block(args.system, args.software) - launch_block=generate_launch_block(args.exe,args.system, args.software) - outp = param_block + module_block + env_block + launch_block - - if args.output: - with open(args.output, 'w') as f: - f.write(outp) - else: - print(outp, end='') - -def main(): - - cli = argparse.ArgumentParser(prog=sys.argv[0]) - - sub = cli.add_subparsers() - - cli_eval = sub.add_parser('eval', help='evaluate directives in a script') - cli_gene = sub.add_parser('gen', help='generate a module block') - - cli_eval.set_defaults(which='eval') - cli_gene.set_defaults(which='gen') - - cli_eval.add_argument('script', help='script containing directives to be evaluated') - cli_eval.add_argument('--add-software', help='add new software', nargs='+') - cli_eval.add_argument('--remove-software', help='remove software') - cli_eval.add_argument('--alt-system', help='use an alternative system') - cli_eval.add_argument('-o', '--output', help='write to file') - - cli_gene.add_argument('-a','--account', default=' ', help='') #!!! - cli_gene.add_argument('--wall_time', default='00:10:00', help='') - cli_gene.add_argument('-n','--nnode', default=' ', help='fill in number of nodes')#!!! - cli_gene.add_argument('-e','--exe', default='exe.py', help='') #!!! - - cli_gene.add_argument('-sys','--system', help='name of system') - cli_gene.add_argument('-par','--partition', help='name of partition') - cli_gene.add_argument('-sw','--software', help='list of software', nargs='+') - cli_gene.add_argument('-o', '--output', help='write to file') - - args = cli.parse_args() - - if args.software[0] == 'Pytorch-DDP': - args.software[0] = 'ddp' - - args.software[0] = args.software[0].lower() - args.system = args.system.lower() - - if args.system == None: #!!! - args.system = socket.gethostname().split('.')[-1] - - if args.which == 'eval': - eval_command(args) - elif args.which == 'gen': - gen_command(args) - - sys.exit(0) - -if __name__ == '__main__': - main() diff --git a/README.md b/README.md index 8b137891791fe96927ad78e64b0aad7bded08bdc..e12c122b6d6613affbf24ac544b70ee33ef82e7c 100644 --- a/README.md +++ b/README.md @@ -1 +1,4 @@ +# **L**oad **A**I **M**odules, **E**nvironment and **C**ontainers API +LAMEC is a medium for HPC developers and researchers to share their +jobscripts and configurations of popular frameworks and libraries. diff --git a/clang_payload.json b/clang_payload.json new file mode 100644 index 0000000000000000000000000000000000000000..08b44df10e9f3fdb95065cd199a40e8351eb66ca --- /dev/null +++ b/clang_payload.json @@ -0,0 +1,8 @@ +{ + "system": "deep", + "software": "clang", + "executable": "main", + "partition": "dp-esb", + "job_name": "xyz", + "account": "clang_user" +} diff --git a/Python_CLI/examples/README.md b/examples/README.md similarity index 100% rename from Python_CLI/examples/README.md rename to examples/README.md diff --git a/Python_CLI/examples/create_example b/examples/create_example similarity index 100% rename from Python_CLI/examples/create_example rename to examples/create_example diff --git a/Python_CLI/examples/create_example.json b/examples/create_example.json similarity index 60% rename from Python_CLI/examples/create_example.json rename to examples/create_example.json index 2dcf4899bf69a004c6a12902069d015d7f7314c3..310ba13a7e1b7ef163c847b87794e4fe057cfc0f 100644 --- a/Python_CLI/examples/create_example.json +++ b/examples/create_example.json @@ -1,9 +1,8 @@ { - "which": "create", "account": "johndoe@johndoe.com", - "time": "00:10:00", "nodes": "1", + "partition": "dp-esb", "system": "deep", "software": "ddp", - "exe": "test.py" + "executable": "test.py" } diff --git a/Python_CLI/examples/mock_cli b/examples/mock_cli similarity index 100% rename from Python_CLI/examples/mock_cli rename to examples/mock_cli diff --git a/Python_CLI/examples/update_example b/examples/update_example similarity index 100% rename from Python_CLI/examples/update_example rename to examples/update_example diff --git a/Python_CLI/examples/update_example.json b/examples/update_example.json similarity index 100% rename from Python_CLI/examples/update_example.json rename to examples/update_example.json diff --git a/index.php b/index.php new file mode 100644 index 0000000000000000000000000000000000000000..1e976691749d5ded8c4aed9b41b42f235f601535 --- /dev/null +++ b/index.php @@ -0,0 +1,416 @@ +<?php + // For testing purposes, output all PHP errors + ini_set('display_errors', 1); + ini_set('display_startup_errors', 1); + error_reporting(E_ALL); + + // + // Read configuration data from JSON file + // (TBD get output from LAMEC) + // + $filename = "lamec_config_new.json"; + $config_json = file_get_contents($filename); + // Remove line breaks so the JSON can be embedded as a string in the JS code + $config_json_str = json_encode($config_json); +?> +<!doctype html> +<html> +<head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <title>Load AI Modules, Environments, and Containers (LAMEC) API</title> + <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous"> + <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68SIy3Te4Bkz" crossorigin="anonymous"></script> + <script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script> + + <script> + window.onload = function() { + // All configuration settings from LAMEC + var json_config = JSON.parse(<?=$config_json_str?>); + + // Default html container name for fields + defaultFieldPosition = $("#formFields") + + // + // Set up the form dynamically with all fields from the + // LAMEC configuration + // + $.each(json_config.fields, function(key, field) { + // + // Add the header for the field, containing the field name + // and a description of the field + // + addFieldHeaderElement(field.name, field.desc); + + // + // Add an empty field element as specified in the JSON data. + // Check for the special case where field type is string, but there is + // a restriction of type 'option', in that case the field is SELECT. + // + fieldType = field.type; + if(fieldType == 'string' && field.restriction && field.restriction.type == 'option') { + fieldType = 'select'; + } + addFieldElement(field.name, fieldType); + + // + // Process the settings for the field that was created above and add + // the settings as a data attribute to each form field for later use. + // + if(field.restriction) { + $("#" + field.name).data("restriction", field.restriction); + } + if(field.scope) { + $("#" + field.name).data("scope", field.scope); + } + if(field.default) { + $("#" + field.name).data("default", field.default); + } + + // + // Check if there is documentation available for this field, and if there is then + // add it as a data attribute to the relevant form field for later reference, + // then add the html element. + // + if(json_config.documentation && json_config.documentation[field.name]) { + $("#" + field.name).data("documentation", json_config.documentation[field.name]); + addDocumentationElement(field.name); + } + + // + // Process this field's data and update the form element accordingly, + // taking into account all restrictions, dependencies and scope. + // + setFieldAttributes(field.name); + }); + + + // + // Adds the html header for a field. + // + function addFieldHeaderElement(fieldName, fieldDescription, fieldPosition = defaultFieldPosition) { + new_field = '<div class="mt-4" '; + new_field += 'id="' + fieldName + 'Header" '; + new_field += '><label for="'; + new_field += fieldName; + new_field += '" class="form-label"><b>'; + new_field += fieldName[0].toUpperCase() + fieldName.slice(1).replace(/_/g, ' '); + new_field += '</b></label><div id="'; + new_field += fieldName; + new_field += 'Help" class="form-text mt-0 mb-1">'; + new_field += fieldDescription; + new_field += '</div></div>'; + fieldPosition.append(new_field); + } + + // + // Adds an empty field element. + // + function addFieldElement(fieldName, fieldType, fieldPosition = defaultFieldPosition) { + new_field = '<div class="my-0" '; + new_field += 'id="' + fieldName + 'Element">'; + if(fieldType == 'select') { + new_field += '<select class="form-select" '; + } + else if(fieldType == 'number') { + new_field += '<input class="form-control" type="number" '; + } + else if(fieldType == 'string') { + new_field += '<input class="form-control" type="text" '; + } + + new_field += 'id="' + fieldName + '" '; + new_field += 'name="' + fieldName + '" '; + new_field += 'aria-describedby="' + fieldName + 'Help" >'; + + if(fieldType == 'select') { + new_field += '</select>'; + } + new_field += '</div>'; + fieldPosition.append(new_field); + } + + // + // Add an html documentation element. + // + function addDocumentationElement(fieldName, fieldPosition = defaultFieldPosition) { + new_field = '<div class="mt-1 mb-0" id="' + fieldName + '-documentation">'; + new_field += '<small class="text-body-secondary">'; + new_field += '<span id="' + fieldName + '-name"></span> '; + new_field += '<a id="' + fieldName + '-documentation-url" href="#" target="_blank">documentation</a> '; + new_field += '<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-box-arrow-up-right" viewBox="0 0 16 16">'; + new_field += '<path fill-rule="evenodd" d="M8.636 3.5a.5.5 0 0 0-.5-.5H1.5A1.5 1.5 0 0 0 0 4.5v10A1.5 1.5 0 0 0 1.5 16h10a1.5 1.5 0 0 0 1.5-1.5V7.864a.5.5 0 0 0-1 0V14.5a.5.5 0 0 1-.5.5h-10a.5.5 0 0 1-.5-.5v-10a.5.5 0 0 1 .5-.5h6.636a.5.5 0 0 0 .5-.5z"/>'; + new_field += '<path fill-rule="evenodd" d="M16 .5a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0 0 1h3.793L6.146 9.146a.5.5 0 1 0 .708.708L15 1.707V5.5a.5.5 0 0 0 1 0v-5z"/>'; + new_field += '</svg></small></div>'; + fieldPosition.append(new_field); + } + + // + // Process the field's data and update the form element accordingly, + // taking into account all restrictions, dependencies and scope. + // + function setFieldAttributes(fieldName) { + fieldElement = $("#" + fieldName); + + if(fieldElement.data("scope")) { + // + // The field has a specific scope, show or hide + // the field accordingly. + // + if(isFieldWithinScope(fieldElement.data("scope"))) { + $("#" + fieldName + "Header").show(); + $("#" + fieldName + "Element").show(); + } + else { + $("#" + fieldName + "Header").hide(); + $("#" + fieldName + "Element").hide(); + } + } + + restriction = fieldElement.data("restriction"); + if(restriction) { + // + // Process the field's restrictions. + // + restrictionType = restriction.type; + + // + // The field is a select field, delete all options present + // and then repopulate the field, taking into account restrictions + // and dependencies. + // + if(restrictionType == 'option') { + $("#" + fieldName).length = 0; + } + + if(restriction.value.depends_on) { + dependantFields = restriction.value.depends_on.fields; + dependantResolution = restriction.value.depends_on.resolution; + + $.each(dependantResolution, function(index, resolution) { + // Track the number of resolutions that are met + resolutionCount = 0; + for(i=0; i<resolution.key.length; i++) { + if(resolution.key[i] == document.getElementById(dependantFields[i]).value) { + // one resolution met + resolutionCount++; + } + else { + // a resolution not met, skip to next + // continue + return(true); + } + } + + if(resolutionCount == i) { + // All dependant resolutions met + if(restrictionType == 'range') { + fieldElement.attr("min", resolution.value[0]); + fieldElement.attr("max", resolution.value[1]); + fieldElement.val(resolution.value[0]); + } + else if(restrictionType == 'option') { + populateFieldElementOptions(fieldName, resolution.value); + } + // As all resolutions were met, no need to search further. + // break + return(false); + } + }); + } + else { + if(restrictionType == 'option') { + populateFieldElementOptions(fieldName, restriction.value); + } + else if (restrictionType == 'range'){ + fieldElement.attr("min", restriction.value[0]); + fieldElement.attr("max", restriction.value[1]); + fieldElement.val(restriction.value[0]); + } + } + } + + // Set defaut field value, if defined. + if(fieldElement.data("default")) { + fieldElement.val(fieldElement.data("default")); + } + + if(fieldElement.data("documentation")) { + // Show documentation if selected option has documentation available + updateDocumentation(fieldName); + } + } + + // + // Method to update link to documentation for selected option + // + function updateDocumentation(fieldName) { + let documentationFound = false; + $.each($("#" + fieldName).data("documentation"), function(key, val) { + if(document.getElementById(fieldName).value == key) { + $("#" + fieldName + "-name").text(key); + $("#" + fieldName + "-documentation-url").attr("href", val); + documentationFound = true; + // break + return(false); + } + }); + if(documentationFound) { + $("#" + fieldName + "-documentation").show(); + } + else { + $("#" + fieldName + "-documentation").hide(); + } + } + + // + // Method to pupolate the options of a select element + // + function populateFieldElementOptions(fieldName, fieldValues) { + sel_element = document.getElementById(fieldName); + sel_element.length = 0; + $.each(fieldValues, function(key, val) { + sel_element.options[sel_element.options.length] = new Option(val, val); + }); + } + + // + // Method to check if a field is within scope. + // + function isFieldWithinScope(fieldScope) { + let isWithinScope = false; + if(fieldScope) { + $.each(fieldScope, function(key, scope) { + $.each(scope.values, function(key, vals) { + let matchedVals = 0; + for(i = 0; i < vals.length; i++) { + if(vals[i] == document.getElementById(scope.fields[i]).value) { + matchedVals++; + } + else { + continue; + } + } + if(matchedVals == vals.length) { + isWithinScope = true; + return(false); + } + }) + }); + return(isWithinScope); + } + return(false); + } + + // + // Catch all changes to select elements and update other fields accordingly, + // based on the rules of dependencies, scope and available documentation + // + $(".form-select").on('change', function() { + changedField = this.name; + + // If field has documentation data, then it needs updating + if($("#" + changedField).data("documentation")) { + updateDocumentation(changedField); + } + + $.each(json_config.fields, function(key, field) { + if(field.scope) { + setFieldAttributes(field.name); + } + else if(field.restriction && field.restriction.value && field.restriction.value.depends_on) { + $.each(field.restriction.value.depends_on.fields, function(key, val) { + if(val == changedField) { + // Update the field, according to set dependencies + setFieldAttributes(field.name); + } + }); + } + }); + + }); + } + </script> + <style> + .form-control::placeholder { + color: var(--bs-dark-bg-subtle); + } + </style> +</head> +<body> + <nav class="navbar"> + <div class="container justify-content-center mt-3"> + <a class="navbar-brand" href="https://www.coe-raise.eu"> + <img src="/2021-01-Logo-RGB-RAISE_standard.png" + height="160" + alt="RAISE Logo" + loading="lazy" /> + </a> + </div> + </nav> + <div class="container my-5" style="max-width: 980px;"> + <div class="container justify-content-center"> + <h1 class="display-6" style="text-align:center; color: rgb(4,132,196);">Load AI Modules, Environments, and Containers (LAMEC) API</h1> + </div> + <br><br> + <?php + if(isset( $_POST['Submit'])) { + // Convert JSON confid settings to array + // $config = json_decode($config_json, true); + // Can be used if user input has to be verified + + + // + // Create JSON payload to pass on to LAMEC + // + $payload = array(); + foreach($_POST as $key => $val) { + if($val != "") { + $payload[$key] = $val; + } + } + $json_payload = json_encode($payload); + + // putenv('PYTHONPATH="/var/www/apps/jsc/lamec"'); + $Phrase = "./lamec '$json_payload'"; + // $command = escapeshellcmd($Phrase); + $output = shell_exec($Phrase); + ?> + <div class="mb-3"> + <label for="output" class="form-label"><b>Your start script:</b></label> + <textarea rows="20" class="form-control"><?=$output?></textarea> + </div> + <?php + } + else { + ?> + <form action="index.php", method="post"> + <div id="formFields"></div> + <button type="submit" name="Submit" class="btn btn-primary mt-5">Create start script</button> + </form> + <?php + } + ?> + <br> + </div> + <div class="container-fluid" style="background-color: rgb(158,196,243);"> + <div class="container justify-content-center" style="max-width: 980px; text-align:center;"> + <!-- If we want to show the menu links in the footer... + <ul class="nav justify-content-center pt-1 pb-3 mb-3"> + <li class="nav-item px-4"> + <a href="https://www.coe-raise.eu/contact" class="nav-link text-body-secondary">Contact</a> + </li> + <li class="nav-item px-4"> + <a href="https://www.coe-raise.eu/imprint" class="nav-link text-body-secondary">Imprint</a> + </li> + <li class="nav-item px-4"> + <a href="https://www.coe-raise.eu/privacy-policy" class="nav-link text-body-secondary">Privacy Policy</a> + </li> + </ul> + --> + <div class="py-3">The CoE RAISE project have received funding from the European Union’s Horizon 2020 – Research and Innovation Framework Programme H2020-INFRAEDI-2019-1 under grant agreement no. 951733</div> + <div class="py-2">©2021 CoE RAISE.</div> + </div> + </div> +</body> +</html> diff --git a/lamec b/lamec new file mode 100755 index 0000000000000000000000000000000000000000..9a44603560d663c346400a52d8c0358a88f16dbf --- /dev/null +++ b/lamec @@ -0,0 +1,228 @@ +#!/usr/bin/env python3 + +import sys +import json +import os + +scriptpath = f'{sys.path[0]}/scripts' + +def get_placeholders(template): + placeholders = [] + pattern = re.compile(r'%.[a-zA-Z0-9_:-]+%') + for x in re.findall(pattern, template): + p = x.replace('%', '') + if p not in placeholders: + placeholders.append(p) + return placeholders + +def get_template(system, software): + template_path = f'{scriptpath}/{system}/{software}/template.sh' + with open(template_path, 'r') as f: + return f.read() + +def expand_template(data): + template = get_template(data['environment']['system'], + data['environment']['software']) + for key in data['environment']: + template = template.replace(f'%{key}%', data['environment'][key]) + return template + +def get_configuration(system, software): + configpath = f'{scriptpath}/{system}/{software}/config.json' + sysinfopath = f'{scriptpath}/{system}/sysinfo.json' + + try: + with open(configpath, 'r') as f: + data = json.load(f) + except: + data = {'environment': {}} + data['environment']['system'] = system + data['environment']['software'] = software + + try: + with open(sysinfopath, 'r') as f: + data['sysinfo'] = json.load(f) + except: + pass + + placeholders = get_placeholders(get_template(system, software)) + for p in placeholders: + if p not in data['environment']: + data['environment'][p] = None + return data + +def get_setup(request): + config = get_configuration(request['environment']['system'], + request['environment']['software']) + config['environment'].update(request['environment']) + config['jobscript'] = expand_template(config) + del config['sysinfo'] + del config['environment'] + return config +class Module: + """ + Global variables + """ + BEGIN = '#MODULES BEGIN ' + END = '#MODULES END' + +def new_module_commands(): + return {'purge': set(), 'use': set(), 'modules': list()} + +def parse_module_commands(args, module_commands): + + def is_module_keyword(token: str): + return token == 'module' or token == 'ml' + + lines = args['startscript'].splitlines() + for line in lines: + tokens = line.split() + if len(tokens) != 0 and is_module_keyword(tokens[0]): + if 'purge' in tokens: + module_commands['purge'].add(line.strip()) + elif 'use' in tokens: + module_commands['use'].add(line.strip()) + else: + for t in tokens: + if not is_module_keyword(t): + if t not in module_commands['modules']: + module_commands['modules'].append(t) + +def generate_module_statements(args): + module_commands = new_module_commands() + + parse_module_commands(args, module_commands) + + module_statements = '' + for purge in module_commands['purge']: + module_statements += (purge + '\n') + + for use in module_commands['use']: + module_statements += (use + '\n') + + module_statements += 'ml' + for module in module_commands['modules']: + module_statements += (' ' + module) + module_statements += '\n' + + return module_statements + +def generate_module_block(args): + module_block = Module.BEGIN + module_block += (args['system'] + ' ' + args['software'] + '\n') + module_block += generate_module_statements(args) + module_block += (Module.END + '\n\n') + return module_block + +def generate_param_block(args): + if args['system'] == 'jureca': + partition = 'dc-gpu' + gpus_pernode = 4 + elif args['system'] == 'juwels': + partition = 'dc-gpu' + gpus_pernode = 4 + elif args['system'] == 'deep': + partition = 'dc-gpu' + gpus_pernode = 1 + else: + partition = '' + gpus_pernode = 1 + + if args['software'] == 'ddp': + ntask_pernode = 1 + else: + ntask_pernode = gpus_pernode + + param_block = '#!/bin/bash\n' + param_block += ('#SBATCH --job-name=job\n' + + '#SBATCH --output=job.out\n' + + '#SBATCH --error=job.err\n') + param_block += '#SBATCH --account=' + str(args['account']) + '\n' + param_block += '#SBATCH --partition=' + partition + '\n' + param_block += '#SBATCH --nodes=' + str(args['nodes']) + '\n' + param_block += '#SBATCH --gpus-per-node=' + str(gpus_pernode) + '\n' + param_block += '#SBATCH --ntasks-per-node=' + str(ntask_pernode) + '\n' + param_block += '#SBATCH --cpus-per-task=1' + '\n' + param_block += '#SBATCH --exclusive' + '\n' + param_block += '#SBATCH --gres=gpu:' + str(gpus_pernode) + '\n\n' + + return param_block + +def generate_env_block(args): + #environment variable, export 1.CUDA_VISIBLE_DEVICES + #source python venv + env_block = '' + lines = args['startscript'].splitlines() + for line in lines: + tokens = line.split() + if (len(tokens) > 1 and tokens[0] == 'export' + and 'CUDA_VISIBLE_DEVICES' in tokens[1]): + env_block += line.strip() + + env_block += '\n' + if args['system'] == 'jureca' and args['software'] == 'ddp': + env_block += 'source your/env_path/bin/activate\n' + elif args['system'] == 'deep' and args['software'] == 'ddp': + env_block += 'source your/env_path/bin/activate\n' + elif args['system'] == 'juwels': + env_block += 'source your/env_path/bin/activate\n' + else: + env_block += 'source your/env_path/bin/activate\n' + + return env_block + +def generate_launch_block(args): + launch_block = '\n' + def keyword_exist(tokens=list()): + keywords=['srun','nnodes','nproc_per_node','rdzv'] + result = False + for kw in keywords: + result = True in (kw in item for item in tokens) + if result == True: + break + + return result + + if args['software'] == 'ddp': + lines = args['startscript'].splitlines() + for line in lines: + tokens = line.split() + if len(tokens)!=0 and '#' not in tokens[0] and keyword_exist(tokens): + launch_block +=line + '\n' + launch_block += (args['executable'] +'"') + launch_block += '\n' + return launch_block + +def parse(args): + param_block = generate_param_block(args) + module_block = generate_module_block(args) + env_block = generate_env_block(args) + launch_block = generate_launch_block(args) + outp = param_block + module_block + env_block + launch_block + print(outp, end='') + +def expand(args): + for key in args: + args['template'] = args['template'].replace(f'%{key}%', args[key]) + return args['template'] + +def main(): + if len(sys.argv) == 1: + args = json.load(sys.stdin) + else: + args = json.loads(sys.argv[1]) + + path = os.path.join('scripts', f"{args['system']}_{args['software']}") + with open(os.path.join(path, 'lamec.json'), 'r') as f: + config = json.load(f) + if 'startscript' in config: + with open(os.path.join(path, config['startscript']), 'r') as f: + args['startscript'] = f.read() + parse(args) + elif 'template' in config: + with open(os.path.join(path, config['template']), 'r') as f: + args['template'] = f.read() + print(expand(args), end='') + +if __name__ == '__main__': + main() diff --git a/lamec_config_new.json b/lamec_config_new.json new file mode 100644 index 0000000000000000000000000000000000000000..8f62c02165e863f793039399f573dd99dd1cdc60 --- /dev/null +++ b/lamec_config_new.json @@ -0,0 +1,304 @@ +{ + "fields": [ + { + "name": "system", + "type": "string", + "desc": "Select the computing system on which you want to submit your job.", + "restriction": { + "type": "option", + "value": [ + "deep", + "jureca", + "juwels", + "lumi", + "vega" + ] + } + }, + { + "name": "software", + "type": "string", + "desc": "Select the software that your job depends on.", + "restriction": { + "type": "option", + "value": { + "depends_on": { + "fields": ["system"], + "resolution": [ + { + "key": ["deep"], + "value": [ + "ddp", + "deepspeed", + "heat", + "horovod", + "tensorflow", + "clang" + ] + }, + { + "key": ["jureca"], + "value": [ + "ddp", + "deepspeed", + "graphcore", + "heat", + "horovod", + "libtorch" + ] + }, + { + "key": ["lumi"], + "value": ["ddp"] + }, + { + "key": ["vega"], + "value": ["basilisk"] + } + ] + } + } + } + }, + { + "name": "partition", + "desc": "Specify the partition for your job.", + "type": "string", + "restriction": { + "type": ["option"], + "value": { + "depends_on": { + "fields": ["system"], + "resolution": [ + { + "key": ["deep"], + "value": [ + "dp-esb", + "dp-dam" + ] + }, + { + "key": ["jureca"], + "value": [ + "dc-cpu", + "dc-gpu", + "dc-cpu-bigmem", + "dc-gpu-devel", + "dc-cpu-devel", + "dc-gpu-devel" + ] + }, + { + "key": ["juwels"], + "value": [ + "batch", + "mem192", + "devel", + "gpus", + "develgpus", + "booster", + "develbooster" + ] + }, + { + "key": ["lumi"], + "value": [ + "standard-g", + "standard", + "dev-g", + "debug", + "small-g", + "small", + "largemem" + ] + }, + { + "key": ["vega"], + "value": [ + "dev", + "cpu", + "longcpu", + "gpu", + "largemem" + ] + } + ] + } + } + } + }, + { + "name": "nodes", + "desc": "Specify the number of nodes.", + "type": "number", + "restriction": { + "type": ["range"], + "value": { + "depends_on": { + "fields": ["system", "partition"], + "resolution": [ + { + "key": ["deep", "dp-esb"], + "value": [1, 75] + }, + { + "key": ["deep", "dp-dam"], + "value": [1, 16] + }, + { + "key": ["jureca", "dc-cpu"], + "value": [1, 128] + }, + { + "key": ["jureca", "dc-gpu"], + "value": [1, 24] + }, + { + "key": ["jureca", "dc-cpu-bigmem"], + "value": [1, 48] + }, + { + "key": ["jureca", "dc-cpu-devel"], + "value": [1, 4] + }, + { + "key": ["jureca", "dc-gpu-devel"], + "value": [1, 4] + }, + { + "key": ["juwels", "batch"], + "value": [1, 1024] + }, + { + "key": ["juwels", "mem192"], + "value": [1, 64] + }, + { + "key": ["juwels", "devel"], + "value": [1, 8] + }, + { + "key": ["juwels", "gpus"], + "value": [1, 46] + }, + { + "key": ["juwels", "develgpus"], + "value": [1, 2] + }, + { + "key": ["juwels", "booster"], + "value": [1, 384] + }, + { + "key": ["juwels", "develbooster"], + "value": [1, 4] + }, + { + "key": ["lumi", "standard-g"], + "value": [1, 1024] + }, + { + "key": ["lumi", "standard"], + "value": [1, 512] + }, + { + "key": ["lumi", "dev-g"], + "value": [1, 32] + }, + { + "key": ["lumi", "debug"], + "value": [1, 4] + }, + { + "key": ["lumi", "small-g"], + "value": [1, 4] + }, + { + "key": ["lumi", "small"], + "value": [1, 4] + }, + { + "key": ["lumi", "largemem"], + "value": [1, 1] + }, + { + "key": ["vega", "dev"], + "value": [1, 8] + }, + { + "key": ["vega", "cpu"], + "value": [1, 960] + }, + { + "key": ["vega", "longcpu"], + "value": [1, 6] + }, + { + "key": ["vega", "gpu"], + "value": [1, 60] + }, + { + "key": ["vega", "largemem"], + "value": [1, 192] + } + ] + } + } + }, + "default": 1 + }, + { + "name": "account", + "type": "string", + "desc": "Specify the account for your job." + }, + { + "name": "executable", + "type": "string", + "desc": "Specify an executable for your job.", + "default": "app" + }, + { + "name": "dummy1", + "type": "string", + "desc": "Dummy field for testing, only shown when system is 'deep'.", + "scope": [ + { + "fields": ["system"], + "values": [ + ["deep"] + ] + } + ] + }, + { + "name": "dummy2", + "type": "string", + "desc": "Only shown when system is 'jureca' or 'deep' and software is 'ddp'.", + "scope": [ + { + "fields": ["system", "software"], + "values": [ + ["deep", "ddp"], + ["jureca", "ddp"] + ] + } + ] + } + ], + "documentation": { + "system": { + "jureca": "https://apps.fz-juelich.de/jsc/hps/jureca/index.html", + "deep": "https://deeptrac.zam.kfa-juelich.de:8443/trac/wiki/Public/User_Guide", + "juwels": "https://apps.fz-juelich.de/jsc/hps/juwels/index.html", + "lumi": "https://docs.lumi-supercomputer.eu/software/", + "vega": "https://doc.vega.izum.si" + }, + "software": { + "ddp": "https://pytorch.org/tutorials/intermediate/ddp_tutorial.html", + "horovod": "https://horovod.readthedocs.io/en/stable/", + "deepspeed": "https://deepspeed.readthedocs.io/en/latest/", + "heat": "https://heat.readthedocs.io/en/stable/" + } + } +} diff --git a/scripts/Vega_ Basilisk/.gitkeep b/scripts/Vega_ Basilisk/.gitkeep deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/scripts/CTEAMD_DDP/DDP_startscript.sh b/scripts/cteamd_ddp/DDP_startscript.sh similarity index 100% rename from scripts/CTEAMD_DDP/DDP_startscript.sh rename to scripts/cteamd_ddp/DDP_startscript.sh diff --git a/scripts/CTEAMD_DDP/README.md b/scripts/cteamd_ddp/README.md similarity index 100% rename from scripts/CTEAMD_DDP/README.md rename to scripts/cteamd_ddp/README.md diff --git a/scripts/CTEAMD_DDP/createENV.sh b/scripts/cteamd_ddp/createENV.sh similarity index 100% rename from scripts/CTEAMD_DDP/createENV.sh rename to scripts/cteamd_ddp/createENV.sh diff --git a/scripts/CTEAMD_DDP/installWheels.sh b/scripts/cteamd_ddp/installWheels.sh similarity index 100% rename from scripts/CTEAMD_DDP/installWheels.sh rename to scripts/cteamd_ddp/installWheels.sh diff --git a/scripts/cteamd_ddp/lamec.json b/scripts/cteamd_ddp/lamec.json new file mode 100644 index 0000000000000000000000000000000000000000..b01e2a42779523237355d264b672d08662d78d79 --- /dev/null +++ b/scripts/cteamd_ddp/lamec.json @@ -0,0 +1 @@ +{"startscript": "DDP_startscript.sh"} diff --git a/scripts/CTEAMD_DDP/reqs.txt b/scripts/cteamd_ddp/reqs.txt similarity index 100% rename from scripts/CTEAMD_DDP/reqs.txt rename to scripts/cteamd_ddp/reqs.txt diff --git a/scripts/CTEAMD_DeepSpeed/DS_config.json b/scripts/cteamd_deepspeed/DS_config.json similarity index 100% rename from scripts/CTEAMD_DeepSpeed/DS_config.json rename to scripts/cteamd_deepspeed/DS_config.json diff --git a/scripts/CTEAMD_DeepSpeed/DS_startscript.sh b/scripts/cteamd_deepspeed/DS_startscript.sh similarity index 100% rename from scripts/CTEAMD_DeepSpeed/DS_startscript.sh rename to scripts/cteamd_deepspeed/DS_startscript.sh diff --git a/scripts/CTEAMD_DeepSpeed/README.md b/scripts/cteamd_deepspeed/README.md similarity index 100% rename from scripts/CTEAMD_DeepSpeed/README.md rename to scripts/cteamd_deepspeed/README.md diff --git a/scripts/CTEAMD_DeepSpeed/createENV.sh b/scripts/cteamd_deepspeed/createENV.sh similarity index 100% rename from scripts/CTEAMD_DeepSpeed/createENV.sh rename to scripts/cteamd_deepspeed/createENV.sh diff --git a/scripts/CTEAMD_DeepSpeed/installWheels.sh b/scripts/cteamd_deepspeed/installWheels.sh similarity index 100% rename from scripts/CTEAMD_DeepSpeed/installWheels.sh rename to scripts/cteamd_deepspeed/installWheels.sh diff --git a/scripts/cteamd_deepspeed/lamec.json b/scripts/cteamd_deepspeed/lamec.json new file mode 100644 index 0000000000000000000000000000000000000000..3e0d85e0a5b7492fde2b3c0322f2aaf6e278f440 --- /dev/null +++ b/scripts/cteamd_deepspeed/lamec.json @@ -0,0 +1 @@ +{"startscript": "DS_startscript.sh"} \ No newline at end of file diff --git a/scripts/CTEAMD_DeepSpeed/reqs.txt b/scripts/cteamd_deepspeed/reqs.txt similarity index 100% rename from scripts/CTEAMD_DeepSpeed/reqs.txt rename to scripts/cteamd_deepspeed/reqs.txt diff --git a/scripts/CTEAMD_HeAT/HeAT_startscript.sh b/scripts/cteamd_heat/HeAT_startscript.sh similarity index 100% rename from scripts/CTEAMD_HeAT/HeAT_startscript.sh rename to scripts/cteamd_heat/HeAT_startscript.sh diff --git a/scripts/CTEAMD_HeAT/README.md b/scripts/cteamd_heat/README.md similarity index 100% rename from scripts/CTEAMD_HeAT/README.md rename to scripts/cteamd_heat/README.md diff --git a/scripts/CTEAMD_HeAT/createENV.sh b/scripts/cteamd_heat/createENV.sh similarity index 100% rename from scripts/CTEAMD_HeAT/createENV.sh rename to scripts/cteamd_heat/createENV.sh diff --git a/scripts/CTEAMD_HeAT/installWheels.sh b/scripts/cteamd_heat/installWheels.sh similarity index 100% rename from scripts/CTEAMD_HeAT/installWheels.sh rename to scripts/cteamd_heat/installWheels.sh diff --git a/scripts/cteamd_heat/lamec.json b/scripts/cteamd_heat/lamec.json new file mode 100644 index 0000000000000000000000000000000000000000..b86e1f1ef931afeb1d76b2d40e9086fb3b6383f9 --- /dev/null +++ b/scripts/cteamd_heat/lamec.json @@ -0,0 +1 @@ +{"startscript": "HeAT_startscript.sh"} \ No newline at end of file diff --git a/scripts/CTEAMD_HeAT/reqs.txt b/scripts/cteamd_heat/reqs.txt similarity index 100% rename from scripts/CTEAMD_HeAT/reqs.txt rename to scripts/cteamd_heat/reqs.txt diff --git a/scripts/CTEAMD_Horovod/Hor_startscript.sh b/scripts/cteamd_horovod/Hor_startscript.sh similarity index 100% rename from scripts/CTEAMD_Horovod/Hor_startscript.sh rename to scripts/cteamd_horovod/Hor_startscript.sh diff --git a/scripts/CTEAMD_Horovod/README.md b/scripts/cteamd_horovod/README.md similarity index 100% rename from scripts/CTEAMD_Horovod/README.md rename to scripts/cteamd_horovod/README.md diff --git a/scripts/CTEAMD_Horovod/createENV.sh b/scripts/cteamd_horovod/createENV.sh similarity index 100% rename from scripts/CTEAMD_Horovod/createENV.sh rename to scripts/cteamd_horovod/createENV.sh diff --git a/scripts/CTEAMD_Horovod/installWheels.sh b/scripts/cteamd_horovod/installWheels.sh similarity index 100% rename from scripts/CTEAMD_Horovod/installWheels.sh rename to scripts/cteamd_horovod/installWheels.sh diff --git a/scripts/cteamd_horovod/lamec.json b/scripts/cteamd_horovod/lamec.json new file mode 100644 index 0000000000000000000000000000000000000000..89f780bbf3e44e34add22eb330141a39fcd6aadd --- /dev/null +++ b/scripts/cteamd_horovod/lamec.json @@ -0,0 +1 @@ +{"startscript": "Hor_startscript.sh"} \ No newline at end of file diff --git a/scripts/CTEAMD_Horovod/reqs.txt b/scripts/cteamd_horovod/reqs.txt similarity index 100% rename from scripts/CTEAMD_Horovod/reqs.txt rename to scripts/cteamd_horovod/reqs.txt diff --git a/Python_CLI/.gitkeep b/scripts/cyclone_basilisk/.gitkeep similarity index 100% rename from Python_CLI/.gitkeep rename to scripts/cyclone_basilisk/.gitkeep diff --git a/scripts/Cyclone_basilisk/basilisk_cfd.sh b/scripts/cyclone_basilisk/basilisk_cfd.sh similarity index 100% rename from scripts/Cyclone_basilisk/basilisk_cfd.sh rename to scripts/cyclone_basilisk/basilisk_cfd.sh diff --git a/scripts/cyclone_basilisk/lamec.json b/scripts/cyclone_basilisk/lamec.json new file mode 100644 index 0000000000000000000000000000000000000000..1064dc7fa865bf41c2bb546218a75c84d3972532 --- /dev/null +++ b/scripts/cyclone_basilisk/lamec.json @@ -0,0 +1 @@ +{"startscript": "basilisk_cfd.sh"} \ No newline at end of file diff --git a/scripts/Cyclone_Horovod/.gitkeep b/scripts/cyclone_horovod/.gitkeep similarity index 100% rename from scripts/Cyclone_Horovod/.gitkeep rename to scripts/cyclone_horovod/.gitkeep diff --git a/scripts/Cyclone_Horovod/FNO_launch.sh b/scripts/cyclone_horovod/FNO_launch.sh similarity index 100% rename from scripts/Cyclone_Horovod/FNO_launch.sh rename to scripts/cyclone_horovod/FNO_launch.sh diff --git a/scripts/cyclone_horovod/lamec.json b/scripts/cyclone_horovod/lamec.json new file mode 100644 index 0000000000000000000000000000000000000000..212f4d1f2a70bf54baf8e81fe5a1a044522ed4b0 --- /dev/null +++ b/scripts/cyclone_horovod/lamec.json @@ -0,0 +1 @@ +{"startscript": "FNO_launch.sh"} \ No newline at end of file diff --git a/scripts/deep_clang/clang_script.sh b/scripts/deep_clang/clang_script.sh new file mode 100644 index 0000000000000000000000000000000000000000..088a5dcbbb16ad60dfcbac19569029c8ea5476de --- /dev/null +++ b/scripts/deep_clang/clang_script.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash +#SBATCH --account=%account% +#SBATCH --partition=%partition% +#SBATCH --nodes=%nodes% +#SBATCH --time=0:00:10 + +%undefined% + +PROGNAME="%executable%" + +ml Stages/Devel-2019a Clang/10.0.1 + +clang "$PROGNAME".c -o "$PROGNAME" diff --git a/scripts/deep_clang/lamec.json b/scripts/deep_clang/lamec.json new file mode 100644 index 0000000000000000000000000000000000000000..1b2ee6452ebcf6a48f7ed802436a32496ec222dc --- /dev/null +++ b/scripts/deep_clang/lamec.json @@ -0,0 +1 @@ +{"template": "clang_script.sh"} diff --git a/scripts/Deep_DDP/DDP_startscript_deep.sh b/scripts/deep_ddp/DDP_startscript_deep.sh similarity index 100% rename from scripts/Deep_DDP/DDP_startscript_deep.sh rename to scripts/deep_ddp/DDP_startscript_deep.sh diff --git a/scripts/Deep_DDP/README.md b/scripts/deep_ddp/README.md similarity index 100% rename from scripts/Deep_DDP/README.md rename to scripts/deep_ddp/README.md diff --git a/scripts/Deep_DDP/conda_torch.sh b/scripts/deep_ddp/conda_torch.sh similarity index 100% rename from scripts/Deep_DDP/conda_torch.sh rename to scripts/deep_ddp/conda_torch.sh diff --git a/scripts/Deep_DDP/createEnv.sh b/scripts/deep_ddp/createEnv.sh similarity index 100% rename from scripts/Deep_DDP/createEnv.sh rename to scripts/deep_ddp/createEnv.sh diff --git a/scripts/deep_ddp/lamec.json b/scripts/deep_ddp/lamec.json new file mode 100644 index 0000000000000000000000000000000000000000..8e4595add2c83b22847dd952abab945a614dedab --- /dev/null +++ b/scripts/deep_ddp/lamec.json @@ -0,0 +1 @@ +{"startscript": "DDP_startscript_deep.sh"} \ No newline at end of file diff --git a/scripts/Deep_DDP/reqs.txt b/scripts/deep_ddp/reqs.txt similarity index 100% rename from scripts/Deep_DDP/reqs.txt rename to scripts/deep_ddp/reqs.txt diff --git a/scripts/Deep_DeepSpeed/DS_config.json b/scripts/deep_deepspeed/DS_config.json similarity index 100% rename from scripts/Deep_DeepSpeed/DS_config.json rename to scripts/deep_deepspeed/DS_config.json diff --git a/scripts/Deep_DeepSpeed/DS_startscript_deep.sh b/scripts/deep_deepspeed/DS_startscript_deep.sh similarity index 100% rename from scripts/Deep_DeepSpeed/DS_startscript_deep.sh rename to scripts/deep_deepspeed/DS_startscript_deep.sh diff --git a/scripts/Deep_DeepSpeed/README.md b/scripts/deep_deepspeed/README.md similarity index 100% rename from scripts/Deep_DeepSpeed/README.md rename to scripts/deep_deepspeed/README.md diff --git a/scripts/Deep_DeepSpeed/createEnv.sh b/scripts/deep_deepspeed/createEnv.sh similarity index 100% rename from scripts/Deep_DeepSpeed/createEnv.sh rename to scripts/deep_deepspeed/createEnv.sh diff --git a/scripts/deep_deepspeed/lamec.json b/scripts/deep_deepspeed/lamec.json new file mode 100644 index 0000000000000000000000000000000000000000..b1572ed4b5ac84409ff6cb91e575344301c84b95 --- /dev/null +++ b/scripts/deep_deepspeed/lamec.json @@ -0,0 +1 @@ +{"startscript": "DS_startscript_deep.sh"} \ No newline at end of file diff --git a/scripts/Deep_DeepSpeed/reqs.txt b/scripts/deep_deepspeed/reqs.txt similarity index 100% rename from scripts/Deep_DeepSpeed/reqs.txt rename to scripts/deep_deepspeed/reqs.txt diff --git a/scripts/Deep_HeAT/HeAT_startscript_deep.sh b/scripts/deep_heat/HeAT_startscript_deep.sh similarity index 100% rename from scripts/Deep_HeAT/HeAT_startscript_deep.sh rename to scripts/deep_heat/HeAT_startscript_deep.sh diff --git a/scripts/Deep_HeAT/README.md b/scripts/deep_heat/README.md similarity index 100% rename from scripts/Deep_HeAT/README.md rename to scripts/deep_heat/README.md diff --git a/scripts/Deep_HeAT/createEnv.sh b/scripts/deep_heat/createEnv.sh similarity index 100% rename from scripts/Deep_HeAT/createEnv.sh rename to scripts/deep_heat/createEnv.sh diff --git a/scripts/Deep_HeAT/example_mnist_heat.py b/scripts/deep_heat/example_mnist_heat.py similarity index 100% rename from scripts/Deep_HeAT/example_mnist_heat.py rename to scripts/deep_heat/example_mnist_heat.py diff --git a/scripts/deep_heat/lamec.json b/scripts/deep_heat/lamec.json new file mode 100644 index 0000000000000000000000000000000000000000..d1bf1b27df9fd3984cd046733eeccea2901e07b3 --- /dev/null +++ b/scripts/deep_heat/lamec.json @@ -0,0 +1 @@ +{"startscript": "HeAT_startscript_deep.sh"} \ No newline at end of file diff --git a/scripts/Deep_HeAT/reqs.txt b/scripts/deep_heat/reqs.txt similarity index 100% rename from scripts/Deep_HeAT/reqs.txt rename to scripts/deep_heat/reqs.txt diff --git a/scripts/Deep_Horovod/Hor_startscript_deep.sh b/scripts/deep_horovod/Hor_startscript_deep.sh similarity index 100% rename from scripts/Deep_Horovod/Hor_startscript_deep.sh rename to scripts/deep_horovod/Hor_startscript_deep.sh diff --git a/scripts/Deep_Horovod/README.md b/scripts/deep_horovod/README.md similarity index 100% rename from scripts/Deep_Horovod/README.md rename to scripts/deep_horovod/README.md diff --git a/scripts/Deep_Horovod/createEnv.sh b/scripts/deep_horovod/createEnv.sh similarity index 100% rename from scripts/Deep_Horovod/createEnv.sh rename to scripts/deep_horovod/createEnv.sh diff --git a/scripts/deep_horovod/lamec.json b/scripts/deep_horovod/lamec.json new file mode 100644 index 0000000000000000000000000000000000000000..4aff71d30c25f064280724e030d6fd813c4c4c5d --- /dev/null +++ b/scripts/deep_horovod/lamec.json @@ -0,0 +1 @@ +{"startscript": "Hor_startscript_deep.sh"} \ No newline at end of file diff --git a/scripts/Deep_Horovod/pytorch_mnist.py b/scripts/deep_horovod/pytorch_mnist.py similarity index 100% rename from scripts/Deep_Horovod/pytorch_mnist.py rename to scripts/deep_horovod/pytorch_mnist.py diff --git a/scripts/Deep_Horovod/pytorch_synthetic_benchmark.py b/scripts/deep_horovod/pytorch_synthetic_benchmark.py similarity index 100% rename from scripts/Deep_Horovod/pytorch_synthetic_benchmark.py rename to scripts/deep_horovod/pytorch_synthetic_benchmark.py diff --git a/scripts/Deep_Horovod/reqs.txt b/scripts/deep_horovod/reqs.txt similarity index 100% rename from scripts/Deep_Horovod/reqs.txt rename to scripts/deep_horovod/reqs.txt diff --git a/scripts/Deep_TensorFlow/Create_Jupyter_deepv.ipynb b/scripts/deep_tensorflow/Create_Jupyter_deepv.ipynb similarity index 100% rename from scripts/Deep_TensorFlow/Create_Jupyter_deepv.ipynb rename to scripts/deep_tensorflow/Create_Jupyter_deepv.ipynb diff --git a/scripts/Deep_TensorFlow/README.md b/scripts/deep_tensorflow/README.md similarity index 100% rename from scripts/Deep_TensorFlow/README.md rename to scripts/deep_tensorflow/README.md diff --git a/scripts/Deep_TensorFlow/TF_startscript_deep.sh b/scripts/deep_tensorflow/TF_startscript_deep.sh similarity index 100% rename from scripts/Deep_TensorFlow/TF_startscript_deep.sh rename to scripts/deep_tensorflow/TF_startscript_deep.sh diff --git a/scripts/Deep_TensorFlow/createEnv_TF.sh b/scripts/deep_tensorflow/createEnv_TF.sh similarity index 100% rename from scripts/Deep_TensorFlow/createEnv_TF.sh rename to scripts/deep_tensorflow/createEnv_TF.sh diff --git a/scripts/Deep_TensorFlow/jupyterAddKernel.sh b/scripts/deep_tensorflow/jupyterAddKernel.sh similarity index 100% rename from scripts/Deep_TensorFlow/jupyterAddKernel.sh rename to scripts/deep_tensorflow/jupyterAddKernel.sh diff --git a/scripts/Deep_TensorFlow/jupyterCreateKernel.sh b/scripts/deep_tensorflow/jupyterCreateKernel.sh similarity index 100% rename from scripts/Deep_TensorFlow/jupyterCreateKernel.sh rename to scripts/deep_tensorflow/jupyterCreateKernel.sh diff --git a/scripts/deep_tensorflow/lamec.json b/scripts/deep_tensorflow/lamec.json new file mode 100644 index 0000000000000000000000000000000000000000..8c582bbd9f2365d3a43ac8c11f538f5b2a79c694 --- /dev/null +++ b/scripts/deep_tensorflow/lamec.json @@ -0,0 +1 @@ +{"startscript": "TF_startscript_deep.sh"} \ No newline at end of file diff --git a/scripts/Deep_TensorFlow/tensorflow2_synthetic_benchmark.py b/scripts/deep_tensorflow/tensorflow2_synthetic_benchmark.py similarity index 100% rename from scripts/Deep_TensorFlow/tensorflow2_synthetic_benchmark.py rename to scripts/deep_tensorflow/tensorflow2_synthetic_benchmark.py diff --git a/scripts/Jureca_DDP/DDP_startscript.sh b/scripts/jureca_ddp/DDP_startscript.sh similarity index 100% rename from scripts/Jureca_DDP/DDP_startscript.sh rename to scripts/jureca_ddp/DDP_startscript.sh diff --git a/scripts/Jureca_DDP/DDP_startscript_container.sh b/scripts/jureca_ddp/DDP_startscript_container.sh similarity index 100% rename from scripts/Jureca_DDP/DDP_startscript_container.sh rename to scripts/jureca_ddp/DDP_startscript_container.sh diff --git a/scripts/Jureca_DDP/README.md b/scripts/jureca_ddp/README.md similarity index 100% rename from scripts/Jureca_DDP/README.md rename to scripts/jureca_ddp/README.md diff --git a/scripts/Jureca_DDP/createContainer.sh b/scripts/jureca_ddp/createContainer.sh similarity index 100% rename from scripts/Jureca_DDP/createContainer.sh rename to scripts/jureca_ddp/createContainer.sh diff --git a/scripts/Jureca_DDP/createEnv.sh b/scripts/jureca_ddp/createEnv.sh similarity index 100% rename from scripts/Jureca_DDP/createEnv.sh rename to scripts/jureca_ddp/createEnv.sh diff --git a/scripts/Jureca_DDP/createEnv_MPI.sh b/scripts/jureca_ddp/createEnv_MPI.sh similarity index 100% rename from scripts/Jureca_DDP/createEnv_MPI.sh rename to scripts/jureca_ddp/createEnv_MPI.sh diff --git a/scripts/Jureca_DDP/fixed_torch_run.py b/scripts/jureca_ddp/fixed_torch_run.py similarity index 100% rename from scripts/Jureca_DDP/fixed_torch_run.py rename to scripts/jureca_ddp/fixed_torch_run.py diff --git a/scripts/jureca_ddp/lamec.json b/scripts/jureca_ddp/lamec.json new file mode 100644 index 0000000000000000000000000000000000000000..a36ad5345ea21cdae8672d53fd40e52ea1cada36 --- /dev/null +++ b/scripts/jureca_ddp/lamec.json @@ -0,0 +1 @@ +{"startscript": "DDP_startscript.sh"} \ No newline at end of file diff --git a/scripts/Jureca_DDP/reqs.txt b/scripts/jureca_ddp/reqs.txt similarity index 100% rename from scripts/Jureca_DDP/reqs.txt rename to scripts/jureca_ddp/reqs.txt diff --git a/scripts/Jureca_DeepSpeed/DS_config.json b/scripts/jureca_deepspeed/DS_config.json similarity index 100% rename from scripts/Jureca_DeepSpeed/DS_config.json rename to scripts/jureca_deepspeed/DS_config.json diff --git a/scripts/Jureca_DeepSpeed/DS_startscript_deep.sh b/scripts/jureca_deepspeed/DS_startscript_deep.sh similarity index 100% rename from scripts/Jureca_DeepSpeed/DS_startscript_deep.sh rename to scripts/jureca_deepspeed/DS_startscript_deep.sh diff --git a/scripts/Jureca_DeepSpeed/README.md b/scripts/jureca_deepspeed/README.md similarity index 100% rename from scripts/Jureca_DeepSpeed/README.md rename to scripts/jureca_deepspeed/README.md diff --git a/scripts/Jureca_DeepSpeed/createEnv.sh b/scripts/jureca_deepspeed/createEnv.sh similarity index 100% rename from scripts/Jureca_DeepSpeed/createEnv.sh rename to scripts/jureca_deepspeed/createEnv.sh diff --git a/scripts/jureca_deepspeed/lamec.json b/scripts/jureca_deepspeed/lamec.json new file mode 100644 index 0000000000000000000000000000000000000000..b1572ed4b5ac84409ff6cb91e575344301c84b95 --- /dev/null +++ b/scripts/jureca_deepspeed/lamec.json @@ -0,0 +1 @@ +{"startscript": "DS_startscript_deep.sh"} \ No newline at end of file diff --git a/scripts/Jureca_DeepSpeed/reqs.txt b/scripts/jureca_deepspeed/reqs.txt similarity index 100% rename from scripts/Jureca_DeepSpeed/reqs.txt rename to scripts/jureca_deepspeed/reqs.txt diff --git a/scripts/Jureca_Graphcore/GC_pytorch_mnist.py b/scripts/jureca_graphcore/GC_pytorch_mnist.py similarity index 100% rename from scripts/Jureca_Graphcore/GC_pytorch_mnist.py rename to scripts/jureca_graphcore/GC_pytorch_mnist.py diff --git a/scripts/Jureca_Graphcore/GC_startscript.sh b/scripts/jureca_graphcore/GC_startscript.sh similarity index 100% rename from scripts/Jureca_Graphcore/GC_startscript.sh rename to scripts/jureca_graphcore/GC_startscript.sh diff --git a/scripts/Jureca_Graphcore/README.md b/scripts/jureca_graphcore/README.md similarity index 100% rename from scripts/Jureca_Graphcore/README.md rename to scripts/jureca_graphcore/README.md diff --git a/scripts/jureca_graphcore/lamec.json b/scripts/jureca_graphcore/lamec.json new file mode 100644 index 0000000000000000000000000000000000000000..fe05ab67e3c1cffe3df4c751ceec2acfbf9c46b7 --- /dev/null +++ b/scripts/jureca_graphcore/lamec.json @@ -0,0 +1 @@ +{"startscript": "GC_startscript.sh"} \ No newline at end of file diff --git a/scripts/Jureca_HeAT/HeAT_startscript_deep.sh b/scripts/jureca_heat/HeAT_startscript_deep.sh similarity index 100% rename from scripts/Jureca_HeAT/HeAT_startscript_deep.sh rename to scripts/jureca_heat/HeAT_startscript_deep.sh diff --git a/scripts/Jureca_HeAT/README.md b/scripts/jureca_heat/README.md similarity index 100% rename from scripts/Jureca_HeAT/README.md rename to scripts/jureca_heat/README.md diff --git a/scripts/Jureca_HeAT/createEnv.sh b/scripts/jureca_heat/createEnv.sh similarity index 100% rename from scripts/Jureca_HeAT/createEnv.sh rename to scripts/jureca_heat/createEnv.sh diff --git a/scripts/jureca_heat/lamec.json b/scripts/jureca_heat/lamec.json new file mode 100644 index 0000000000000000000000000000000000000000..d1bf1b27df9fd3984cd046733eeccea2901e07b3 --- /dev/null +++ b/scripts/jureca_heat/lamec.json @@ -0,0 +1 @@ +{"startscript": "HeAT_startscript_deep.sh"} \ No newline at end of file diff --git a/scripts/Jureca_HeAT/reqs.txt b/scripts/jureca_heat/reqs.txt similarity index 100% rename from scripts/Jureca_HeAT/reqs.txt rename to scripts/jureca_heat/reqs.txt diff --git a/scripts/Jureca_Horovod/Hor_startscript_deep.sh b/scripts/jureca_horovod/Hor_startscript_deep.sh similarity index 100% rename from scripts/Jureca_Horovod/Hor_startscript_deep.sh rename to scripts/jureca_horovod/Hor_startscript_deep.sh diff --git a/scripts/Jureca_Horovod/README.md b/scripts/jureca_horovod/README.md similarity index 100% rename from scripts/Jureca_Horovod/README.md rename to scripts/jureca_horovod/README.md diff --git a/scripts/Jureca_Horovod/createEnv.sh b/scripts/jureca_horovod/createEnv.sh similarity index 100% rename from scripts/Jureca_Horovod/createEnv.sh rename to scripts/jureca_horovod/createEnv.sh diff --git a/scripts/jureca_horovod/lamec.json b/scripts/jureca_horovod/lamec.json new file mode 100644 index 0000000000000000000000000000000000000000..4aff71d30c25f064280724e030d6fd813c4c4c5d --- /dev/null +++ b/scripts/jureca_horovod/lamec.json @@ -0,0 +1 @@ +{"startscript": "Hor_startscript_deep.sh"} \ No newline at end of file diff --git a/scripts/Jureca_Horovod/reqs.txt b/scripts/jureca_horovod/reqs.txt similarity index 100% rename from scripts/Jureca_Horovod/reqs.txt rename to scripts/jureca_horovod/reqs.txt diff --git a/scripts/Jureca_LibTorch/MNIST/CMakeLists.txt b/scripts/jureca_libtorch/MNIST/CMakeLists.txt similarity index 100% rename from scripts/Jureca_LibTorch/MNIST/CMakeLists.txt rename to scripts/jureca_libtorch/MNIST/CMakeLists.txt diff --git a/scripts/Jureca_LibTorch/MNIST/LibTorch_startscript.sh b/scripts/jureca_libtorch/MNIST/LibTorch_startscript.sh similarity index 100% rename from scripts/Jureca_LibTorch/MNIST/LibTorch_startscript.sh rename to scripts/jureca_libtorch/MNIST/LibTorch_startscript.sh diff --git a/scripts/Jureca_LibTorch/MNIST/compile.sh b/scripts/jureca_libtorch/MNIST/compile.sh similarity index 100% rename from scripts/Jureca_LibTorch/MNIST/compile.sh rename to scripts/jureca_libtorch/MNIST/compile.sh diff --git a/scripts/Jureca_LibTorch/MNIST/download_mnist.py b/scripts/jureca_libtorch/MNIST/download_mnist.py similarity index 100% rename from scripts/Jureca_LibTorch/MNIST/download_mnist.py rename to scripts/jureca_libtorch/MNIST/download_mnist.py diff --git a/scripts/Jureca_LibTorch/MNIST/mnist.cpp b/scripts/jureca_libtorch/MNIST/mnist.cpp similarity index 100% rename from scripts/Jureca_LibTorch/MNIST/mnist.cpp rename to scripts/jureca_libtorch/MNIST/mnist.cpp diff --git a/scripts/Jureca_LibTorch/README.md b/scripts/jureca_libtorch/README.md similarity index 100% rename from scripts/Jureca_LibTorch/README.md rename to scripts/jureca_libtorch/README.md diff --git a/scripts/Jureca_LibTorch/TorchVision/compile_jpeg.sh b/scripts/jureca_libtorch/TorchVision/compile_jpeg.sh similarity index 100% rename from scripts/Jureca_LibTorch/TorchVision/compile_jpeg.sh rename to scripts/jureca_libtorch/TorchVision/compile_jpeg.sh diff --git a/scripts/Jureca_LibTorch/TorchVision/compile_png.sh b/scripts/jureca_libtorch/TorchVision/compile_png.sh similarity index 100% rename from scripts/Jureca_LibTorch/TorchVision/compile_png.sh rename to scripts/jureca_libtorch/TorchVision/compile_png.sh diff --git a/scripts/Jureca_LibTorch/TorchVision/compile_torchvision.sh b/scripts/jureca_libtorch/TorchVision/compile_torchvision.sh similarity index 100% rename from scripts/Jureca_LibTorch/TorchVision/compile_torchvision.sh rename to scripts/jureca_libtorch/TorchVision/compile_torchvision.sh diff --git a/scripts/jureca_libtorch/lamec.json b/scripts/jureca_libtorch/lamec.json new file mode 100644 index 0000000000000000000000000000000000000000..a8d025c21fcf84b3dfc1fc34d94547f4aaa9e5b1 --- /dev/null +++ b/scripts/jureca_libtorch/lamec.json @@ -0,0 +1 @@ +{"startscript": "MNIST/LibTorch_startscript.sh"} \ No newline at end of file diff --git a/scripts/Cyclone_basilisk/.gitkeep b/scripts/jureca_raytune/.gitkeep similarity index 100% rename from scripts/Cyclone_basilisk/.gitkeep rename to scripts/jureca_raytune/.gitkeep diff --git a/scripts/Jureca_RayTune/README.md b/scripts/jureca_raytune/README.md similarity index 100% rename from scripts/Jureca_RayTune/README.md rename to scripts/jureca_raytune/README.md diff --git a/scripts/Jureca_RayTune/.gitkeep b/scripts/jureca_raytune/RayTune+DDP/.gitkeep similarity index 100% rename from scripts/Jureca_RayTune/.gitkeep rename to scripts/jureca_raytune/RayTune+DDP/.gitkeep diff --git a/scripts/Jureca_RayTune/RayTune+DDP/cifar_tune.py b/scripts/jureca_raytune/RayTune+DDP/cifar_tune.py similarity index 100% rename from scripts/Jureca_RayTune/RayTune+DDP/cifar_tune.py rename to scripts/jureca_raytune/RayTune+DDP/cifar_tune.py diff --git a/scripts/Jureca_RayTune/RayTune+DDP/create_env.sh b/scripts/jureca_raytune/RayTune+DDP/create_env.sh similarity index 100% rename from scripts/Jureca_RayTune/RayTune+DDP/create_env.sh rename to scripts/jureca_raytune/RayTune+DDP/create_env.sh diff --git a/scripts/Jureca_RayTune/RayTune+DDP/jureca_ray_ddp_startscript.sh b/scripts/jureca_raytune/RayTune+DDP/jureca_ray_ddp_startscript.sh similarity index 100% rename from scripts/Jureca_RayTune/RayTune+DDP/jureca_ray_ddp_startscript.sh rename to scripts/jureca_raytune/RayTune+DDP/jureca_ray_ddp_startscript.sh diff --git a/scripts/Jureca_RayTune/RayTune+DDP/.gitkeep b/scripts/jureca_raytune/Ray_2.4/.gitkeep similarity index 100% rename from scripts/Jureca_RayTune/RayTune+DDP/.gitkeep rename to scripts/jureca_raytune/Ray_2.4/.gitkeep diff --git a/scripts/Jureca_RayTune/Ray_2.4/.gitkeep b/scripts/jureca_raytune/Ray_2.4/ASHA/.gitkeep similarity index 100% rename from scripts/Jureca_RayTune/Ray_2.4/.gitkeep rename to scripts/jureca_raytune/Ray_2.4/ASHA/.gitkeep diff --git a/scripts/Jureca_RayTune/Ray_2.4/ASHA/cifar_tune_asha.py b/scripts/jureca_raytune/Ray_2.4/ASHA/cifar_tune_asha.py similarity index 100% rename from scripts/Jureca_RayTune/Ray_2.4/ASHA/cifar_tune_asha.py rename to scripts/jureca_raytune/Ray_2.4/ASHA/cifar_tune_asha.py diff --git a/scripts/Jureca_RayTune/Ray_2.4/ASHA/jureca_ray_startscript.sh b/scripts/jureca_raytune/Ray_2.4/ASHA/jureca_ray_startscript.sh similarity index 100% rename from scripts/Jureca_RayTune/Ray_2.4/ASHA/jureca_ray_startscript.sh rename to scripts/jureca_raytune/Ray_2.4/ASHA/jureca_ray_startscript.sh diff --git a/scripts/Jureca_RayTune/Ray_2.4/ASHA/.gitkeep b/scripts/jureca_raytune/Ray_2.4/BOHB/.gitkeep similarity index 100% rename from scripts/Jureca_RayTune/Ray_2.4/ASHA/.gitkeep rename to scripts/jureca_raytune/Ray_2.4/BOHB/.gitkeep diff --git a/scripts/Jureca_RayTune/Ray_2.4/BOHB/cifar_tune_bohb.py b/scripts/jureca_raytune/Ray_2.4/BOHB/cifar_tune_bohb.py similarity index 100% rename from scripts/Jureca_RayTune/Ray_2.4/BOHB/cifar_tune_bohb.py rename to scripts/jureca_raytune/Ray_2.4/BOHB/cifar_tune_bohb.py diff --git a/scripts/Jureca_RayTune/Ray_2.4/BOHB/jureca_ray_startscript.sh b/scripts/jureca_raytune/Ray_2.4/BOHB/jureca_ray_startscript.sh similarity index 100% rename from scripts/Jureca_RayTune/Ray_2.4/BOHB/jureca_ray_startscript.sh rename to scripts/jureca_raytune/Ray_2.4/BOHB/jureca_ray_startscript.sh diff --git a/scripts/Jureca_RayTune/Ray_2.4/BOHB/.gitkeep b/scripts/jureca_raytune/Ray_2.4/PBT/.gitkeep similarity index 100% rename from scripts/Jureca_RayTune/Ray_2.4/BOHB/.gitkeep rename to scripts/jureca_raytune/Ray_2.4/PBT/.gitkeep diff --git a/scripts/Jureca_RayTune/Ray_2.4/PBT/cifar_tune_pbt.py b/scripts/jureca_raytune/Ray_2.4/PBT/cifar_tune_pbt.py similarity index 100% rename from scripts/Jureca_RayTune/Ray_2.4/PBT/cifar_tune_pbt.py rename to scripts/jureca_raytune/Ray_2.4/PBT/cifar_tune_pbt.py diff --git a/scripts/Jureca_RayTune/Ray_2.4/PBT/jureca_ray_startscript.sh b/scripts/jureca_raytune/Ray_2.4/PBT/jureca_ray_startscript.sh similarity index 100% rename from scripts/Jureca_RayTune/Ray_2.4/PBT/jureca_ray_startscript.sh rename to scripts/jureca_raytune/Ray_2.4/PBT/jureca_ray_startscript.sh diff --git a/scripts/Jureca_RayTune/Ray_2.4/build_ray_env.sh b/scripts/jureca_raytune/Ray_2.4/build_ray_env.sh similarity index 100% rename from scripts/Jureca_RayTune/Ray_2.4/build_ray_env.sh rename to scripts/jureca_raytune/Ray_2.4/build_ray_env.sh diff --git a/scripts/Jureca_RayTune/Ray_2.4/hpo.md b/scripts/jureca_raytune/Ray_2.4/hpo.md similarity index 100% rename from scripts/Jureca_RayTune/Ray_2.4/hpo.md rename to scripts/jureca_raytune/Ray_2.4/hpo.md diff --git a/scripts/Jureca_RayTune/Ray_2.4/hpo.py b/scripts/jureca_raytune/Ray_2.4/hpo.py similarity index 100% rename from scripts/Jureca_RayTune/Ray_2.4/hpo.py rename to scripts/jureca_raytune/Ray_2.4/hpo.py diff --git a/scripts/Jureca_RayTune/cifar_tune.py b/scripts/jureca_raytune/cifar_tune.py similarity index 100% rename from scripts/Jureca_RayTune/cifar_tune.py rename to scripts/jureca_raytune/cifar_tune.py diff --git a/scripts/Jureca_RayTune/cifar_tune_tf.py b/scripts/jureca_raytune/cifar_tune_tf.py similarity index 100% rename from scripts/Jureca_RayTune/cifar_tune_tf.py rename to scripts/jureca_raytune/cifar_tune_tf.py diff --git a/scripts/Jureca_RayTune/create_jureca_env.sh b/scripts/jureca_raytune/create_jureca_env.sh similarity index 100% rename from scripts/Jureca_RayTune/create_jureca_env.sh rename to scripts/jureca_raytune/create_jureca_env.sh diff --git a/scripts/Jureca_RayTune/jureca_run_ray.sh b/scripts/jureca_raytune/jureca_run_ray.sh similarity index 100% rename from scripts/Jureca_RayTune/jureca_run_ray.sh rename to scripts/jureca_raytune/jureca_run_ray.sh diff --git a/scripts/Juwels_DDP/README.md b/scripts/juwels_ddp/README.md similarity index 100% rename from scripts/Juwels_DDP/README.md rename to scripts/juwels_ddp/README.md diff --git a/scripts/Juwels_DDP/container_batch.sh b/scripts/juwels_ddp/container_batch.sh similarity index 100% rename from scripts/Juwels_DDP/container_batch.sh rename to scripts/juwels_ddp/container_batch.sh diff --git a/scripts/Juwels_DDP/container_build.sh b/scripts/juwels_ddp/container_build.sh similarity index 100% rename from scripts/Juwels_DDP/container_build.sh rename to scripts/juwels_ddp/container_build.sh diff --git a/scripts/Juwels_DDP/container_env.sh b/scripts/juwels_ddp/container_env.sh similarity index 100% rename from scripts/Juwels_DDP/container_env.sh rename to scripts/juwels_ddp/container_env.sh diff --git a/scripts/Juwels_DDP/createEnv.sh b/scripts/juwels_ddp/createEnv.sh similarity index 100% rename from scripts/Juwels_DDP/createEnv.sh rename to scripts/juwels_ddp/createEnv.sh diff --git a/scripts/Juwels_DDP/env_batch.sh b/scripts/juwels_ddp/env_batch.sh similarity index 100% rename from scripts/Juwels_DDP/env_batch.sh rename to scripts/juwels_ddp/env_batch.sh diff --git a/scripts/Juwels_DDP/env_build.sh b/scripts/juwels_ddp/env_build.sh similarity index 100% rename from scripts/Juwels_DDP/env_build.sh rename to scripts/juwels_ddp/env_build.sh diff --git a/scripts/Juwels_DDP/fixed_torch_run.py b/scripts/juwels_ddp/fixed_torch_run.py similarity index 100% rename from scripts/Juwels_DDP/fixed_torch_run.py rename to scripts/juwels_ddp/fixed_torch_run.py diff --git a/scripts/Juwels_DDP/install_pyDDP.sh b/scripts/juwels_ddp/install_pyDDP.sh similarity index 100% rename from scripts/Juwels_DDP/install_pyDDP.sh rename to scripts/juwels_ddp/install_pyDDP.sh diff --git a/scripts/juwels_ddp/lamec.json b/scripts/juwels_ddp/lamec.json new file mode 100644 index 0000000000000000000000000000000000000000..af5277f77f8cbb767eab6123b61c94a6efecc8da --- /dev/null +++ b/scripts/juwels_ddp/lamec.json @@ -0,0 +1 @@ +{"startscript": "env_batch.sh"} \ No newline at end of file diff --git a/scripts/Juwels_DDP/reqs.txt b/scripts/juwels_ddp/reqs.txt similarity index 100% rename from scripts/Juwels_DDP/reqs.txt rename to scripts/juwels_ddp/reqs.txt diff --git a/scripts/Juwels_Turbulence/Autoencoder_Turbulence.py b/scripts/juwels_turbulence/Autoencoder_Turbulence.py similarity index 100% rename from scripts/Juwels_Turbulence/Autoencoder_Turbulence.py rename to scripts/juwels_turbulence/Autoencoder_Turbulence.py diff --git a/scripts/Juwels_Turbulence/Autoencoder_Turbulence_PINNs.py b/scripts/juwels_turbulence/Autoencoder_Turbulence_PINNs.py similarity index 100% rename from scripts/Juwels_Turbulence/Autoencoder_Turbulence_PINNs.py rename to scripts/juwels_turbulence/Autoencoder_Turbulence_PINNs.py diff --git a/scripts/Juwels_Turbulence/Autoencoder_Turbulence_horv.py b/scripts/juwels_turbulence/Autoencoder_Turbulence_horv.py similarity index 100% rename from scripts/Juwels_Turbulence/Autoencoder_Turbulence_horv.py rename to scripts/juwels_turbulence/Autoencoder_Turbulence_horv.py diff --git a/scripts/Juwels_Turbulence/Autoencoder_Turbulence_olddata.py b/scripts/juwels_turbulence/Autoencoder_Turbulence_olddata.py similarity index 100% rename from scripts/Juwels_Turbulence/Autoencoder_Turbulence_olddata.py rename to scripts/juwels_turbulence/Autoencoder_Turbulence_olddata.py diff --git a/scripts/Juwels_Turbulence/Autoencoder_Turbulence_serial.py b/scripts/juwels_turbulence/Autoencoder_Turbulence_serial.py similarity index 100% rename from scripts/Juwels_Turbulence/Autoencoder_Turbulence_serial.py rename to scripts/juwels_turbulence/Autoencoder_Turbulence_serial.py diff --git a/scripts/Juwels_Turbulence/CAE_loss_serial_vs_par.pdf b/scripts/juwels_turbulence/CAE_loss_serial_vs_par.pdf similarity index 100% rename from scripts/Juwels_Turbulence/CAE_loss_serial_vs_par.pdf rename to scripts/juwels_turbulence/CAE_loss_serial_vs_par.pdf diff --git a/scripts/Juwels_Turbulence/CAE_serial.pdf b/scripts/juwels_turbulence/CAE_serial.pdf similarity index 100% rename from scripts/Juwels_Turbulence/CAE_serial.pdf rename to scripts/juwels_turbulence/CAE_serial.pdf diff --git a/scripts/Juwels_Turbulence/startScript b/scripts/juwels_turbulence/startScript similarity index 100% rename from scripts/Juwels_Turbulence/startScript rename to scripts/juwels_turbulence/startScript diff --git a/scripts/Juwels_Turbulence/startScript_horovod b/scripts/juwels_turbulence/startScript_horovod similarity index 100% rename from scripts/Juwels_Turbulence/startScript_horovod rename to scripts/juwels_turbulence/startScript_horovod diff --git a/scripts/Juwels_Turbulence/startScript_serial b/scripts/juwels_turbulence/startScript_serial similarity index 100% rename from scripts/Juwels_Turbulence/startScript_serial rename to scripts/juwels_turbulence/startScript_serial diff --git a/scripts/LUMI_DDP/README.md b/scripts/lumi_ddp/README.md similarity index 100% rename from scripts/LUMI_DDP/README.md rename to scripts/lumi_ddp/README.md diff --git a/scripts/LUMI_DDP/container_build.sh b/scripts/lumi_ddp/container_build.sh similarity index 100% rename from scripts/LUMI_DDP/container_build.sh rename to scripts/lumi_ddp/container_build.sh diff --git a/scripts/LUMI_DDP/container_env.sh b/scripts/lumi_ddp/container_env.sh similarity index 100% rename from scripts/LUMI_DDP/container_env.sh rename to scripts/lumi_ddp/container_env.sh diff --git a/scripts/LUMI_DDP/container_startscript.sh b/scripts/lumi_ddp/container_startscript.sh similarity index 100% rename from scripts/LUMI_DDP/container_startscript.sh rename to scripts/lumi_ddp/container_startscript.sh diff --git a/scripts/LUMI_DDP/env_build.sh b/scripts/lumi_ddp/env_build.sh similarity index 100% rename from scripts/LUMI_DDP/env_build.sh rename to scripts/lumi_ddp/env_build.sh diff --git a/scripts/LUMI_DDP/env_startscript.sh b/scripts/lumi_ddp/env_startscript.sh similarity index 100% rename from scripts/LUMI_DDP/env_startscript.sh rename to scripts/lumi_ddp/env_startscript.sh diff --git a/scripts/lumi_ddp/lamec.json b/scripts/lumi_ddp/lamec.json new file mode 100644 index 0000000000000000000000000000000000000000..089c01bc43a3e6af5c55e5c8e32f3032dde7d7e9 --- /dev/null +++ b/scripts/lumi_ddp/lamec.json @@ -0,0 +1 @@ +{"startscript": "env_startscript.sh"} \ No newline at end of file diff --git a/scripts/LUMI_DDP/reqs.txt b/scripts/lumi_ddp/reqs.txt similarity index 100% rename from scripts/LUMI_DDP/reqs.txt rename to scripts/lumi_ddp/reqs.txt diff --git a/scripts/PizDa_DDP/DDP_startscript b/scripts/pizda_ddp/DDP_startscript similarity index 100% rename from scripts/PizDa_DDP/DDP_startscript rename to scripts/pizda_ddp/DDP_startscript diff --git a/scripts/PizDa_DDP/createENV.sh b/scripts/pizda_ddp/createENV.sh similarity index 100% rename from scripts/PizDa_DDP/createENV.sh rename to scripts/pizda_ddp/createENV.sh diff --git a/scripts/pizda_ddp/lamec.json b/scripts/pizda_ddp/lamec.json new file mode 100644 index 0000000000000000000000000000000000000000..5a1dbcb54efde78612dd6d946fb797bd5164b175 --- /dev/null +++ b/scripts/pizda_ddp/lamec.json @@ -0,0 +1 @@ +{"startscript": "DDP_startscript"} \ No newline at end of file diff --git a/scripts/PizDa_DDP/reqs.txt b/scripts/pizda_ddp/reqs.txt similarity index 100% rename from scripts/PizDa_DDP/reqs.txt rename to scripts/pizda_ddp/reqs.txt diff --git a/scripts/Jureca_RayTune/Ray_2.4/PBT/.gitkeep b/scripts/rudens_ddp/.gitkeep similarity index 100% rename from scripts/Jureca_RayTune/Ray_2.4/PBT/.gitkeep rename to scripts/rudens_ddp/.gitkeep diff --git a/scripts/Rudens_DDP/rtu_run.sh b/scripts/rudens_ddp/rtu_run.sh similarity index 100% rename from scripts/Rudens_DDP/rtu_run.sh rename to scripts/rudens_ddp/rtu_run.sh diff --git a/scripts/Rudens_DDP/rtu_run_schedule.sh b/scripts/rudens_ddp/rtu_run_schedule.sh similarity index 100% rename from scripts/Rudens_DDP/rtu_run_schedule.sh rename to scripts/rudens_ddp/rtu_run_schedule.sh diff --git a/scripts/Rudens_DDP/.gitkeep b/scripts/vega_basilisk/.gitkeep similarity index 100% rename from scripts/Rudens_DDP/.gitkeep rename to scripts/vega_basilisk/.gitkeep diff --git a/scripts/Vega_ Basilisk/basilisk_cfd.sh b/scripts/vega_basilisk/basilisk_cfd.sh similarity index 100% rename from scripts/Vega_ Basilisk/basilisk_cfd.sh rename to scripts/vega_basilisk/basilisk_cfd.sh diff --git a/scripts/Vega_ Basilisk/basilisk_pde.sh b/scripts/vega_basilisk/basilisk_pde.sh similarity index 100% rename from scripts/Vega_ Basilisk/basilisk_pde.sh rename to scripts/vega_basilisk/basilisk_pde.sh diff --git a/scripts/vega_basilisk/lamec.json b/scripts/vega_basilisk/lamec.json new file mode 100644 index 0000000000000000000000000000000000000000..c714558e48ac2237e955c724f0fc67632e3da290 --- /dev/null +++ b/scripts/vega_basilisk/lamec.json @@ -0,0 +1 @@ +{"startscript": "basilisk_cfd.sh"} diff --git a/scripts/VSC_DDP/.gitkeep b/scripts/vsc_ddp/.gitkeep similarity index 100% rename from scripts/VSC_DDP/.gitkeep rename to scripts/vsc_ddp/.gitkeep diff --git a/scripts/VSC_DDP/dam_ex.job b/scripts/vsc_ddp/dam_ex.job similarity index 100% rename from scripts/VSC_DDP/dam_ex.job rename to scripts/vsc_ddp/dam_ex.job diff --git a/scripts/VSC_DDP/dam_tune_ex.job b/scripts/vsc_ddp/dam_tune_ex.job similarity index 100% rename from scripts/VSC_DDP/dam_tune_ex.job rename to scripts/vsc_ddp/dam_tune_ex.job diff --git a/scripts/VSC_DDP/raise_nn.def b/scripts/vsc_ddp/raise_nn.def similarity index 100% rename from scripts/VSC_DDP/raise_nn.def rename to scripts/vsc_ddp/raise_nn.def diff --git a/scripts/VSC_DDP/wice_ex.job b/scripts/vsc_ddp/wice_ex.job similarity index 100% rename from scripts/VSC_DDP/wice_ex.job rename to scripts/vsc_ddp/wice_ex.job