/** @see ddi_armci.h */ void DDI_ARMCI_Counters_init() { int i; const DDI_Comm *comm = (const DDI_Comm *) Comm_find(DDI_COMM_WORLD); /* The offsets should be the same on all processes. */ size_t dlb_counter_offset = (size_t)(gv(dlb_counter)) - (size_t)(gv(dda_index)); size_t gdlb_counter_offset = (size_t)(gv(gdlb_counter)) - (size_t)(gv(dda_index)); for (i = 0; i < comm->np; ++i) { gv(armci_dlb_counter)[i] = gv(armci_mem_addr)[i] + dlb_counter_offset; gv(armci_gdlb_counter)[i] = gv(armci_mem_addr)[i] + gdlb_counter_offset; } ARMCI_PutValueInt(0, gv(dlb_counter), comm->me); ARMCI_PutValueInt(0, gv(gdlb_counter), comm->me); }
void DDI_ARMCI_GDLBReset() { const DDI_Comm *comm = (const DDI_Comm *) Comm_find(DDI_COMM_WORLD); // reset counter if (comm->me == 0) ARMCI_PutValueInt(0, (void*)gv(gdlb_counter), 0); }
void DDI_ARMCI_DLBReset() { const DDI_Comm *comm = (const DDI_Comm *) Comm_find(DDI_WORKING_COMM); // reset counter if (comm->me == 0) ARMCI_PutValueInt(0, (void*)gv(dlb_counter), comm->global_pid[0]); }
/** @see ddi_armci.h */ void DDI_ARMCI_GDLBReset() { const DDI_Comm *comm = (const DDI_Comm *) Comm_find(DDI_COMM_WORLD); int armciPid = comm->me; if (armciPid == 0) ARMCI_PutValueInt(0, gv(gdlb_counter), 0); }
/** @see ddi_armci.h */ void DDI_ARMCI_DLBReset() { const DDI_Comm *comm = (const DDI_Comm *) Comm_find(DDI_WORKING_COMM); int pid = comm->me; int armciPid = comm->global_pid[pid]; if (pid == 0) ARMCI_PutValueInt(0, gv(dlb_counter), armciPid); }