1. 05 Sep, 2024 3 commits
    • Anton Gorenko's avatar
      Optimize PME kernels · a0acfbc9
      Anton Gorenko authored
      * Compile with -munsafe-fp-atomics to enable fast hardware f32 atomic
        add on global memory on pre-MI100 GPUs;
      * Use fixed point charge spreading on other GPUs, otherwise float atomic
        add will be compiled as a slow CAS loop;
      * Tune block sizes, use executeKernelFlat;
      * Tune launch bounds of PME grid-related kernels: force the compiler to
        use all registers by limiting max waves per EU to 1.
      a0acfbc9
    • Anton Gorenko's avatar
      Optimize findInteractingBlocks · a96534c1
      Anton Gorenko authored
      Optimize findBlocksWithInteractions
      
      * Replace volatile shared mem accesses with shuffles;
      * Add NUM_TILES_IN_BATCH for processing block1 by multiple warps
        (for small systems);
      * Cherry-pick missing changes from .cu;
      * Tune MAX_BITS_FOR_PAIRS depending on device and the system size;
      * Store single pairs immediately (if there are any), this allows not to
        store flags to shared memory and filter buffer and flagsBuffer after
        saving single pairs;
      * Use fma explicitly and sign bit for better device code;
      * Use CDNA's MFMA with singe/mixed precision;
      * On CDNA the coarse grained stage processes warpSize blocks for
        one block1, the fine grained stage checks atoms of two block2 vs atoms
        of the same block1, singlePairs and interactingAtoms are also stored
        by warps, not half-warps;
      
      Optimize findBlockBounds
      
      * Use shuffles;
      * Use executeKernelFlat;
      * Process 2 tiles per warp 64 on CDNA;
      * Use more uniformly distributed keys when sorting blocks;
      
      Use compareInt2LargeSIMD when tile size < SIMD width
      
      Fix exclusion tiles sorting on AMD CDNA (64 threads per wave)
      
          The nonbonded kernel uses USE_NEIGHBOR_LIST (useNeighborList)
          so host code also must check it instead of useCutoff.
      
          See also https://github.com/openmm/openmm/issues/3462
      a96534c1
    • Anton Gorenko's avatar
      Optimize computeNonbonded · 67f5644d
      Anton Gorenko authored
      * All AMD GPUs support shuffle, double precision and 64-bit int atomics;
      * Remove unused code: !ENABLE_SHUFFLE code paths in nonbonded.hip;
      * Use intrinsics in single-precision;
      * Use realToFixedPoint (faster float32-to-int64);
      * Remove shared atomIndices, use shuffles;
      * Check early if atoms are in the cutoff range, sometimes all lanes in
        a warp can skip computations, single pairs can also skip useless
        atomics with zero values;
      * Remove volatile skipTiles access, use shuffles;
      * Distribute work for warps in a strided order;
      * Skip warps that may be still busy in the first loop;
      * Unify conditions for excluded atoms with `includeInteraction`;
      * Move multiprocessors to HipContext;
      * Increase number of warps for computeNonbonded;
      * Disable packed math for >=MI200 (it affects performance of some
        kernels like computeGKForces of amoebagk);
      * Remove defaultOptimizationOptions and createModule's optimizationFlags
        as they are never used;
      * Support -save-temps.
      67f5644d
  2. 01 Sep, 2024 4 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 Amoeba, Drude, RPMD plugins · 6c0f3fbd
      Anton Gorenko authored
      Fix SegFault in HipCalcHippoNonbondedForceKernel
      
          HipSort was created using a temporary ref. Adding `HipContext& cu`
          field to HipCalcHippoNonbondedForceKernel fixes the issue;
      6c0f3fbd
    • 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
  3. 23 Aug, 2024 2 commits
  4. 19 Aug, 2024 1 commit
  5. 06 Aug, 2024 1 commit
  6. 25 Jul, 2024 1 commit
  7. 19 Jul, 2024 1 commit
  8. 17 Jul, 2024 1 commit
    • Peter Eastman's avatar
      Debug CI failures (#4588) · e30e5b69
      Peter Eastman authored
      * Debug CI failures
      
      * Debugging
      
      * Debugging
      
      * Debugging
      
      * Debugging
      
      * Debugging
      
      * Debugging
      
      * Debugging
      
      * Debugging
      
      * Removed build that was failing
      
      * Fixed URL that had changed
      e30e5b69
  9. 09 Jul, 2024 1 commit
  10. 13 May, 2024 1 commit
  11. 03 May, 2024 1 commit
  12. 29 Apr, 2024 3 commits
  13. 10 Apr, 2024 1 commit
  14. 09 Apr, 2024 1 commit
  15. 06 Apr, 2024 2 commits
  16. 05 Apr, 2024 1 commit
  17. 28 Mar, 2024 2 commits
  18. 21 Mar, 2024 1 commit
  19. 18 Mar, 2024 1 commit
  20. 09 Mar, 2024 1 commit
  21. 08 Mar, 2024 2 commits
  22. 05 Mar, 2024 2 commits
  23. 04 Mar, 2024 1 commit
  24. 24 Feb, 2024 1 commit
  25. 23 Feb, 2024 1 commit
  26. 17 Feb, 2024 1 commit
  27. 13 Feb, 2024 1 commit
  28. 02 Feb, 2024 1 commit