Beispiel #1
0
 //get the spi coord, grid size and torusicity
 void get_spi_coord()
 {
   //get the personality
   Personality_t pers;
   Kernel_GetPersonality(&pers,sizeof(pers));
   
   //copy the coords
   spi_rank_coord[0]=pers.Network_Config.Acoord;
   spi_rank_coord[1]=pers.Network_Config.Bcoord;
   spi_rank_coord[2]=pers.Network_Config.Ccoord;
   spi_rank_coord[3]=pers.Network_Config.Dcoord;
   spi_rank_coord[4]=pers.Network_Config.Ecoord;
   
   //get torusicity
   for(int idir=0;idir<5;idir++) spi_dir_is_torus[idir]=ND_GET_TORUS(idir,pers.Network_Config.NetFlags);
   
   //get size
   spi_dir_size[0]=pers.Network_Config.Anodes;
   spi_dir_size[1]=pers.Network_Config.Bnodes;
   spi_dir_size[2]=pers.Network_Config.Cnodes;
   spi_dir_size[3]=pers.Network_Config.Dnodes;
   spi_dir_size[4]=pers.Network_Config.Enodes;
 }
Beispiel #2
0
void showNetConfig(Personality_t* p) {
  
  Personality_Networks_t* n = &(p->Network_Config);
  fw_uint64_t nf  = n->NetFlags;
  fw_uint64_t nf2 = n->NetFlags2;

  printf("%s [%04lX] Network_Config -> %p\n", JTAG_LOC, offsetof(Personality_t,Network_Config), n);
  printf("%s [%04lX]   BlockID         : %08X\n",   JTAG_LOC, offsetof(Personality_t,Network_Config) + offsetof(Personality_Networks_t,BlockID), n->BlockID);
  printf("%s [%04lX]   NetFlags        : %016llX\n", JTAG_LOC, offsetof(Personality_t,Network_Config) + offsetof(Personality_Networks_t,NetFlags), nf);
  printf("%s [****]     I/O Node Link : %d\n", JTAG_LOC, ND_GET_ENABLE_ION_LINK(nf));
  printf("%s [****]     Loopback      : (%lld,%lld,%lld,%lld,%lld,%lld) 0=None 1=Torus 2=SerDes 3=HSS\n",  JTAG_LOC, 
	 ND_GET_LOOPBACK(0,nf),ND_GET_LOOPBACK(1,nf),ND_GET_LOOPBACK(2,nf),
	 ND_GET_LOOPBACK(3,nf),ND_GET_LOOPBACK(4,nf),ND_GET_LOOPBACK(5,nf));
  printf ("%s [****]     Torus/Mesh    : (%lld,%lld,%lld,%lld,%lld) (0=Mesh, 1=Torus)\n", JTAG_LOC, 
	  ND_GET_TORUS(0,nf), ND_GET_TORUS(1,nf), ND_GET_TORUS(2,nf), 
	  ND_GET_TORUS(3,nf), ND_GET_TORUS(4,nf) );
  printf ("%s [****]     RanHints      : (%lld,%lld,%lld,%lld,%lld)\n", JTAG_LOC, 
	  ND_GET_TORUS_RAN_HINTS(0,nf), ND_GET_TORUS_RAN_HINTS(1,nf), ND_GET_TORUS_RAN_HINTS(2,nf), 
	  ND_GET_TORUS_RAN_HINTS(3,nf), ND_GET_TORUS_RAN_HINTS(4,nf) );
  printf ("%s [****]     Re/Inj Ration : %lld\n", JTAG_LOC, ND_GET_SE_ARB_RE_INJ_RATIO(nf) );
  printf ("%s [****]     DetOrderMasks : (%02llX,%02llX,%02llX,%02llX,%02llX)\n", JTAG_LOC, ND_GET_DET_ORDER_MASK(0,nf),ND_GET_DET_ORDER_MASK(1,nf),ND_GET_DET_ORDER_MASK(2,nf),ND_GET_DET_ORDER_MASK(3,nf),ND_GET_DET_ORDER_MASK(4,nf));
  printf("%s [%04lX]   NetFlags2       : %016llX\n", JTAG_LOC, offsetof(Personality_t,Network_Config) + offsetof(Personality_Networks_t,NetFlags2), nf2);

  static char* DIMENSIONS[] = { "A", "B", "C", "D", "E", "IO" };
  static char* DIRECTIONS[] = { "-", "+" };

  printf("%s [****]       Torus Links Enabled : ", JTAG_LOC );
  {

    unsigned dimension, direction;

    for ( dimension = 0; dimension < 5; dimension++ ) {
      for ( direction = 0; direction <= 1; direction++ ) {
	if ( ND_GET_LINK_ENABLE(dimension, direction, p->Network_Config.NetFlags2 ) ) {
	  printf("%s%s ", DIMENSIONS[dimension], DIRECTIONS[direction]);
	}
      }
    }
  }
  printf("\n");
  printf("%s [****]       SerDes Links Enabled : ", JTAG_LOC );
  {

    unsigned dimension, direction;

    for ( dimension = 0; dimension <= 5; dimension++ ) {
      for ( direction = 0; direction <= 1; direction++ ) {
	if ( SD_GET_LINK_ENABLE(dimension, direction, p->Network_Config.NetFlags2 ) ) {
	    printf("%s%s ", DIMENSIONS[dimension], DIRECTIONS[direction]);
	}
      }
    }
  }
  printf("\n");

  printf("%s [****]       TIO       : %d\n", JTAG_LOC, nf2 & SD_ENABLE_TIO ? 1 : 0 );
  printf("%s [****]       HalfSpeed : %d\n", JTAG_LOC, nf2 & SD_ENABLE_HALFSPEED ? 1 : 0 );
  printf("%s [****]       Use Port 6: %d\n", JTAG_LOC, nf2 & TI_USE_PORT6_FOR_IO ? 1 : 0 );
  printf("%s [****]       Use Port 7: %d\n", JTAG_LOC, nf2 & TI_USE_PORT7_FOR_IO ? 1 : 0 );
  printf("%s [****]       Swaps     : (%lld,%lld,%lld,%lld,%lld)\n", JTAG_LOC, TI_GET_TORUS_DIM_REVERSED(0,nf2),TI_GET_TORUS_DIM_REVERSED(1,nf2), TI_GET_TORUS_DIM_REVERSED(2,nf2), TI_GET_TORUS_DIM_REVERSED(3,nf2), TI_GET_TORUS_DIM_REVERSED(4,nf2));
  printf("%s [%04lX]   Torus           : (%d,%d,%d,%d,%d) / (%d,%d,%d,%d,%d)\n", JTAG_LOC, offsetof(Personality_t,Network_Config) + offsetof(Personality_Networks_t,Anodes), 
	 n->Acoord, n->Bcoord, n->Ccoord, n->Dcoord, n->Ecoord,
	 n->Anodes, n->Bnodes, n->Cnodes, n->Dnodes, n->Enodes
	 );
  
  printf("%s [%04lX]   PrimordialClassRoute\n", JTAG_LOC, offsetof(Personality_t, Network_Config) + offsetof(Personality_Networks_t,PrimordialClassRoute));
  printf("%s [%04lX]     GlintUpPortInputs     : %04X\n", JTAG_LOC, (uint64_t)(&(n->PrimordialClassRoute.GlobIntUpPortInputs)) - (uint64_t)p, n->PrimordialClassRoute.GlobIntUpPortInputs );
  printf("%s [%04lX]     GlintUpPortOutputs    : %04X\n", JTAG_LOC, (uint64_t)(&(n->PrimordialClassRoute.GlobIntUpPortOutputs)) - (uint64_t)p, n->PrimordialClassRoute.GlobIntUpPortOutputs );
  printf("%s [%04lX]     CollTypeUpPortInputs  : %04X\n", JTAG_LOC, (uint64_t)(&(n->PrimordialClassRoute.CollectiveTypeAndUpPortInputs)) - (uint64_t)p, n->PrimordialClassRoute.CollectiveTypeAndUpPortInputs );
  printf("%s [%04lX]     CollTypeUpPortOutputs : %04X\n", JTAG_LOC, (uint64_t)(&(n->PrimordialClassRoute.CollectiveUpPortOutputs)) - (uint64_t)p, n->PrimordialClassRoute.CollectiveUpPortOutputs );
  printf("%s [%04lX]   ZoneRoutingMasks        : ", JTAG_LOC, offsetof(Personality_t, Network_Config) + offsetof(Personality_Networks_t,ZoneRoutingMasks));
  { 
      unsigned zone;
      for ( zone = 0; zone < NUM_ND_ZONES; zone++ ) {
	  printf(" %016X", n->ZoneRoutingMasks[zone]);
      }
  }
  printf("\n");
  
  printf("%s [%04lX]   MuFlags         : %016llX\n", JTAG_LOC, offsetof(Personality_t,Network_Config) + offsetof(Personality_Networks_t,MuFlags), n->MuFlags);
  printf("%s [%04lX]   CN Bridge       : (%d,%d,%d,%d,%d)\n", JTAG_LOC, offsetof(Personality_t,Network_Config) + offsetof(Personality_Networks_t,cnBridge_A), 
	 n->cnBridge_A, n->cnBridge_B, n->cnBridge_C, n->cnBridge_D, n->cnBridge_E );
  printf("%s [%04lX]   latencyFromRoot : %d\n", JTAG_LOC, offsetof(Personality_t,Network_Config) + offsetof(Personality_Networks_t,latencyFromRoot), n->latencyFromRoot);
}