SURFEX v8.1
General documentation of Surfex
jfhc.c
Go to the documentation of this file.
1 #ifdef RS6K
2 #include <stdlib.h>
3 #include <stdio.h>
4 #include <sys/processor.h>
5 #include <unistd.h>
6 #include <sys/thread.h>
7 #include <sys/processor.h>
8 #include <string.h>
9 
10 void aff_(int* icpu, int* ncpu)
11 {
12  *icpu=mycpu();
13  *ncpu=sysconf(_SC_NPROCESSORS_ONLN);
14 }
15 
16 tid_t jbind_(proc)
17  int *proc;
18 {
19  tid_t t;
20  t=thread_self();
21  int ii;
22 /*
23  fprintf(stderr,"proc=%d\n",*proc);
24  fprintf(stderr,"thread=%d\n",t);
25 */
26  if( 0 != bindprocessor(BINDTHREAD,t,*proc) )
27  fprintf(stderr,"bindprocessor failed for thread = %d\n",t);
28 }
29 
31 {
32  FILE *out;
33  char v2[80];
34  int i, jj;
35  out=popen("mpstat -s | grep cpu | grep -v System | sed s/cpu//g","r");
36  jj=-99;
37  fscanf(out,"%d",&jj);
38  return jj;
39 }
40 
41 smtctl_(int *N, int *i0, int *i1)
42 {
43  FILE *out0, *out1;
44  int ii;
45  char v1[80];
46  out0=popen("bindprocessor -s 0","r");
47  out1=popen("bindprocessor -s 1","r");
48  fscanf(out0,"%s %s %s %s",v1,v1,v1,v1);
49  fscanf(out1,"%s %s %s %s",v1,v1,v1,v1);
50  for (ii=0; ii<*N; ii++)
51  {
52  fscanf(out0,"%d",&i0[ii]);
53  fscanf(out1,"%d",&i1[ii]);
54  }
55 }
56 #endif
tid_t jbind_(int *proc)
Definition: jfhc.c:16
void aff_(int *icpu, int *ncpu)
Definition: jfhc.c:10
int is_smt_on_()
Definition: jfhc.c:30
smtctl_(int *N, int *i0, int *i1)
Definition: jfhc.c:41
subroutine t(CDPREF, CDSUFF, KCODPA, LDNIVA, PMULTI)
Definition: faicor.F90:567