- 05 Sep, 2024 3 commits
-
-
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.
-
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 -
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.
-
- 01 Sep, 2024 3 commits
-
-
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.
-
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.
-
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:Nick Curtis <nicholas.curtis@amd.com>
-
- 19 Aug, 2024 1 commit
-
-
Peter Eastman authored
-
- 06 Apr, 2024 1 commit
-
-
Peter Eastman authored
* ATMForce reorders inner contexts for better performance * Fixed obsolete comments
-
- 24 Feb, 2024 1 commit
-
-
Peter Eastman authored
* Minor optimization to validating exclusions * Optimizations to findMoleculeGroups()
-
- 23 Feb, 2024 1 commit
-
-
Peter Eastman authored
* Improved performance of CustomHbondForce on large systems * Fixed CUDA compilation errors
-
- 17 Feb, 2024 1 commit
-
-
Peter Eastman authored
* Made LangevinIntegrator identical to LangevinMiddleIntegrator * Removed unused code * VariableLangevinIntegrator uses LFMiddle
-
- 02 Feb, 2024 1 commit
-
-
Peter Eastman authored
* Reference platform supports nested virtual sites * Common platform supports nested virtual sites * Fixed force distribution from nested virtual sites * Fixed test failures
-
- 18 Jan, 2024 1 commit
-
-
Peter Eastman authored
-
- 20 Dec, 2023 2 commits
-
-
Peter Eastman authored
-
Peter Eastman authored
-
- 14 Dec, 2023 1 commit
-
-
Peter Eastman authored
-
- 12 Dec, 2023 1 commit
-
-
Peter Eastman authored
* Common implementation of BondedUtilities * Common implementation of UpdateStateDataKernel
-
- 11 Dec, 2023 1 commit
-
-
Peter Eastman authored
* Improved sorting of blocks when building neighbor list * Improved block sorting for OpenCL * Made sort keys more evenly distributed
-
- 02 Nov, 2023 1 commit
-
-
Peter Eastman authored
* Fixed some incorrect comments * Fixed some incorrect comments * Fixed typo
-
- 31 Oct, 2023 1 commit
-
-
bdenhollander authored
Closes #2986
-
- 24 Oct, 2023 2 commits
-
-
bdenhollander authored
* Enable flush on Windows - Implements perm 5 from https://github.com/openmm/openmm/issues/3937#issuecomment-1413872621 Co-Authored-By:
Philip Turner <philipturner.AR@gmail.com> * Add brackets for clarification Co-authored-by:
Philip Turner <philipturner.AR@gmail.com> * Make this optimization only apply to AMD GPUs * Switch to perm 1 - Flush before call to computeNonbonded since it works well on Windows and Linux * Update OpenCLNonbondedUtilities.cpp * Perm 4 is now significantly faster on Windows * Use isAMD * Fix indentation * Fix missed variable * Remove Mac check * Remove isAMD out of Mac code * Consistent (lack of) brackets style --------- Co-authored-by:
Philip Turner <philipturner.AR@gmail.com>
-
Peter Eastman authored
-
- 16 Oct, 2023 1 commit
-
-
Christopher Woods authored
WIP - looking for a way to optimise performance of creating contexts by removing temporary arrays (and their associated mallocs/frees) (#4261) * Suggesting a "haveSameParameters" function for CustomNonbondedForce which could be used to avoid creating temporary copies of arrays when testing if particles are the same. Also updating "getParticleParameters" so that it re-uses the memory of the passed vector argument, rather than deallocating and reallocating it via a copy. * Revert "Suggesting a "haveSameParameters" function for CustomNonbondedForce which could be" This reverts commit e80ec2d2e9981abb90711636bf3a78d0c49e43fc. * Moved to `thread_local static` as suggested to prevent new vector allocations on each function call. Updated `getParameters` and `getBondParameters` to re-use the memory from the argument rather than re-allocating via the copy. * Forgot to reuse the memory for the groups... * Reverted back the manual copies via memcpy as they aren't needed. Looking at the header file and benchmarking shows that std::vector does the right thing. * Confined `thread_local static` only to ForceInfo methods, and have also put declarations for multiple variables back onto a single line * Removed `thread_local static` from the constructor * Moved constructor declarations back into the for loop
-
- 14 Oct, 2023 2 commits
-
-
Anton Gorenko authored
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
-
Anton Gorenko authored
-
- 28 Sep, 2023 1 commit
-
-
Peter Eastman authored
-
- 16 Sep, 2023 1 commit
-
-
Peter Eastman authored
* Implemented CustomCPPForceImpl * Documentation for CustomCPPForceImpl * Attempt at fixing Windows compilation error * Improved documentation
-
- 04 Sep, 2023 1 commit
-
-
Hugo MacDermott-Opeskin authored
* remove std::binary_function from ConstraintOrderer functor * whoops whitespace
-
- 02 Sep, 2023 1 commit
-
-
Peter Eastman authored
-
- 01 Sep, 2023 1 commit
-
-
Hugo MacDermott-Opeskin authored
-
- 28 Aug, 2023 1 commit
-
-
Peter Eastman authored
-
- 18 Aug, 2023 2 commits
-
-
Peter Eastman authored
-
bdenhollander authored
* Amoeba minor cleanup - Fix variable name in string - Remove odd space between variable and period that is inconsistently styled * Replaces random tabs with spaces in ATM Force
-
- 02 Aug, 2023 1 commit
-
-
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...
-
- 24 Jul, 2023 1 commit
-
-
Peter Eastman authored
* Use large blocks to optimize building the neighbor list * Large blocks optimization for OpenCL * Fix test failures * Select whether to use large blocks based on system size
-
- 21 Jul, 2023 1 commit
-
-
Peter Eastman authored
-
- 20 Jul, 2023 1 commit
-
-
Peter Eastman authored
* Always use nvrtc for compilation * Install nvrtc on CI * Workaround for compiler error * Set empty values for deprecated properties
-
- 14 Jul, 2023 1 commit
-
-
Dirtyworker authored
-
- 23 Jun, 2023 1 commit
-
-
Stephen Farr authored
* save atomIndex order in MCBarostat kernel * Update device indices * Only setAtomIndex if there was a reorder
-
- 12 Jun, 2023 1 commit
-
-
Peter Eastman authored
* Attempt at fixing errors with barostat * Missing ContextSelector
-