This source file includes following definitions.
- main
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 #define bool int
23 #define false 0
24 #define true 1
25
26
27 #include <mpi.h>
28 #include <stdio.h>
29 #include "../../opal/mca/carto/carto.h"
30 #include "../../opal/mca/carto/base/base.h"
31 #include "../../opal/util/output.h"
32 #include "../../opal/class/opal_graph.h"
33
34 int
35 main(int argc, char* argv[])
36 {
37 int rank, size, distance, distance_array_size, i;
38 opal_carto_graph_t *graph;
39 opal_carto_base_node_t *slot0, *end_node;
40 opal_carto_node_distance_t *node_distance;
41 opal_value_array_t *distance_array;
42
43 MPI_Init(&argc, &argv);
44 MPI_Comm_rank(MPI_COMM_WORLD, &rank);
45 MPI_Comm_size(MPI_COMM_WORLD, &size);
46
47
48 printf("Hello, world, I am %d of %d\n", rank, size);
49 if (0 == rank) {
50
51
52
53
54 opal_output(0," \n\nget_host_graph Full\n");
55 opal_carto_base_get_host_graph(&graph,NULL);
56 opal_graph_print(graph);
57 slot0 = opal_carto_base_find_node(graph, "slot0");
58 if (NULL == slot0) {
59 opal_output(0,"couldn't find slot0 in the graph exiting\n");
60 opal_carto_base_free_graph(graph);
61 return -1;
62 }
63 end_node = opal_carto_base_find_node(graph, "slot3");
64 if (NULL == end_node) {
65 opal_output(0,"couldn't find mthca1 in the graph exiting\n");
66 opal_carto_base_free_graph(graph);
67 return -1;
68 }
69 distance = opal_carto_base_spf(graph, slot0, end_node);
70 opal_output(0,"\nThe distance between slot0 and slot3 is %d\n",distance);
71 distance_array = OBJ_NEW(opal_value_array_t);
72 opal_value_array_init(distance_array, sizeof(opal_carto_node_distance_t));
73 opal_value_array_reserve(distance_array, 50);
74 distance_array_size = opal_carto_base_get_nodes_distance(graph, slot0, NULL, distance_array);
75 for (i=0; i < distance_array_size; i++) {
76 node_distance = opal_value_array_get_item(distance_array, i);
77 opal_output(0,"Node %s distance from slot0 is %d\n",node_distance->node->node_name, node_distance->node_distance);
78 }
79 OBJ_RELEASE(distance_array);
80 opal_carto_base_free_graph(graph);
81
82
83
84
85 opal_output(0," \n\nget_host_graph Infiniband\n");
86 opal_carto_base_get_host_graph(&graph,"Infiniband");
87 opal_graph_print(graph);
88 slot0 = opal_carto_base_find_node(graph, "slot0");
89 if (NULL == slot0) {
90 opal_output(0,"couldn't find slot0 in the graph exiting\n");
91 opal_carto_base_free_graph(graph);
92 return -1;
93 }
94 end_node = opal_carto_base_find_node(graph, "mthca1");
95 if (NULL == end_node) {
96 opal_output(0,"couldn't find mthca1 in the graph exiting\n");
97 opal_carto_base_free_graph(graph);
98 return -1;
99 }
100 distance = opal_carto_base_spf(graph, slot0, end_node);
101 opal_output(0,"\nThe distance between slot0 and mthca1 is %d\n",distance);
102 distance_array = OBJ_NEW(opal_value_array_t);
103 opal_value_array_init(distance_array, sizeof(opal_carto_node_distance_t));
104 opal_value_array_reserve(distance_array, 50);
105 distance_array_size = opal_carto_base_get_nodes_distance(graph, slot0, "Infiniband", distance_array);
106 for (i=0; i < distance_array_size; i++) {
107 node_distance = opal_value_array_get_item(distance_array, i);
108 opal_output(0,"Node %s distance from slot0 is %d\n",node_distance->node->node_name, node_distance->node_distance);
109 }
110 OBJ_RELEASE(distance_array);
111 opal_carto_base_free_graph(graph);
112
113
114
115
116 opal_output(0," \n\nget_host_graph Ethernet\n");
117 opal_carto_base_get_host_graph(&graph,"Ethernet");
118 opal_graph_print(graph);
119 slot0 = opal_carto_base_find_node(graph, "slot0");
120 if (NULL == slot0) {
121 opal_output(0,"couldn't find slot0 in the graph exiting\n");
122 opal_carto_base_free_graph(graph);
123 return -1;
124 }
125 end_node = opal_carto_base_find_node(graph, "eth1");
126 if (NULL == end_node) {
127 opal_output(0,"couldn't find mthca1 in the graph exiting\n");
128 opal_carto_base_free_graph(graph);
129 return -1;
130 }
131 distance = opal_carto_base_spf(graph, slot0, end_node);
132 opal_output(0,"\nThe distance between slot0 and eth1 is %d\n",distance);
133 distance_array = OBJ_NEW(opal_value_array_t);
134 opal_value_array_init(distance_array, sizeof(opal_carto_node_distance_t));
135 opal_value_array_reserve(distance_array, 50);
136 distance_array_size = opal_carto_base_get_nodes_distance(graph, slot0, "Ethernet", distance_array);
137 for (i=0; i < distance_array_size; i++) {
138 node_distance = opal_value_array_get_item(distance_array, i);
139 opal_output(0,"Node %s distance from slot0 is %d\n",node_distance->node->node_name, node_distance->node_distance);
140 }
141 OBJ_RELEASE(distance_array);
142 opal_carto_base_free_graph(graph);
143
144
145
146
147 opal_output(0," \n\nget_host_graph Memory\n");
148 opal_carto_base_get_host_graph(&graph,"Memory");
149 opal_graph_print(graph);
150 slot0 = opal_carto_base_find_node(graph, "slot0");
151 if (NULL == slot0) {
152 opal_output(0,"couldn't find slot0 in the graph exiting\n");
153 opal_carto_base_free_graph(graph);
154 return -1;
155 }
156 end_node = opal_carto_base_find_node(graph, "mem3");
157 if (NULL == end_node) {
158 opal_output(0,"couldn't find mthca1 in the graph exiting\n");
159 opal_carto_base_free_graph(graph);
160 return -1;
161 }
162 distance = opal_carto_base_spf(graph, slot0, end_node);
163 opal_output(0,"\nThe distance between slot0 and mem3 is %d\n",distance);
164 distance_array = OBJ_NEW(opal_value_array_t);
165 opal_value_array_init(distance_array, sizeof(opal_carto_node_distance_t));
166 opal_value_array_reserve(distance_array, 50);
167 distance_array_size = opal_carto_base_get_nodes_distance(graph, slot0, "Memory", distance_array);
168 for (i=0; i < distance_array_size; i++) {
169 node_distance = opal_value_array_get_item(distance_array, i);
170 opal_output(0,"Node %s distance from slot0 is %d\n",node_distance->node->node_name, node_distance->node_distance);
171 }
172 OBJ_RELEASE(distance_array);
173 opal_carto_base_free_graph(graph);
174
175 }
176 MPI_Barrier(MPI_COMM_WORLD);
177 MPI_Finalize();
178
179 return 0;
180
181 }
182