drop old CUDA support (3.2 and/or 4.0)
Dropping support for older CUDA version would not only allow code simplification, but also less testing. The versions in question are v3.2 (released Nov 2010) and v4.0 (May 2011).
Dropping v3.2 support would allow switching to page-locking memory using
cudaHostRegister() instead of having to call
cudaHotsMalloc() for the CPU-side memory that will be used in transfers to/from the GPU. Note that alignment and size requirements (page size dependent) apply.
Also dropping v4.0 support would allow removing the "legacy" kernels which are only used with the <=v4.1 CUDA versions.
While the former would make it impossible to build with CUDA 3.2, the drawback of the latter is only performance degradation. Also note that much of the Fermi hardware was launched in the 3.2-4.0 era and many are sticking to the old/original drivers like v270.x (older kernel dependency, stubbornness?) which means that they are limited to these older CUDA versions as newer CUDA requires newer drivers.
remove legacy CUDA non-bonded kernels
This commit drops the legacy set of kernels which were optimized for use
with CUDA compilers 3.2 and 4.0 (previous to the switch to llvm backend
For now the only consequence is slight performance degradation with CUDA
3.2/4.0, the build system still requires CUDA >=3.2 as the kernels do
build with the older CUDA compilers. Whether to require at least CUDA
4.1 will be decided later.
#2 Updated by Szilárd Páll over 3 years ago
+ we'll need a few more sets of kernels for shift/switch and hopefully energy groups for which we'd have to maintain a set of legacy kernels as well. Initially the work required to root out the legacy stuff may be rather high, but in the long term it will pay off.
After discussing with Berk, we decided that I'll drop a mail to gmx-users and gmx-dev to see whether there are any stuck with old CUDA.
However, note that I will prioritize features rather than this code maintenance - at least for 5.0.