|
1 | 1 | import pytest |
2 | | -from feelpp.benchmarking.reframe.resources import TaskAndTaskPerNodeStrategy, NodesAndTasksPerNodeStrategy, TasksAndNodesStrategy, TasksStrategy, MemoryEnforcer, ExclusiveAccessEnforcer, ResourceHandler |
| 2 | +from feelpp.benchmarking.reframe.resources import TaskAndTaskPerNodeStrategy, NodesAndTasksPerNodeStrategy, TasksAndNodesStrategy, TasksStrategy, MemoryEnforcer, ExclusiveAccessEnforcer, ResourceHandler, GpusPerNodeStrategy |
3 | 3 |
|
4 | 4 |
|
5 | 5 | class ResourcesMocker: |
6 | 6 | """ Mocks the resources object """ |
7 | | - def __init__(self, tasks = None, tasks_per_node = None, nodes = None, memory = None, exclusive_access = None ): |
| 7 | + def __init__(self, tasks = None, tasks_per_node = None, nodes = None, memory = None, exclusive_access = None, gpus_per_node = None): |
8 | 8 | self.tasks = tasks |
9 | 9 | self.tasks_per_node = tasks_per_node |
10 | 10 | self.nodes = nodes |
11 | 11 | self.memory = memory |
12 | 12 | self.exclusive_access = exclusive_access |
| 13 | + self.gpus_per_node = gpus_per_node |
13 | 14 |
|
14 | 15 |
|
15 | 16 | class RfmTestMocker: |
@@ -129,6 +130,21 @@ def test_nodesAndTasksPerNodeStrategy(self, tasks_per_node, nodes, expected_task |
129 | 130 | assert rfm_test.num_nodes == nodes |
130 | 131 | assert rfm_test.num_tasks == expected_tasks |
131 | 132 |
|
| 133 | + @pytest.mark.parametrize(("gpus_per_node","fails"),[ |
| 134 | + (1,False), (22,False), |
| 135 | + (0, True), (-1, True) |
| 136 | + ]) |
| 137 | + def test_GpusPerNodeStrategy(self,gpus_per_node,fails): |
| 138 | + """ Tests the GpusPerNodeStrategy |
| 139 | + Checks if the number of gpus_per_node is set |
| 140 | + Args: |
| 141 | + gpus_per_node (int): Number of gpus per node |
| 142 | + """ |
| 143 | + rfm_test = RfmTestMocker(num_cpus=128, memory_per_node=1000) |
| 144 | + rfm_test.num_tasks = 1 |
| 145 | + self.strategyTest(GpusPerNodeStrategy(),ResourcesMocker(gpus_per_node=gpus_per_node),rfm_test, fails) |
| 146 | + if not fails: |
| 147 | + assert rfm_test.num_gpus_per_node == gpus_per_node |
132 | 148 |
|
133 | 149 | @pytest.mark.parametrize(("tasks","memory","expected_nodes","expected_tasks_per_node"), [ |
134 | 150 | (128, 900, 1, 128), (128, 1000, 1, 128), (128, 1100, 2, 64), (128, 2100, 4, 42), |
@@ -198,6 +214,7 @@ def commonTest(self, resources): |
198 | 214 | ({"tasks_per_node": 128, "nodes": 1, "exclusive_access":True} , False), |
199 | 215 | ({"tasks": 128, "exclusive_access":False}, False), |
200 | 216 | ({"tasks": 128, "memory":100,"exclusive_access":False}, False), |
| 217 | + ({"tasks":64,"gpus_per_node": 2, "memory":100,"exclusive_access":False}, False), |
201 | 218 | ]) |
202 | 219 | def test_setResources(self, args, fails): |
203 | 220 | """ Tests the ResourceHandler setResources method |
|
0 commit comments