From 3529b216463f4ba857230d046c4cec53211e65b1 Mon Sep 17 00:00:00 2001 From: "Christian Y. Brenninkmeijer" Date: Wed, 12 Jul 2023 13:10:18 +0100 Subject: [PATCH 1/8] get n_cores from Version classes --- spinnman/processes/get_machine_process.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/spinnman/processes/get_machine_process.py b/spinnman/processes/get_machine_process.py index cb2db1797..bdbcee203 100644 --- a/spinnman/processes/get_machine_process.py +++ b/spinnman/processes/get_machine_process.py @@ -27,6 +27,7 @@ from spinn_machine.machine_factory import machine_repair from spinnman.constants import ( ROUTER_REGISTER_P2P_ADDRESS, SYSTEM_VARIABLE_BASE_ADDRESS) +from spinnman.data import SpiNNManDataView from spinnman.messages.spinnaker_boot import ( SystemVariableDefinition) from spinnman.exceptions import SpinnmanUnexpectedResponseCodeException @@ -94,7 +95,9 @@ def _make_chip(self, chip_info, machine): :rtype: ~spinn_machine.Chip """ # Create the down cores set if any - n_cores = min(chip_info.n_cores, Machine.max_cores_per_chip()) + n_cores = \ + SpiNNManDataView.get_machine_version().max_cores_per_chip + n_cores = min(chip_info.n_cores, n_cores) core_states = chip_info.core_states down_cores = self._ignore_cores_map.get( (chip_info.x, chip_info.y), None) From 803fa6beb52b67e9e18fd51075ed587319880012 Mon Sep 17 00:00:00 2001 From: "Christian Y. Brenninkmeijer" Date: Wed, 12 Jul 2023 16:22:37 +0100 Subject: [PATCH 2/8] remove unused import --- spinnman/processes/get_machine_process.py | 1 - 1 file changed, 1 deletion(-) diff --git a/spinnman/processes/get_machine_process.py b/spinnman/processes/get_machine_process.py index bdbcee203..f22ee1066 100644 --- a/spinnman/processes/get_machine_process.py +++ b/spinnman/processes/get_machine_process.py @@ -23,7 +23,6 @@ from spinn_utilities.log import FormatAdapter from spinn_machine import (Router, Chip, Link, machine_from_size) from spinn_machine.ignores import IgnoreChip, IgnoreCore, IgnoreLink -from spinn_machine import Machine from spinn_machine.machine_factory import machine_repair from spinnman.constants import ( ROUTER_REGISTER_P2P_ADDRESS, SYSTEM_VARIABLE_BASE_ADDRESS) From d282c626fe4be7dd37444c6c84cca9e0d41b6d6b Mon Sep 17 00:00:00 2001 From: "Christian Y. Brenninkmeijer" Date: Wed, 12 Jul 2023 17:24:25 +0100 Subject: [PATCH 3/8] require something in cfg to dettermine version --- unittests/data/test_data.py | 2 ++ unittests/model_tests/test_abstract_process.py | 2 ++ unittests/test_transceiver.py | 2 ++ 3 files changed, 6 insertions(+) diff --git a/unittests/data/test_data.py b/unittests/data/test_data.py index 1fb042ffb..ab4fa0652 100644 --- a/unittests/data/test_data.py +++ b/unittests/data/test_data.py @@ -13,6 +13,7 @@ # limitations under the License. import unittest +from spinn_utilities.config_holder import set_config from spinn_utilities.exceptions import (DataNotYetAvialable) from spinnman.config_setup import unittest_setup from spinnman.data import SpiNNManDataView @@ -42,6 +43,7 @@ def test_setup(self): def test_mock(self): SpiNNManDataWriter.mock() + set_config("Machine", "version", 5) # check there is a # value not what it is SpiNNManDataView.get_machine() diff --git a/unittests/model_tests/test_abstract_process.py b/unittests/model_tests/test_abstract_process.py index e5aebecb3..2aea5ed39 100644 --- a/unittests/model_tests/test_abstract_process.py +++ b/unittests/model_tests/test_abstract_process.py @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +from spinn_utilities.config_holder import set_config from spinnman.processes.abstract_multi_connection_process import ( AbstractMultiConnectionProcess) from spinnman.messages.scp.impl import ReadMemory @@ -42,6 +43,7 @@ def receive_scp_response(self, timeout=1.0): def test_error_print(): unittest_setup() + set_config("Machine", "version", 5) connection = MockConnection(0, 0) process = MockProcess(RoundRobinConnectionSelector([connection])) with pytest.raises(SpinnmanGenericProcessException): diff --git a/unittests/test_transceiver.py b/unittests/test_transceiver.py index 620413af7..46c037cb9 100644 --- a/unittests/test_transceiver.py +++ b/unittests/test_transceiver.py @@ -14,6 +14,7 @@ import unittest import struct +from spinn_utilities.config_holder import set_config from spinn_machine import virtual_machine from spinnman.config_setup import unittest_setup from spinnman.data.spinnman_data_writer import SpiNNManDataWriter @@ -58,6 +59,7 @@ class TestTransceiver(unittest.TestCase): def setUp(self): unittest_setup() + set_config("Machine", "version", 5) def test_create_new_transceiver_to_board(self): board_config.set_up_remote_board() From 76666aa951c323b84bf7ffd89572a3364012421c Mon Sep 17 00:00:00 2001 From: "Christian Y. Brenninkmeijer" Date: Thu, 13 Jul 2023 10:01:50 +0100 Subject: [PATCH 4/8] move verify machine size and pick Machine type to Version classes --- spinnman/processes/get_machine_process.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/spinnman/processes/get_machine_process.py b/spinnman/processes/get_machine_process.py index f22ee1066..3a87f572e 100644 --- a/spinnman/processes/get_machine_process.py +++ b/spinnman/processes/get_machine_process.py @@ -21,7 +21,7 @@ get_config_bool, get_config_int, get_config_str) from spinn_utilities.data import UtilsDataView from spinn_utilities.log import FormatAdapter -from spinn_machine import (Router, Chip, Link, machine_from_size) +from spinn_machine import (Router, Chip, Link) from spinn_machine.ignores import IgnoreChip, IgnoreCore, IgnoreLink from spinn_machine.machine_factory import machine_repair from spinnman.constants import ( @@ -235,7 +235,8 @@ def get_machine_details(self, boot_x, boot_y, width, height): logger.warning( "Chip {}, {} was expected but didn't reply", x, y) - machine = machine_from_size(width, height) + version = SpiNNManDataView.get_machine_version() + machine = version.create_machine(width, height) self._preprocess_ignore_chips(machine) self._process_ignore_links(machine) self._preprocess_ignore_cores(machine) From dc0c834ebc9281f9686ec2e127e63de7f3c2bfb6 Mon Sep 17 00:00:00 2001 From: "Christian Y. Brenninkmeijer" Date: Thu, 13 Jul 2023 11:13:00 +0100 Subject: [PATCH 5/8] tests use version 5 --- unittests/test_transceiver.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unittests/test_transceiver.py b/unittests/test_transceiver.py index 46c037cb9..0aa55c7f1 100644 --- a/unittests/test_transceiver.py +++ b/unittests/test_transceiver.py @@ -39,7 +39,7 @@ def __init__( self.written_memory = list() def get_machine_details(self): - return virtual_machine(2, 2) + return virtual_machine(8, 8) def _update_machine(self): self._machine = self.get_machine_details() From cd758a339953dcf27ab52b40b1ef8a75615270a3 Mon Sep 17 00:00:00 2001 From: "Christian Y. Brenninkmeijer" Date: Thu, 13 Jul 2023 13:30:02 +0100 Subject: [PATCH 6/8] version.get_potential_ethernet_chip --- spinnman/transceiver.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spinnman/transceiver.py b/spinnman/transceiver.py index 72cd35886..da95c30d4 100644 --- a/spinnman/transceiver.py +++ b/spinnman/transceiver.py @@ -532,8 +532,8 @@ def discover_scamp_connections(self): dims = self.get_machine_dimensions() # Find all the new connections via the machine Ethernet-connected chips - geometry = SpiNNakerTriadGeometry.get_spinn5_geometry() - for x, y in geometry.get_potential_ethernet_chips( + version = SpiNNManDataView.get_machine_version() + for x, y in version.get_potential_ethernet_chips( dims.width, dims.height): ip_addr_item = SystemVariableDefinition.ethernet_ip_address try: From d79fbb74a65aef43dda8b4ed0adc775d862fde2b Mon Sep 17 00:00:00 2001 From: "Christian Y. Brenninkmeijer" Date: Fri, 14 Jul 2023 12:21:45 +0100 Subject: [PATCH 7/8] machine summary string --- spinnman/transceiver.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/spinnman/transceiver.py b/spinnman/transceiver.py index da95c30d4..44c52be81 100644 --- a/spinnman/transceiver.py +++ b/spinnman/transceiver.py @@ -644,9 +644,7 @@ def get_machine_details(self): machine.add_fpga_links() if self._boot_send_connection: - logger.info("Detected a machine on IP address {} which has {}", - machine.boot_chip.ip_address, - machine.cores_and_link_output_string()) + logger.info(f"Detected {machine.summary_string()}") return machine def is_connected(self, connection=None): From 114da5c182f6866b62aed6aa58b354b6340959cf Mon Sep 17 00:00:00 2001 From: "Christian Y. Brenninkmeijer" Date: Fri, 14 Jul 2023 15:29:43 +0100 Subject: [PATCH 8/8] flake8 --- spinnman/transceiver.py | 1 - 1 file changed, 1 deletion(-) diff --git a/spinnman/transceiver.py b/spinnman/transceiver.py index 44c52be81..ec62af2a4 100644 --- a/spinnman/transceiver.py +++ b/spinnman/transceiver.py @@ -28,7 +28,6 @@ from spinn_utilities.log import FormatAdapter from spinn_utilities.logger_utils import warn_once from spinn_machine import CoreSubsets -from spinn_machine.spinnaker_triad_geometry import SpiNNakerTriadGeometry from spinnman.constants import ( BMP_POST_POWER_ON_SLEEP_TIME, BMP_POWER_ON_TIMEOUT, BMP_TIMEOUT, CPU_MAX_USER, CPU_USER_OFFSET, CPU_USER_START_ADDRESS,