alexxy/gromacs.git
11 years agoMerge "Removed orphan file" into release-4-6
Szilárd Páll [Wed, 19 Dec 2012 14:10:05 +0000 (15:10 +0100)]
Merge "Removed orphan file" into release-4-6

11 years agoMerge "Fix license text printed by programs." into release-4-6
Roland Schulz [Wed, 19 Dec 2012 13:54:49 +0000 (14:54 +0100)]
Merge "Fix license text printed by programs." into release-4-6

11 years agoMerge changes Idc652236,If03cf569 into release-4-6
Roland Schulz [Wed, 19 Dec 2012 13:49:59 +0000 (14:49 +0100)]
Merge changes Idc652236,If03cf569 into release-4-6

* changes:
  renamed gmx_x86_simd_macros.h to gmx_simd_macros.h
  implemented nbnxn AVX-256 2x(N+N) kernels

11 years agoMerge "issue error if GPU ID is provided with GPU acc. off" into release-4-6
Roland Schulz [Wed, 19 Dec 2012 13:16:08 +0000 (14:16 +0100)]
Merge "issue error if GPU ID is provided with GPU acc. off" into release-4-6

11 years agoRemoved orphan file
Mark Abraham [Wed, 19 Dec 2012 12:19:51 +0000 (13:19 +0100)]
Removed orphan file

The use of this check was removed long ago, the bug report that
it cites is invalid, and its detection functionality is duplicated
in gmxGetCompilerInfo.

Change-Id: I8478e155376930c27d259214e13d9b1e6e7a9cca

11 years agoMerge "Fixes redmine issue #1071" into release-4-6
Christoph Junghans [Tue, 18 Dec 2012 23:22:23 +0000 (00:22 +0100)]
Merge "Fixes redmine issue #1071" into release-4-6

11 years agoissue error if GPU ID is provided with GPU acc. off
Szilard Pall [Mon, 17 Dec 2012 21:28:28 +0000 (22:28 +0100)]
issue error if GPU ID is provided with GPU acc. off

Manually setting the GPU IDs is an implicit "GPU on" request from the
user, so we need to fail if mdrun in compiled without GPU support.
Additionally, added hint to what content is expected in the GPU ID
string to the respective errors and changed an incorrect collective
fatal.

Change-Id: Iebce58c0626889d047eebebd8e4547d4f1e9ff26

11 years agorenamed gmx_x86_simd_macros.h to gmx_simd_macros.h
Berk Hess [Wed, 12 Dec 2012 15:25:08 +0000 (16:25 +0100)]
renamed gmx_x86_simd_macros.h to gmx_simd_macros.h

This is in preparation for non-x86 SIMD acceleration.

Change-Id: Idc652236f4b2e0f48e759d579c798c1b0dc6944f

11 years agoimplemented nbnxn AVX-256 2x(N+N) kernels
Berk Hess [Mon, 10 Dec 2012 17:20:24 +0000 (18:20 +0100)]
implemented nbnxn AVX-256 2x(N+N) kernels

With AVX-256 nbnxn kernels are faster with 2x(4+4)=4x4 than 4x8.
To reduce the number of nbnxn kernels, there are no longer both
simd128 and simd256 kernels, but simd_4xn and for AVX-256 additionally
simd_2xnn kernels. The nbnxn search code is simplified significantly,
as it no longer has 128-bit and 256-bit simd simultaneously.
The SIMD pair-search and kernel configuration is now separated from
the SSE SIMD bounding box code configuration.

Additionally the label x86_simd in all nbnxn files is replaced by simd
only, in prepartion for non-x86 SIMD acceleration.

Change-Id: If03cf569cf918dcec675fbcb43e1ff3a30528f74

11 years agoMerge "reduced PLINCS communication with H-bond constraints" into release-4-6
Szilárd Páll [Mon, 17 Dec 2012 22:43:00 +0000 (23:43 +0100)]
Merge "reduced PLINCS communication with H-bond constraints" into release-4-6

11 years agoFix license text printed by programs.
Teemu Murtola [Mon, 17 Dec 2012 15:51:09 +0000 (17:51 +0200)]
Fix license text printed by programs.

Since source files are now licensed under LGPL, it doesn't make much
sense for the programs to indicate they are still under GPL.
Follow-up to I1c507b3, which seems to have missed this.

Part of #818.

Change-Id: I44ffcf75f4840326d09f924249619077ea5a1013

11 years agoFixes redmine issue #1071
Michael Shirts [Fri, 14 Dec 2012 05:02:38 +0000 (00:02 -0500)]
Fixes redmine issue #1071

Fixes issue where pull code can crash grompp if foreign lambda
is not defined in the mdp.  Some simplification of code path for
initialization of lambda as a side product.

Change-Id: I6c6a0c1591cc332efddb769f3552c0379e7dc708

11 years agoFix typo
Mark Abraham [Thu, 13 Dec 2012 21:37:43 +0000 (22:37 +0100)]
Fix typo

Change-Id: Id0fcbaa04647f3e3f4867686e207637efac8cdae

11 years agoMerge "Fix compilation with PGI" into release-4-6
Christoph Junghans [Tue, 11 Dec 2012 17:52:15 +0000 (18:52 +0100)]
Merge "Fix compilation with PGI" into release-4-6

11 years agoreduced PLINCS communication with H-bond constraints
Berk Hess [Fri, 7 Dec 2012 16:29:10 +0000 (17:29 +0100)]
reduced PLINCS communication with H-bond constraints

When only constraining bonds involving hydrogens, there are
at most two sequential constraints connected. In that case
we now only communicate once in PLINCS.

Change-Id: I841c22b19574b1bb787b5be46637b69c77f1f757

11 years agoMerge "force C++ linking of the gpu_utils" into release-4-6
Christoph Junghans [Mon, 10 Dec 2012 17:58:56 +0000 (18:58 +0100)]
Merge "force C++ linking of the gpu_utils" into release-4-6

11 years agoMerge "fixed GPU pair-search with GMX_CPU_ACCELERATION=None" into release-4-6
Roland Schulz [Sun, 9 Dec 2012 01:01:45 +0000 (02:01 +0100)]
Merge "fixed GPU pair-search with GMX_CPU_ACCELERATION=None" into release-4-6

11 years agoMerge "Fix build of template and other external code." into release-4-6
Roland Schulz [Sun, 9 Dec 2012 00:59:53 +0000 (01:59 +0100)]
Merge "Fix build of template and other external code." into release-4-6

11 years agoFix compilation with PGI
Roland Schulz [Fri, 7 Dec 2012 05:26:43 +0000 (21:26 -0800)]
Fix compilation with PGI

- The GMX_TEST_CFLAG with /ARCH doesn't fail because it isn't
  recognized as flag. Thus it is added and then causes trouble later
  because it is treated as filename.
- Extra { } for omp ordered
- Add warning to not use PGI because it fails the regressiontests
  (12.9 and 12.10) or crashes during the compilation with internal
  compiler errors (12.5, 11.9) (I didn't test more than those
  4 versions).
- I think it is worthwile to fix the first two issues even if PGI
  is not recommended. They could also affect other compilers and
  furture PGI version hopefully don't produce incorrect results.

Change-Id: I6ea24498a6c6712a8ad4b604a0b3c685de1ce0be

11 years agofixed GPU pair-search with GMX_CPU_ACCELERATION=None
Berk Hess [Fri, 7 Dec 2012 16:49:11 +0000 (17:49 +0100)]
fixed GPU pair-search with GMX_CPU_ACCELERATION=None

Fixes #1042 and fixes #1062

Change-Id: I95ed242823aa1c108fc6c26bedc88062a0cd81d7

11 years agoMake SSE4.1 warning clearer
Roland Schulz [Thu, 6 Dec 2012 12:23:20 +0000 (07:23 -0500)]
Make SSE4.1 warning clearer

"Disable SSE4.1" can be misunderstood for a suggestion to set
the acceleration to "None".

Change-Id: If83339c2fedd8dcf47aa4a841128cf08cc369a90

11 years agoNew beta release: 4.6-beta2
Mark Abraham [Wed, 5 Dec 2012 20:31:43 +0000 (21:31 +0100)]
New beta release: 4.6-beta2

Change-Id: I3c9ac75258154b5779516ddd0de0d23b1e972803

11 years agoApply LGPL license to new files
Mark Abraham [Wed, 5 Dec 2012 20:30:14 +0000 (21:30 +0100)]
Apply LGPL license to new files

Note the AdResS python generator is not currently used
(or functional) but in case it is used later, it's
there and licensed and so will its output be licensed.

TODO:
Still same as last LGPL license commit

Change-Id: I8b62d5160380c4da6f25eeacd6809fec6aac55f2

11 years agoUpdates for install guide
Mark Abraham [Wed, 5 Dec 2012 20:55:53 +0000 (21:55 +0100)]
Updates for install guide

Change-Id: I9448ba0ea372f330f16172de73e3285c1a682032

11 years agoRemoving (inaccurate) virial temperature calc.
Michael Shirts [Sat, 1 Dec 2012 20:23:47 +0000 (15:23 -0500)]
Removing (inaccurate) virial temperature calc.

Removing the virial temperature, which is not a reliable measure.
Earlier, I had put in a calculation of temperature via the virial
to try to validate the potential energy distribution. It turns out
this is not a good way of doing things, as the virial temperature
differs from the true temperature by a factor proportional to the
pressure, which is not very useful for sentitive calculations.  It's
better to use the ensemble validation relationships I developed.
So in the spirit of simplifying the code (which we all agree needs
to be done), I'm removing this calculation.

Change-Id: Ic942b9af294d928d1675de4f45436dc43aff9649

11 years agoFix build of template and other external code.
Teemu Murtola [Thu, 6 Dec 2012 11:32:28 +0000 (13:32 +0200)]
Fix build of template and other external code.

Installed headers need to use relative include paths.
Broken by Ied26158 (which was part of #701).

Change-Id: I2d9e6ee3878ae1bfa70286996e490abad00f19a0

11 years agoRe-enable AdResS feature
Sebastian Fritsch [Fri, 23 Nov 2012 03:09:40 +0000 (20:09 -0700)]
Re-enable AdResS feature

* updated generic AdResS kernel
* added nb_kernel_adress_template_c.pre
* added gmx_mblist_interaction_type
* seperate neighbour lists for the adress hybrid kernel(s)
* put_in_list_adress decides for each ij pair whether to use
  * standard kernels (if interactions are explict or coarse-grained)
  * add them to the adress list to use the AdResS kernel
* removed obsolete TODOs
* removed obsolete pureex/purecg booleans from mdatoms
NOTE
* make_nb_kernel_adress_c.py currently unused, actually the generic AdResS Kernel seems to perform quite well already (faster than the old implementation)

Change-Id: I7bc41aa5b122f3b0c1aef8ae3210d0bbba7efb02

11 years agoremoved last OpenMP O(nthreads) bottleneck
Berk Hess [Sat, 1 Dec 2012 19:11:29 +0000 (20:11 +0100)]
removed last OpenMP O(nthreads) bottleneck

The nbnxn non-bonded force buffer clear would zero the full force
buffer for every OpenMP thread, which lead to O(nthreads) operations.
Now each threads only clears block of the buffer is actually uses.
The buffer flagging procedure has been simplified and the reduction
has been made more efficient. With domain decomposition there is not
much improvement yet, here we should change the assignment of pairs
to threads.

Change-Id: Ib657f8eaa394afdd82086dcc59cbb8c5926f77f0

11 years agoEliminate confusion from pkgconfig FFTW detection
Mark Abraham [Fri, 30 Nov 2012 15:50:10 +0000 (16:50 +0100)]
Eliminate confusion from pkgconfig FFTW detection

If pkgconfig fails to find FFTW, it emits a CMake status messge,
but we do our own detection immediately afterwards. Seeing
a failure followed by a success can be confusing to users, so we
let them know we're not worried by pkg-config failing.

Change-Id: If270dd5d6fe10bc3a58a6fa56c9028cf61859d74

11 years agodon't warn during configuring if no GPUs were found
Szilard Pall [Wed, 5 Dec 2012 02:19:41 +0000 (03:19 +0100)]
don't warn during configuring if no GPUs were found

This change avoids issuing the post-configure GPU acceleration warning
if no GPUs were found in the build machine.

Change-Id: I63962c43ec9a8b9ee4f5ec2d1a19d4d819419ff7

11 years agofixed obsolete gmx_fatal in OpenMM build
Christoph Junghans [Mon, 26 Nov 2012 03:27:29 +0000 (20:27 -0700)]
fixed obsolete gmx_fatal in OpenMM build

Change-Id: I29686a897e1e38b2cc98165ba6c9521d3e29d0c6

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 agoforce C++ linking of the gpu_utils
Szilard Pall [Mon, 8 Oct 2012 22:54:56 +0000 (00:54 +0200)]
force C++ linking of the gpu_utils

Commit c0180203d4247d5e6 forced C++ linkage of all main functions.
But Carlo Camilloni reported that this can still give linker
errors. This should enforce C++ linkage also of libgmx.

Change-Id: I9a82637b792d727ea95e1dc6990099b621fc8ef2

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