void setup_layout(void) { int c[4]; int i,n_mach; int d[4]; #ifdef FIX_NODE_GEOM int *geom = node_geometry; #else int *geom = NULL; #endif if(mynode()==0){ printf("LAYOUT = Hypercubes, options = "); printf("QDP"); printf("\n"); } /* Is there already a grid? This could be a grid architecture with a preset dimension, or a geometry could have been set by the -qmp-geom command line arg. In either case we have a nonzero allocated number of dimensions. */ if(QMP_get_allocated_number_of_dimensions() == 0) /* Set the geometry if requested */ set_qmp_layout_grid(geom, 4); c[0] = nx; c[1] = ny; c[2] = nz; c[3] = nt; QDP_set_latsize(4, c); QDP_create_layout(); sites_on_node = QDP_sites_on_node; even_sites_on_node = QDP_subset_len(QDP_even); odd_sites_on_node = QDP_subset_len(QDP_odd); n_mach = QMP_get_logical_number_of_dimensions(); dim_mach = QMP_get_logical_dimensions(); /* Initialize I/O node function */ #ifdef FIX_IONODE_GEOM init_io_node(); #endif /* Report sublattice dimensions */ for(i = 0; i < 4; i++){ /* Any extra machine dimensions are assumed to be 1 */ if(i < n_mach)d[i] = c[i]/dim_mach[i]; else d[i] = c[i]; } if( mynode()==0) printf("ON EACH NODE %d x %d x %d x %d\n",d[0],d[1],d[2],d[3]); #if 0 mpi_whoami(); /* Debug */ #endif }
void setup_layout(void) { int c[4]; int i,n_mach; int d[4]; if(mynode()==0){ printf("LAYOUT = Hypercubes, options = "); printf("QDP"); printf("\n"); } c[0] = nx; c[1] = ny; c[2] = nz; c[3] = nt; QDP_set_latsize(4, c); QDP_create_layout(); sites_on_node = QDP_sites_on_node; even_sites_on_node = QDP_subset_len(QDP_even); odd_sites_on_node = QDP_subset_len(QDP_odd); n_mach = QMP_get_logical_number_of_dimensions(); dim_mach = QMP_get_logical_dimensions(); #ifdef FIX_IONODE_GEOM /* Initialize I/O node function */ init_io_node(); #endif /* Report sublattice dimensions */ for(i = 0; i < 4; i++){ /* Any extra machine dimensions are assumed to be 1 */ if(i < n_mach)d[i] = c[i]/dim_mach[i]; else d[i] = c[i]; } if( mynode()==0) printf("ON EACH NODE %d x %d x %d x %d\n",d[0],d[1],d[2],d[3]); }
void setup_layout(){ int k = mynode(); #ifdef FIX_NODE_GEOM int *geom = node_geometry; #else int *geom = NULL; #endif if(k == 0) printf("LAYOUT = Hypercubes, options = "); #ifdef HAVE_QMP /* QMP treatment */ /* Is there already a grid? This could be a grid architecture with a preset dimension, or a geometry could have been set by the -qmp-geom command line arg. In either case we have a nonzero allocated number of dimensions. */ if(QMP_get_allocated_number_of_dimensions() == 0) /* Set the geometry if requested */ set_qmp_layout_grid(geom, 4); /* Has a grid been set up now? */ if(QMP_get_msg_passing_type() == QMP_GRID) setup_qmp_grid(); else if(geom != NULL) setup_fixed_geom(geom, 4); else setup_hyper_prime(); #else /* Non QMP treatment */ if(geom != NULL) setup_fixed_geom(geom, 4); else setup_hyper_prime(); #endif #ifdef FIX_IONODE_GEOM /* Initialize I/O node function */ init_io_node(); #endif /* Compute machine coordinates for this node */ lex_coords(machine_coordinates, 4, nsquares, k); /* Number of sites on node */ sites_on_node = squaresize[XUP]*squaresize[YUP]*squaresize[ZUP]*squaresize[TUP]; /* Need number of sites per hypercube divisible by 32 */ if( mynode()==0)if( sites_on_node%32 != 0){ printf("SORRY, CAN'T LAY OUT THIS LATTICE\n"); terminate(0); } subl_sites_on_node = sites_on_node/32; if( mynode()==0) printf("ON EACH NODE %d x %d x %d x %d\n",squaresize[XUP],squaresize[YUP], squaresize[ZUP],squaresize[TUP]); /* Actually we have already required sites_on_node to be a multiple of 32 */ if( mynode()==0 && sites_on_node%2 != 0) printf("WATCH OUT FOR EVEN/ODD SITES ON NODE BUG!!!\n"); even_sites_on_node = odd_sites_on_node = sites_on_node/2; }