14 #if defined(WIN32) && !defined(__CYGWIN__)
21 #include "main.decl.h"
24 #include "WorkDistrib.decl.h"
25 #include "ProxyMgr.decl.h"
26 #include "PatchMgr.decl.h"
27 #include "DataExchanger.decl.h"
29 #include "ComputeMgr.decl.h"
31 #include "ReductionMgr.decl.h"
32 #include "CollectionMgr.decl.h"
33 #include "CollectionMaster.decl.h"
36 #include "BroadcastMgr.decl.h"
37 #include "LdbCoordinator.decl.h"
38 #include "Sync.decl.h"
40 #ifdef MEM_OPT_VERSION
41 #include "ParallelIOMgr.decl.h"
63 CkpvInitialize(
int,exitSchedHndlr);
64 CkpvAccess(exitSchedHndlr) = CmiRegisterHandler((CmiHandler)
exit_sched);
69 void* msg = CmiAlloc(CmiMsgHeaderSizeBytes);
70 CmiSetHandler(msg,CkpvAccess(exitSchedHndlr));
71 CmiSyncSendAndFree(pe,CmiMsgHeaderSizeBytes,(
char *)msg);
74 #if defined(WIN32) && !defined(__CYGWIN__) && !defined(__MINGW_H)
80 sprintf(tmp,
"Memory allocation failed on processor %d.",CmiMyPe());
82 #if defined(WIN32) && !defined(__CYGWIN__) && !defined(__MINGW_H)
95 int avxTilesCommandLineDisable = 0;
101 #if defined(WIN32) && !defined(__CYGWIN__) && !defined(__MINGW_H)
108 CmiGetArgFlag(argv,
"+idlepoll");
110 #if defined(NAMD_CUDA) || defined(NAMD_HIP)
112 argc = CmiGetArgc(argv);
115 CmiGetArgFlag(argv,
"+idlepoll");
117 argc = CmiGetArgc(argv);
120 avxTilesCommandLineDisable = CmiGetArgFlag(argv,
"+notiles");
163 if (CkMyRank() < CkMyNodeSize())
181 group.
proxyMgr = CProxy_ProxyMgr::ckNew();
182 group.
patchMgr = CProxy_PatchMgr::ckNew();
183 group.
computeMgr = CProxy_ComputeMgr::ckNew();
186 group.
nodePmeMgr = CProxy_NodePmeMgr::ckNew();
187 #if defined(NAMD_CUDA) || defined(NAMD_HIP)
191 #ifdef OPENATOM_VERSION
192 group.computeMoaMgr = CProxy_ComputeMoaMgr::ckNew();
193 #endif // OPENATOM_VERSION
205 #ifdef MEM_OPT_VERSION
206 group.
ioMgr=CProxy_ParallelIOMgr::ckNew();
209 group.
sync = CProxy_Sync::ckNew();
211 #ifdef USE_NODEPATCHMGR
212 group.nodeProxyMgr = CProxy_NodeProxyMgr::ckNew();
215 #if CMK_SMP && USE_CKLOOP
216 group.ckLoop = CkLoop_Init();
219 CkChareID collectionMaster = CProxy_CollectionMaster::ckNew(0);
221 initmsg7->
master = collectionMaster;
231 CkGroupID node = CProxy_Node::ckNew(msg);
233 CkStartQD(CkCallback(CkIndex_Node::exitScheduler(), CkMyPe(), node));
241 gNAMDBinaryName = argv[0]+strlen(argv[0])-1;
242 while(gNAMDBinaryName != argv[0]){
243 if(*gNAMDBinaryName==
'/' || *gNAMDBinaryName==
'\\'){
250 #if defined(NAMD_CUDA) || defined(NAMD_HIP) || defined(NAMD_MIC)
253 for (
int i = 0; i < argc; ++i ) {
254 if ( 0==strcmp(argv[i],
"+idlepoll") ) {
264 #if (defined(NAMD_CUDA) || defined(NAMD_HIP) || defined(NAMD_MIC)) && CMK_NET_VERSION && CMK_SHARED_VARS_UNAVAILABLE && CMK_WHEN_PROCESSOR_IDLE_USLEEP && ! CMK_USE_IBVERBS && ! CMK_USE_TCP
266 NAMD_die(
"Please add +idlepoll to command line for proper performance.");
279 CmiPrintf(
"====================================================\n\n"
280 "WallClock: %f CPUTime: %f Memory: %f MB\n",
285 #if defined(NAMD_CUDA) || defined(NAMD_HIP)
288 #if 0 && CMK_MULTICORE
289 CmiPrintf(
"EXITING ABNORMALLY TO AVOID HANGING CUDA RUNTIME THREADS\n");
295 #if 0 && CMK_MULTICORE
296 CmiPrintf(
"EXITING ABNORMALLY TO AVOID HANGING MIC OFFLOAD THREADS\n");
297 #pragma offload target(mic)
303 #if CHARM_VERSION < 61000
static void ExitSchedOn(int pe)
void after_backend_init(int argc, char **argv)
void all_init(int argc, char **argv)
void cuda_getargs(char **)
static void exit(int status=0)
CkGroupID computeMsmMsaMgr
static void suspend(void)
static void init(int argc, char **argv)
void master_init(int argc, char **argv)
CkGroupID computePmeCUDAMgr
CkGroupID computeMsmSerialMgr
void enableExitScheduler(void)
void ProcessorPrivateInit(void)
CkGroupID computeGBISserMgr
void NAMD_die(const char *err_msg)
void exit_sched(void *msg)
void mic_getargs(char **)
void topo_getargs(char **)
static void barrier(void)
void _initCharm(int, char **)
static void register_exit_sched(void)
void slave_init(int argc, char **argv)
CkGroupID computeFmmSerialMgr
void cuda_affinity_initialize()
CkpvStaticDeclare(int, exitSchedHndlr)