Skip to content

GA on Windows

Jeff Daily edited this page Mar 13, 2018 · 7 revisions

We have added a CMake build system that allows GA compilation on Windows platforms.

The build system is still fairly new and was added to specifically target Windows platforms, so not all features may be covered.

The CMake build only supports the MPI-based runtimes so GA can only be built using MPI two-sided, MPI progress ranks, MPI thread multiple, MPI progress threads and MPI-3 (MPI RMA) runtimes. We recommend using MPI two-sided/MPI progress ranks based approach. The CMake build requires CMake Version 2.8.8 or greater.

The CMake build supports the following options

  • ENABLE_FORTRAN:BOOL Default is off
  • ENABLE_CXX:BOOL Default is off
  • GA_RUNTIME:STRING Default is MPI_2SIDED. Options are
    • MPI_2SIDED (Default) use simple MPI-2 sided runtime
    • MPI_PROGRESS Use progress ranks runtime
    • MPI_MULTITHREADED Use thread multiple runtime
    • MPI_PROGRESS_THREAD Use progress thread runtime
    • MPI_RMA Use MPI RMA based runtime.
  • ENABLE_I8:BOOL Default (off) is to use 4-byte integers
  • ENABLE_BLAS Use an external BLAS library
  • CMAKE_CXX_COMPILER:STRING Specify C++ compiler. This should be the appropriate MPI wrapper (e.g. mpicxx)
  • CMAKE_C_COMPILER:STRING Specify C compiler. This should be the appropriate MPI wrapper (e.g. mpicc)
  • MPI_CXX_COMPILER:STRING Specify the MPI wrapper for the C++ compiler
  • MPI_C_COMPILER:STRING Specify the MPI wrapper for the C compiler
  • GA_EXTRA_LIBS:STRING Specify additional libraries or linker options when building GA
  • MPIEXEC:STRING Specify the command for running MPI executables (e.g. mpiexec)
  • CMAKE_INSTALL_PREFIX:PATH Specify the location of the installed GA header and library directories
  • CMAKE_BUILD_TYPE:STRING The options are
    • RELWITHDEBINFO This will be compiled in a release mode but with debugger information (-g) included
    • RELEASE Compiled in release mode and no debugger information is included in the code
    • DEBUG Compiled with internal debugger information
  • CMAKE_VERBOSE_MAKEFILE:STRING Specify whether extensive output is produced during make. This is useful for debugging

Many of the options above are standard CMake parameters and more information about them can be found in the CMake documentation. A typical invocation of a CMake build inside a Windows Visual Studios command prompt looks like

set CFLAGS="/D _ITERATOR_DEBUG_LEVEL=0"
set CXXFLAGS="/D _ITERATOR_DEBUG_LEVEL=0"
cmake -Wdev --debug-trycompile ^
   -G "Visual Studio 10 2010 Win64" ^
   -D ENABLE_BLAS:BOOL=No ^
   -D ENABLE_FORTRAN:BOOL=No ^
   -D ENABLE_CXX:BOOL=Yes ^
   -D GA_RUNTIME:STRING=MPI_TS ^
   -D CMAKE_INSTALL_PREFIX:PATH="\my\GA\install\path" ^
   ..
cmake --build . --config Release
cmake --build . --config Release --target install