1. 07 Jun, 2025 2 commits
    • Anton Gorenko's avatar
      Use fixed point charge spreading on RDNA4 (#4960) · 1ce5d91d
      Anton Gorenko authored
      * Use fixed point spread charge on RDNA4 as it is faster
      
      Even though RDNA4 (gfx12) has global_atomic_add_f32, micro-benchmarks and OpenMM benchmarks show
      that it is very slow compared to global_atomic_add_u64.
      
      * Add a workaround for fixed point gridSpreadCharge on RDNA4
      
      Workaround for rare cases when few values of pmeGrid are very large and
      incorrect. The cause is unknown. Why this workaround or other irrelevant
      changes like printf help is also unknown.
      1ce5d91d
    • Anton Gorenko's avatar
      Fix computeNonbonded hang on the HIP platform (#4959) · a4b43a04
      Anton Gorenko authored
      * Add a workaround for infinite loop in computeNonbonded (HIP)
      
      computeNonbonded hangs in some tests (without neighbor list).
      Reproducible on ROCm 6.4 and 6.4.1 (maybe on older versions too) on various architectures (both CDNA and RDNA).
      Affected tests: TestHipATMForce, TestHipMonteCarloBarostat, TestHipNonbondedForce, TestHipVirtualSites.
      
      Disassembly shows that the compiler splits branches of `if (skipBase+tgx < NUM_TILES_WITH_EXCLUSIONS)` and does
      `SHFL(skipTiles, TILE_SIZE-1) < pos` checks in them separately, even though `__builtin_amdgcn_ds_bpermute`
      is a convergent function. Apparently in this case not all lanes participate in each call.
      
      * Simplify includeTile check using ballot
      a4b43a04
  2. 23 May, 2025 1 commit
  3. 20 May, 2025 1 commit
  4. 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
  5. 28 Apr, 2025 2 commits
    • Peter Eastman's avatar
      Unified interface for queues (#4913) · dd320bcf
      Peter Eastman authored
      * Unified interface for queues
      
      * Simplified stream handling in CudaFFT3D
      
      * HIP implementation of ComputeQueue
      dd320bcf
    • Peter Eastman's avatar
      Added computeCurrentPressure() to MonteCarloBarostat (#4881) · bce0c133
      Peter Eastman authored
      * Added computeCurrentPressure() to MonteCarloBarostat
      
      * Use instantaneous temperature to compute pressure
      
      * Added computeCurrentPressure() to MonteCarloAnisotropicBarostat
      
      * Added computeCurrentPressure() to MonteCarloMembraneBarostat
      
      * Fixed compilation error
      
      * Fixed error in typemap
      
      * Added documentation on computing pressure
      
      * Fixed CUDA compilation errors
      
      * Made test case more robust
      
      * Made a test case more robust
      
      * Added computeCurrentPressure() to MonteCarloFlexibleBarostat
      
      * Fixed compilation error
      
      * More documentation on computing pressure
      bce0c133
  6. 25 Apr, 2025 1 commit
  7. 23 Apr, 2025 1 commit
  8. 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
  9. 14 Mar, 2025 1 commit
  10. 10 Mar, 2025 1 commit
  11. 05 Mar, 2025 1 commit
  12. 13 Jan, 2025 1 commit
  13. 22 Nov, 2024 1 commit
  14. 01 Nov, 2024 1 commit
  15. 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
  16. 10 Sep, 2024 2 commits
  17. 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
  18. 05 Sep, 2024 11 commits
  19. 01 Sep, 2024 3 commits
    • Anton Gorenko's avatar
      Optimize sorting kernels and tune block sizes · 7279c539
      Anton Gorenko authored
      * Compile kernels with max block size of 256 threads:
        The default hipcc behavior since ROCm 4.2 is to compile kernels
        with 1024 threads unless __launch_bounds__ is specified. This
        significantly increases register pressure especially in heavy kernels
        (double precision, for example), requiring register spilling;
      * Optimize computeRange by using multiple blocks for reduction;
      * Use blocks of 1024 threads for computeBucketPositions - it is executed
        as a single work group so larger block size is faster;
      * Sort up-to lenghtNextPow2 instead of blockDim.x (faster for short
        buckets);
      * Optimize sortShortList2;
      * Optimize sortBuckets with bit instructions;
      * Decrease bucket size for non-uniform sorting: too many buckets may
        have sizes too large to sort in shared memory;
      * Add more sizes in tests.
      7279c539
    • Anton Gorenko's avatar
      Cleanup Cmake scripts for HIP platform · aca24d5f
      Anton Gorenko authored
      * Remove setting of link libraries, include and link dirs and compile
        flags for each target, instead let Cmake deal with them by linking the
        main library to hip::host hiprtc::hiprtc hip::hipfft;
      * Fix: custom command without ADD_CUSTOM_TARGET and ADD_DEPENDENCIES is
        executed for both static and shared targets;
      * Remove IF(APPLE) parts.
      aca24d5f
    • Anton Gorenko's avatar
      Add hipification of CUDA platform · 89d2ff0e
      Anton Gorenko authored
      Port changes in CUDA backend to HIP
      
      Fix a warning about arithmetic operations on void* in HipArray::uploadSubArray
      
      Fix "Error Initializing context ROCm 5.3.0"
      
          https://github.com/StreamHPC/openmm-hip/issues/3
      
      
          hipDeviceSetCacheConfig returns hipErrorNotSupported on 5.3
      Co-authored-by: default avatarNick Curtis <nicholas.curtis@amd.com>
      89d2ff0e