1 /* 2 * Copyright (C) by Argonne National Laboratory 3 * See COPYRIGHT in top-level directory 4 */ 5 6 #ifndef MPIR_NETTOPO_H_INCLUDED 7 #define MPIR_NETTOPO_H_INCLUDED 8 9 /* 10 * Network topology types 11 */ 12 typedef enum { 13 MPIR_NETTOPO_TYPE__FAT_TREE, 14 MPIR_NETTOPO_TYPE__CLOS_NETWORK, 15 MPIR_NETTOPO_TYPE__TORUS, 16 MPIR_NETTOPO_TYPE__INVALID 17 } MPIR_nettopo_type_e; 18 19 /* 20 * Network node types 21 */ 22 typedef enum { 23 MPIR_NETTOPO_NODE_TYPE__HOST, 24 MPIR_NETTOPO_NODE_TYPE__SWITCH, 25 MPIR_NETTOPO_NODE_TYPE__INVALID 26 } MPIR_nettopo_node_type_e; 27 28 /* 29 * Definitions for network objects 30 */ 31 typedef void *MPIR_nettopo_node_t; 32 typedef void *MPIR_nettopo_edge_t; 33 34 int MPII_nettopo_init(void); 35 36 int MPII_nettopo_finalize(void); 37 38 /* 39 * Return network topology type 40 */ 41 MPIR_nettopo_type_e MPIR_nettopo_get_type(void); 42 43 /* 44 * Return network topology node type 45 */ 46 MPIR_nettopo_node_type_e MPIR_nettopo_get_node_type(MPIR_nettopo_node_t node); 47 48 /* 49 * Return a pointer to this node in network topology 50 */ 51 MPIR_nettopo_node_t MPIR_nettopo_get_endpoint(void); 52 53 /* 54 * Return edge destination node 55 */ 56 MPIR_nettopo_node_t MPIR_nettopo_get_edge_dest_node(MPIR_nettopo_edge_t edge); 57 58 /* 59 * Return __uid__ of node in network topology 60 */ 61 int MPIR_nettopo_get_node_uid(MPIR_nettopo_node_t node); 62 63 /* 64 * Return number of nodes in network topology 65 */ 66 int MPIR_nettopo_get_num_nodes(void); 67 68 /* 69 * Return the number of edges and edge pointers for this node in network topology 70 */ 71 int MPIR_nettopo_get_all_edges(MPIR_nettopo_node_t node, int *num_edges, 72 MPIR_nettopo_edge_t ** edges); 73 74 /* 75 * Return node level in tree network topology 76 */ 77 int *MPIR_nettopo_tree_get_node_levels(void); 78 79 /* 80 * Return the hostnode index in the tree network topology 81 */ 82 int MPIR_nettopo_tree_get_hostnode_index(int *node_index, int *num_nodes); 83 84 /* 85 * Return list of switches at certain level in the tree network topology 86 */ 87 int MPIR_nettopo_tree_get_switches_at_level(int switch_level, 88 MPIR_nettopo_node_t ** switches_at_level, 89 int *switch_count); 90 91 /* 92 * Return dimension of the torus network topology 93 */ 94 int MPIR_nettopo_torus_get_dimension(void); 95 96 /* 97 * Return geometry of the torus network topology 98 */ 99 int *MPIR_nettopo_torus_get_geometry(void); 100 101 /* 102 * Return node index in the torus network topology 103 */ 104 int MPIR_nettopo_torus_get_node_index(void); 105 106 #endif /* MPIR_NETTOPO_H_INCLUDED */ 107