NAMD
Static Public Member Functions | List of all members
BackEnd Class Reference

#include <BackEnd.h>

Static Public Member Functions

static void init (int argc, char **argv)
 
static void exit (int status=0)
 
static void suspend (void)
 
static void awaken (void)
 
static void barrier (void)
 
static void ExitSchedOn (int pe)
 

Detailed Description

Copyright (c) 1995, 1996, 1997, 1998, 1999, 2000 by The Board of Trustees of the University of Illinois. All rights reserved.

Definition at line 12 of file BackEnd.h.

Member Function Documentation

◆ awaken()

void BackEnd::awaken ( void  )
static

Definition at line 323 of file BackEnd.C.

References Node::enableExitScheduler(), and Node::Object().

Referenced by Controller::algorithm(), barrier(), and Controller::terminate().

323  {
325 }
static Node * Object()
Definition: Node.h:86
void enableExitScheduler(void)
Definition: Node.C:1439

◆ barrier()

void BackEnd::barrier ( void  )
static

Definition at line 328 of file BackEnd.C.

References awaken(), and suspend().

328  {
329  awaken();
330  suspend();
331 }
static void awaken(void)
Definition: BackEnd.C:323
static void suspend(void)
Definition: BackEnd.C:318

◆ exit()

void BackEnd::exit ( int  status = 0)
static

Definition at line 284 of file BackEnd.C.

References cpuTime_start, memusage_MB(), and wallTime_start.

Referenced by after_backend_init(), NamdState::loadStructure(), and Node::startup().

284  {
285  float cpuTime = CmiCpuTimer() - cpuTime_start;
286  float wallTime = CmiWallTimer() - wallTime_start;
287  CmiPrintf("====================================================\n\n"
288  "WallClock: %f CPUTime: %f Memory: %f MB\n",
289  wallTime, cpuTime, memusage_MB());
290 #ifdef NAMD_TCL
291  Tcl_Finalize();
292 #endif
293 #if defined(NAMD_CUDA) || defined(NAMD_HIP)
294 #ifdef __APPLE__
295 #if 0 && CMK_MULTICORE
296  CmiPrintf("EXITING ABNORMALLY TO AVOID HANGING CUDA RUNTIME THREADS\n");
297  ::exit(0);
298 #endif
299 #endif
300 #endif
301 #ifdef NAMD_MIC
302 #if 0 && CMK_MULTICORE
303  CmiPrintf("EXITING ABNORMALLY TO AVOID HANGING MIC OFFLOAD THREADS\n");
304 #pragma offload target(mic)
305  {
306  ::exit(0);
307  }
308 #endif
309 #endif
310 #if CHARM_VERSION < 61000
311  CkExit();
312 #else
313  CkExit(status);
314 #endif
315 }
static void exit(int status=0)
Definition: BackEnd.C:284
float cpuTime_start
Definition: BackEnd.C:53
float wallTime_start
Definition: BackEnd.C:54
double memusage_MB()
Definition: memusage.h:13

◆ ExitSchedOn()

void BackEnd::ExitSchedOn ( int  pe)
static

Definition at line 70 of file BackEnd.C.

71 {
72  void* msg = CmiAlloc(CmiMsgHeaderSizeBytes);
73  CmiSetHandler(msg,CkpvAccess(exitSchedHndlr));
74  CmiSyncSendAndFree(pe,CmiMsgHeaderSizeBytes,(char *)msg);
75 }

◆ init()

void BackEnd::init ( int  argc,
char **  argv 
)
static

Definition at line 249 of file BackEnd.C.

References gNAMDBinaryName, master_init(), NAMD_die(), and slave_init().

Referenced by main().

249  {
250 
251  gNAMDBinaryName = argv[0]+strlen(argv[0])-1;
252  while(gNAMDBinaryName != argv[0]){
253  if(*gNAMDBinaryName=='/' || *gNAMDBinaryName=='\\'){
254  gNAMDBinaryName++;
255  break;
256  }
257  gNAMDBinaryName--;
258  }
259 
260 #if defined(NAMD_CUDA) || defined(NAMD_HIP) || defined(NAMD_MIC)
261  // look for but don't remove +idlepoll on command line
262  int idlepoll = 0;
263  for ( int i = 0; i < argc; ++i ) {
264  if ( 0==strcmp(argv[i],"+idlepoll") ) {
265  idlepoll = 1;
266  break;
267  }
268  }
269 #endif
270 
271  ConverseInit(argc, argv, slave_init, 1, 1); // calls slave_init on others
272 
273 // idlepoll only matters for non-smp UDP layer
274 #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
275  if ( ! idlepoll ) {
276  NAMD_die("Please add +idlepoll to command line for proper performance.");
277  }
278 #endif
279 
280  master_init(argc, argv);
281 }
char * gNAMDBinaryName
Definition: BackEnd.C:247
void master_init(int argc, char **argv)
Definition: BackEnd.C:170
void NAMD_die(const char *err_msg)
Definition: common.C:147
void slave_init(int argc, char **argv)
Definition: BackEnd.C:150

◆ suspend()

void BackEnd::suspend ( void  )
static

Definition at line 318 of file BackEnd.C.

Referenced by barrier().

318  {
319  CsdScheduler(-1);
320 }

The documentation for this class was generated from the following files: