- 05 Sep, 2024 3 commits
-
-
Anton Gorenko authored
Use a small kernel for copying interactionCounts to host memory hipMemcpy's CopyDeviceToHost operation has higher latency. Do not set stream and event blocking/spin related flags Let the runtime choose the best option because overriding does not improve performance in most cases. Remove NULL streams and use nonblocking streams explicitly Make HipContext::pushAsCurrent/popAsCurrent thread-safe as they can be called simultaneously from different threads via ContextSelector. Allow peer access to be enabled more than once (if there are multiple simulations one after another, like in benchmark.py). Create peerCopyStream on a corresponding device Use two-speed load balancing for multi GPU runs First 100 steps do coarse balancing, next 100 - fine tuning. Also ignore the slowest device (usually 0) if its fraction has reached 0, (i.e. no work can be transfered to other devices) and balance other devices. Do not download inteactionCounts in parallel nonbonded tasks This is not required because updateNeighborListSize has been called and valid flag changed. Initialize tilesAfterReorder properly It may contain a garbage value, and if it is large then updateNeighborListSize does not force reorder atoms after 25 steps in extremal cases. -
Anton Gorenko authored
Use cuCtxPushCurrent() and cuCtxPopCurrent() for selecting CUDA context https://github.com/openmm/openmm/pull/3258 Fixed uninitialized memory access https://github.com/openmm/openmm/issues/3392 https://github.com/openmm/openmm/pull/3399 Fixed potential invalid memory access See https://github.com/openmm/openmm/pull/3428 Improved temperature reporting for Drude particles https://github.com/openmm/openmm/pull/3486 https://github.com/openmm/openmm/commit/a5e42f5 Fixed race condition with multiple GPUs https://github.com/openmm/openmm/commit/6fb1c8a41edff980862750bc086f6a204eb50941 Use blocking sync when creating events https://github.com/openmm/openmm/commit/fe21d5ee4f14673a4ea38b7244991772a64ceec2 Very minor optimizations https://github.com/openmm/openmm/commit/109f6b2535da4e0c0dd88007d6ca06b4add2ce81 Use PocketFFT https://github.com/openmm/openmm/commit/1dac981a63300a2a53a7925f570995914f7163ed Improved logic for deciding when to reorder atoms https://github.com/openmm/openmm/commit/48664a1f1a4490a4dabc277757545ac070e7b898 Ensure valid atom order after loading a checkpoint https://github.com/openmm/openmm/commit/a056d5a3754e193105409afa12c9f0c9a2d972a2 Improve performance running on multiple GPUs https://github.com/openmm/openmm/commit/0c82c2647de98da5c6dab7bf7a7b8b19705aadc0 Fixed errors when running on multiple GPUs https://github.com/openmm/openmm/commit/ed9df876d43c037c08d4762721e73e5caae086d9 Optimized reducing energy https://github.com/openmm/openmm/commit/2975f44 -
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
-
- 01 Sep, 2024 1 commit
-
-
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>
-
- 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
-
- 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
-
- 23 May, 2023 1 commit
-
-
Peter Eastman authored
* Skip neighbor list for very small systems * Fixed typos * Don't skip box size check when not using neighbor list * Made test larger to ensure it uses neighbor list
-
- 12 Aug, 2022 1 commit
-
-
Peter Eastman authored
-
- 27 Jan, 2022 1 commit
-
-
Peter Eastman authored
* Fixed potential invalid memory access * Fixed exception
-
- 20 Aug, 2020 1 commit
-
-
peastman authored
* Fixed range overflow with very large numbers of atoms * More fixes to overflow with large numbers of atoms * Fix test failures
-
- 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
-
- 09 Apr, 2019 1 commit
-
-
peastman authored
* Created API for HIPPO force field * Beginning of reference implementation of HIPPO * Continuing reference implementation of HIPPO * Continuing reference implementation of HIPPO * Continuing reference implementation of HIPPO * Continuing reference implementation of HIPPO * Continuing reference implementation of HIPPO * Continuing reference implementation of HIPPO * Continuing reference implementation of HIPPO * Completed reference of HIPPO with no cutoff * Beginning cutoffs/PME for reference implementation of HIPPO * Continuing PME for reference implementation of HIPPO * Continuing PME for reference implementation of HIPPO * Continuing PME for reference implementation of HIPPO * Completed reference implementation of HIPPO * Cleanup and optimization to HIPPO reference * Further cleanup to HIPPO * Combined direct space interactions into a single loop * Compute direct space interactions in quasi-internal frame * Beginning of CUDA implementation of HIPPO * Continuing CUDA implementation of HIPPO * Continuing CUDA implementation of HIPPO * Continuing CUDA implementation of HIPPO * Continuing CUDA implementation of HIPPO * Continuing CUDA implementation of HIPPO * Continuing CUDA implementation of HIPPO * Continuing CUDA implementation of HIPPO * Continuing CUDA implementation of HIPPO * Continuing CUDA implementation of HIPPO * Continuing CUDA implementation of HIPPO * Continuing CUDA implementation of HIPPO * Continuing CUDA implementation of HIPPO * Continuing CUDA implementation of HIPPO * Finished CUDA implementation of HIPPO * More features and test cases for HippoNonbondedForce * Serialization and Python API for HippoNonbondedForce * Fixed sign error in computing forces
-
- 12 Mar, 2018 1 commit
-
-
Peter Eastman authored
-
- 12 Feb, 2018 1 commit
-
-
Peter Eastman authored
-
- 13 Oct, 2016 1 commit
-
-
Peter Eastman authored
-
- 14 Sep, 2016 1 commit
-
-
Peter Eastman authored
-
- 27 Jul, 2016 1 commit
-
-
Peter Eastman authored
-
- 25 May, 2016 1 commit
-
-
Peter Eastman authored
-
- 21 Sep, 2015 1 commit
-
-
Peter Eastman authored
-
- 27 Aug, 2015 1 commit
-
-
peastman authored
-
- 10 Aug, 2015 1 commit
-
-
Peter Eastman authored
-
- 07 Jul, 2015 1 commit
-
-
Peter Eastman authored
-
- 06 Mar, 2015 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.
-
- 22 Mar, 2013 1 commit
-
-
Peter Eastman authored
-
- 12 Dec, 2012 1 commit
-
-
Peter Eastman authored
-
- 10 Oct, 2012 1 commit
-
-
Peter Eastman authored
OpenCLArray is no longer templatized and doesn't provide a host buffer. This is in preparation for adding mixed/double precision support.
-
- 28 Sep, 2012 1 commit
-
-
Peter Eastman authored
-
- 20 Jul, 2012 1 commit
-
-
Peter Eastman authored
-
- 15 Jun, 2012 1 commit
-
-
Peter Eastman authored
-
- 12 Jun, 2012 1 commit
-
-
Peter Eastman authored
Continuing to implement new CUDA platform: CustomBondForce, CustomAngleForce, CustomTorsionForce, CustomExternalForce, CustomCompoundBondForce
-