Deleted Added
sdiff udiff text old ( 9148:a7a72f42919e ) new ( 9862:54d6728d99cf )
full compact
1# Copyright (c) 2012 Advanced Micro Devices, Inc.
2# All rights reserved.
3#
4# Redistribution and use in source and binary forms, with or without
5# modification, are permitted provided that the following conditions are
6# met: redistributions of source code must retain the above copyright
7# notice, this list of conditions and the following disclaimer;
8# redistributions in binary form must reproduce the above copyright

--- 59 unchanged lines hidden (view full) ---

68 self.intBW = intBW
69 self.extBW = extBW
70 self.intLatency = intLatency
71 self.extLatency = extLatency
72
73 def add(self, node):
74 self.nodes.append(node)
75
76 def makeTopology(self, options, network, IntLink, ExtLink, Router):
77 """ Recursively make all of the links and routers
78 """
79
80 # make a router to connect all of the nodes
81 self.router = Router(router_id=self.num_routers())
82 network.routers.append(self.router)
83
84 for node in self.nodes:
85 if type(node) == Cluster:
86 node.makeTopology(options, network, IntLink, ExtLink, Router)
87
88 # connect this cluster to the router
89 link = IntLink(link_id=self.num_int_links(), node_a=self.router, node_b=node.router)
90 if node.extBW:
91 link.bandwidth_factor = node.extBW
92 elif self.intBW: # if there is an interanl b/w for this node and no ext b/w to override
93 link.bandwidth_factor = self.intBW
94
95 if node.extLatency:
96 link.latency = node.extLatency
97 elif self.intLatency:
98 link.latency = self.intLatency
99
100 network.int_links.append(link)
101 else:
102 # node is just a controller connect it to the router via a ext_link
103 link = ExtLink(link_id=self.num_ext_links(), ext_node=node, int_node=self.router)
104 if self.intBW:
105 link.bandwidth_factor = self.intBW
106 if self.intLatency:
107 link.latency = self.intLatency
108
109 network.ext_links.append(link)
110
111 def __len__(self):
112 return len([i for i in self.nodes if type(i) != Cluster]) + \
113 sum([len(i) for i in self.nodes if type(i) == Cluster])