Re: [CMake] How to determine the number of processors available from CMake code
Would be nice to have this as a module: http://cmake.org/Bug/view.php?id=11302 On 8. Oct, 2010, at 24:41 , David Cole wrote: > Thanks! > > On Thu, Oct 7, 2010 at 6:08 PM, Mark Moll 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 >> >> >> >> > ___ > 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 -- There is always a well-known solution to every human problem -- neat, plausible, and wrong. H. L. Mencken PGP.sig Description: This is a digitally signed message part ___ 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
Re: [CMake] How to determine the number of processors available from CMake code
Thanks! On Thu, Oct 7, 2010 at 6:08 PM, Mark Moll 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 > > > > ___ 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
[CMake] How to determine the number of processors available from CMake code
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