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 316 of file BackEnd.C.

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

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

316  {
318 }
static Node * Object()
Definition: Node.h:86
void enableExitScheduler(void)
Definition: Node.C:1382

◆ barrier()

void BackEnd::barrier ( void  )
static

Definition at line 321 of file BackEnd.C.

References awaken(), and suspend().

321  {
322  awaken();
323  suspend();
324 }
static void awaken(void)
Definition: BackEnd.C:316
static void suspend(void)
Definition: BackEnd.C:311

◆ exit()

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

Definition at line 277 of file BackEnd.C.

References cpuTime_start, memusage_MB(), and wallTime_start.

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

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

◆ ExitSchedOn()

void BackEnd::ExitSchedOn ( int  pe)
static

Definition at line 68 of file BackEnd.C.

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

◆ init()

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

Definition at line 242 of file BackEnd.C.

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

Referenced by main().

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

◆ suspend()

void BackEnd::suspend ( void  )
static

Definition at line 311 of file BackEnd.C.

Referenced by barrier().

311  {
312  CsdScheduler(-1);
313 }

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