- 05 Sep, 2024 2 commits
-
-
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 2 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
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>
-
- 12 Dec, 2023 1 commit
-
-
Peter Eastman authored
* Common implementation of BondedUtilities * Common implementation of UpdateStateDataKernel
-
- 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
-
- 13 Apr, 2022 1 commit
-
-
Peter Eastman authored
-
- 04 Oct, 2021 1 commit
-
-
Peter Eastman authored
* Use cuCtxPushCurrent() and cuCtxPopCurrent() for selecting CUDA context * Fixed errors in amoeba coda * Fixed more errors in context selection
-
- 22 May, 2021 1 commit
-
-
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
-
- 19 Mar, 2021 1 commit
-
-
Peter Eastman authored
* Converted more code to common platform * Converted more code to common platform
-
- 22 Feb, 2021 1 commit
-
-
Peter Eastman authored
* Improve selection of architecture to compile for * Fixed compilation errors on older CUDA versions
-
- 11 Feb, 2021 1 commit
-
-
Peter Eastman authored
* Use command line compiler if it is explicitly specified * Don't set OPENMM_CUDA_COMPILER on Jenkins
-
- 08 Jan, 2020 1 commit
-
-
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
-
- 14 Jun, 2019 1 commit
-
-
Peter Eastman authored
-
- 29 May, 2018 1 commit
-
-
peastman authored
-
- 12 Feb, 2018 1 commit
-
-
Peter Eastman authored
-
- 02 Feb, 2018 1 commit
-
-
Peter Eastman authored
-
- 19 Jun, 2017 1 commit
-
-
Peter Eastman authored
-
- 16 Jun, 2017 1 commit
-
-
Peter Eastman authored
-
- 15 Feb, 2017 1 commit
-
-
Peter Eastman authored
-
- 05 Aug, 2016 1 commit
-
-
Peter Eastman authored
-
- 27 Jul, 2016 1 commit
-
-
Peter Eastman authored
-
- 25 May, 2016 1 commit
-
-
Peter Eastman authored
-
- 25 Oct, 2015 1 commit
-
-
Robert T. McGibbon authored
This change is intended to improve the behavior when multiple CUDA contexts are created on a node with multiple CUDA GPUs, each of which is set to process-exclusive mode.
-
- 15 May, 2015 1 commit
-
-
peastman authored
-
- 13 Feb, 2015 1 commit
-
-
Peter Eastman authored
-
- 07 Jan, 2015 1 commit
-
-
Peter Eastman authored
-
- 05 Jan, 2015 1 commit
-
-
Peter Eastman authored
-
- 08 Oct, 2014 1 commit
-
-
peastman authored
-
- 13 Dec, 2013 1 commit
-
-
peastman authored
-
- 08 Nov, 2013 1 commit
-
-
peastman authored
-
- 01 Aug, 2013 1 commit
-
-
peastman authored
Converted the routine for identifying molecules from a recursion to a loop. This avoids stack overflows with very long linear molecules.
-
- 30 Jul, 2013 1 commit
-
-
peastman authored
-
- 08 Jul, 2013 1 commit
-
-
peastman authored
Platform specific header files get installed. This allows plugins to be built with just an OpenMM installation, not a full source tree.
-
- 28 Jun, 2013 1 commit
-
-
peastman authored
-
- 27 Jun, 2013 1 commit
-
-
peastman authored
-
- 21 Jun, 2013 1 commit
-
-
peastman authored
-
- 28 May, 2013 1 commit
-
-
peastman authored
Integrators control when atom reordering gets done, instead of having it happen automatically when forces are evaluated. This simplifies some code, and also improves unintuitive behavior with CustomIntegrator.
-
- 22 Mar, 2013 1 commit
-
-
Peter Eastman authored
-
- 12 Dec, 2012 1 commit
-
-
Peter Eastman authored
-