""" Multicore system simulation for virtual GPU v2. Simulates 50,000 identical AdvancedCore instances in parallel. """ from core import AdvancedCore class MultiCoreSystem: def __init__(self, num_cores=50000, bits=2, num_registers=2): self.cores = [AdvancedCore(bits=bits, num_registers=num_registers) for _ in range(num_cores)] self.num_cores = num_cores def step_all(self, a, b, cin, opcode, reg_sel): """ Steps all cores in parallel with the same input. a, b: lists of voltages (length 2) cin: carry in opcode: ALU operation reg_sel: register select Returns: list of results from all cores """ return [core.step(a, b, cin, opcode, reg_sel) for core in self.cores] def step_all_custom(self, inputs): """ Steps all cores in parallel with custom input for each core. inputs: list of dicts with keys 'a', 'b', 'cin', 'opcode', 'reg_sel' Returns: list of results from all cores """ return [core.step(inp['a'], inp['b'], inp['cin'], inp['opcode'], inp['reg_sel']) for core, inp in zip(self.cores, inputs)] if __name__ == "__main__": print("\n--- MultiCore System Simulation (50,000 cores) ---") system = MultiCoreSystem(num_cores=50000, bits=2, num_registers=2) # Example: Step all cores with the same ADD operation results = system.step_all([0.7, 0.0], [0.7, 0.7], 0.0, 0b10, 0) print(f"First core result: {results[0]}") print(f"Total cores simulated: {len(results)}")