[gmx-users] Status of GROMACS native Windows Builds

Mark Abraham mark.j.abraham at gmail.com
Wed Jan 9 17:28:50 CET 2019


Hi,

On Wed, Jan 9, 2019 at 4:54 PM Wahab Mirco <
Mirco.Wahab at chemie.tu-freiberg.de> wrote:

> There was currently a thread regarding ways of using Gromacs on
> Windows systems. This cause me to try to download v.2019 to
> a Windows build machine and see what the NATIVE BUILD looks like.
>
> Installed on the Machine and used for the build were:
>   - Visual Studio 2017 ("Visual Studio 15 Win64" in cmake)
>   - fftw3f v.3.3.8, compiled in VS 2017 to a static library
>   - boost 1.69.0
> (https://sourceforge.net/projects/boost/files/boost-binaries/)
>

BTW GROMACS hasn't used boost for quite a few years.

First, standard Gromacs without GPU acceleration and
> without external MPI (thread-MPI only). Using a CMD file:
>
>    SET BOOST_ROOT=D:\usr\x64\boost_1_67_0
>    SET BOOST_LIBRARYDIR=D:\usr\x64\boost_1_67_0\lib
>    SET BOOST_INCLUDEDIR=D:\usr\x64\boost_1_67_0
>
>    cmake -G "Visual Studio 15 Win64"             ^
>      -DCMAKE_INSTALL_PREFIX="D:/Gromacs2019"     ^
>      -DCMAKE_PREFIX_PATH="D:/Usr/x64"            ^
>      -DGMX_GPU=OFF                               ^
>      -DGMX_MPI=OFF                               ^
>      -DFFTWF_LIBRARY=D:/Usr/x64/lib/libfftwf-3.3.8-vc141.lib ^
>      -DCMAKE_BUILD_TYPE=Release                  ^
>       ..\gromacs-2019
>
> and finally:
>
>    devenv Gromacs.sln /build Release              ^
>        /project ALL_BUILD /projectconfig Release  ^
>        /project INSTALL
>
> created a 15 MB executable (gmx.exe) running flawlessly on the machine
> and appears reliable and fast.
>

Great! We test that kind of build in CI, so it should work, but we do not
ever look at the performance.

The build machine also has an old GTX-680 4GB with working CUDA 10 and
> working OpenCL 1.2. Neither a Cuda-Build nor an OpenCL build would
> succeed (see Appendix).
>
> Q: is further support for the windows platform to be expected?
>

Our major interests are the extra portability ensured by supporting MSVC
and its different C++ standard library. And later probably the Microsoft
correctness checking machinery, e.g. for the GSL.

We'd be likely to accept patches that would get the GPU support working,
but we won't prioritize effort to do it ourselves. Some of the type
mismatches look worth fixing on general principles, and e.g. if clFFT
doesn't support Windows, then we should fix our build stuff. I opened an
issue in our tracker.

Thanks!

Mark

Thanks & Regards
>
> M.
>
>
> -----------------------------------------------------------------------
>
> Appendix:
>
> CUDA: cmake (3.13.2)  would fail creating a makefile by complaining:
>
> -- Check for working NVCC/C compiler combination
> CMake Error at cmake/gmxManageNvccConfig.cmake:180 (message):
>    message called with incorrect number of arguments
> Call Stack (most recent call first):
>    cmake/gmxManageGPU.cmake:204 (include)
>    CMakeLists.txt:590 (gmx_gpu_setup)
>
>
> -- Check for working NVCC/C compiler combination - broken
> CMake Error at cmake/gmxManageNvccConfig.cmake:185 (message):
>    CUDA compiler does not seem to be functional.
> Call Stack (most recent call first):
>    cmake/gmxManageGPU.cmake:204 (include)
>    CMakeLists.txt:590 (gmx_gpu_setup)
>
>
>
> OpenCL: cmake detects OpenCL 1.2 and creates a makefile, but compilation
> fails at several places:
>
> 1>fft_binary_lookup.cpp
> 1>D:\LibSrc\Gromacs2019\gromacs-2019\src\external\clFFT\src\library\fft_binary_lookup.cpp(123):
>
> error C2664: 'HANDLE
> CreateFileA(LPCSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES,DWORD,DWORD,HANDLE)':
> cannot convert argument 1 from 'const _Elem *' to 'LPCSTR'
> 1>        with
> 1>        [
> 1>            _Elem=wchar_t
> 1>        ]
> 1>D:\LibSrc\Gromacs2019\gromacs-2019\src\external\clFFT\src\library\fft_binary_lookup.cpp(129):
>
> note: Types pointed to are unrelated; conversion requires
> reinterpret_cast, C-style cast or function-style cast
> 1>Done building project "clFFT.vcxproj" -- FAILED.
> 2
>
> and
>
> 2>D:\LibSrc\Gromacs2019\gromacs-2019\src\gromacs\ewald\pme-gpu-internal.cpp(1135):
>
> error C2672: 'std::max': no matching overloaded function found
> 2>D:\LibSrc\Gromacs2019\gromacs-2019\src\gromacs\ewald\pme-gpu-internal.cpp(1135):
>
> error C2780: '_Ty std::max(std::initializer_list<_Elem>)': expects 1
> arguments - 2 provided
> 2>C:\Program Files (x86)\Microsoft Visual
> Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include\algorithm(5399):
> note: see declaration of 'std::max'
> 2>D:\LibSrc\Gromacs2019\gromacs-2019\src\gromacs\ewald\pme-gpu-internal.cpp(1135):
>
> error C2782: 'const _Ty &std::max(const _Ty &,const _Ty &)
> noexcept(<expr>)': template parameter '_Ty' is ambiguous
> 2>C:\Program Files (x86)\Microsoft Visual
> Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include\algorithm(5385):
> note: see declaration of 'std::max'
> 2>D:\LibSrc\Gromacs2019\gromacs-2019\src\gromacs\ewald\pme-gpu-internal.cpp(1135):
>
> note: could be 'unsigned long'
> 2>D:\LibSrc\Gromacs2019\gromacs-2019\src\gromacs\ewald\pme-gpu-internal.cpp(1135):
>
> note: or       'size_t'
> 2>D:\LibSrc\Gromacs2019\gromacs-2019\src\gromacs\ewald\pme-gpu-internal.cpp(1135):
>
> error C2784: 'const _Ty &std::max(const _Ty &,const _Ty &)
> noexcept(<expr>)': could not deduce template argument for 'const _Ty &'
> from 'unsigned long'
> 2>C:\Program Files (x86)\Microsoft Visual
> Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include\algorithm(5385):
> note: see declaration of 'std::max'
> 2>D:\LibSrc\Gromacs2019\gromacs-2019\src\gromacs\ewald\pme-gpu-internal.cpp(1135):
>
> error C2784: '_Ty std::max(std::initializer_list<_Elem>,_Pr)': could not
> deduce template argument for 'std::initializer_list<_Elem>' from 'size_t'
> 2>C:\Program Files (x86)\Microsoft Visual
> Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include\algorithm(5375):
> note: see declaration of 'std::max'
> 2>D:\LibSrc\Gromacs2019\gromacs-2019\src\gromacs\ewald\pme-gpu-internal.cpp(1135):
>
> error C2780: 'const _Ty &std::max(const _Ty &,const _Ty &,_Pr)
> noexcept(<expr>)': expects 3 arguments - 2 provided
> 2>C:\Program Files (x86)\Microsoft Visual
> Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include\algorithm(5367):
> note: see declaration of 'std::max'
> 2>D:\LibSrc\Gromacs2019\gromacs-2019\src\gromacs\ewald\pme-gpu-internal.cpp(1135):
>
> error C2789: 'gridLinesPerBlock': an object of const-qualified type must
> be initialized
> 2>D:\LibSrc\Gromacs2019\gromacs-2019\src\gromacs\ewald\pme-gpu-internal.cpp(1135):
>
> note: see declaration of 'gridLinesPerBlock'
> 2>Done building project "libgromacs.vcxproj" -- FAILED.
> --
> Gromacs Users mailing list
>
> * Please search the archive at
> http://www.gromacs.org/Support/Mailing_Lists/GMX-Users_List before
> posting!
>
> * Can't post? Read http://www.gromacs.org/Support/Mailing_Lists
>
> * For (un)subscribe requests visit
> https://maillist.sys.kth.se/mailman/listinfo/gromacs.org_gmx-users or
> send a mail to gmx-users-request at gromacs.org.
>


More information about the gromacs.org_gmx-users mailing list