1*59599516SKenneth E. Jansen //MR CHANGE 2*59599516SKenneth E. Jansen #define OMPI_SKIP_MPICXX 1 3*59599516SKenneth E. Jansen //MR CHANGE END 4*59599516SKenneth E. Jansen #include <mpi.h> 5*59599516SKenneth E. Jansen #include <stdio.h> 6*59599516SKenneth E. Jansen #include <stdlib.h> 7*59599516SKenneth E. Jansen #include <string.h> 8*59599516SKenneth E. Jansen 9*59599516SKenneth E. Jansen #include <sys/types.h> 10*59599516SKenneth E. Jansen #include <sys/stat.h> 11*59599516SKenneth E. Jansen 12*59599516SKenneth E. Jansen #include "commonAcuStat_c.h" 13*59599516SKenneth E. Jansen 14*59599516SKenneth E. Jansen #if !(defined IOSTREAMH) 15*59599516SKenneth E. Jansen #include <iostream> 16*59599516SKenneth E. Jansen #include <strstream> 17*59599516SKenneth E. Jansen using namespace std; 18*59599516SKenneth E. Jansen #endif 19*59599516SKenneth E. Jansen 20*59599516SKenneth E. Jansen #include <FCMangle.h> 21*59599516SKenneth E. Jansen #define input FortranCInterface_GLOBAL_(input,INPUT) 22*59599516SKenneth E. Jansen #define timer FortranCInterface_GLOBAL_(timer,TIMER) 23*59599516SKenneth E. Jansen 24*59599516SKenneth E. Jansen #ifdef intel 25*59599516SKenneth E. Jansen #include <direct.h> 26*59599516SKenneth E. Jansen #define chdir _chdir 27*59599516SKenneth E. Jansen #else 28*59599516SKenneth E. Jansen #include <unistd.h> 29*59599516SKenneth E. Jansen #endif 30*59599516SKenneth E. Jansen 31*59599516SKenneth E. Jansen extern "C" char phasta_iotype[80]; 32*59599516SKenneth E. Jansen char phasta_iotype[80]; 33*59599516SKenneth E. Jansen 34*59599516SKenneth E. Jansen extern "C" void input(); 35*59599516SKenneth E. Jansen //MR CHANGE 36*59599516SKenneth E. Jansen extern void setIOparam(); // For SyncIO 37*59599516SKenneth E. Jansen //MR CHANGE END 38*59599516SKenneth E. Jansen 39*59599516SKenneth E. Jansen int myrank; /* made file global for ease in debugging */ 40*59599516SKenneth E. Jansen 41*59599516SKenneth E. Jansen void 42*59599516SKenneth E. Jansen catchDebugger() { 43*59599516SKenneth E. Jansen while (1) { 44*59599516SKenneth E. Jansen int debuggerPresent=0; 45*59599516SKenneth E. Jansen int fakeSTOP = 1; // please stop HERE and assign as next line 46*59599516SKenneth E. Jansen // assign or set debuggerPresent=1 47*59599516SKenneth E. Jansen if(debuggerPresent) { 48*59599516SKenneth E. Jansen break; 49*59599516SKenneth E. Jansen } 50*59599516SKenneth E. Jansen } 51*59599516SKenneth E. Jansen } 52*59599516SKenneth E. Jansen 53*59599516SKenneth E. Jansen // some useful debugging functions 54*59599516SKenneth E. Jansen 55*59599516SKenneth E. Jansen void 56*59599516SKenneth E. Jansen pdarray( void* darray , int start, int end ) { 57*59599516SKenneth E. Jansen for( int i=start; i < end; i++ ){ 58*59599516SKenneth E. Jansen cout << ((double*)darray)[i] << endl; 59*59599516SKenneth E. Jansen } 60*59599516SKenneth E. Jansen } 61*59599516SKenneth E. Jansen 62*59599516SKenneth E. Jansen void 63*59599516SKenneth E. Jansen piarray( void* iarray , int start, int end ) { 64*59599516SKenneth E. Jansen for( int i=start; i < end; i++ ){ 65*59599516SKenneth E. Jansen cout << ((int*)iarray)[i] << endl; 66*59599516SKenneth E. Jansen } 67*59599516SKenneth E. Jansen } 68*59599516SKenneth E. Jansen 69*59599516SKenneth E. Jansen extern "C" int 70*59599516SKenneth E. Jansen phasta( int argc, 71*59599516SKenneth E. Jansen char *argv[] ) { 72*59599516SKenneth E. Jansen 73*59599516SKenneth E. Jansen int size,ierr; 74*59599516SKenneth E. Jansen char inpfilename[100]; 75*59599516SKenneth E. Jansen char* pauseDebugger = getenv("catchDebugger"); 76*59599516SKenneth E. Jansen //cout << "pauseDebugger" << pauseDebugger << endl; 77*59599516SKenneth E. Jansen 78*59599516SKenneth E. Jansen MPI_Init(&argc,&argv); 79*59599516SKenneth E. Jansen MPI_Comm_size (MPI_COMM_WORLD, &size); 80*59599516SKenneth E. Jansen MPI_Comm_rank (MPI_COMM_WORLD, &myrank); 81*59599516SKenneth E. Jansen 82*59599516SKenneth E. Jansen workfc.numpe = size; 83*59599516SKenneth E. Jansen workfc.myrank = myrank; 84*59599516SKenneth E. Jansen 85*59599516SKenneth E. Jansen #if (defined WIN32) 86*59599516SKenneth E. Jansen if(argc > 2 ){ 87*59599516SKenneth E. Jansen catchDebugger(); 88*59599516SKenneth E. Jansen } 89*59599516SKenneth E. Jansen #endif 90*59599516SKenneth E. Jansen #if (1) // ALWAYS ( defined LAUNCH_GDB ) && !( defined WIN32 ) 91*59599516SKenneth E. Jansen 92*59599516SKenneth E. Jansen if ( pauseDebugger ) { 93*59599516SKenneth E. Jansen 94*59599516SKenneth E. Jansen int parent_pid = getpid(); 95*59599516SKenneth E. Jansen int gdb_child = fork(); 96*59599516SKenneth E. Jansen cout << "gdb_child" << gdb_child << endl; 97*59599516SKenneth E. Jansen 98*59599516SKenneth E. Jansen if( gdb_child == 0 ) { 99*59599516SKenneth E. Jansen 100*59599516SKenneth E. Jansen cout << "Debugger Process initiating" << endl; 101*59599516SKenneth E. Jansen strstream exec_string; 102*59599516SKenneth E. Jansen 103*59599516SKenneth E. Jansen #if ( defined decalp ) 104*59599516SKenneth E. Jansen exec_string <<"xterm -e idb " 105*59599516SKenneth E. Jansen << " -pid "<< parent_pid <<" "<< argv[0] << endl; 106*59599516SKenneth E. Jansen #endif 107*59599516SKenneth E. Jansen #if ( defined LINUX ) 108*59599516SKenneth E. Jansen exec_string <<"xterm -e gdb" 109*59599516SKenneth E. Jansen << " -pid "<< parent_pid <<" "<< argv[0] << endl; 110*59599516SKenneth E. Jansen #endif 111*59599516SKenneth E. Jansen #if ( defined SUN4 ) 112*59599516SKenneth E. Jansen exec_string <<"xterm -e dbx " 113*59599516SKenneth E. Jansen << " - "<< parent_pid <<" "<< argv[0] << endl; 114*59599516SKenneth E. Jansen #endif 115*59599516SKenneth E. Jansen #if ( defined IRIX ) 116*59599516SKenneth E. Jansen exec_string <<"xterm -e dbx " 117*59599516SKenneth E. Jansen << " -p "<< parent_pid <<" "<< argv[0] << endl; 118*59599516SKenneth E. Jansen #endif 119*59599516SKenneth E. Jansen system( exec_string.str() ); 120*59599516SKenneth E. Jansen exit(0); 121*59599516SKenneth E. Jansen } 122*59599516SKenneth E. Jansen catchDebugger(); 123*59599516SKenneth E. Jansen } 124*59599516SKenneth E. Jansen 125*59599516SKenneth E. Jansen #endif 126*59599516SKenneth E. Jansen 127*59599516SKenneth E. Jansen //MR CHANGE 128*59599516SKenneth E. Jansen setIOparam(); 129*59599516SKenneth E. Jansen //MR CHANGE END 130*59599516SKenneth E. Jansen 131*59599516SKenneth E. Jansen input(); 132*59599516SKenneth E. Jansen //MR CHANGE 133*59599516SKenneth E. Jansen 134*59599516SKenneth E. Jansen MPI_Barrier(MPI_COMM_WORLD); 135*59599516SKenneth E. Jansen if ( myrank == 0 ) { 136*59599516SKenneth E. Jansen printf("phasta.cc - last call before finalize!\n"); 137*59599516SKenneth E. Jansen } 138*59599516SKenneth E. Jansen //MR CHANGE 139*59599516SKenneth E. Jansen 140*59599516SKenneth E. Jansen MPI_Finalize(); 141*59599516SKenneth E. Jansen return 0; 142*59599516SKenneth E. Jansen } 143