Skip to content

Commit 76d1916

Browse files
Apply minor cleanup to cputopology and Isomalloc-Sync
1 parent a6b0bb9 commit 76d1916

File tree

2 files changed

+23
-26
lines changed

2 files changed

+23
-26
lines changed

src/conv-core/cputopology.C

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,6 @@ typedef struct _nodeTopoMsg {
6969
int *nodes;
7070
} nodeTopoMsg;
7171

72-
typedef struct _topoDoneMsg { // used for empty reduction to indicate all PEs have topo info
73-
char core[CmiMsgHeaderSizeBytes];
74-
} topoDoneMsg;
75-
7672
// nodeIDs[pe] is the node number of processor pe
7773
class CpuTopology {
7874
public:
@@ -203,21 +199,21 @@ static std::atomic<bool> cpuTopoSyncCommThreadDone{};
203199
#endif
204200

205201
#if CMK_SMP && !CMK_SMP_NO_COMMTHD
206-
static void cpuTopoSyncWaitCommThread()
202+
static void cpuTopoSyncWaitCommThread(std::atomic<bool> & done)
207203
{
208204
do
209205
CommunicationServerThread(5);
210-
while (!cpuTopoSyncCommThreadDone.load());
206+
while (!done.load());
211207

212208
CommunicationServerThread(5);
213209
}
214210
#endif
215211

216-
static void cpuTopoSyncWait()
212+
static void cpuTopoSyncWait(std::atomic<bool> & done)
217213
{
218214
do
219215
CsdSchedulePoll();
220-
while (!cpuTopoSyncHandlerDone.load());
216+
while (!done.load());
221217

222218
CsdSchedulePoll();
223219
}
@@ -493,7 +489,7 @@ extern "C" void LrtsInitCpuTopo(char **argv)
493489
#if CMK_SMP && !CMK_SMP_NO_COMMTHD
494490
if (CmiInCommThread())
495491
{
496-
cpuTopoSyncWaitCommThread();
492+
cpuTopoSyncWaitCommThread(cpuTopoSyncCommThreadDone);
497493
}
498494
else
499495
#endif
@@ -511,7 +507,7 @@ extern "C" void LrtsInitCpuTopo(char **argv)
511507
proc->nodeID = 0;
512508
CmiReduce(msg, sizeof(hostnameMsg)+sizeof(_procInfo), combineMessage);
513509

514-
cpuTopoSyncWait();
510+
cpuTopoSyncWait(cpuTopoSyncHandlerDone);
515511

516512
if (CmiMyRank() == 0)
517513
{

src/conv-core/isomalloc.C

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -693,28 +693,28 @@ struct CmiAddressSpaceRegionMsg
693693
CmiAddressSpaceRegion region;
694694
};
695695

696-
static std::atomic<char> CmiIsomallocSyncHandlerDone;
696+
static std::atomic<bool> CmiIsomallocSyncHandlerDone{};
697697
#if CMK_SMP && !CMK_SMP_NO_COMMTHD
698698
extern void CommunicationServerThread(int sleepTime);
699-
static std::atomic<char> CmiIsomallocSyncCommThreadDone;
699+
static std::atomic<bool> CmiIsomallocSyncCommThreadDone{};
700700
#endif
701701

702702
#if CMK_SMP && !CMK_SMP_NO_COMMTHD
703-
static void CmiIsomallocSyncWaitCommThread()
703+
static void CmiIsomallocSyncWaitCommThread(std::atomic<bool> & done)
704704
{
705705
do
706706
CommunicationServerThread(5);
707-
while (!CmiIsomallocSyncCommThreadDone.load());
707+
while (!done.load());
708708

709709
CommunicationServerThread(5);
710710
}
711711
#endif
712712

713-
static void CmiIsomallocSyncWait()
713+
static void CmiIsomallocSyncWait(std::atomic<bool> & done)
714714
{
715715
do
716716
CsdSchedulePoll();
717-
while (!CmiIsomallocSyncHandlerDone.load());
717+
while (!done.load());
718718

719719
CsdSchedulePoll();
720720
}
@@ -726,7 +726,7 @@ static void CmiIsomallocSyncReductionHandler(void * data)
726726
auto region = (CmiAddressSpaceRegion *)data;
727727
CmiAssert(region == &IsoRegion);
728728

729-
CmiIsomallocSyncHandlerDone = 1;
729+
CmiIsomallocSyncHandlerDone = true;
730730
}
731731
static void CmiIsomallocSyncBroadcastHandler(void * msg)
732732
{
@@ -738,7 +738,7 @@ static void CmiIsomallocSyncBroadcastHandler(void * msg)
738738

739739
CmiFree(msg);
740740

741-
CmiIsomallocSyncHandlerDone = 1;
741+
CmiIsomallocSyncHandlerDone = true;
742742
}
743743

744744
static void CmiIsomallocInitExtent(char ** argv)
@@ -850,6 +850,13 @@ static void CmiIsomallocInitExtent(char ** argv)
850850
}
851851
else if (CmiNumNodes() > 1)
852852
{
853+
#if CMK_SMP && !CMK_SMP_NO_COMMTHD
854+
if (CmiInCommThread())
855+
{
856+
CmiIsomallocSyncWaitCommThread(CmiIsomallocSyncCommThreadDone);
857+
}
858+
else
859+
#endif
853860
if (CmiMyRank() == 0)
854861
{
855862
if (CmiMyNode() == 0)
@@ -863,7 +870,7 @@ static void CmiIsomallocInitExtent(char ** argv)
863870
CmiNodeReduceStruct(&IsoRegion, CmiAddressSpaceRegionPup, CmiAddressSpaceRegionMerge,
864871
CmiIsomallocSyncReductionHandler, nullptr);
865872

866-
CmiIsomallocSyncWait();
873+
CmiIsomallocSyncWait(CmiIsomallocSyncHandlerDone);
867874

868875
if (CmiMyNode() == 0)
869876
{
@@ -894,15 +901,9 @@ static void CmiIsomallocInitExtent(char ** argv)
894901
CmiIsomallocSyncCommThreadDone = 1;
895902
#endif
896903
}
897-
#if CMK_SMP && !CMK_SMP_NO_COMMTHD
898-
else if (CmiInCommThread())
899-
{
900-
CmiIsomallocSyncWaitCommThread();
901-
}
902-
#endif
903904
else
904905
{
905-
CmiIsomallocSyncWait();
906+
CmiIsomallocSyncWait(CmiIsomallocSyncHandlerDone);
906907
}
907908

908909
CmiBarrier();

0 commit comments

Comments
 (0)