root/test/carto/carto_test.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. main

   1 /* -*- C -*-
   2  *
   3  * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
   4  *                         University Research and Technology
   5  *                         Corporation.  All rights reserved.
   6  * Copyright (c) 2004-2005 The University of Tennessee and The University
   7  *                         of Tennessee Research Foundation.  All rights
   8  *                         reserved.
   9  * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
  10  *                         University of Stuttgart.  All rights reserved.
  11  * Copyright (c) 2004-2005 The Regents of the University of California.
  12  *                         All rights reserved.
  13  * $COPYRIGHT$
  14  *
  15  * Additional copyrights may follow
  16  *
  17  * $HEADER$
  18  *
  19  * The most basic of MPI applications
  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 

/* [<][>][^][v][top][bottom][index][help] */