Hi
Please preserve as get_num_cpus.c as follows.
---->8---->8---->8---->8---->8---->8---->8---->8---->8---->8---->8---->8----
#include <unistd.h>
#include <stdlib.h>
#ifdef WIN32
#include <windows.h>
#endif
#include <R.h>
#include <Rdefines.h>
SEXP get_num_cpus(void)
{
SEXP cpus;
PROTECT (cpus = allocVector (INTSXP, 1));
INTEGER(cpus)[0]=1;
#ifdef _SC_NPROCESSORS_ONLN
{
/* MacOSX, Linux, Solaris, AIX */
INTEGER(cpus)[0] = sysconf(_SC_NPROCESSORS_ONLN);
}
#else
# ifdef WIN32
{
/* Windows */
DWORD processAffinityMask;
DWORD systemAffinityMask;
if (GetProcessAffinityMask( GetCurrentProcess(),
&processAffinityMask,
&systemAffinityMask)){
processAffinityMask = (processAffinityMask & 0x55555555)
+ (processAffinityMask >> 1 & 0x55555555);
processAffinityMask = (processAffinityMask & 0x33333333)
+ (processAffinityMask >> 2 & 0x33333333);
processAffinityMask = (processAffinityMask & 0x0f0f0f0f)
+ (processAffinityMask >> 4 & 0x0f0f0f0f);
processAffinityMask = (processAffinityMask & 0x00ff00ff)
+ (processAffinityMask >> 8 & 0x00ff00ff);
INTEGER(cpus)[0] = (processAffinityMask & 0x0000ffff)
+ (processAffinityMask >>16 & 0x0000ffff);
}
}
# endif
#endif
UNPROTECT (1);
return cpus;
}
---->8---->8---->8---->8---->8---->8---->8---->8---->8---->8---->8---->8----
$ R CMD SHLIB get_num_cpus.c
$ R -q> dyn.load(paste("get_num_cpus", .Platform$dynlib.ext,
sep=""))
> .Call("get_num_cpus")
[1] 2
You obtain the number of CPU core.
2009/8/25 H?vard Rue <Havard.Rue at math.ntnu.no>:> Any way to get access to the number of CPU's, optionally their type,
> from within ?R? ? In linux I can just read /proc/cpuinfo ?but for
> win/mac ?
>
> Thanks!
> H?vard
>
> --
> ?H?vard Rue
> ?Department of Mathematical Sciences
> ?Norwegian University of Science and Technology
> ?N-7491 Trondheim, Norway
> ?Voice: +47-7359-3533 ? ?URL ?: http://www.math.ntnu.no/~hrue
> ?Fax ?: +47-7359-3524 ? ?Email: havard.rue at math.ntnu.no
>
> ?This message was created in a Microsoft-free computing environment.
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
--
EI-JI Nakama <nakama (a) ki.rim.or.jp>
"\u4e2d\u9593\u6804\u6cbb" <nakama (a) ki.rim.or.jp>