Compare commits
	
		
			3 Commits
		
	
	
		
			075d11b948
			...
			79227e93d9
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 79227e93d9 | |||
| d41d8b564b | |||
| 59d5935567 | 
| @ -4,6 +4,9 @@ generate-batch-strong-cpu: | ||||
| generate-batch-strong-gpu: | ||||
| 	python scripts/substitute.py strong-batch.j2 < strong-gpu.json | ||||
| 
 | ||||
| generate-batch-strong-booster: | ||||
| 	python scripts/substitute.py strong-batch.j2 < strong-booster.json | ||||
| 
 | ||||
| clean-logs: | ||||
| 	rm logs/* | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										1
									
								
								experiments/eval/data/strong-booster-timings.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								experiments/eval/data/strong-booster-timings.json
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										9
									
								
								experiments/eval/data/strong-booster.tsv
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								experiments/eval/data/strong-booster.tsv
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,9 @@ | ||||
| label	nodes	tasks	mean_time	std_time	speedup	speedup_std	speedup_error | ||||
| 1	1	1	161.08257980000002	1.0725827874500897	1.0	0.0066585895804611986	0.004614167168572558 | ||||
| 1	1	2	109.2771463	1.3498701967829918	1.474073813730255	0.018208823861030076	0.012618071172974463 | ||||
| 1	1	4	94.5763083	2.921107861707173	1.7032022363258181	0.052605536545441436	0.03645377698685362 | ||||
| 2	2	8	75.06436665	5.345617315509918	2.145926049720424	0.15281950626022228	0.10589851499069955 | ||||
| 4	4	16	42.842002025	1.5314070839490197	3.759921856733072	0.13440013758310768	0.09313454370387199 | ||||
| 8	8	32	16.40522446875	4.395440141154071	9.818980539208297	2.6307924825691393	1.823046180232846 | ||||
| 16	16	64	9.361684956249999	5.010216046116417	17.206579857449583	9.208671612370724	6.381283859970849 | ||||
| 32	32	128	5.214438346875	0.113661681579046	30.891645290338204	0.6733604113945479	0.4666149588180552 | ||||
| 
 | 
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @ -1,10 +1,10 @@ | ||||
| label	nodes	mean_time	std_time	speedup	speedup_std | ||||
| 1	1	1132.1093720291667	18.428644622186628	1.0	0.016278148629010596 | ||||
| 2	2	619.9614289104168	7.890810670766857	1.8260964621925766	0.029725469622481192 | ||||
| 4	4	348.657283046875	3.3739994706945122	3.247054993762918	0.052856043795043856 | ||||
| 8	8	200.79244575312498	1.259910347938215	5.63820699420684	0.09177957145282603 | ||||
| 16	16	111.37033198671875	0.3943541234366863	10.16526889911915	0.16547175799372044 | ||||
| 32	32	65.69918741145833	0.43464214827532205	17.231710415823503	0.28050034328084494 | ||||
| 64	64	38.56257490957031	0.12227397957602136	29.35772247273364	0.4778893698204027 | ||||
| 128	128	21.433497051595047	0.14016683538819355	52.81962944749218	0.8598057786755426 | ||||
| 256	256	13.247708324598525	0.030540850807946187	85.45699711149668	1.3910817003698723 | ||||
| label	nodes	tasks	mean_time	std_time	speedup	speedup_std	speedup_error | ||||
| 1	1	48	1953.3832839708334	14.087268287606769	1.0	0.007211727674340593	0.004711662080569187 | ||||
| 2	2	96	1046.3540047312501	6.0880471399828595	1.866847429396085	0.010861959816590314	0.007096480413505672 | ||||
| 4	4	192	566.0709002166666	5.005298021298787	3.4507749527897755	0.030512356378918384	0.019934739500893344 | ||||
| 8	8	384	318.1225953708333	9.706195475255436	6.1403475024896865	0.18734731205020752	0.12240024387280224 | ||||
| 16	16	768	178.56471887994792	9.393026972005948	10.939357428631386	0.5754422263707719	0.375955587895571 | ||||
| 32	32	1536	99.82801128216144	1.4413062581268035	19.56748670921274	0.28251330150299214	0.18457535698195485 | ||||
| 64	64	3072	55.75610567220052	1.0303316198245824	35.034428255357376	0.6474103379133267	0.42297475410337343 | ||||
| 128	128	6144	31.589132888118492	0.32226687791817415	61.83719226764697	0.6308523555205254	0.41215687227340997 | ||||
| 256	256	12288	19.11704500200738	0.18528928846832715	102.18018965617955	0.9903672160087601	0.6470399144590566 | ||||
|  | ||||
| 
 | 
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @ -1,8 +1,9 @@ | ||||
| label	nodes	tasks	mean_time	std_time	speedup	speedup_std | ||||
| 1	1	1	157.5217688	0.5311809049610176	1.0	0.003372111099358209 | ||||
| 1	1	2	120.15237200000001	0.299200156243067	1.3110167213344732	0.004420894037456185 | ||||
| 1	1	4	75.69762635	0.5769735213369493	2.0809340582447473	0.007017140834839633 | ||||
| 2	2	8	52.110670325	0.940887445857671	3.022831366735062	0.010193323203255446 | ||||
| 4	4	16	28.215493675000005	0.5598524922936691	5.582811012077745	0.018825858979446598 | ||||
| 8	8	32	12.422501156249998	0.31940690526235005	12.680358554102268	0.04275957782413007 | ||||
| 16	16	64	7.70770194375	0.04068644910316383	20.43693048194875	0.06891560011499148 | ||||
| label	nodes	tasks	mean_time	std_time	speedup	speedup_std	speedup_error | ||||
| 1	1	1	316.56674059999995	1.3298279828832311	1.0	0.004200782370133899	0.002910993666206366 | ||||
| 1	1	2	239.7297573	1.3705192585818793	1.3205150005797797	0.007549297425250635	0.00523139621453709 | ||||
| 1	1	4	150.86725470000002	1.463195211854327	2.098313124537819	0.020350616990413285	0.014102258089746373 | ||||
| 2	2	8	103.758313	1.3959932139830615	3.051001230137579	0.041049019495199714	0.028445519245192213 | ||||
| 4	4	16	56.423368849999996	0.8293394846143929	5.610560784514376	0.08246688711191473	0.057146637198176795 | ||||
| 8	8	32	24.168551143749998	0.5503559531334744	13.09829202078025	0.29826872726631265	0.20668968287257275 | ||||
| 16	16	64	15.05716248125	0.04648043269670786	21.024329185144023	0.06490066896072916	0.044973869063161365 | ||||
| 32	32	128	9.9111531140625	0.08848604506395903	31.940455056721632	0.28516203039001964	0.19760720531719309 | ||||
|  | ||||
| 
 | 
| @ -3,6 +3,7 @@ | ||||
| 
 | ||||
| import argparse | ||||
| import json | ||||
| import math | ||||
| 
 | ||||
| 
 | ||||
| def print_table(data, spec): | ||||
| @ -19,18 +20,33 @@ def print_table(data, spec): | ||||
| if __name__ == "__main__": | ||||
|     p = argparse.ArgumentParser(description="Turn files generated by timing.py into pgf datafiles") | ||||
|     p.add_argument("timing_file") | ||||
|     p.add_argument("--weak", action="store_true") | ||||
|     args = p.parse_args() | ||||
| 
 | ||||
|     with open(args.timing_file, "r", encoding="utf8") as f: | ||||
|         jobs = json.load(f) | ||||
| 
 | ||||
|     scaling_spec = { | ||||
|         "label": lambda job: job["accounting"][0]["nodes"]["count"], | ||||
|         "nodes": lambda job: job["accounting"][0]["nodes"]["count"], | ||||
|         "tasks": lambda job: job["accounting"][0]["tasks"]["count"], | ||||
|         "mean_time": lambda job: job["means"]["TimeStep"], | ||||
|         "std_time": lambda job: job["stds"]["TimeStep"], | ||||
|         "speedup": lambda job: jobs[0]["means"]["TimeStep"] / job["means"]["TimeStep"], | ||||
|         "speedup_std": lambda job: jobs[0]["stds"]["TimeStep"] / job["means"]["TimeStep"], | ||||
|     } | ||||
|     if not args.weak: | ||||
|         scaling_spec = { | ||||
|             "label": lambda job: job["accounting"][0]["nodes"]["count"], | ||||
|             "nodes": lambda job: job["accounting"][0]["nodes"]["count"], | ||||
|             "tasks": lambda job: job["accounting"][0]["tasks"]["count"], | ||||
|             "mean_time": lambda job: job["means"]["TimeStep"], | ||||
|             "std_time": lambda job: job["stds"]["TimeStep"], | ||||
|             "speedup": lambda job: jobs[0]["means"]["TimeStep"] / job["means"]["TimeStep"], | ||||
|             # Standard deviation scaled to speedup | ||||
|             "speedup_std": lambda job: (jobs[0]["means"]["TimeStep"] / job["means"]["TimeStep"]) * (job["stds"]["TimeStep"] / job["means"]["TimeStep"]), | ||||
|             # 95% confidence interval | ||||
|             "speedup_error": lambda job: (jobs[0]["means"]["TimeStep"] / job["means"]["TimeStep"]) * (job["stds"]["TimeStep"] / job["means"]["TimeStep"]) / math.sqrt(len(jobs)) * 1.96, | ||||
|         } | ||||
|     else: | ||||
|         scaling_spec = { | ||||
|             "nodes": lambda job: job["accounting"][0]["nodes"]["count"], | ||||
|             "tasks": lambda job: job["accounting"][0]["tasks"]["count"], | ||||
|             "mean_time": lambda job: job["means"]["TimeStep"], | ||||
|             "std_time": lambda job: job["stds"]["TimeStep"], | ||||
|             "efficiency": lambda job: jobs[0]["means"]["TimeStep"] / job["means"]["TimeStep"], | ||||
|             "efficiency_error": lambda job: (jobs[0]["means"]["TimeStep"] / job["means"]["TimeStep"]) * (job["stds"]["TimeStep"] / job["means"]["TimeStep"]) / math.sqrt(len(jobs)) * 1.96, | ||||
|         } | ||||
| 
 | ||||
|     print_table(jobs, scaling_spec) | ||||
|  | ||||
							
								
								
									
										34
									
								
								experiments/eval/scripts/generate-strong-booster-configs.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										34
									
								
								experiments/eval/scripts/generate-strong-booster-configs.py
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,34 @@ | ||||
| #!/usr/bin/env python | ||||
| 
 | ||||
| import copy | ||||
| import json | ||||
| 
 | ||||
| from pathlib import Path | ||||
| 
 | ||||
| SIZE = [384, 384, 384] | ||||
| 
 | ||||
| with (Path(__file__).parent.parent / "templates" / "strong-booster.json").open(encoding="utf8") as f: | ||||
|     template = json.load(f) | ||||
| 
 | ||||
| configs = [ | ||||
|     [  1,  1,  1], | ||||
|     [  1,  1,  2], | ||||
|     [  1,  2,  2], | ||||
|     [  2,  2,  2], | ||||
|     [  2,  2,  4], | ||||
|     [  2,  4,  4], | ||||
|     [  4,  4,  4], | ||||
|     [  4,  4,  8], | ||||
| ] | ||||
| 
 | ||||
| out_path = Path(__file__).parent.parent / "generated" / "config" | ||||
| 
 | ||||
| for c in configs: | ||||
|     nc = copy.deepcopy(template) | ||||
|     nc["Geometry"]["blockcount"] = c | ||||
|     nc["Geometry"]["blocksize"] = [bs // bc for bc, bs in zip(c, SIZE)] | ||||
| 
 | ||||
|     nc_out_path = out_path / f"strong-booster-{c[0]:02}-{c[1]:02}-{c[2]:02}.json" | ||||
|     print(f"Dumping {(c[0] * c[1] * c[2])} to {nc_out_path}") | ||||
|     with nc_out_path.open("w", encoding="utf8") as f: | ||||
|         json.dump(nc, f) | ||||
							
								
								
									
										152
									
								
								experiments/eval/scripts/generate-weak-configs.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										152
									
								
								experiments/eval/scripts/generate-weak-configs.py
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,152 @@ | ||||
| #!/usr/bin/env python | ||||
| 
 | ||||
| 
 | ||||
| import jinja2 | ||||
| import json | ||||
| import sys | ||||
| 
 | ||||
| 
 | ||||
| from dataclasses import dataclass | ||||
| from pathlib import Path | ||||
| from typing import Tuple | ||||
| 
 | ||||
| 
 | ||||
| SIZE = (192, 192, 192) | ||||
| 
 | ||||
| 
 | ||||
| templates_env = jinja2.Environment( | ||||
|     loader=jinja2.FileSystemLoader(Path(__file__).parent.parent / "templates"), | ||||
|     autoescape=jinja2.select_autoescape() | ||||
| ) | ||||
|          | ||||
| 
 | ||||
| @dataclass | ||||
| class Experiment: | ||||
|     job_name: str | ||||
|     account: str | ||||
|     partition: str | ||||
|     nastja_binary_path: str | ||||
|     nodes: int | ||||
|     tasks: int | ||||
|     num_blocks: Tuple[int, int, int] | ||||
|     domain_scale: Tuple[int, int, int] | ||||
|     time: str = "00:15:00" | ||||
|     extra_sbatch_line: str = "" | ||||
|     logfile_path: str = "/p/project/cellsinsilico/paulslustigebude/ma/experiments/eval/logs/%x-%A.%a" | ||||
|     config_path: str = "/p/project/cellsinsilico/paulslustigebude/ma/experiments/eval/generated/config/${SLURM_JOB_NAME}.json" | ||||
|     output_dir_path: str = "/p/scratch/cellsinsilico/paul/nastja-out/${SLURM_JOB_NAME}-${SLURM_ARRAY_JOB_ID}.${SLURM_ARRAY_TASK_ID}" | ||||
| 
 | ||||
|     def get_config(self): | ||||
|         with (Path(__file__).parent.parent / "templates" / "weak.json").open(encoding="utf8") as f: | ||||
|             config = json.load(f) | ||||
| 
 | ||||
|         size = ( | ||||
|             SIZE[0] * self.domain_scale[0], | ||||
|             SIZE[1] * self.domain_scale[1], | ||||
|             SIZE[2] * self.domain_scale[2], | ||||
|         ) | ||||
|         blocksize = ( | ||||
|             size[0] // self.num_blocks[0], | ||||
|             size[1] // self.num_blocks[1], | ||||
|             size[2] // self.num_blocks[2], | ||||
|         ) | ||||
|         config["Geometry"] = { | ||||
|             "blockcount": list(self.num_blocks), | ||||
|             "blocksize": list(blocksize), | ||||
|         } | ||||
| 
 | ||||
|         cells_filling = [{ | ||||
|             "box": [ | ||||
|                 [0, 0, 0], | ||||
|                 list(size) | ||||
|             ], | ||||
|             "celltype": 0, | ||||
|             "component": 0, | ||||
|             "pattern": "const", | ||||
|             "seed": 0, | ||||
|             "shape": "cube", | ||||
|             "value": 0, | ||||
|         }] | ||||
|         for z in range(self.domain_scale[2]): | ||||
|             for y in range(self.domain_scale[1]): | ||||
|                 for x in range(self.domain_scale[0]): | ||||
|                     cx = x * SIZE[0] + SIZE[0] // 2 | ||||
|                     cy = y * SIZE[1] + SIZE[1] // 2 | ||||
|                     cz = z * SIZE[2] + SIZE[2] // 2 | ||||
|                     cells_filling.append({ | ||||
|                         "shape": "sphere", | ||||
|                         "pattern": "voronoi", | ||||
|                         "count": 715, | ||||
|                         "radius": 38, | ||||
|                         "center": [cx, cy, cz], | ||||
|                         "box": [ | ||||
|                             [cx - 38, cy - 38, cz - 38], | ||||
|                             [cx + 38, cy + 38, cz + 38] | ||||
|                         ], | ||||
|                         "celltype": 9, | ||||
|                         "seed": 758960, | ||||
|                     }) | ||||
| 
 | ||||
|         config["Filling"]["cells"] = cells_filling | ||||
| 
 | ||||
|         return config | ||||
|      | ||||
|     def write_batch_file(self, out_path: Path): | ||||
|         t = templates_env.get_template("strong-batch.j2") | ||||
|         t.stream( | ||||
|             name=self.job_name, | ||||
|             account=self.account, | ||||
|             partition=self.partition, | ||||
|             nodes=self.nodes, | ||||
|             tasks=self.tasks, | ||||
|             extra_sbatch_line=self.extra_sbatch_line, | ||||
|             time=self.time, | ||||
|             logfile_path=self.logfile_path, | ||||
|             nastja_binary_path=self.nastja_binary_path, | ||||
|             config_path=self.config_path, | ||||
|             output_dir_path=self.output_dir_path, | ||||
|         ).dump(str(out_path)) | ||||
| 
 | ||||
| 
 | ||||
| def make_cpu_ex(x: int, y: int, z: int) -> Experiment: | ||||
|     num_blocks = x * y * z | ||||
|     assert num_blocks % 48 == 0 | ||||
|     num_nodes = num_blocks // 48 | ||||
| 
 | ||||
|     assert x % 4 == 0 | ||||
|     assert y % 4 == 0 | ||||
|     assert z % 3 == 0 | ||||
| 
 | ||||
|     return Experiment( | ||||
|         job_name=f"weak-cpu-{x:02}-{y:02}-{z:02}", | ||||
|         account="cellsinsilico", | ||||
|         partition="batch", | ||||
|         nastja_binary_path="/p/project/cellsinsilico/paulslustigebude/nastja/build-nocuda/nastja", | ||||
|         nodes=num_nodes, | ||||
|         tasks=num_blocks, | ||||
|         num_blocks=(x, y, z), | ||||
|         domain_scale=(x // 4, y // 4, z // 3), | ||||
|     ) | ||||
| 
 | ||||
| 
 | ||||
| experiments = [ | ||||
|     make_cpu_ex(4, 4, 3), | ||||
|     make_cpu_ex(4, 4, 6), | ||||
|     make_cpu_ex(4, 4, 12), | ||||
|     make_cpu_ex(4, 8, 12), | ||||
|     make_cpu_ex(8, 8, 12), | ||||
|     make_cpu_ex(8, 8, 24), | ||||
|     make_cpu_ex(8, 16, 24), | ||||
|     make_cpu_ex(16, 16, 24), | ||||
| ] | ||||
| 
 | ||||
| if __name__ == "__main__": | ||||
|     outdir = Path(__file__).parent.parent / "generated" | ||||
| 
 | ||||
|     for e in experiments: | ||||
|         print(f"Generating config for {e.job_name}", file=sys.stderr) | ||||
|         config_path = (outdir / "config" / e.job_name).with_suffix(".json") | ||||
|         with config_path.open("w", encoding="utf8") as f: | ||||
|             json.dump(e.get_config(), f, indent=2) | ||||
|         print(f"Generating batch file for {e.job_name}", file=sys.stderr) | ||||
|         e.write_batch_file(outdir / "batch" / e.job_name) | ||||
							
								
								
									
										20
									
								
								experiments/eval/scripts/make-latex-table.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										20
									
								
								experiments/eval/scripts/make-latex-table.py
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,20 @@ | ||||
| #!/usr/bin/env python | ||||
| 
 | ||||
| 
 | ||||
| import argparse | ||||
| import pandas | ||||
| 
 | ||||
| 
 | ||||
| def show_seconds(s: float) -> str: | ||||
|     return f"{s:.2f}s" | ||||
| 
 | ||||
| 
 | ||||
| if __name__ == '__main__': | ||||
|     p = argparse.ArgumentParser(description="Make a latex table from a timings tsv") | ||||
|     p.add_argument("timingfile") | ||||
|     args = p.parse_args() | ||||
| 
 | ||||
|     df = pandas.read_csv(args.timingfile, sep="\t") | ||||
| 
 | ||||
|     for i in range(len(df)): | ||||
|         print(f"{df['nodes'][i]} & {df['tasks'][i]} & {show_seconds(df['mean_time'][i])} & {show_seconds(df['std_time'][i])} & {df['speedup'][i]:.02f} & {df['speedup_error'][i]:.02f} \\\\") | ||||
| @ -44,12 +44,13 @@ def get_outdirs(jobid: str): | ||||
|     return sorted(Path("/p/scratch/cellsinsilico/paul/nastja-out").glob(f"*{jobid}*")) | ||||
| 
 | ||||
| 
 | ||||
| def load_array_mean_timings(jobid: str): | ||||
|     mts = [ | ||||
|         load_mean_timings(outdir_path) | ||||
|         for outdir_path | ||||
|         in get_outdirs(jobid) | ||||
|     ] | ||||
| def load_array_mean_timings(jobid: str, excluded_array_indices): | ||||
|     mts = [] | ||||
|     for outdir_path in get_outdirs(jobid): | ||||
|         if any(str(outdir_path).endswith(str(i)) for i in excluded_array_indices): | ||||
|             print(f"Not loading timings for {outdir_path} because it was excluded.", file=sys.stderr) | ||||
|             continue | ||||
|         mts.append(load_mean_timings(outdir_path)) | ||||
| 
 | ||||
|     return pandas.DataFrame(list(mts), columns=mts[0].index) | ||||
| 
 | ||||
| @ -75,18 +76,37 @@ if __name__ == "__main__": | ||||
|     p = argparse.ArgumentParser(description="Load and analzye data from nastja timing files") | ||||
|     p.add_argument("jobid", nargs="+") | ||||
|     p.add_argument("--prettify", action="store_true") | ||||
|     p.add_argument("--dump-timings", action="store_true") | ||||
|     args = p.parse_args() | ||||
| 
 | ||||
|     results = [] | ||||
|     for i, jobid in enumerate(args.jobid, 1): | ||||
|         print(f"({i:2}/{len(args.jobid):2}) Loading accounting data for {jobid}", file=sys.stderr) | ||||
|         accounting_data = get_accounting_data(jobid) | ||||
|         array_mean_timings = load_array_mean_timings(jobid) | ||||
| 
 | ||||
|         jobs = [] | ||||
|         excluded_array_indices = [] | ||||
|         for array_job in accounting_data["jobs"]: | ||||
|             # Get metadata related to array | ||||
|             array_main_job = array_job["array"]["job_id"] | ||||
|             array_index = array_job["array"]["task_id"] | ||||
|             # The last step is the actual job we want the data for | ||||
|             # The steps before set up cluster etc. | ||||
|             last_step = array_job["steps"][-1] | ||||
|             if last_step["state"] != "COMPLETED": | ||||
|                 print(f"WARNING: {array_main_job}.{array_index} has state {last_step['state']}, excluding it from measurements", file=sys.stderr) | ||||
|                 excluded_array_indices.append(array_index) | ||||
|                 continue | ||||
|             jobs.append(last_step) | ||||
| 
 | ||||
|         array_mean_timings = load_array_mean_timings(jobid, excluded_array_indices) | ||||
|         if args.dump_timings: | ||||
|             print(array_mean_timings, file=sys.stderr) | ||||
| 
 | ||||
|         results.append({ | ||||
|             "jobid": jobid, | ||||
|             "means": array_mean_timings.mean().to_dict(), | ||||
|             "stds": array_mean_timings.std().to_dict(), | ||||
|             "accounting": [array_job["steps"][-1] for array_job in accounting_data["jobs"]] | ||||
|             "accounting": jobs | ||||
|         }) | ||||
|     print(json.dumps(results, indent=2 if args.prettify else None)) | ||||
|  | ||||
							
								
								
									
										63
									
								
								experiments/eval/strong-booster.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								experiments/eval/strong-booster.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,63 @@ | ||||
| { | ||||
|   "common": { | ||||
|     "account": "hkf6", | ||||
|     "partition": "booster", | ||||
|     "extra_sbatch_line": "#SBATCH --gres=gpu:4", | ||||
|     "logfile_path": "/p/project/cellsinsilico/paulslustigebude/ma/experiments/eval/logs/%x-%A.%a", | ||||
|     "nastja_binary_path": "/p/project/cellsinsilico/paulslustigebude/nastja/build-cuda/nastja", | ||||
|     "config_path": "/p/project/cellsinsilico/paulslustigebude/ma/experiments/eval/generated/config/${SLURM_JOB_NAME}.json", | ||||
|     "output_dir_path": "/p/scratch/cellsinsilico/paul/nastja-out/${SLURM_JOB_NAME}-${SLURM_ARRAY_JOB_ID}.${SLURM_ARRAY_TASK_ID}" | ||||
|   }, | ||||
|   "batches": [ | ||||
|     { | ||||
|       "name": "strong-booster-01-01-01", | ||||
|       "nodes": 1, | ||||
|       "tasks": 1, | ||||
|       "time": "00:15:00", | ||||
|       "extra_sbatch_line": "#SBATCH --gres=gpu:1" | ||||
|     }, | ||||
|     { | ||||
|       "name": "strong-booster-01-01-02", | ||||
|       "nodes": 1, | ||||
|       "tasks": 2, | ||||
|       "time": "00:15:00", | ||||
|       "extra_sbatch_line": "#SBATCH --gres=gpu:2" | ||||
|     }, | ||||
|     { | ||||
|       "name": "strong-booster-01-02-02", | ||||
|       "nodes": 1, | ||||
|       "tasks": 4, | ||||
|       "time": "00:15:00" | ||||
|     }, | ||||
|     { | ||||
|       "name": "strong-booster-02-02-02", | ||||
|       "nodes": 2, | ||||
|       "tasks": 8, | ||||
|       "time": "00:15:00" | ||||
|     }, | ||||
|     { | ||||
|       "name": "strong-booster-02-02-04", | ||||
|       "nodes": 4, | ||||
|       "tasks": 16, | ||||
|       "time": "00:15:00" | ||||
|     }, | ||||
|     { | ||||
|       "name": "strong-booster-02-04-04", | ||||
|       "nodes": 8, | ||||
|       "tasks": 32, | ||||
|       "time": "00:15:00" | ||||
|     }, | ||||
|     { | ||||
|       "name": "strong-booster-04-04-04", | ||||
|       "nodes": 16, | ||||
|       "tasks": 64, | ||||
|       "time": "00:15:00" | ||||
|     }, | ||||
|     { | ||||
|       "name": "strong-booster-04-04-08", | ||||
|       "nodes": 32, | ||||
|       "tasks": 128, | ||||
|       "time": "00:15:00" | ||||
|     } | ||||
|   ] | ||||
| } | ||||
| @ -13,19 +13,19 @@ | ||||
|       "name": "strong-cpu-04-04-03", | ||||
|       "nodes": 1, | ||||
|       "tasks": 48, | ||||
|       "time": "00:30:00" | ||||
|       "time": "01:00:00" | ||||
|     }, | ||||
|     { | ||||
|       "name": "strong-cpu-04-04-06", | ||||
|       "nodes": 2, | ||||
|       "tasks": 96, | ||||
|       "time": "00:30:00" | ||||
|       "time": "01:00:00" | ||||
|     }, | ||||
|     { | ||||
|       "name": "strong-cpu-04-04-12", | ||||
|       "nodes": 4, | ||||
|       "tasks": 192, | ||||
|       "time": "00:10:00" | ||||
|       "time": "00:20:00" | ||||
|     }, | ||||
|     { | ||||
|       "name": "strong-cpu-04-08-12", | ||||
|  | ||||
							
								
								
									
										263
									
								
								experiments/eval/templates/strong-booster.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										263
									
								
								experiments/eval/templates/strong-booster.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,263 @@ | ||||
| { | ||||
|   "Application": "Cells", | ||||
|   "CellsInSilico": { | ||||
|     "2D": false, | ||||
|     "adhesion": { | ||||
|       "matrix": [ | ||||
|         [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], | ||||
|         [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 450.0], | ||||
|         [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], | ||||
|         [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], | ||||
|         [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], | ||||
|         [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], | ||||
|         [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], | ||||
|         [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], | ||||
|         [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], | ||||
|         [0.0, 450.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 50.0] | ||||
|       ], | ||||
|       "polarityenabled": false | ||||
|     }, | ||||
|     "centerofmass": { | ||||
|       "steps": 1 | ||||
|     }, | ||||
|     "cleaner": { | ||||
|       "killdistance": 0, | ||||
|       "steps": 100 | ||||
|     }, | ||||
|     "contactinhibition": { | ||||
|       "enabled": false | ||||
|     }, | ||||
|     "division": { | ||||
|       "condition": [ | ||||
|         "", | ||||
|         "", | ||||
|         "", | ||||
|         "", | ||||
|         "", | ||||
|         "", | ||||
|         "", | ||||
|         "", | ||||
|         "", | ||||
|         "( volume >= 0.9 * volume0 )  & ( rnd() <= 0.00001 ) & generation < 1" | ||||
|       ], | ||||
|       "enabled": true, | ||||
|       "halveSignals": false | ||||
|     }, | ||||
|     "dynamicecm": { | ||||
|       "alpha": 2.0, | ||||
|       "beta": 0.5, | ||||
|       "c": 4.0, | ||||
|       "deltat": 0.10000000149011612, | ||||
|       "ecmCellID": 0, | ||||
|       "enabled": true, | ||||
|       "eta": 0.25, | ||||
|       "k0": 0.10000000149011612, | ||||
|       "k1": 0.10000000149011612, | ||||
|       "lambda": 10.0, | ||||
|       "phi": 1.0, | ||||
|       "pushSteps": 10, | ||||
|       "pushWeight": 0.5, | ||||
|       "stepsPerMcs": 100 | ||||
|     }, | ||||
|     "ecmdegradation": { | ||||
|       "enabled": false | ||||
|     }, | ||||
|     "energyfunctions": [ | ||||
|       "Volume00", | ||||
|       "Surface01", | ||||
|       "Motility00", | ||||
|       "Adhesion01", | ||||
|       "DynamicECM00" | ||||
|     ], | ||||
|     "liquid": 6, | ||||
|     "logcellproperties": { | ||||
|       "enabled": false | ||||
|     }, | ||||
|     "orientation": { | ||||
|       "enabled": true, | ||||
|       "motility": "persistentRandomWalk", | ||||
|       "motilityamount": [ | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0 | ||||
|       ], | ||||
|       "numRandomNumbers": 5, | ||||
|       "persistenceMagnitude": 0.0, | ||||
|       "persistentDecay": 0.8, | ||||
|       "recalculationtime": 200 | ||||
|     }, | ||||
|     "polarity": { | ||||
|       "enabled": false | ||||
|     }, | ||||
|     "signaling": { | ||||
|       "constant": false, | ||||
|       "enabled": false | ||||
|     }, | ||||
|     "surface": { | ||||
|       "default": { | ||||
|         "storage": "const", | ||||
|         "value": 400.0 | ||||
|       }, | ||||
|       "lambda": [ | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         5.625, | ||||
|         5.625, | ||||
|         1.0 | ||||
|       ], | ||||
|       "sizechange": [ | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         -0.05, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0 | ||||
|       ] | ||||
|     }, | ||||
|     "temperature": 50.0, | ||||
|     "visitor": { | ||||
|       "checkerboard": "01", | ||||
|       "stepwidth": 10 | ||||
|     }, | ||||
|     "volume": { | ||||
|       "default": { | ||||
|         "storage": "const", | ||||
|         "value": 500.0 | ||||
|       }, | ||||
|       "lambda": [ | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         7.5, | ||||
|         7.5, | ||||
|         7.5 | ||||
|       ], | ||||
|       "sizechange": [ | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         -0.05, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0 | ||||
|       ] | ||||
|     } | ||||
|   }, | ||||
|   "DefineFunctions": [ | ||||
|     "r_angle()=360*rnd()", | ||||
|     "r_size()=400*rnd()" | ||||
|   ], | ||||
|   "Filling": { | ||||
|     "cells": [ | ||||
|       { | ||||
|         "box": [ | ||||
|           [ | ||||
|             0, | ||||
|             0, | ||||
|             0 | ||||
|           ], | ||||
|           [ | ||||
|             384, | ||||
|             384, | ||||
|             384 | ||||
|           ] | ||||
|         ], | ||||
|         "celltype": 0, | ||||
|         "component": 0, | ||||
|         "pattern": "const", | ||||
|         "seed": 0, | ||||
|         "shape": "cube", | ||||
|         "value": 0 | ||||
|       }, | ||||
|       { | ||||
|         "box": [ | ||||
|           [117, 117, 177], | ||||
|           [267, 267, 267] | ||||
|         ], | ||||
|         "celltype": 9, | ||||
|         "center": [192, 192, 192], | ||||
|         "component": 0, | ||||
|         "count": 5500, | ||||
|         "pattern": "voronoi", | ||||
|         "radius": 75, | ||||
|         "seed": 758960, | ||||
|         "shape": "sphere", | ||||
|         "value": 8 | ||||
|       } | ||||
|     ], | ||||
|     "initialoutput": false, | ||||
|     "randomseed": 758959 | ||||
|   }, | ||||
|   "Geometry": { | ||||
|     "blockcount": [ | ||||
|       4, | ||||
|       4, | ||||
|       3 | ||||
|     ], | ||||
|     "blockdefault": "fill", | ||||
|     "blocksize": [ | ||||
|       96, | ||||
|       96, | ||||
|       128 | ||||
|     ], | ||||
|     "blocktype": [ | ||||
|       [ | ||||
|         [ | ||||
|           1 | ||||
|         ] | ||||
|       ] | ||||
|     ] | ||||
|   }, | ||||
|   "Settings": { | ||||
|     "deltat": 1.0, | ||||
|     "deltax": 1.0, | ||||
|     "handleFPE": "signal", | ||||
|     "logger": { | ||||
|       "group": 0, | ||||
|       "steps": 100 | ||||
|     }, | ||||
|     "randomseed": 42, | ||||
|     "statusoutput": 1, | ||||
|     "timestepguard": 1, | ||||
|     "timesteps": 10, | ||||
|     "cuda": { | ||||
|       "subblocks": { | ||||
|         "blockDim": [8, 8, 8] | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @ -253,6 +253,6 @@ | ||||
|     "randomseed": 42, | ||||
|     "statusoutput": 1, | ||||
|     "timestepguard": 1, | ||||
|     "timesteps": 5 | ||||
|     "timesteps": 10 | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -253,7 +253,7 @@ | ||||
|     "randomseed": 42, | ||||
|     "statusoutput": 1, | ||||
|     "timestepguard": 1, | ||||
|     "timesteps": 5, | ||||
|     "timesteps": 10, | ||||
|     "cuda": { | ||||
|       "subblocks": { | ||||
|         "blockDim": [8, 8, 8] | ||||
|  | ||||
							
								
								
									
										193
									
								
								experiments/eval/templates/weak.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										193
									
								
								experiments/eval/templates/weak.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,193 @@ | ||||
| { | ||||
|   "Application": "Cells", | ||||
|   "CellsInSilico": { | ||||
|     "2D": false, | ||||
|     "adhesion": { | ||||
|       "matrix": [ | ||||
|         [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], | ||||
|         [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 450.0], | ||||
|         [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], | ||||
|         [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], | ||||
|         [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], | ||||
|         [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], | ||||
|         [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], | ||||
|         [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], | ||||
|         [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], | ||||
|         [0.0, 450.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 50.0] | ||||
|       ], | ||||
|       "polarityenabled": false | ||||
|     }, | ||||
|     "centerofmass": { | ||||
|       "steps": 1 | ||||
|     }, | ||||
|     "cleaner": { | ||||
|       "killdistance": 0, | ||||
|       "steps": 100 | ||||
|     }, | ||||
|     "contactinhibition": { | ||||
|       "enabled": false | ||||
|     }, | ||||
|     "division": { | ||||
|       "condition": [ | ||||
|         "", | ||||
|         "", | ||||
|         "", | ||||
|         "", | ||||
|         "", | ||||
|         "", | ||||
|         "", | ||||
|         "", | ||||
|         "", | ||||
|         "( volume >= 0.9 * volume0 )  & ( rnd() <= 0.00001 ) & generation < 1" | ||||
|       ], | ||||
|       "enabled": true, | ||||
|       "halveSignals": false | ||||
|     }, | ||||
|     "dynamicecm": { | ||||
|       "alpha": 2.0, | ||||
|       "beta": 0.5, | ||||
|       "c": 4.0, | ||||
|       "deltat": 0.1, | ||||
|       "ecmCellID": 0, | ||||
|       "enabled": true, | ||||
|       "eta": 0.25, | ||||
|       "k0": 0.1, | ||||
|       "k1": 0.1, | ||||
|       "lambda": 10.0, | ||||
|       "phi": 1.0, | ||||
|       "pushSteps": 10, | ||||
|       "pushWeight": 0.5, | ||||
|       "stepsPerMcs": 100 | ||||
|     }, | ||||
|     "ecmdegradation": { | ||||
|       "enabled": false | ||||
|     }, | ||||
|     "energyfunctions": [ | ||||
|       "Volume00", | ||||
|       "Surface01", | ||||
|       "Motility00", | ||||
|       "Adhesion01", | ||||
|       "DynamicECM00" | ||||
|     ], | ||||
|     "liquid": 6, | ||||
|     "logcellproperties": { | ||||
|       "enabled": false | ||||
|     }, | ||||
|     "orientation": { | ||||
|       "enabled": true, | ||||
|       "motility": "persistentRandomWalk", | ||||
|       "motilityamount": [ | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0 | ||||
|       ], | ||||
|       "numRandomNumbers": 5, | ||||
|       "persistenceMagnitude": 0.0, | ||||
|       "persistentDecay": 0.8, | ||||
|       "recalculationtime": 200 | ||||
|     }, | ||||
|     "polarity": { | ||||
|       "enabled": false | ||||
|     }, | ||||
|     "signaling": { | ||||
|       "constant": false, | ||||
|       "enabled": false | ||||
|     }, | ||||
|     "surface": { | ||||
|       "default": { | ||||
|         "storage": "const", | ||||
|         "value": 400.0 | ||||
|       }, | ||||
|       "lambda": [ | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         5.625, | ||||
|         5.625, | ||||
|         1.0 | ||||
|       ], | ||||
|       "sizechange": [ | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         -0.05, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0 | ||||
|       ] | ||||
|     }, | ||||
|     "temperature": 50.0, | ||||
|     "visitor": { | ||||
|       "checkerboard": "01", | ||||
|       "stepwidth": 10 | ||||
|     }, | ||||
|     "volume": { | ||||
|       "default": { | ||||
|         "storage": "const", | ||||
|         "value": 500.0 | ||||
|       }, | ||||
|       "lambda": [ | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         7.5, | ||||
|         7.5, | ||||
|         7.5 | ||||
|       ], | ||||
|       "sizechange": [ | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         -0.05, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0, | ||||
|         0.0 | ||||
|       ] | ||||
|     } | ||||
|   }, | ||||
|   "DefineFunctions": [ | ||||
|     "r_angle()=360*rnd()", | ||||
|     "r_size()=400*rnd()" | ||||
|   ], | ||||
|   "Filling": { | ||||
|     "initialoutput": false, | ||||
|     "randomseed": 758959 | ||||
|   }, | ||||
|   "Settings": { | ||||
|     "randomseed": 42, | ||||
|     "statusoutput": 1, | ||||
|     "timesteps": 10 | ||||
|   } | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user