alexxy/gromacs.git
11 years agofirst step toward moving OpenMM support to contrib
Szilard Pall [Thu, 29 Nov 2012 23:21:06 +0000 (00:21 +0100)]
first step toward moving OpenMM support to contrib

Although this is a sloppy and incomplete solution, it's important that
for 4.6-beta1 the user at notices that OpenMM acceleration is not first
class citizen when it comes to support.

Change-Id: I494f3379865de4931af1eef8cbf09a63dba72648

11 years agoMerge "don't auto-set nvcc host compiler with cmake >2.8.9" into release-4-6
Mark Abraham [Wed, 5 Dec 2012 20:03:10 +0000 (21:03 +0100)]
Merge "don't auto-set nvcc host compiler with cmake >2.8.9" into release-4-6

11 years agoMerge "Keep FindCUDA quiet when it is not useful" into release-4-6
Mark Abraham [Wed, 5 Dec 2012 19:51:59 +0000 (20:51 +0100)]
Merge "Keep FindCUDA quiet when it is not useful" into release-4-6

11 years agoMerge "Remove TEST_TMPI_ATOMICS_ONLY" into release-4-6
Mark Abraham [Wed, 5 Dec 2012 19:51:29 +0000 (20:51 +0100)]
Merge "Remove TEST_TMPI_ATOMICS_ONLY" into release-4-6

11 years agoMerge "Re-apply -dev version name between beta 1 and beta 2" into release-4-6
Mark Abraham [Wed, 5 Dec 2012 19:50:34 +0000 (20:50 +0100)]
Merge "Re-apply -dev version name between beta 1 and beta 2" into release-4-6

11 years agoMerge "fixed segv in Verlet pair-search with trilinic DD" into release-4-6
Roland Schulz [Wed, 5 Dec 2012 19:45:16 +0000 (20:45 +0100)]
Merge "fixed segv in Verlet pair-search with trilinic DD" into release-4-6

11 years agoMerge "Fixed labelling of g_hbond plots" into release-4-6
Mark Abraham [Wed, 5 Dec 2012 19:31:52 +0000 (20:31 +0100)]
Merge "Fixed labelling of g_hbond plots" into release-4-6

11 years agoMerge "fixed incorrect virial with virtual sites and OpenMP" into release-4-6
Roland Schulz [Wed, 5 Dec 2012 19:28:41 +0000 (20:28 +0100)]
Merge "fixed incorrect virial with virtual sites and OpenMP" into release-4-6

11 years agoRemove TEST_TMPI_ATOMICS_ONLY
Roland Schulz [Thu, 29 Nov 2012 01:59:29 +0000 (20:59 -0500)]
Remove TEST_TMPI_ATOMICS_ONLY

Not needed anymore since aaf38d0b8683c510a5

Change-Id: Icce5578e7b1bd64a5dcfef1e2e38358ce5d9707c

11 years agoRe-apply -dev version name between beta 1 and beta 2
Mark Abraham [Fri, 30 Nov 2012 09:48:51 +0000 (10:48 +0100)]
Re-apply -dev version name between beta 1 and beta 2

We'll still have to strip it on and off for the release tarballs.

Change-Id: Ib71d0c593f4d16e4fee0e7ec012b8cc2f0099b65

11 years agofixed incorrect virial with virtual sites and OpenMP
Berk Hess [Wed, 5 Dec 2012 15:50:30 +0000 (16:50 +0100)]
fixed incorrect virial with virtual sites and OpenMP

The virial was incorrect with more than 1 OpenMP thread
and virtual sites crossing a box boundary.
Fixes #1060

Change-Id: Ib659f6eb7719f4808b37e828b96526587f8a0e69

11 years agoKeep FindCUDA quiet when it is not useful
Mark Abraham [Wed, 5 Dec 2012 14:59:59 +0000 (15:59 +0100)]
Keep FindCUDA quiet when it is not useful

If detection has been done and GPUs were not detected, a user who
didn't give orders about using GPUs should not need to worry about
anything with CUDA in the name. Otherwise, messages like
"CUDA_TOOLKIT_ROOT_DIR not found or specified" are emitted
by FindCUDA as warnings, and require user interaction when
using ccmake.

Change-Id: If31603a4bdfd72ca5ed4f0313f708b3efe778a74

11 years agofixed segv in Verlet pair-search with trilinic DD
Berk Hess [Wed, 5 Dec 2012 12:58:19 +0000 (13:58 +0100)]
fixed segv in Verlet pair-search with trilinic DD

With the Verlet scheme and domain decomposition the bounding box
of the zone, used for the pair-search grid, could be calculated
incorrectly for certain triclinic boxes, causing array indices
to get out of bounds (usually causing a segv).
Fixes #1059

Change-Id: I5bb146baaec59271dd5e68b40c545ed29d061831

11 years agoFixed labelling of g_hbond plots
Erik Marklund [Wed, 5 Dec 2012 11:41:15 +0000 (12:41 +0100)]
Fixed labelling of g_hbond plots

Hydrogen-bond angle and distance distribution plots are now correctly
labelled.

This commit fixes #1052

Change-Id: Iadcc9c64b70de4a8c55b15d997b0c2ebd5a6db08

11 years agodon't auto-set nvcc host compiler with cmake >2.8.9
Szilard Pall [Wed, 5 Dec 2012 01:40:12 +0000 (02:40 +0100)]
don't auto-set nvcc host compiler with cmake >2.8.9

Starting with CMake 2.8.10 the FindCUDA module set sets the nvcc host
compiler by default which clashes with our internal implementation of
the same feature. To support both pre-2.8.10 and later versions, this
change renames the CUDA_NVCC_HOST_COMPILER cache variable to
CUDA_HOST_COMPILER (used by CMake 2.8.10's FindCUDA) and avoids adding
the -ccbin option to the nvcc flags with CMake 2.8.10 and later.

Fixes #1051

Change-Id: I4d4048d520edb8655b88b6bae35f97df76a25910

11 years agofixed issue with -multi and GPUs
Berk Hess [Thu, 29 Nov 2012 21:44:15 +0000 (22:44 +0100)]
fixed issue with -multi and GPUs

Several GPU related parts of the code did not take the multsim
functionality and separate PME nodes into account.

Change-Id: I4f6471dfda3d14ed7ca33205c56849a27564c742

11 years agoUpdate copyright statements and change license to LGPL
Mark Abraham [Tue, 27 Nov 2012 13:02:57 +0000 (14:02 +0100)]
Update copyright statements and change license to LGPL

* I have followed http://www.gnu.org/licenses/gpl-howto.html
* Copyright is asserted for 2012 (which is needed for the license to
  have any effect)
* Mostly that meant amending the previous statements, most of which
  had no legal force anyway (e.g. using "2001-2004" requires that
  you spell out that you really mean every year in between is a
  copyrightable year)
* Many files had no copyright on them; now they do
* Licensing is now LGPL v2.1 (or later). Unfortunately a CPack
  limitation means we have to use just one file for all our
  licensing statements. That's not great, but it will do.
* Previous copyright statements are intact
* External code used under license retains that license statement
  in the code
* Changes were made with a Perl script so this pain is
  not so bad next time
* The copyright comment no longer names a specific version,
  so that we don't spam the git log for no real purpose.
* Removed some remaining emacs editor lines, CVS tags and GROMACS
  acronym generator spam
* Some code areas are not yet relicensed, pending anticipated
  updates e.g. AdResS kernels
* Group kernels have been regenerated so that both the templates and
  the code all bear the copyright - this will continue to occur for
  new kernel sets
* No duplicate copyright statements on essentially unmodified
  GPU memtest code used under license
* No duplicate copyright statements on unmodified thread_mpi code
* Don't bother licensing cmake/*.c files
* Don't bother licensing anything in share subdirectory

The following things we will fix after 4.6-beta1

* TODO vectype_ops.cuh probably from CUDA SDK needs attribution
* TODO fix licensing statements for things we have stolen from CMake
* TODO fix things under admin, scripts

Change-Id: I1c507b3feb9ec97d02c87d73cc66cfd5f7381c23

11 years agomade errors during GPU detection non-fatal
Szilard Pall [Thu, 29 Nov 2012 21:12:13 +0000 (22:12 +0100)]
made errors during GPU detection non-fatal

Errors during the GPU detection phase were incorrectly treated as fatal
which meant that in cases like GPU set to thread/process exclusive mode
or runtime/driver incompatibilities resulted in fatal errors when using
binaries compiled with GPU acceleration. These errors are now reported
as a note to the user and allow mdrun to fall back to CPU kernels.

Change-Id: Ie8ebb5a1eeb6533ad451adfd3377870ec859a31d

11 years agofix cmake re-running failure introduced by ef1127f
Szilard Pall [Thu, 29 Nov 2012 14:57:33 +0000 (15:57 +0100)]
fix cmake re-running failure introduced by ef1127f

The find_package(CUDA) macro needs to be called even after we've done
the GPU detection/setup, otherwise functionality provided by this module
will not be available and CUDA compilation helper macros will not be
found.

Change-Id: I6320f20fc3189f5be57b7344ca8049ee418bc3fb

11 years agoMerge "Initial commit of new install guide" into release-4-6
Mark Abraham [Thu, 29 Nov 2012 22:25:58 +0000 (23:25 +0100)]
Merge "Initial commit of new install guide" into release-4-6

11 years agoMerge "Bump version to 4.6-beta1" into release-4-6
Mark Abraham [Thu, 29 Nov 2012 22:25:28 +0000 (23:25 +0100)]
Merge "Bump version to 4.6-beta1" into release-4-6

11 years agoInitial commit of new install guide
Mark Abraham [Tue, 20 Nov 2012 21:41:45 +0000 (22:41 +0100)]
Initial commit of new install guide

TODO:
Many things noted inside

Change-Id: If8655ef2d7eb88e9739873d0f2f53fbb5dcb3c1a

11 years agoBump version to 4.6-beta1
Mark Abraham [Thu, 29 Nov 2012 17:20:53 +0000 (18:20 +0100)]
Bump version to 4.6-beta1

Change-Id: If663b114d207f7c133b2f40473831e13bec9a8ab

11 years agoMerge "Added .gitignore for kernel generation" into release-4-6
Mark Abraham [Thu, 29 Nov 2012 19:10:08 +0000 (20:10 +0100)]
Merge "Added .gitignore for kernel generation" into release-4-6

11 years agoMerge "Double precision AVX-256 kernels" into release-4-6
Mark Abraham [Thu, 29 Nov 2012 18:09:57 +0000 (19:09 +0100)]
Merge "Double precision AVX-256 kernels" into release-4-6

11 years agoAdded .gitignore for kernel generation
Mark Abraham [Wed, 28 Nov 2012 14:01:51 +0000 (15:01 +0100)]
Added .gitignore for kernel generation

Change-Id: Ie666f2169a074f53695c6c49677714b9a9296932

11 years agoMerge "Fixing issue with GPU detection reporting" into release-4-6
Mark Abraham [Thu, 29 Nov 2012 18:03:46 +0000 (19:03 +0100)]
Merge "Fixing issue with GPU detection reporting" into release-4-6

11 years agoMerge "Double precision AVX_128_FMA kernels" into release-4-6
Mark Abraham [Thu, 29 Nov 2012 18:03:11 +0000 (19:03 +0100)]
Merge "Double precision AVX_128_FMA kernels" into release-4-6

11 years agoMerge "Fix: pthread variables were overwritten by gmxManageGPU" into release-4-6
Mark Abraham [Thu, 29 Nov 2012 17:41:06 +0000 (18:41 +0100)]
Merge "Fix: pthread variables were overwritten by gmxManageGPU" into release-4-6

11 years agoDouble precision AVX-256 kernels
Erik Lindahl [Thu, 29 Nov 2012 01:03:39 +0000 (02:03 +0100)]
Double precision AVX-256 kernels

Accelerated nonbonded group kernels optimized for
Intel Sandy Bridge and Ivy Bridge processors.

Change-Id: I82df7a93a9dea1592bbcebdbcdca05e3f30203f6

11 years agoDouble precision AVX_128_FMA kernels
Erik Lindahl [Wed, 28 Nov 2012 21:03:25 +0000 (22:03 +0100)]
Double precision AVX_128_FMA kernels

Kernels optimized for modern Opteron processors.
Using tables for Ewald right now, this might change with benchmarking.

Change-Id: I7da359c76b3c517e920a369413b11130be44631c

11 years agoFixing issue with GPU detection reporting
Mark Abraham [Thu, 29 Nov 2012 16:08:37 +0000 (17:08 +0100)]
Fixing issue with GPU detection reporting

The detection variable was being over-written by a hard-coded true
variable, which is now fixed.

Change-Id: Ib1ba8fdccc2045b878d5156e1475ece78be3725f

11 years agoMerge "Print error if no thread support is available" into release-4-6
Christoph Junghans [Thu, 29 Nov 2012 16:06:29 +0000 (17:06 +0100)]
Merge "Print error if no thread support is available" into release-4-6

11 years agoRefuse to build with clang 3.0
Mark Abraham [Tue, 20 Nov 2012 13:38:39 +0000 (14:38 +0100)]
Refuse to build with clang 3.0

The 3.0 compiler is definitely buggy for the group kernels, so
we refuse to build with this version at all. The test
works for both C and C++, and correctly detects (say) Apple
clang 4.1 as clang based on the LLVM 3.0 back end, like
everybody else seems to base their numbering on!

Refs #1039

Change-Id: I259fab3c022e0cf94c06ff34d2faf38663d1d7b7

11 years agoAdd a CMake warning about FFTW with --enable-avx
Mark Abraham [Mon, 19 Nov 2012 18:04:52 +0000 (19:04 +0100)]
Add a CMake warning about FFTW with --enable-avx

FFTW_MEASURE runs single-threaded tests for FFT performance, which is
very different from the GROMACS usage pattern, particularly with how
the cache access pattern works. In practice, with FFTW 3.3.2 and
3.3.3, the performance of FFTW with --enable-avx is considerably
worse than that of FFTW with --enable-sse or --enable-sse2. It's
unlikely but theoretically possible that performance might change,
so we prompt the user both to avoid --enable-avx now, and to
perhaps consider it in the future.

Change-Id: Ib4906645587cfc6a6306a7f7f46d612a6446b156

11 years agoMerge "automation for setting GMX_GPU & cmake GPU detection" into release-4-6
Mark Abraham [Thu, 29 Nov 2012 09:03:02 +0000 (10:03 +0100)]
Merge "automation for setting GMX_GPU & cmake GPU detection" into release-4-6

11 years agoautomation for setting GMX_GPU & cmake GPU detection
Szilard Pall [Mon, 12 Nov 2012 02:55:17 +0000 (03:55 +0100)]
automation for setting GMX_GPU & cmake GPU detection

Implemented detection of NVIDIA GPUs in CMake using:
 - output of nvidia-smi (if available Linux/Mac/Win);
 - presence and content of of /proc/driver/nvidia/gpus/*/information
   (Linux)
 - output of lspci (Linux)
Although the current implementation is not able to decide whether a GPU
is compatible with GROMACS, the build system is now able to hint the
user that there are potentially useful GPU compute resources.

Additionally, if GMX_GPU is not set explicitly by the user, its value
is considered to be and implicit "auto" with OFF as default. In this
case CUDA detection will be attempted and if successful, GMX_GPU is
set to "ON", otherwise kept "OFF".
If CUDA is not found and the user requested GPU acceleration, an
immediate fatal error is issued. If the user did not set GMX_GPU, a
non-fatal warning is issued at the end of the configuration with
additional information if GPUs were detected.

Fixes #1018

Change-Id: Iffa9ed343bed4278cffba5e2eb9f8b81f590b31d

11 years agodon't print nonbonded kernel info with GMX_NO_NONBONDED
Szilard Pall [Wed, 28 Nov 2012 00:44:52 +0000 (01:44 +0100)]
don't print nonbonded kernel info with GMX_NO_NONBONDED

Also moves all group kernel details from log to debug.
We should put back a one line group kernel message in log.

Change-Id: I2a90554b9efa75fd4fb2df9c1ba17fd5f626e390

11 years agoMerge "SSE4.1 double precision kernels" into release-4-6
Mark Abraham [Thu, 29 Nov 2012 01:30:41 +0000 (02:30 +0100)]
Merge "SSE4.1 double precision kernels" into release-4-6

11 years agoMerge "Double precision SSE2 kernels" into release-4-6
Mark Abraham [Thu, 29 Nov 2012 01:30:04 +0000 (02:30 +0100)]
Merge "Double precision SSE2 kernels" into release-4-6

11 years agoMerge "Ported back some AVX256 optimizations to SSE2/SSE4.1/AVX128." into release-4-6
Mark Abraham [Wed, 28 Nov 2012 23:14:11 +0000 (00:14 +0100)]
Merge "Ported back some AVX256 optimizations to SSE2/SSE4.1/AVX128." into release-4-6

11 years agoSSE4.1 double precision kernels
Erik Lindahl [Mon, 26 Nov 2012 23:43:00 +0000 (00:43 +0100)]
SSE4.1 double precision kernels

Nonbonded kernels for group cutoff scheme. Same thing as in
single applies here; these kernels are hardly faster than SSE2,
but included so people can tweak and improve them in the future.

Change-Id: Ic360ee3ed1fae1be764f399ac6c37364da4fd33f

11 years agoDouble precision SSE2 kernels
Erik Lindahl [Mon, 26 Nov 2012 22:34:31 +0000 (23:34 +0100)]
Double precision SSE2 kernels

For nonbonded interactions with group cutoff scheme.

Change-Id: I2037f94c24126f103fa232e77783775a62821f54

11 years agoPorted back some AVX256 optimizations to SSE2/SSE4.1/AVX128.
Erik Lindahl [Mon, 26 Nov 2012 17:56:49 +0000 (18:56 +0100)]
Ported back some AVX256 optimizations to SSE2/SSE4.1/AVX128.

We can gain a couple of percent in the group kernels for some cases
by only storing j-particle forces once in water kernels, and
I have updated the last few routines that used constructs that
some compliers considered fragile.

Change-Id: Ic69307c735c57dd92bf0b35e88550252447e4f7f

11 years agofixed thread pinning with mdrun -multi
Berk Hess [Wed, 28 Nov 2012 21:29:08 +0000 (22:29 +0100)]
fixed thread pinning with mdrun -multi

With mdrun -multi, multiple simulations running on the same
physiscal nodes would be pinned to the same cores.

Change-Id: Iaffba21e79f1db50aa1802d446f6938b2dba045d

11 years agoMerge "Fix Window-GPU build" into release-4-6
Mark Abraham [Wed, 28 Nov 2012 20:42:49 +0000 (21:42 +0100)]
Merge "Fix Window-GPU build" into release-4-6

11 years agoMerge "Fix cpack src ignore rule" into release-4-6
Christoph Junghans [Wed, 28 Nov 2012 20:13:52 +0000 (21:13 +0100)]
Merge "Fix cpack src ignore rule" into release-4-6

11 years agoMerge "Remove CVS files" into release-4-6
Roland Schulz [Wed, 28 Nov 2012 20:11:43 +0000 (21:11 +0100)]
Merge "Remove CVS files" into release-4-6

11 years agoFix cpack src ignore rule
Roland Schulz [Tue, 27 Nov 2012 22:19:22 +0000 (17:19 -0500)]
Fix cpack src ignore rule

Without excaping and $ .git applied to xdlgitem.c

Change-Id: If6674303dde356ee4ceef62b712aa38709e5aee0

11 years ago128-bit AVX kernels, with FMA instructions for Opteron bulldozer
Erik Lindahl [Thu, 22 Nov 2012 22:18:05 +0000 (23:18 +0100)]
128-bit AVX kernels, with FMA instructions for Opteron bulldozer

These kernels primarily enable the FMA instructions
(fused multiply-add) available on modern AMD hardware,
but also use some other AMD-specific instructions and
optimization. Because of FMA availability , it is
slightly faster to use the analytical form of our Ewald
correction instead of a table. I have also corrected a
sign error in the comment (code was fine) of the analytical
PME correction.

Change-Id: Ief0fc0c2433e02ecea572c1e83b9a2493d73e853

11 years agoAdd option to internally build FFTW if selected
Christoph Junghans [Mon, 12 Nov 2012 02:40:38 +0000 (19:40 -0700)]
Add option to internally build FFTW if selected

Fixes #1031

Change-Id: If9d7cee68f4ced26e931b9a7c5595df47185bb66

11 years agoFix: pthread variables were overwritten by gmxManageGPU
Roland Schulz [Wed, 28 Nov 2012 14:19:06 +0000 (09:19 -0500)]
Fix: pthread variables were overwritten by gmxManageGPU

ThreadMPI.cmake is now always included (used for setaffinity).
The extra include, with the TEST_TMPI_ATOMICS_ONLY variable
set, overwrote required variables.

Change-Id: I2b00d5139e8c4ed55226ff4613ad252aacabbdac

11 years agoMerge "extended nbnxn x86 SIMD kernel blendv support" into release-4-6
Mark Abraham [Wed, 28 Nov 2012 15:01:01 +0000 (16:01 +0100)]
Merge "extended nbnxn x86 SIMD kernel blendv support" into release-4-6

11 years agoFix CPACK_SOURCE_IGNORE_FILES
Roland Schulz [Wed, 28 Nov 2012 13:03:04 +0000 (08:03 -0500)]
Fix CPACK_SOURCE_IGNORE_FILES

For files $ should be used but for directories / needs to be
used to match files in the folder and subfolders.

Change-Id: Ie328221517e7b55f727bf239249070ba090b52d6

11 years agoMerge changes I9b865c4c,Ib709290e into release-4-6
Szilárd Páll [Wed, 28 Nov 2012 13:51:48 +0000 (14:51 +0100)]
Merge changes I9b865c4c,Ib709290e into release-4-6

* changes:
  use tMPI API for thread affinity setting
  Fixed Windows tMPI_Thread_self().

11 years agoPrint error if no thread support is available
Roland Schulz [Wed, 28 Nov 2012 11:00:17 +0000 (06:00 -0500)]
Print error if no thread support is available

Change-Id: I1e1ad0553207308a0db3da5d7f059f8ea22b00c3

11 years agoenable GPU emulation without GPU support
Szilard Pall [Fri, 16 Nov 2012 04:26:13 +0000 (05:26 +0100)]
enable GPU emulation without GPU support

GPU emulation can be useful to estimate the performance one could get
by adding GPU(s) to the machine by running with GMX_EMULATE_GPU and
GMX_NO_NONBONDED environment variables set. As this feature is useful
even with mdrun compiled without GPU support, this commit makes GPU
emulation mode always available.

Change-Id: I0b90b8ec1c6e3116f28f66aac4f3c8ae0831239d

11 years agoextended nbnxn x86 SIMD kernel blendv support
Berk Hess [Wed, 28 Nov 2012 09:41:21 +0000 (10:41 +0100)]
extended nbnxn x86 SIMD kernel blendv support

With icc and GMX_X86_AVX_256 the analytical Ewald kernel (the most
used kernel) is 4% faster with blendv.

Change-Id: I65a6ec2cb3fe05d81ab5d60a856b7fedd9398f05

11 years agouse tMPI API for thread affinity setting
Szilard Pall [Fri, 19 Oct 2012 20:26:47 +0000 (22:26 +0200)]
use tMPI API for thread affinity setting

Also added checks to detect the lack of support for affinities as well
as failed affinity setting.

Additionally, removed the #ifdef that prevented pinning to happen if
mdrun is not compiled with OpenMP,  wihch doesn't make much sense,
If pinning should be turned off at all, it should happen when ntomp > 1,
but this will be sorted out later.

Change-Id: I9b865c4cfebc26e3d57da5da84878aabc9905c57

11 years agoFixed Windows tMPI_Thread_self().
Sander Pronk [Wed, 28 Nov 2012 08:49:51 +0000 (09:49 +0100)]
Fixed Windows tMPI_Thread_self().

The Windows version of tMPI_Thread_self() does not use thread
local storage any more (this was incompatible with dynamic libraries)
Instead, it relies on a global list for Windows thread ID to tMPI
thread object mapping.

Change-Id: Ib709290e5bcfacf4e564221f49df933cbff0fd3c

11 years agoFix Window-GPU build
Roland Schulz [Tue, 27 Nov 2012 02:12:26 +0000 (21:12 -0500)]
Fix Window-GPU build

7631a13fc278 broke the Windows build.
Cmake bug 8189 makes it impossible to set include
directories properly per file.
This temporary solution uses two solutions for
Windows / non-Windows. The non-Windows solution
uses COMPILE_FLAGS but doesn't work on Windows,
some IDE and potentially other compilers.
The Windows solution adds the include directory
for all source files, even those which don't
require CUDA.

This should be replace with a proper solution.

Change-Id: I3c581f2c34ea8c7af60b8c82aac52ac2ab9cf981

11 years agoRemove CVS files
Roland Schulz [Tue, 27 Nov 2012 22:06:32 +0000 (17:06 -0500)]
Remove CVS files

Change-Id: I3b9f8b1af039aa7c82a9a8a40cc24b23e6f542ef

11 years agoNonbonded group kernels for 256-bit AVX (Intel CPUs)
Erik Lindahl [Mon, 26 Nov 2012 00:13:26 +0000 (01:13 +0100)]
Nonbonded group kernels for 256-bit AVX (Intel CPUs)

These kernels employ the wider YMM registers (8 floats) for a slight
speedup. For PME we use the analytical correction rather than tables,
just as for the 128-bit AMD-optimized kernels. Kernels are in the ballpark
of 10% faster than SSE4.1 right now when tested on an ion channel. Not
huge, but that's because we don't spend a lot of time in the kernels
anymore.

Change-Id: I1da9b928e2d57223fc7708cc20dd7920771745ab

11 years agoRemoves memory allocation from free energy foreign lambda calcs.
Michael Shirts [Mon, 26 Nov 2012 01:16:02 +0000 (20:16 -0500)]
Removes memory allocation from free energy foreign lambda calcs.

Removes the memory allocation from the free energy foreign
lambda calcs by declaring some new space in the enerd array, and
reinitializing only this space. Also makes the foreign lambda
calcs conditional on the group scheme and the non-bonded flag.

Change-Id: I98ed2f6ff45a4d33f9aa7dbde91364cf56c38eae

11 years agoAdd visibility defines
Roland Schulz [Fri, 16 Nov 2012 15:56:04 +0000 (10:56 -0500)]
Add visibility defines

This adds visibility declarations for functions and variables used
outside of a library. This enables shared linking on Windows and
thus makes the binaries much smaller. It doesn't effect any other
build because the defines are set to empty by default.

With GCC the correctness can be tested by adding to CFLAGS:
-fvisibility=hidden -DUSE_VISIBILITY

Related to #701

Change-Id: Ied261586e49bae11c5f8a8dffe377f0b0f02dd9d

11 years agoMerge "Added affinity support check, visibility macros in thread_mpi" into release-4-6
Erik Lindahl [Tue, 27 Nov 2012 16:40:26 +0000 (17:40 +0100)]
Merge "Added affinity support check, visibility macros in thread_mpi" into release-4-6

11 years agoMerge "fixed bug in nbnxn OpenMP non-bonded force reduction" into release-4-6
Erik Lindahl [Tue, 27 Nov 2012 16:06:48 +0000 (17:06 +0100)]
Merge "fixed bug in nbnxn OpenMP non-bonded force reduction" into release-4-6

11 years agoMerge "Merge release-4-5-patches into release-4-6" into release-4-6
David van der Spoel [Tue, 27 Nov 2012 09:46:16 +0000 (10:46 +0100)]
Merge "Merge release-4-5-patches into release-4-6" into release-4-6

11 years agofixed bug in nbnxn OpenMP non-bonded force reduction
Berk Hess [Mon, 26 Nov 2012 22:16:16 +0000 (23:16 +0100)]
fixed bug in nbnxn OpenMP non-bonded force reduction

Fixed bug introduced recently in 4a50973c which caused the force
reduction to ignore some non-bonded forces with OpenMP and
domain decomposition.

Change-Id: I359deac21365c844b9af828ba7ddbea26e3fc296

11 years agoAdded affinity support check, visibility macros in thread_mpi
Sander Pronk [Mon, 26 Nov 2012 17:20:03 +0000 (18:20 +0100)]
Added affinity support check, visibility macros in thread_mpi

- Fixed a bug where the return value of tMPI_Thread_setaffinity_single()
  is not 0 when there is no error under Windows.
- Added a function tMPI_Thread_setaffinity_support() that returns
  whether the platform supports setting thread affinity
- Added dynamic library visibility support macros

Change-Id: I9f74c5095bccc06b413443dd6a1ac2dd56e0d4b8

11 years agoFixed issues with g_bar help text.
Sander Pronk [Mon, 26 Nov 2012 20:24:00 +0000 (21:24 +0100)]
Fixed issues with g_bar help text.

Fixed Latex issues and formatting in the g_bar help text.

Change-Id: I8e509d6de9ae998e4c632ffaa1be11c839f3e8f6

11 years agoMerge release-4-5-patches into release-4-6
Roland Schulz [Mon, 26 Nov 2012 20:04:19 +0000 (15:04 -0500)]
Merge release-4-5-patches into release-4-6

Conflicts (both trivial):
CMakeLists.txt
src/config.h.cmakein

Change-Id: I363ce1c09c68c2be5aa926e893011d43c8ed3337

11 years agoMerge "Clean up some mathematical constants" into release-4-6
Roland Schulz [Mon, 26 Nov 2012 20:00:33 +0000 (21:00 +0100)]
Merge "Clean up some mathematical constants" into release-4-6

11 years agoMerge "Use stat for gmx_is_file. Fix get_libdir with symlinks." into release-4-5...
Erik Lindahl [Mon, 26 Nov 2012 19:55:01 +0000 (20:55 +0100)]
Merge "Use stat for gmx_is_file. Fix get_libdir with symlinks." into release-4-5-patches

11 years agomade nbnxn analytical Ewald consistent
Berk Hess [Mon, 26 Nov 2012 14:43:39 +0000 (15:43 +0100)]
made nbnxn analytical Ewald consistent

The recent addition of nbnxn analytical Ewald kernels switched those
kernels on for local interactions, but not for non-local domains.
This performance bug has been fixed.

Change-Id: I28abc822ee8f1cf8f7dbb5c516703145400441b2

11 years agoClean up some mathematical constants
Mark Abraham [Thu, 22 Nov 2012 14:48:29 +0000 (15:48 +0100)]
Clean up some mathematical constants

Replaced some hard-coded floats with unified constants in include/maths.h,
and made most places refer to them. Also added note that care is needed
about float-sized constants in CUDA code.

Change-Id: Icf1ec0b81179792d5e6d4d4ab9b38af3a38d7770

11 years agoMade the linear extrapolation in g_bar non-default behavior
Sander Pronk [Thu, 22 Nov 2012 17:28:02 +0000 (18:28 +0100)]
Made the linear extrapolation in g_bar non-default behavior

g_bar currently resorts to linear extrapolation of dH/dl if
it doesn't find covering foreign lambda deltaH values. This is
dangerous because the most likely case of this being used is when
the user forgets to set foreign lambdas.

This commit adds an option -extp to g_bar that the user must
explictily set to enable the linear extrapolation. If not, and
there is no foreign_lambda path, g_bar prints an error message
with details of what to do.

Change-Id: Ib39f964b4f43f79379f00a3331ea4dc88183ed63

11 years agoMerge "Extended build information output and reference build type" into release-4-6
Erik Lindahl [Mon, 26 Nov 2012 13:30:00 +0000 (14:30 +0100)]
Merge "Extended build information output and reference build type" into release-4-6

11 years agoFixes #1035 NaN in g_cluster output.
David van der Spoel [Mon, 26 Nov 2012 11:17:13 +0000 (12:17 +0100)]
Fixes #1035 NaN in g_cluster output.

Now always initializes the masses of the atoms to prevent
division by zero downstream.

Change-Id: I1b38ccc7982d4340ed068535f7b7dd8e75e1a4c4

11 years agoadded nbnxn analytical Ewald correction kernels
Berk Hess [Thu, 22 Nov 2012 12:15:07 +0000 (13:15 +0100)]
added nbnxn analytical Ewald correction kernels

In single precision on Bulldozer these kernels are 15% faster than
the quadratic-spline table correction, on Sandy Bridge 2%.
These kernels are only selected with AVX in single precision.

Change-Id: I1c3eb3b24b5570107fe3fa0c4b03fe5e215c79c8

11 years agoExtended build information output and reference build type
Teemu Murtola [Sat, 24 Nov 2012 05:14:35 +0000 (07:14 +0200)]
Extended build information output and reference build type

mdrun -version (and -version flag for other binaries as well) now
contains more information about what was compiled in, as well as
compiler information and versions of external libraries used.
Also added C++ compiler information to mdrun log output.
When GPU builds are enabled there is also version information
about CUDA SDK, nvcc, driver and runtime.

A new "Reference" build type has been added to CMake. This turns
off lots of options and should be used when generating reference
values for our regression tests.

Change-Id: I7532bebdaeb1207c4f6e69d422b0f13da83e3960

11 years agoUse stat for gmx_is_file. Fix get_libdir with symlinks.
Roland Schulz [Sat, 24 Nov 2012 05:07:35 +0000 (00:07 -0500)]
Use stat for gmx_is_file. Fix get_libdir with symlinks.

In commit 4e057440520c1 I used lstat instead of stat confusing the
two. The commit tried to fix the misidentification of directories.
There is no need to distinquish between symlinks and files (and
thus break it if a binary is a symlink).

Change-Id: Ie964e826729a35f11516fb3d002ebc01cbb7a564

11 years agoMerge "removed group non-boneded call with verlet scheme" into release-4-6
Roland Schulz [Fri, 23 Nov 2012 20:09:32 +0000 (21:09 +0100)]
Merge "removed group non-boneded call with verlet scheme" into release-4-6

11 years agoMerge "improve FindGROMACS.cmake" into release-4-6
Roland Schulz [Fri, 23 Nov 2012 20:07:44 +0000 (21:07 +0100)]
Merge "improve FindGROMACS.cmake" into release-4-6

11 years agoForce C++ linking of the gpu_utils
Roland Schulz [Sun, 11 Nov 2012 20:30:50 +0000 (15:30 -0500)]
Force C++ linking of the gpu_utils

As the gpu_utils module contains some exception handling (in memtestG80)
we need to force C++ linking of this library. This allows us to remove
the --add-needed linker flag which was not the appropriate solution for
the otherwise failing linking due to the following ld error:
undefined reference to symbol '__cxa_throw@@CXXABI_1.3'

Change-Id: I333b5506abdee2f790781a6524c475c56db6eac0

11 years agoMerge "Updates to CMake treatment of OpenMP" into release-4-6
Szilárd Páll [Fri, 23 Nov 2012 01:56:36 +0000 (02:56 +0100)]
Merge "Updates to CMake treatment of OpenMP" into release-4-6

11 years agoremoved group non-boneded call with verlet scheme
Szilard Pall [Thu, 22 Nov 2012 18:03:16 +0000 (19:03 +0100)]
removed group non-boneded call with verlet scheme

With the verlet scheme non-bonded calculations are started from
do_force_cutsVERLET(), unlike in the case of group scheme which does
this in do_force_lowlevel(), one level lower. However, the conditional
that prevented do_force_lowlevel() to call do_nonbonded() with verlet
was incorrect leading to an unnecessary, but more or less harmless
do_nonbonded() call. This commit corrects the behavior and also moves
the check inside do_force_lowlevel().

Additionally, a subcounter start call was missing with GB, this has also
been corrected.

Change-Id: If593fd577a5647e6047b5698d4505c1a2d611e05

11 years agoUpdates to CMake treatment of OpenMP
Mark Abraham [Sat, 17 Nov 2012 20:41:25 +0000 (21:41 +0100)]
Updates to CMake treatment of OpenMP

Change-Id: I369cd3466c47c7ebbad2f2b1d893112ef15581f3

11 years agoMerge changes I88f0dcef,I86b2a8cf,I70fb7e6d into release-4-6
Roland Schulz [Fri, 23 Nov 2012 00:11:14 +0000 (01:11 +0100)]
Merge changes I88f0dcef,I86b2a8cf,I70fb7e6d into release-4-6

* changes:
  Fix for icc 13 optimization-related issue and TIP4P kernel update.
  Implemented RMS-based force tolerance in gmxcheck
  Fixed LJ-14 error in free energy

11 years agoFix for icc 13 optimization-related issue and TIP4P kernel update.
Erik Lindahl [Thu, 22 Nov 2012 20:24:06 +0000 (21:24 +0100)]
Fix for icc 13 optimization-related issue and TIP4P kernel update.

Worked around icc enthusiastic memory optimization in SSE4.1 kernels,
and corrected TIP4P-TIP4P RFCut kernels to also cut user-table interactions
in order to make them produce identical results to the generic
kernels.

Change-Id: I88f0dcefe5fee0e184e276c7498c50b84cb0bffa

11 years agoimprove FindGROMACS.cmake
Christoph Junghans [Thu, 22 Nov 2012 21:15:17 +0000 (14:15 -0700)]
improve FindGROMACS.cmake

* added install dirs as hints
* added code to detect gmx 4.6 beside 4.0, 4.5 and 5.0
* print version found in templates' CMakeLists.txt

Fixes #1046

Change-Id: I3ba527ab0c517d964fab06ec7f2919d10b25fdf1

11 years agoImplemented RMS-based force tolerance in gmxcheck
Erik Lindahl [Thu, 22 Nov 2012 18:21:37 +0000 (19:21 +0100)]
Implemented RMS-based force tolerance in gmxcheck

This patch reduces the number of false force errors
in trajectory comparisions significantly by scaling
the absolute tolerance by the RMS of the force
components. In addition, this also makes the abstol
argument independent of units. This new routine is
used for forces, virials and pressure, but not
coordinates or velocities.

Change-Id: I86b2a8cfe0612a2e7ec45f425d71b501c5d333be

11 years agoFixed LJ-14 error in free energy
Erik Lindahl [Thu, 22 Nov 2012 17:28:45 +0000 (18:28 +0100)]
Fixed LJ-14 error in free energy

This bug was introduced when I implemented the new separate
1,4-evaluation of free energies, and failed to take the
now-included 6.0 & 12.0 prefactors in c6 & c12 into account.
The net effect is merely that it altered the softcore power
slightly, which caused it to deviate somewhat from the reference
value in the regression testing.

Change-Id: I70fb7e6da7186b0f10b654d060e1e1275f3676e9

11 years agoSpeed up mdlib compilation by reordering file globs
Mark Abraham [Thu, 22 Nov 2012 13:42:59 +0000 (14:42 +0100)]
Speed up mdlib compilation by reordering file globs

Change-Id: I5672fe6001b19e872636a06c6ed15281e00d0ab2

11 years agounset MPI detection leftover cache variables
Szilard Pall [Thu, 22 Nov 2012 03:33:57 +0000 (04:33 +0100)]
unset MPI detection leftover cache variables

The MPI_INFO_BIN and MPINAME_BIN variables can be left in the cache
as non-advanced variables because these are results of find_file search.

Change-Id: Id4978ab75680eab6246f25e02e3785412b6d75ac

11 years agoMerge "Fix g_msd -mol" into release-4-6
Christoph Junghans [Tue, 20 Nov 2012 16:29:05 +0000 (17:29 +0100)]
Merge "Fix g_msd -mol" into release-4-6

11 years agoMerge "Fixes bug in g_hbond that makes it produce fatal error." into release-4-5...
Christoph Junghans [Tue, 20 Nov 2012 16:27:31 +0000 (17:27 +0100)]
Merge "Fixes bug in g_hbond that makes it produce fatal error." into release-4-5-patches

11 years agoFixes bug in g_hbond that makes it produce fatal error.
David van der Spoel [Tue, 20 Nov 2012 10:58:18 +0000 (11:58 +0100)]
Fixes bug in g_hbond that makes it produce fatal error.

Rather than crashing with a range check error when there
are no hydrogen bonds the code now prints to stderr and
continues normally.

Change-Id: Idc9fddf8bfac9989bc1aa3a9c552b08580f99949

11 years agoFix CXX/C mismatch of flag/macro for gmxCFlags
Roland Schulz [Mon, 19 Nov 2012 21:44:15 +0000 (16:44 -0500)]
Fix CXX/C mismatch of flag/macro for gmxCFlags

Change-Id: Ieb87927e24688a29af284b46be3359bbc57d8891

11 years agoMerge release-4-5-patches into release-4-6
Roland Schulz [Tue, 20 Nov 2012 02:17:30 +0000 (21:17 -0500)]
Merge release-4-5-patches into release-4-6

Conflicts:
src/tools/gmx_tune_pme.c

Change-Id: I924851995261a7777def8a5dea168597aabf0e0d