Skip to content

Commit

Permalink
test lost in merge
Browse files Browse the repository at this point in the history
  • Loading branch information
Christian-B committed Apr 12, 2024
1 parent 2bf70f4 commit f2b414a
Show file tree
Hide file tree
Showing 3 changed files with 153 additions and 4 deletions.
35 changes: 31 additions & 4 deletions unittests/test_virtual_machine201.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@
from spinn_machine.exceptions import (
SpinnMachineException, SpinnMachineAlreadyExistsException)
from spinn_machine.version import SPIN2_1CHIP
from spinn_machine.virtual_machine import (
virtual_machine_by_boards, virtual_machine_by_chips,
virtual_machine_by_cores)


class TestVirtualMachine201(unittest.TestCase):
Expand Down Expand Up @@ -219,13 +222,37 @@ def _check_path(self, source, target, path, width, height):
self.assertEqual(target, new_target, "{}{}".format(source, path))

def test_n_cores_2_2(self):
set_config("Machine", "version", 2)
machine = virtual_machine(2, 2)
set_config("Machine", "version", SPIN2_1CHIP)
machine = virtual_machine(1, 1)
n_cores = sum(
cores for (_, cores) in machine.get_xy_cores_by_ethernet(0, 0))
self.assertEqual(n_cores, 4 * 18)
self.assertEqual(n_cores, 152)
n_cores = sum(chip.n_processors for chip in machine.chips)
self.assertEqual(n_cores, 4 * 18)
self.assertEqual(n_cores, 152)

def test_by(self):
set_config("Machine", "version", SPIN2_1CHIP)
n_cores = 40
machine = virtual_machine_by_cores(n_cores)
self.assertEqual(1, machine.n_chips)
self.assertEqual(1, machine.width)
self.assertEqual(1, machine.height)
self.assertGreaterEqual(machine.total_available_user_cores, n_cores)
machine2 = virtual_machine_by_boards(1)
self.assertEqual(1, machine2.n_chips)
self.assertEqual(1, machine2.width)
self.assertEqual(1, machine2.height)
machine = virtual_machine_by_chips(1)
self.assertEqual(1, machine.n_chips)
self.assertEqual(1, machine.width)
self.assertEqual(1, machine.height)

def test_by_cores_too_many(self):
set_config("Machine", "version", SPIN2_1CHIP)
with self.assertRaises(SpinnMachineException):
virtual_machine_by_cores(200)
with self.assertRaises(SpinnMachineException):
virtual_machine_by_boards(2)


if __name__ == '__main__':
Expand Down
27 changes: 27 additions & 0 deletions unittests/test_virtual_machine3.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@
from spinn_machine.link_data_objects import SpinnakerLinkData
from spinn_machine.exceptions import (
SpinnMachineException, SpinnMachineAlreadyExistsException)
from spinn_machine.virtual_machine import (
virtual_machine_by_boards, virtual_machine_by_chips,
virtual_machine_by_cores)


class TestVirtualMachine3(unittest.TestCase):
Expand Down Expand Up @@ -271,6 +274,30 @@ def test_n_cores_2_2(self):
n_cores = sum(chip.n_processors for chip in machine.chips)
self.assertEqual(n_cores, 4 * 18)

def test_2_2_by(self):
set_config("Machine", "version", 2)
n_cores = 40
machine = virtual_machine_by_cores(n_cores)
self.assertEqual(4, machine.n_chips)
self.assertEqual(2, machine.width)
self.assertEqual(2, machine.height)
self.assertGreaterEqual(machine.total_available_user_cores, n_cores)
machine2 = virtual_machine_by_boards(1)
self.assertEqual(4, machine2.n_chips)
self.assertEqual(2, machine2.width)
self.assertEqual(2, machine2.height)
machine = virtual_machine_by_chips(3)
self.assertEqual(4, machine.n_chips)
self.assertEqual(2, machine.width)
self.assertEqual(2, machine.height)

def test_2_2_by_cores_too_many(self):
set_config("Machine", "version", 2)
with self.assertRaises(SpinnMachineException):
virtual_machine_by_cores(100)
with self.assertRaises(SpinnMachineException):
virtual_machine_by_boards(2)


if __name__ == '__main__':
unittest.main()
95 changes: 95 additions & 0 deletions unittests/test_virtual_machine5.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,13 @@

from spinn_machine import virtual_machine
from spinn_machine.config_setup import unittest_setup
from spinn_machine.data import MachineDataView
from spinn_machine.exceptions import SpinnMachineException
from spinn_machine.link_data_objects import SpinnakerLinkData
from spinn_machine.version.version_5 import CHIPS_PER_BOARD
from spinn_machine.virtual_machine import (
virtual_machine_by_boards, virtual_machine_by_chips,
virtual_machine_by_cores, virtual_machine_by_min_size)


class TestVirtualMachine5(unittest.TestCase):
Expand Down Expand Up @@ -725,6 +729,97 @@ def test_n_cores_8_8(self):
n_cores = sum(chip.n_processors for chip in machine.chips)
self.assertEqual(n_cores, self.VERSION_5_N_CORES_PER_BOARD)

def test_8_8_by_cores_1_board(self):
set_config("Machine", "version", 5)
version = MachineDataView.get_machine_version()
n_cores = sum(version.chip_core_map.values())
n_cores -= version.n_chips_per_board
machine = virtual_machine_by_cores(n_cores)
self.assertEqual(8, machine.width)
self.assertEqual(8, machine.height)
self.assertEqual(n_cores, machine.total_available_user_cores)
machine = virtual_machine_by_boards(1)
self.assertEqual(8, machine.width)
self.assertEqual(8, machine.height)
self.assertEqual(n_cores, machine.total_available_user_cores)

def test_8_8_by_cores_3_boards(self):
set_config("Machine", "version", 5)
version = MachineDataView.get_machine_version()
n_cores = sum(version.chip_core_map.values())
n_cores -= version.n_chips_per_board
machine = virtual_machine_by_cores(n_cores * 2)
# despite asking for two boards you get a triad
self.assertEqual(16, machine.width)
self.assertEqual(16, machine.height)
self.assertEqual(n_cores*3, machine.total_available_user_cores)
machine = virtual_machine_by_boards(2)
# despite asking for two boards you get a triad
self.assertEqual(16, machine.width)
self.assertEqual(16, machine.height)
self.assertEqual(n_cores*3, machine.total_available_user_cores)
machine = virtual_machine_by_chips(100)
# despite asking for two boards you get a triad
self.assertEqual(16, machine.width)
self.assertEqual(16, machine.height)
self.assertEqual(n_cores*3, machine.total_available_user_cores)

def test_8_8_by_cores_6_boards(self):
set_config("Machine", "version", 5)
version = MachineDataView.get_machine_version()
n_cores = sum(version.chip_core_map.values())
n_cores -= version.n_chips_per_board
machine = virtual_machine_by_cores(n_cores * 5)
self.assertEqual(28, machine.width)
self.assertEqual(16, machine.height)
self.assertEqual(n_cores * 6, machine.total_available_user_cores)
machine = virtual_machine_by_boards(4)
self.assertEqual(28, machine.width)
self.assertEqual(16, machine.height)
self.assertEqual(n_cores * 6, machine.total_available_user_cores)

def test_8_8_by_cores_12_boards(self):
set_config("Machine", "version", 5)
version = MachineDataView.get_machine_version()
n_cores = sum(version.chip_core_map.values())
n_cores -= version.n_chips_per_board
machine = virtual_machine_by_cores(n_cores * 9)
self.assertEqual(28, machine.width)
self.assertEqual(28, machine.height)
self.assertEqual(n_cores * 12, machine.total_available_user_cores)
machine = virtual_machine_by_boards(10)
self.assertEqual(28, machine.width)
self.assertEqual(28, machine.height)
self.assertEqual(n_cores * 12, machine.total_available_user_cores)

def test_8_8_by_cores_18_boards(self):
set_config("Machine", "version", 5)
version = MachineDataView.get_machine_version()
n_cores = sum(version.chip_core_map.values())
n_cores -= version.n_chips_per_board
machine = virtual_machine_by_cores(n_cores * 12 + 1)
self.assertEqual(40, machine.width)
self.assertEqual(28, machine.height)
self.assertEqual(n_cores * 18, machine.total_available_user_cores)
machine = virtual_machine_by_boards(15)
self.assertEqual(40, machine.width)
self.assertEqual(28, machine.height)
self.assertEqual(n_cores * 18, machine.total_available_user_cores)

def test_by_min_size(self):
set_config("Machine", "version", 5)
machine = virtual_machine_by_min_size(15, 21)
self.assertGreaterEqual(machine.width, 15)
self.assertGreaterEqual(machine.height, 21)

def test_by_min_size_edge_case(self):
set_config("Machine", "version", 5)
version = MachineDataView.get_machine_version()
width, height = version.board_shape
machine = virtual_machine_by_min_size(width, height + 1)
self.assertGreaterEqual(machine.width, width)
self.assertGreaterEqual(machine.height, height + 1)


if __name__ == '__main__':
unittest.main()

0 comments on commit f2b414a

Please sign in to comment.