Source code for schrodinger.application.desmond.memory
"""
Utilities for memory estimation and benchmarking
Copyright Schrodinger, LLC. All rights reserved.
"""
import os
import psutil
[docs]def estimate_memory(natoms: int) -> int:
"""
:param: Number of atoms in the system
:return: GPU memory usage in bytes
"""
# 750 MB + 6 MB per thousand particles
# Not sure how good this is now. Probably inaccurate for GCMC. -YW 11/1/2019
return 786432000 + natoms * 6292
[docs]class MemoryGauger:
"""
Gauge the memory usage of the process. Use example::
mem_gauger = MemoryGauger() # Point 1
# code that uses a lot memory.
...
mem_usage = mem_gauger.mem_usage() # Memory usage change since Point 1.
"""
[docs] def __init__(self):
self._process = psutil.Process(os.getpid())
self._vm_used_base = self._process.memory_info()[0]
[docs] def mem_usage(self) -> float:
"""
Returns the change of the memory usage (in MB) of this process since the
creation of this `MemoryGauger` instance.
"""
return (self._process.memory_info()[0] - self._vm_used_base) / 1048576