[CMake] How to determine the number of processors available from CMake code
David Cole
david.cole at kitware.com
Thu Oct 7 18:41:28 EDT 2010
Thanks!
On Thu, Oct 7, 2010 at 6:08 PM, Mark Moll <mmoll at rice.edu> wrote:
> On OS X, this command might be easier / faster:
>
> sysctl -n hw.ncpu
>
> On Oct 7, 2010, at 3:50 PM, David Cole wrote:
>
> > I just posted a short blog article demonstrating how to figure out the
> number of processors available for a "make -j" or a scripted ctest_build
> call (with the "Unix Makefiles" generator) on Linux, Mac and Windows. Please
> let me know if you have any ideas for how it might be improved or extended.
> >
> > http://www.kitware.com/blog/home/post/63
> >
> >
> > Cheers,
> > David
> >
> >
> > Blog text copied here, too, for search-ability on the mailing list
> archives:
> >
> ==============================================================================
> > At the end of this script snippet, the CMake variable PROCESSOR_COUNT has
> a value appropriate for passing to make's -j for parallel builds.
> >
> > When used in a ctest -S script, you can call...
> >
> > if(PROCESSOR_COUNT)
> > set(CTEST_BUILD_FLAGS "-j${PROCESSOR_COUNT}")
> > endif()
> >
> > ...to enable parallel builds with "Unix Makefiles" and the ctest_build
> command.
> >
> >
> > Here's the snippet:
> > if(NOT DEFINED PROCESSOR_COUNT)
> > # Unknown:
> > set(PROCESSOR_COUNT 0)
> >
> > # Linux:
> > set(cpuinfo_file "/proc/cpuinfo")
> > if(EXISTS "${cpuinfo_file}")
> > file(STRINGS "${cpuinfo_file}" procs REGEX "^processor.: [0-9]+$")
> > list(LENGTH procs PROCESSOR_COUNT)
> > endif()
> >
> > # Mac:
> > if(APPLE)
> > find_program(cmd_sys_pro "system_profiler")
> > if(cmd_sys_pro)
> > execute_process(COMMAND ${cmd_sys_pro} OUTPUT_VARIABLE info)
> > string(REGEX REPLACE "^.*Total Number Of Cores: ([0-9]+).*$" "\\1"
> > PROCESSOR_COUNT "${info}")
> > endif()
> > endif()
> >
> > # Windows:
> > if(WIN32)
> > set(PROCESSOR_COUNT "$ENV{NUMBER_OF_PROCESSORS}")
> > endif()
> > endif()
> >
> > _______________________________________________
> > Powered by www.kitware.com
> >
> > Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
> >
> > Please keep messages on-topic and check the CMake FAQ at:
> http://www.cmake.org/Wiki/CMake_FAQ
> >
> > Follow this link to subscribe/unsubscribe:
> > http://www.cmake.org/mailman/listinfo/cmake
>
> --
> Mark Moll
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20101007/defc4ba3/attachment.htm>
More information about the CMake
mailing list