Spaces:
Sleeping
Sleeping
| """ | |
| 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)}") | |