The interactive file manager requires Javascript. Please enable it or use sftp or scp.
You may still browse the files here.
| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| README.md | 2025-02-06 | 4.2 kB | |
| v0.22.0 source code.tar.gz | 2025-02-06 | 47.1 MB | |
| v0.22.0 source code.zip | 2025-02-06 | 47.2 MB | |
| Totals: 3 Items | 94.3 MB | 0 | |
The package is rewritten to use Enzyme.jl rather than Zygote.jl for differentiable simulations. This allows mutating code to be used, leading to better performance on CPU and GPU. In addition, faster CUDA kernels are added and support for other GPU backends is added via KernelAbstractions.jl.
Breaking changes
CoordinateLogger,VelocityLoggerandForceLoggerare renamed toCoordinatesLogger,VelocitiesLoggerandForcesLoggerrespectively for consistency.- During system setup the
gpukeyword argument is replaced byarray_type, withCuArraygiving the same behaviour as before. Use of other array types such asROCArrayis supported. Theuse_cell_listkeyword argument is replaced withneighbor_finder_type, with the default depending on the backend. - The second type parameter to
Systemis changed from aBoolindicating whether the system is on the GPU to the array type of the system. - Giving the
force_unitsandenergy_unitsis no longer required when constructing pairwise interactions such asLennardJones. In addition, mixing functions and shortcut functions can now be given to determine how to combine atomic parameters and when to skip the interaction respectively. - The arguments to
forceandpotential_energyfor pairwise and specific interactions are changed to allow more flexible interaction definitions, depending for example on the velocities or step number. - Differentiable simulations are no longer compatible with Zygote.jl, but can now be carried out using Enzyme.jl. This is faster and more memory-efficient.
- The
solutefield toAtomis removed and theatom_typefield is added.weight_solute_solventis no longer an option forLennardJones, though similar functionality is available withatom_typeand mixing functions. box_volumeis renamed tovolume.run_loggers!is renamed toapply_loggers!to avoid confusion with therun_loggersfunction argument.- The abstract types
PairwiseInteractionandSpecificInteractionare removed. Custom interactions no longer need to sub-type anything. - Extensions are added for code requiring Enzyme.jl, CUDA.jl and KernelDensity.jl, so relevant imports are now required before using those features.
Non-breaking changes
- Support for Julia versions before 1.10 is dropped.
New features
- Backends supported by KernelAbstractions.jl can be used to run simulations by using the appropriate array type or the
array_typekeyword argument during system setup. - The Berendsen pressure coupling method is added as
BerendsenBarostat. - The
densityanddipole_momentfunctions are added. - The
AshbaughHatchandYukawapotentials are added. VolumeLoggerandDensityLoggerare added.- The
rngkeyword argument is added toplace_atoms,place_diatomicsandrandom_coord, allowing reproducible coordinate generation. - The
array_typefunction is added, giving the array type of a system or array. - The step number can be given as a third argument with a default of
0toforces,potential_energyandvirialacting on a system. This allows time-dependent forces, with the caveat that the step number resets to 1 every timesimulate!is called and can also be 0 to calculate forces before the first step. - A method is added to
random_velocities!which takes in and modifies the velocities as the first argument.
Performance improvements
- Better CUDA force and potential energy kernels significantly improve performance on CUDA compatible devices. The
GPUNeighborFinderis added for this path but does not calculate neighbors, which are calculated each step in the kernels. - Simulations are faster on both CPU and GPU due to mutating code leading to fewer memory allocations.
- System setup from a file is made much faster.
- The package is faster to load as a number of dependencies have been removed.
- The performance of implicit solvent on CPU is improved.
Bug fixes
- A bug when using more than two interactions on the GPU is fixed.
- A type conversion bug in
CellListMapNeighborFinderconstruction is fixed.