diff options
Diffstat (limited to 'salis.py')
| -rwxr-xr-x | salis.py | 32 |
1 files changed, 6 insertions, 26 deletions
@@ -60,7 +60,7 @@ options = { (("a", "arch"), (new,), fmt_id): {"choices": architectures, "help": "VM architecture", "default": "dummy", "required": False, "type": str}, (("C", "clones"), (new,), fmt_id): {"metavar": "N", "help": "number of ancestor clones on each core", "default": 1, "required": False, "type": nat}, (("c", "cores"), (new,), fmt_id): {"metavar": "N", "help": "number of simulator cores", "default": 2, "required": False, "type": nat}, - (("d", "data-push-pow"), (new,), fmt_id): {"metavar": "POW", "help": "data aggregation interval exponent; interval = 2^{POW} >= {sync-pow}; a value of 0 disables data aggregation; requires 'sqlite' and 'zlib'", "default": 28, "required": False, "type": pos}, + (("d", "data-push-pow"), (new,), fmt_id): {"metavar": "POW", "help": "data aggregation interval exponent; interval = 2^{POW} >= {sync-pow}", "default": 28, "required": False, "type": nat}, (("f", "force"), (new,), fmt_id): {"action": "store_true", "help": "overwrite existing simulation of given name", "required": False}, (("F", "muta-flip"), (new,), fmt_id): {"action": "store_true", "help": "cosmic rays flip bits instead of randomizing whole bytes", "required": False}, (("g", "c-compiler"), (new, load, server, client), fmt_id): {"metavar": "CC", "help": "C compiler to use", "default": "gcc", "required": False, "type": str}, @@ -79,7 +79,6 @@ options = { (("T", "keep-temp-dir"), (new, load, server, client), fmt_id): {"action": "store_true", "help": "keep temporary directory on exit", "required": False}, (("t", "thread-gap"), (new, load), fmt_hex): {"metavar": "N", "help": "memory gap between core elements in bytes; may help reduce cache misses", "default": 0x100, "required": False, "type": nat}, (("u", "ui"), (new, load), fmt_id): {"choices": uis, "help": "user interface", "default": "curses", "required": False, "type": str}, - (("x", "no-compress"), (new,), fmt_id): {"action": "store_true", "help": "do not compress save files; useful if 'zlib' is unavailable", "required": False}, (("y", "sync-pow"), (new,), fmt_id): {"metavar": "POW", "help": "core sync interval exponent; sync events occur every N steps, where N = 2^{POW}", "default": 20, "required": False, "type": pos}, (("z", "auto-save-pow"), (new,), fmt_id): {"metavar": "POW", "help": "auto-save interval exponent; auto-saves occur every N steps, where N = 2^{POW}", "default": 36, "required": False, "type": pos}, } @@ -160,8 +159,8 @@ log_b.build() # This way there's only a single unified logging system to care about log = SimpleNamespace() log_dll = ctypes.CDLL(log_b.binfile) -log.info = lambda msg: log_dll.log_info(msg.encode()) -log.warn = lambda msg: log_dll.log_warn(msg.encode()) +log.info = lambda msg: log_dll.log_info_default(msg.encode()) +log.warn = lambda msg: log_dll.log_warn_default(msg.encode()) for log_level, log_msg in log_logs: getattr(log, log_level)(log_msg) @@ -330,25 +329,12 @@ def pop_ui_vars(): ns.b.defines.update({*ns.ui_vars["defines"]}) ns.b.links.update({*ns.ui_vars["links"]}) -def pop_db_vars(): +def pop_data_push_vars(): ns.sim_db = os.path.join(ns.sim_dir, f"{args.name}.sqlite3") ns.b.defines.add(f"-DDATA_PUSH_PATH=\"{ns.sim_db}\"") ns.b.links.add("-lsqlite3") ns.b.links.add("-lz") -def pop_data_push_vars(): - if args.data_push_pow: - pop_db_vars() - log.info(f"Data will be aggregated at: {ns.sim_db}") - else: - log.warn("Data aggregation disabled") - - if not args.no_compress: - ns.b.links.add("-lz") - log.info("Save file compression enabled") - else: - log.warn("Save file compression disabled") - def pop_sim_path_vars(): ns.b.defines.add(f"-DSIM_OPTS=\"{ns.sim_opts}\"") ns.b.defines.add(f"-DSIM_PATH=\"{ns.sim_path}\"") @@ -362,13 +348,6 @@ def pop_general(): ns.b.flags.add(f"-Iarch/{args.arch}") ns.b.flags.add("-Icore") - if args.data_push_pow: - ns.b.defines.add("-DDATA_PUSH") - ns.b.defines.add(f"-DDATA_PUSH_INTERVAL={2 ** args.data_push_pow}ul") - - if not args.no_compress: - ns.b.defines.add("-DCOMPRESS") - if args.muta_flip: ns.b.defines.add("-DMUTA_FLIP") @@ -386,6 +365,7 @@ def pop_general(): ns.b.defines.add(f"-DCORE_FIELD_COUNT={len(arch_vars["core_fields"])}") ns.b.defines.add(f"-DCORE_FIELDS={" ".join(f"CORE_FIELD({", ".join(field)})" for field in arch_vars["core_fields"])}") ns.b.defines.add(f"-DCORES={args.cores}") + ns.b.defines.add(f"-DDATA_PUSH_INTERVAL={2 ** args.data_push_pow}ul") ns.b.defines.add(f"-DFOR_CORES={" ".join(f"FOR_CORE({i})" for i in range(args.cores))}") ns.b.defines.add(f"-DINST_COUNT={len(arch_vars["inst_set"])}") ns.b.defines.add(f"-DINST_SET(core, pref)={" ".join(f"INST(core, pref, {index}, {"_".join(inst[0])}, \"{" ".join(inst[0])}\", L'{inst[1]}')" for index, inst in enumerate(arch_vars["inst_set"]))}") @@ -422,7 +402,7 @@ if args.command == "load": # Populate for server if args.command == "server": ns.b = Build("data/server.c", log) - pop_db_vars() + pop_data_push_vars() pop_sim_path_vars() pop_net_vars() pop_general() |
