1. 09 Feb, 2026 1 commit
    • Peter Eastman's avatar
      API for querying devices (#5192) · add95438
      Peter Eastman authored
      * API for querying devices
      
      * CUDA and HIP implementations of getDevices()
      
      * Fix test failures
      
      * Fix test failures
      
      * CUDA returns correct devices even if no context has been created
      
      * Return a single device for Reference and CPU
      
      * Fix CI failure
      add95438
  2. 23 Sep, 2025 1 commit
  3. 12 Sep, 2025 1 commit
    • Evan Pretti's avatar
      Add constant potential method (#4870) · f55abcaa
      Evan Pretti authored
      
      
      * Initial implementation of C++ API
      
      * Add kernel interface and information for API generation
      
      * API updates for updating electrode parameters
      
      * Add serialization proxy for ConstantPotentialForce
      
      * Update file headers
      
      * Add CG error tolerance and fix units on getCharges() return value
      
      * Initial implementation of matrix solver
      
      * Fixes and conjugate gradient solver
      
      * Try to fix Linux and Windows builds
      
      * Make sure charge constraint target is on total charge
      
      * Restore handling of exceptions like NonbondedForce since they won't involve electrode atoms
      
      * Ameliorate numerical instability in constrained conjugate gradient
      
      * Fix uninitialized pointers, memory leak, and style
      
      * Set CG tolerance units in Python API
      
      * Test ConstantPotentialForce serialization
      
      * Read/write ExceptionsUsePeriodicBoundaryConditions as bool
      
      * Improve constrained conjugate gradient robustness to roundoff error accumulation
      
      * Recompute matrix if electrode atoms move due to setPositions()
      
      * Tolerance is now in gradient (potential) units again
      
      * Add neutralizing background correction
      
      * Add Python API tests
      
      * Fixes for CG and nonbonded exceptions
      
      * Add initial tests checking against existing NonbondedForce behavior
      
      * Expand test suite and fix some implementation issues
      
      * Add additional tests using larger reference system
      
      * Add Gaussian test
      
      * Finish test against reference computation
      
      * CPU platform implementation
      
      * Fixes for compilation on some platforms
      
      * Fixes for constant potential with AVX/AVX2
      
      * Test linking CPU PME library to constant potential test directly
      
      * Older SWIG versions don't support Python set to C++ set conversion
      
      * Add user guide entry
      
      * Increase speed of reference test
      
      * Conditional building constant potential CPU test is unreliable
      
      * Debugging
      
      * Miscellaneous fixes and improvements for CI
      
      * Cache charges so solver will not run if system and coordinates have not changed
      
      * Preconditioner flag, stability, and automatic detection improvements
      
      * Add GPU platform-specific constant potential kernel classes
      
      * PME and device-host I/O changes to support constant potential
      
      * Initial common constant potential implementation
      
      * Constant potential fixes:
      
      * Fix preconditioner PME position/charge save/restore logic
      
      * Fix reduction synchronization in constant potential solver kernels
      
      * Add double-float accumulation for conjugate gradient solver when
        double unsupported by hardware
      
      * Improve conditioning of a test system, and make sure particles are in or
      out of cutoff for consistency and ease of comparing between platforms
      
      * Reorder guess charges for CG when atom reordering changes positions
      
      * Remove PME queue for now
      
      * Trying to debug optimized direct space derivative kernel
      
      * Remove extraneous debugging lines
      
      * Style updates; just make CPU preconditioner double precision
      
      * Debugging updated optimized direct derivatives kernel for all but OpenCL CPU
      
      * OpenCL CPU implementation of direct space derivatives, and cleanup
      
      * Try to make test even shorter to not time out on CI
      
      * Temporary - Debugging
      
      * Debugging
      
      * Debugging
      
      * Debugging
      
      * Debugging
      
      * Remove debugging code and fix reduction synchronization
      
      * Fix other reductions
      
      * Debugging - are tests hanging or just slow on CI?
      
      * Debugging
      
      * Debugging
      
      * Fix macro for case when double precision is available on hardware
      
      * Remove changes for debugging again
      
      * Try to improve matrix solver cache locality by uploading transpose
      
      * Fixes for atom ordering and periodic images
      
      * Can't rely on reorder listener for cell offset updates
      
      * Test reducing number of contexts and timing for CI
      
      * Debugging
      
      * Remove timing code and revert debugging changes
      
      * Matrix solver and plasma term optimizations
      
      * Reduce CG solver kernel calls and downloads
      
      * Don't read back convergence flag from global memory
      
      * Update PME due to refactoring in master branch
      
      * Faster matrix solver (1st step)
      
      * Faster matrix solver for CUDA
      
      * Faster matrix solver compatibility with non-CUDA platforms
      
      * Matrix solver fixes
      
      * Use warp shuffle reductions when possible
      
      * Attempt to work around intermittent compiler crash in Intel CPU OpenCL
      
      * Optimize CG solver kernel 1
      
      * Rework CG solver so some kernels can use more than 1 block
      
      * Don't run out of shared memory
      
      * Asynchronously download convergence flag while clearing buffers
      
      ---------
      Co-authored-by: default avatarEvan Pretti <pretti@sh03-17n15.int>
      f55abcaa
  4. 09 Jul, 2025 1 commit
  5. 05 May, 2025 1 commit
    • Peter Eastman's avatar
      Common implementation of NonbondedForce (#4922) · 2443dcee
      Peter Eastman authored
      * Use common API for kernels
      
      * More code uses common interface
      
      * Bug fixes
      
      * Unified interface for sorting
      
      * Simplified interface for FFT
      
      * Use common event API for synchronization
      
      * Minor changes to make code more consistent between platforms
      
      * Common implementation of NonbondedForce
      
      * Bug fixes
      
      * Flag to enable list of single pairs
      
      * CUDA and OpenCL use common implementation of NonbondedForce
      
      * Fixed compilation error
      
      * HIP uses common implementation of NonbondedForce
      2443dcee
  6. 28 Apr, 2025 1 commit
  7. 25 Apr, 2025 1 commit
  8. 23 Apr, 2025 1 commit
  9. 14 Apr, 2025 1 commit
    • Peter Eastman's avatar
      DPDIntegrator (#4799) · de180e4e
      Peter Eastman authored
      * Created DPDIntegrator class
      
      * Reference implementation of DPDIntegrator
      
      * Build neighbor list for DPDIntegrator
      
      * Minor fixes
      
      * Documentation for DPDIntegrator
      
      * Python API for DPDIntegrator
      
      * Preliminary OpenCL implementation of DPDIntegrator
      
      * Enable USE_PERIODIC
      
      * Use updated positions in DPD thermostat
      
      * Working on neighbor list for OpenCL DPDIntegrator
      
      * ReorderListener for particle types
      
      * Serialization for DPDIntegrator
      
      * CUDA implementation of DPDIntegrator
      
      * HIP implementation of DPDIntegrator
      
      * Fixed compile error in Python wrapper
      
      * Fixed compile error in wrappers
      
      * Fixed uninitialized memory in reference neighbor list
      
      * Added DPDIntegrator to C++ API docs
      
      * Fixed incorrect launch size
      
      * Fixed nan in DPD random number generator
      
      * Minor optimizations
      
      * Improved load balancing
      
      * Fixed an indexing error
      
      * Neighbor list uses the maximum cutoff of any force
      
      * Fixed HIP compilation error
      
      * Fixed access to invalid memory
      
      * Added test case for diffusion coefficient
      
      * Try to debug segfaults on CI
      
      * Debugging
      
      * Debugging
      
      * Debugging
      
      * Debugging
      
      * Debugging
      
      * Debugging
      
      * Possible fix
      
      * Debugging
      
      * Debugging
      
      * Debugging
      
      * Use correct block size on CPU OpenCL
      
      * Workaround for bug in Intel's OpenCL for CPUs
      
      * Removed an unnecessary define
      
      * Removed debugging code
      
      * Include Dart
      
      * More Intel workarounds
      
      * Workaround for error in NVIDIA OpenCL
      de180e4e
  10. 10 Mar, 2025 1 commit
  11. 22 Nov, 2024 1 commit
  12. 23 Sep, 2024 1 commit
    • Anton Gorenko's avatar
      Optimize PME spread charge kernel (#4633) · 8ea42950
      Anton Gorenko authored
      * PME_ORDER threads process one atom;
      * PME_ORDER threads access consecutive addresses;
      * No need to permute z indices with zindexTable;
      * finishSpreadCharge is needed only with fixed point charge spreading;
      8ea42950
  13. 10 Sep, 2024 1 commit
    • Peter Eastman's avatar
      Merged parallel code (#4649) · b28d2e66
      Peter Eastman authored
      * Unified lots of parallel computation code between platforms
      
      * Unified test code between platforms
      
      * Eliminated duplicated timing code
      b28d2e66
  14. 06 Sep, 2024 1 commit
    • Peter Eastman's avatar
      Optimize updateParametersInContext() (#4610) · 78902bed
      Peter Eastman authored
      * Optimize CustomNonbondedForce.updateParametersInContext()
      
      * Optimized uploading changed values to GPU
      
      * Optimized updateParametersInContext() for lots of bonded forces
      
      * Optimized updateParametersInContext() for CustomExternalForce
      
      * Optimized updateParametersInContext() for NonbondedForce
      
      * Code changes for HIP platform
      78902bed
  15. 12 Dec, 2023 1 commit
  16. 11 Dec, 2023 1 commit
  17. 02 Aug, 2023 1 commit
    • Emilio Gallicchio's avatar
      Draft integration of the Alchemical Transfer Method (ATM) plugin (#4110) · d8c67699
      Emilio Gallicchio authored
      * Draft integration of the Alchemical Transfer Method (ATM) plugin
      
      * Attempt to store and retrieve forces--does not compile
      
      * Implement addForce()/getForce() methods
      
      * Throw exception when specifying properties without a Platform (#4130)
      
      * Fixed DOF calculation for NoseHooverIntegrator (#4128)
      
      * Fix variance in documentation of VerletIntegrator (#4138)
      
      * Python API for ATMForce
      
      * Fixed compilation error
      
      * Minor cleanup of formatting and documentation
      
      * Files for ATMForce test cases
      
      * More cleanup
      
      * Removed variable groups
      
      * Test ATMForce with two particles
      
      * More tests for ATMForce plus fixes
      
      * Added missing header
      
      * Rework interface to pass displacements as vector of parameters
      
      * Revert "Rework interface to pass displacements as vector of parameters"
      
      This reverts commit 5e092031f31ded1137b677588f007add1c2d6f82.
      
      * Test with nonbonded force
      
      * Allow energy expression to be custom...
      d8c67699
  18. 24 Jul, 2023 1 commit
  19. 20 Jul, 2023 1 commit
  20. 23 May, 2023 1 commit
  21. 30 Mar, 2023 1 commit
  22. 12 Aug, 2022 1 commit
  23. 13 Apr, 2022 1 commit
  24. 01 Mar, 2022 1 commit
  25. 27 Jan, 2022 1 commit
  26. 27 Dec, 2021 1 commit
  27. 30 Nov, 2021 1 commit
  28. 04 Oct, 2021 1 commit
  29. 16 Sep, 2021 1 commit
  30. 11 Aug, 2021 1 commit
    • Josh A. Mitchell's avatar
      Move to actively maintained dependencies for API docs (#3201) · ae2fe2fd
      Josh A. Mitchell authored
      * Proof of concept matching current behaviour with Breathe
      
      * Reorganise C++ API docs to work without autosummary
      
      * Revert to Sphinx-native search
      
      * Move remaining pip deps to conda
      
      * Remove unnecessary lunrsearch templates
      
      * Remove lunrsearch from cmake
      
      * Tidy up layout of API docs
      
      * Get code blocks to work with Breathe
      
      Breathe doesn't seem to support the Doxygen <preformatted> tag.
      It does support the <code> tag, but better yet it supports using
      <verbatim> tags to embed rst into docstrings. This commit changes
      all <pre> tags to use RST verbatim, and updates the Python
      documentation machinery to support it too.
      
      * Clarified some language
      
      * Have doxygen exclude undocumented classes and have sphinx fail on warnings for C++ API docs
      
      * List custom forces and integrators last
      
      * Add breathe to documentation CI
      
      * Typo
      
      * Fix link to custom forces in extras.rst
      
      * Have Breathe process only public classes
      
      * Strip OpenMM:: prefix from rst files to avoid colons in links
      
      * Remove existing private classes from EXCLUDE_SYMBOLS
      
      * Add comment to C++ cmake describing why we promote warnings to errors
      
      * Revise documentation build instructions for new dependencies
      ae2fe2fd
  31. 22 May, 2021 1 commit
    • Peter Eastman's avatar
      Converted AMOEBA to common platform (#3120) · 8e8923a7
      Peter Eastman authored
      * Began converting AMOEBA to common platform
      
      * Beginning of OpenCL platform for AMOEBA
      
      * Converted AmoebaVdwForce to common platform
      
      * Cleaned up reference AMOEBA tests
      
      * Began converting AmoebaMultipoleForce to common platform
      
      * Continue converting AmoebaMultipoleForce to common platform
      
      * Bug fixes
      
      * Bug fix
      
      * Continue converting AmoebaMultipoleForce to common platform
      
      * Converting AmoebaMultipoleForce and AmoebaGeneralizedKirkwoodForce to common platform
      
      * Converting AmoebaMultipoleForce and AmoebaGeneralizedKirkwoodForce to common platform
      
      * Creating OpenCL version of AmoebaMultipoleForce and AmoebaGeneralizedKirkwoodForce
      
      * Creating OpenCL version of AmoebaMultipoleForce and AmoebaGeneralizedKirkwoodForce
      
      * Creating OpenCL version of AmoebaMultipoleForce and AmoebaGeneralizedKirkwoodForce
      
      * Converted arrays from real3 to real
      
      * Bug fix to OpenCL AmoebaGeneralizedKirkwoodForce
      
      * Fixes for AMD GPUs
      
      * Began converting HippoNonbondedForce to common platform
      
      * Continuing to convert HippoNonbondedForce to common platform
      
      * Continuing to convert HippoNonbondedForce to common platform
      
      * Working on unifying PME kernels
      
      * Fixed error on devices without 64 bit atomics
      
      * Unified PME kernels
      
      * Converted HippoNonbondedForce to common platform
      
      * Creating OpenCL implementation of HippoNonbondedForce
      
      * Continuing OpenCL implementation of HippoNonbondedForce
      
      * Mostly finished OpenCL implementation of HippoNonbondedForce
      
      * Eliminated three component vector types in host code
      
      * Fix errors on CPU OpenCL
      
      * Skip double precision tests for AMOEBA on OpenCL
      
      * Bug fixes
      
      * Bug fixes
      
      * Fixed compilation error
      8e8923a7
  32. 22 Mar, 2021 1 commit
  33. 19 Mar, 2021 1 commit
  34. 22 Feb, 2021 1 commit
  35. 11 Feb, 2021 1 commit
  36. 20 Aug, 2020 1 commit
  37. 28 Feb, 2020 1 commit
  38. 08 Jan, 2020 1 commit
    • peastman's avatar
      Common compute framework to unify CUDA and OpenCL code (#2488) · edbc8407
      peastman authored
      * Began creating common compute framework to unify code between CUDA and OpenCL
      
      * Began OpenCL implementation of common compute framework
      
      * Common implementation of CMMotionRemover
      
      * CUDA implementation of common compute interface
      
      * Converted HarmonicBondForce to common compute API
      
      * Converted standard bonded forces to common compute API
      
      * Converted ExpressionUtilities to common compute API
      
      * Created ComputeParameterSet
      
      * Converted custom bonded forces to common compute API
      
      * Converted CustomCentroidBondForce to common compute API
      
      * Converted CustomManyParticleForce to common compute API
      
      * Moved lots of duplicate code from CudaContext and OpenCLContext to ComputeContext
      
      * Converted GayBerneForce to common compute API
      
      * Removed obsolete kernels
      
      * Converted verlet integrators to common compute API
      
      * Converted Langevin and Brownian integrators to common compute API
      
      * Converted CustomIntegrator to common compute API
      
      * Converted CustomNonbondedForce to common compute API
      
      * Removed uses of a deprecated API
      
      * Fixed failing test cases
      
      * Converted GBSAOBCForce to common compute API
      
      * Began converting CustomGBForce to common compute API
      
      * Finished converting CustomGBForce to common compute API
      
      * Merged duplicated code in CudaIntegrationUtilities and OpenCLIntegrationUtilities
      
      * Converted RMSDForce and AndersenThermostat to common compute API
      
      * Converted CustomHbondForce to common compute API
      
      * Merged scripts for encoding kernel sources
      
      * Converted Drude plugin to common compute API
      
      * Fixed errors in CMake scripts
      
      * Attempt at fixing errors on Windows
      
      * Added discussion of common compute API to developer guide
      
      * Added Windows export macro for common classes
      
      * Fixed error in CMMotionRemover
      
      * Ubdated travis to newer Ubuntu version
      
      * Fixed errors on CPU OpenCL
      
      * Fixed Windows linking errors
      
      * Added missing pragma for 32 bit atomics
      
      * Replaced long long with mm_long
      
      * More fixes to Windows linking
      
      * Bug fix
      edbc8407
  39. 11 Dec, 2019 1 commit
  40. 12 Nov, 2019 1 commit