checks for mdrun rerun with energy groups and possible GPUs not working correctly
In 587c629 I added some behaviour to help avoid confusion about energy groups and
mdrun -rerun on GPUs.
It doesn't work with
-nb auto, probably because the checks that the inputrec has an energy group happens before it is read from the .tpr file. I didn't check the behaviour, and our practice of calloc'ing structs to zero meant none of the code checkers thought this was a problem.
Fix mdrun -nb auto -rerun with GPU and energy groups
inputrec was being used after calloc, but before being read from the
.tpr file. This meant mdrun -nb auto -rerun behaved as if -nb gpu has
been used (gave a fatal error).
Moved the code that regulates whether GPUs are supported (e.g. with
Verlet+energy groups) into the new function
nbnxn_gpu_acceleration_supported(), so it can be used consistently
with other such checks. Split the old nbnxn_acceleration_supported()
into nbnxn_gpu_acceleration_supported() and nbnxn_simd_supported(),
which seems a bit simpler given that the old code was called twice,
with different constant values for bGPU.
Made the thread-MPI launch code aware of bUseGPU, so that we can call
nbnxn_gpu_acceleration_supported once and do all the things correctly.
The fatal error for mdrun -nb gpu -rerun with energy groups is now
issued by SIMMASTER in runner.cpp, rather than in md.cpp.
Despite appearances, this change doesn't alter much mdrun behaviour,
except as mentioned for -rerun, and that GPU detection is now run
for mdrun -rerun when we will not end up using those GPUs.