1. 05 Sep, 2024 3 commits
    • Anton Gorenko's avatar
      Always use hipRTC, support Windows · b9c45d45
      Anton Gorenko authored
      * Unload all loaded modules in HipContext's destructor,
        HIP modules keep file desctriptors opened, but OpenMM never unloads
        modules leaking these file descriptors. This can cause crashinf of
        some scripts like test-openmm-platforms from openmmtools.
      * ROCm 6.0 defines operator* for complex types (that are typedefs for
        float2 and double2), they conflict with operators defined for vectors.
        This is fixed in newer ROCm versions.
      * Revert HIP_DYNAMIC_SHARED back to extern __shared__ (the macro is
        in the headers).
      * Reduce the speed of the HIP platform if there are no HIP devices in
        the system.
      b9c45d45
    • 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 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 2 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
      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. 19 Aug, 2024 1 commit
  4. 12 Dec, 2023 1 commit
  5. 20 Jul, 2023 1 commit
  6. 31 Jan, 2023 1 commit
  7. 13 Apr, 2022 1 commit
  8. 19 Nov, 2021 1 commit
  9. 04 Oct, 2021 1 commit
  10. 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
  11. 16 Mar, 2021 1 commit
  12. 28 Feb, 2021 1 commit
    • Peter Eastman's avatar
      Point based geometric functions for custom forces (#3037) · a85c2428
      Peter Eastman authored
      * Began implementing geometric functions on points
      
      * Started common implementation of point functions
      
      * Completed implementation of point functions for CustomCompoundBondForce
      
      * Implemented point functions for CustomCentroidBondForce
      
      * Implemented point functions for CustomManyParticleForce
      
      * Use point functions to simplify implementation of custom forces
      
      * Removed unnecessary code
      
      * Fixed typo
      a85c2428
  13. 22 Feb, 2021 1 commit
  14. 11 Feb, 2021 1 commit
  15. 02 Sep, 2020 1 commit
  16. 06 Mar, 2020 1 commit
  17. 07 Feb, 2020 1 commit
  18. 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
  19. 14 Jun, 2019 1 commit
  20. 03 Jul, 2018 1 commit
  21. 29 May, 2018 1 commit
  22. 16 May, 2018 1 commit
  23. 04 May, 2018 1 commit
  24. 20 Mar, 2018 2 commits
  25. 12 Feb, 2018 1 commit
  26. 07 Nov, 2017 1 commit
  27. 21 Sep, 2017 2 commits
  28. 15 Sep, 2017 1 commit
  29. 01 Sep, 2017 1 commit
  30. 24 Aug, 2017 1 commit
  31. 19 Jun, 2017 1 commit
  32. 16 Jun, 2017 1 commit
  33. 18 May, 2017 1 commit
  34. 03 Mar, 2017 1 commit
  35. 15 Feb, 2017 1 commit