The CUDA project has enabled scientists to utilize NVIDIA's many-core Graphical Processor Unit (GPU) to solve complex computational problems. Beside being a very fast processor the GPU is relatively cheap, and is thus an ideal computational unit for low-cost high-performance supercomputing.
RUMD is a high-performance molecular dynamics simulation software package for NVIDIA's GPU. RUMD is optimized for simulating small to medium size systems composed of spherical particles, as well as molecules.
RUMD consists of a library, easy-to-use Python interface, and a set of post-simulation data analysis tools.
- 09/04 - 2020
Version 3.5 is available for download
- Support for CUDA 10
- Transition to python3
- Builds with swig 4
- python script for determining configurational adiabats, adiabat.py
- SAAP pair potential for noble elements
- Correct order of columns in rumd_stats
- Extra call to CalcF after main loop to ensure consistency of positions and forces for configurations saved after the run is finished.
- Added SquaredDisplacementCalculator
- HydrodynamicCorrelations function for on-the-fly calculation of hydrodynamic correlation functions
- User interface for setting up molecular interactions has been changed to match more closely that for atomic interactions, where the user creates the potential object, can change parameters via a SetParams function, and adds it to the simulation object.
- 21/05 - 2019
Version 3.4 is available for download
- Support for CUDA 9
- Added IntegratorNPTLangevin which allows NPT and NVT simulations to be run with a Langevin thermostat. Anisotropic barostatting is also allowed.
- Relaxation time argument to IntegratorNVT constructor. Not required yet---the default value is 0.2. But it will be made a requirement in future.
- Positions can be set from Python, allowing eg use of minimization algorithms coded in Python.
- rumd_msd computes the velocity autocorrelation function.
- New type of output scheduling limlin which allows a limited number of equally spaced configurations to be written near the start of each block. Useful for example calculationg the velocity autocorrelation function.
- Script for converting to double precision added.
- Support for doxygen.
- Improvements to constraint algorithm, also bug fixed for case of non-equal molecule sizes.
- Visualization tool rumd_image based on POV-ray added.
- tool rumd_html added which converts a simulation to a html page.
- Fix to CollectiveDensity
- Minor fixes and updates in various places including documentation.
- Some internal restructuring of output managers to simplifying and allow information from integrators and potentials to be easily included in the energies file.
- Internal restructuring of MoleculeData (ongoing work).
- 21/07 - 2017
Version 3.3 is available for download
- The "effective medium theory" many-body interatomic potential for metals has been added
- Python 3 compatibility has been added
- Some minor bugs fixed (e.g. small memory leak in NeighborList)
- Small improvements to set-up and analysis tools.
- Added support for CUDA 8 and GTX10XX / Pascal architecture and Debian 9
- 02/06 - 2016
Version 3.2 is available for download
- Fix for bug introduced by fix of parallel reduction bug (involving overwriting other arrays when numParticles not a power of 2).
- Minor updates for Axilrod-Teller potential
- 27/04 - 2016
Version 3.1 is available for download
- A new integrator, IntegratorNPTAtomic which simulates the NPT ensemble for atomic systems (combined barostat + thermostat)
- A specialized pair potential for Coulomb interactions: Pot_ShiftedForceCoulomb (instead of using IPL_n with n=1). The long range part of the Coulomb interaction is omitted but for bulk systems this is not a problem.
- Performance optimizations: for large molecular systems due to better updating after sorting, for general molecular systems due to better exclusion list processing, and faster intra molecular forces (atomicAdd), and for systems with multiple pair potentials (atomicAdd).
- New rumd_init_conf tool for creating configuration files for atomic systems in a variety of crystal lattices (older ones such as rumd_init_conf_FCC are still present but deprecated).
- Upgraded tool for creating configuration files for molecular systems, renamed from rumd_sfg to rumd_init_conf_mol
- Ability to set particle masses within python script (as opposed to hacking the configuration file)
- Python module and function RunCompress to gently change density (particularly useful when setting up molecular configurations)
- Some changes in the Python paths/package structure. Setting paths is slightly simpler, but requires changes to existing scripts.
- Two bugs fixed: (1) A race condition to non-thread-safe implementation of parallel reduction summation used in the thermostat. This was manifest as occasional slight jumps in the energy for large systems, but had minimal effect on physically relevant quantities. (2) Certain combinations of lengths for non-cubic boxes were incorrectly recognized (simulated as cubic boxes).
- Removed restriction on order for adding pair potentials versus molecular forces (exclusions correctly implemented either way)
- More output is under control of "verbose" flag
- LESB and RSB now at same level in inheritance tree, removes confusion when identifying type
- 16/03 - 2015
Version 3.0 is available for download
Version 3.0 represents a major upgrade, but most of the changes are under the hood, in the way the neighbor-list is stored and used for pair-force calculation, the way it is generated (actually two different ways, appropriate for small and large systems), and way potential parameters are stored. These changes were necessary to obtain optimal performance on the newest cards (Kepler). Users will not need to change any scripts. The main changes from a user point of view (apart from improved performance) are that there is no longer a hard-coded maximum number of types allowed in a simulation, and that large molecular systems can be simulated. Regarding performance, the autotuner takes care of choosing the optimal parameters, but the defaults work well in most cases. Note that some changes to the interface appeared in the last update to version 2.1; see the release notes for version 2.1.2.
- 16/02 - 2015
Version 2.1.2 is available for download
- Several bugs fixed: Most noteworthy are
- (1) incorrect build of neighbor list when using Lees-Edwards (for example in SLLOD simulations) under certain circumstances.
- (2) Improper dihedral angles are ignored.
- Improvements to configuration-making tools (including new one for BCC crystal).
- Exponential pair potential added.
- CalculateMolecularStress now calculates the molecular stress due to all PairPotentials present (not just one).
- New analysis tool, analyze_energies.py.
- Slight change in interface:
- for setting intra-molecular forces (bonds, constraints, angles, dihedrals), the keyword type has been replaced by bond_type, angle_type, dihedral_type.
- 23/06 - 2014
Version 2.1.1 is available for download
- Compatible with CUDA 5.5.
- Minor problems with paths fixed.
- Some limits on system sizes in molecular systems removed.
- New tests added.
- Two small bugs fixed: one involving correct accounting of periodic images in sheared systems which affected the calculation of the molecular stress, the other involving the degrees of the freedom not being correctly determined following a restart.
- Features added to analysis tools.
- Some other small improvements.
- 09/12 - 2013
Version 2.1 is available for download
Main new features:
- Memory optimizations to allow over a million particles (atomic systems only for now though, no molecules)
- SLLOD equations of motion integrator for molecular systems (using the molecular formulation of the SLLOD algorithm and thermostat)
- User-defined "runtime" actions to be included in the main loop
- TetheredGroup class for manipulating tethering a group of particles to a set of lattice sites by springs.
- Support for more types, maximum number of types is now 16 by default.
- Improvements to the autotuner (speed and reliability)
- Newton's third law now assumed by default, so not necessary to call SetParams for both i,j and j,i.
- Improvements to analysis tools.
- 12/09 - 2013
Version 2.0.2 is available for download
This is a bug-fix release. Fixes a problem (present since version 2.0) with missing neighbors when unlike types have a cut-off distance larger than either of the corresponding like-like cutoff distances.
- 04/06 - 2013
Version 2.0.1 is available for download
This is a bug-fix release: Fixes a problem with particle sorting when scaling the system.
- 31/05 - 2013
Version 2.0 is available for download
Major new features: (1) Optimization for large systems via spatial sorting and (2) the Autotune script which automatically chooses the optimal values for the internal parameters. In addition there are some new pair potentials and analysis tools, improved documentation within Python (docstrings). A user manual is nearly complete and will be available here soon.
- 29/06 - 2012
Version 1.2.2 is available for download
This is a bug-fix release: The evaluation of the pressure virial when using shifted force interactions is now correct.
- 29/05 - 2012
Version 1.2.1 is available for download
This is a bug-fix release: Setting the momentum to zero after loading a restart file is now done correctly.
- 14/01 - 2012
Version 1.2 is available for download
With this release RUMD now supports
- Contraint/rigid bond simulations
- Bond angle interactions
- Dihedral angle interactions
- More flexible Python interface for user-defined run-time data analysis
- Standard Monte-Carlo simulations
- Potential energy minimization