1 #if defined(LINUX) && !defined(DARWIN) && !defined(_CRAYC) && !defined(ECMWF) 23 ncpu = sysconf (_SC_NPROCESSORS_CONF);
25 sched_getaffinity (0,
sizeof (mask), &mask);
27 for (icpu = 0; icpu < ncpu; icpu++)
28 buffer[icpu] = CPU_ISSET (icpu, &mask) ?
'1' :
'0';
46 omp_get_max_threads ()
52 ncpu = sysconf (_SC_NPROCESSORS_CONF);
54 sprintf (f,
"linux_bind.%6.6d.txt", rank);
57 if (gethostname (host, 255) != 0)
58 strcpy (host,
"unknown");
60 fprintf (fp,
" rank = %6d", rank);
61 fprintf (fp,
" host = %9s", host);
62 fprintf (fp,
" ncpu = %2d", ncpu);
63 fprintf (fp,
" nomp = %2d", nomp);
67 fprintf (fp,
" mask = %s",
getcpumask (buffer,
sizeof (buffer)));
83 for (i = 0; i <
nomp; i++)
90 fprintf (fp,
"\n mask = %s iomp = %2d",
108 #define LINUX_BIND_TXT "linux_bind.txt" 117 char * buf = (
char*)malloc (len);
118 const char * EC_LINUX_BIND;
120 EC_LINUX_BIND = getenv (
"EC_LINUX_BIND");
122 if (EC_LINUX_BIND == NULL)
123 EC_LINUX_BIND = LINUX_BIND_TXT;
125 fp = fopen (EC_LINUX_BIND,
"r");
134 for (i = 0; i < rank+1; i++)
136 if (getline (&buf, &len, fp) == -1)
138 fprintf (stderr,
"Unexpected EOF while reading `" LINUX_BIND_TXT
"'\n");
151 omp_get_thread_num ()
158 for (jomp = 0, c = buf; jomp < iomp; jomp++)
160 while (*c && isdigit (*c))
162 while (*c && (! isdigit (*c)))
166 fprintf (stderr,
"Unexpected end of line while reading `" LINUX_BIND_TXT
"'\n");
173 for (icpu = 0; isdigit (*c); icpu++, c++)
175 CPU_SET (icpu, &mask);
177 sched_setaffinity (0,
sizeof (mask), &mask);
static char * getcpumask(char *buffer, size_t size)
void linux_bind_(int *prank, int *psize)
void linux_bind_dump_(int *prank, int *psize)
quick &counting sorts only inumt inumt nomp