/* * personality.c * as written in IBM System Blue Gene Solution Blue Gene/Q Application Development * Draft Document for Review December 19, 2012 10:17 pm */ #include #include #include int main(int argc, char * argv[]) { uint64_t Nflags; char procname[128]; Personality_t pers; int rank, procid, core, hwthread, namelen; int Anodes, Bnodes, Cnodes, Dnodes, Enodes; int Acoord, Bcoord, Ccoord, Dcoord, Ecoord; int Atorus, Btorus, Ctorus, Dtorus, Etorus; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Get_processor_name(procname, &namelen); procid = Kernel_ProcessorID(); // 0-63 core = Kernel_ProcessorCoreID(); // 0-15 hwthread = Kernel_ProcessorThreadID(); // 0-3 Kernel_GetPersonality(&pers, sizeof(pers)); Anodes = pers.Network_Config.Anodes; Acoord = pers.Network_Config.Acoord; Bnodes = pers.Network_Config.Bnodes; Bcoord = pers.Network_Config.Bcoord; Cnodes = pers.Network_Config.Cnodes; Ccoord = pers.Network_Config.Ccoord; Dnodes = pers.Network_Config.Dnodes; Dcoord = pers.Network_Config.Dcoord; Enodes = pers.Network_Config.Enodes; Ecoord = pers.Network_Config.Ecoord; Nflags = pers.Network_Config.NetFlags; if (Nflags & ND_ENABLE_TORUS_DIM_A) Atorus = 1; else Atorus = 0; if (Nflags & ND_ENABLE_TORUS_DIM_B) Btorus = 1; else Btorus = 0; if (Nflags & ND_ENABLE_TORUS_DIM_C) Ctorus = 1; else Ctorus = 0; if (Nflags & ND_ENABLE_TORUS_DIM_D) Dtorus = 1; else Dtorus = 0; if (Nflags & ND_ENABLE_TORUS_DIM_E) Etorus = 1; else Etorus = 0; if (rank == 0) { printf("block shape : <%d,%d,%d,%d,%d>\n", Anodes,Bnodes,Cnodes,Dnodes,Enodes); printf("torus links enabled : <%d,%d,%d,%d,%d>\n", Atorus,Btorus,Ctorus,Dtorus,Etorus); } printf("rank %d has processor name %s\n", rank, procname); printf("rank %d location <%d,%d,%d,%d,%d> core %d hwthread %d procid = %d\n", rank,Acoord,Bcoord,Ccoord,Dcoord,Ecoord,core,hwthread,procid); MPI_Finalize(); return 0; }