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....@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....@math.ntnu.no
>
>  This message was created in a Microsoft-free computing environment.
>
> ______________________________________________
> R-help@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>

______________________________________________
R-help@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.

Reply via email to