Re: [CMake] How to determine the number of processors available from CMake code

2010-10-08 Thread Michael Wild

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 mm...@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
 
 
 
 
 ___
 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

[CMake] How to determine the number of processors available from CMake code

2010-10-07 Thread David Cole
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

Re: [CMake] How to determine the number of processors available from CMake code

2010-10-07 Thread David Cole
Thanks!

On Thu, Oct 7, 2010 at 6:08 PM, Mark Moll mm...@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




___
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