/[escript]/trunk/escript/src/Utils.cpp
ViewVC logotype

Diff of /trunk/escript/src/Utils.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1312 by ksteube, Mon Sep 24 06:18:44 2007 UTC revision 1620 by ksteube, Fri Jun 27 02:30:18 2008 UTC
# Line 20  Line 20 
20  #include <omp.h>  #include <omp.h>
21  #endif  #endif
22    
23    #ifdef PASO_MPI
24    #include <mpi.h>
25    #endif
26    
27  namespace escript {  namespace escript {
28    
29  int getSvnVersion()  int getSvnVersion()
# Line 31  int getSvnVersion() Line 35  int getSvnVersion()
35  #endif  #endif
36  }  }
37    
38    /* This is probably not very robust, but it works on Savanna today and is useful for performance analysis */
39    int get_core_id() {
40      int processor_num=-1;
41    #ifdef CORE_ID1
42      FILE *fp;
43      int i, count_spaces=0;
44      char fname[100];
45      char buf[1000];
46    
47      sprintf(fname, "/proc/%d/stat", getpid());
48      fp = fopen(fname, "r");
49      if (fp == NULL) return(-1);
50      fgets(buf, 1000, fp);
51      fclose(fp);
52    
53      for (i=strlen(buf)-1; i>=0; i--) {
54        if (buf[i] == ' ') count_spaces++;
55        if (count_spaces == 4) break;
56      }
57      processor_num = atoi(&buf[i+1]);
58    #endif
59      return(processor_num);
60    }
61    
62    
63    void printParallelThreadCnt()
64    {
65      int mpi_iam=0, mpi_num=1;
66      char hname[64];
67    
68      gethostname(hname, 64);
69    
70      #ifdef PASO_MPI
71      MPI_Comm_rank(MPI_COMM_WORLD, &mpi_iam);
72      MPI_Comm_size(MPI_COMM_WORLD, &mpi_num);
73      #endif
74    
75      #ifdef _OPENMP
76      #pragma omp parallel
77      #endif
78      {
79        int omp_iam=0, omp_num=1;
80        #ifdef _OPENMP
81        omp_iam = omp_get_thread_num(); /* Call in a parallel region */
82        omp_num = omp_get_num_threads();
83        #endif
84        printf("printParallelThreadCounts: MPI=%03d/%03d OpenMP=%03d/%03d running on %s core %d\n",
85          mpi_iam, mpi_num, omp_iam, omp_num, hname, get_core_id());
86      }
87    }
88    
89  void setNumberOfThreads(const int num_threads)  void setNumberOfThreads(const int num_threads)
90  {  {
91    

Legend:
Removed from v.1312  
changed lines
  Added in v.1620

  ViewVC Help
Powered by ViewVC 1.1.26