MPQC  3.0.0-alpha
sc::ConsumableResources Class Reference

ConsumableResources keeps track of consumable resources (memory, disk). More...

#include <util/misc/consumableresources.h>

Inheritance diagram for sc::ConsumableResources:
sc::SavableState sc::DescribedClass sc::RefCount

Public Member Functions

 ConsumableResources (const Ref< KeyVal > &kv)
 A KeyVal constructor is used to generate a ConsumableResources object from the input. More...
 
 ConsumableResources (StateIn &)
 
void save_data_state (StateOut &)
 Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR initializes them. More...
 
size_t max_memory () const
 how much resource was given
 
size_t max_disk () const
 
size_t memory () const
 how much resource is currently available
 
size_t disk () const
 
void consume_memory (size_t value)
 consume resource, may throw LimitExceeded<size_t> if not enough available
 
void consume_disk (size_t value)
 
void release_memory (size_t value)
 release resouce, may throw ProgrammingError if releasing more resource than how much has been consumed to this point
 
void release_disk (size_t value)
 
const std::string & disk_location () const
 UNIX path (absolute or relative) to the disk resource.
 
void print_summary (std::ostream &os=ExEnv::out0(), bool print_state=true, bool print_stats=false) const
 prints ConsumableResources More...
 
std::string sprint () const
 prints short definition to a string More...
 
template<typename T >
T * allocate (std::size_t size)
 allocate array of T size elements long using operator new[] (keeps track of memory)
 
template<typename T >
void deallocate (T *const &array)
 deallocate array of T that was allocated using ConsumableResources::allocate() using operator delete[] (keeps track of memory) will throw ProgrammingError if this array is not managed by ConsumableResources (i.e. More...
 
template<typename T >
void deallocate (T *&array)
 same as before, but will set array to 0 after deallocation
 
template<typename T >
void manage_array (T *const &array, std::size_t size)
 adds array to the list of managed arrays and decrements the memory counter More...
 
template<typename T >
void unmanage_array (T *const &array)
 removes array to the list of managed arrays and increments the memory counter
 
- Public Member Functions inherited from sc::SavableState
SavableStateoperator= (const SavableState &)
 
void save_state (StateOut &)
 Save the state of the object as specified by the StateOut object. More...
 
void save_object_state (StateOut &)
 This can be used for saving state when the exact type of the object is known for both the save and the restore. More...
 
virtual void save_vbase_state (StateOut &)
 Save the virtual bases for the object. More...
 
- Public Member Functions inherited from sc::DescribedClass
 DescribedClass (const DescribedClass &)
 
DescribedClassoperator= (const DescribedClass &)
 
ClassDescclass_desc () const MPQC__NOEXCEPT
 This returns the unique pointer to the ClassDesc corresponding to the given type_info object. More...
 
const char * class_name () const
 Return the name of the object's exact type.
 
int class_version () const
 Return the version of the class.
 
virtual void print (std::ostream &=ExEnv::out0()) const
 Print the object.
 
Ref< DescribedClassref ()
 Return this object wrapped up in a Ref smart pointer. More...
 
- Public Member Functions inherited from sc::RefCount
size_t identifier () const
 Return the unique identifier for this object that can be compared for different objects of different types. More...
 
int lock_ptr () const
 Lock this object.
 
int unlock_ptr () const
 Unlock this object.
 
void use_locks (bool inVal)
 start and stop using locks on this object
 
refcount_t nreference () const
 Return the reference count.
 
refcount_t reference ()
 Increment the reference count and return the new count.
 
refcount_t dereference ()
 Decrement the reference count and return the new count.
 
int managed () const
 
void unmanage ()
 Turn off the reference counting mechanism for this object. More...
 

Static Public Member Functions

static Ref< ConsumableResourcesinitial_instance (int &argc, char **argv)
 Create a ConsumableResources object. More...
 
static void set_default_instance (const Ref< ConsumableResources > &)
 Specifies a new default ConsumableResources.
 
static const Ref< ConsumableResources > & get_default_instance ()
 Returns the default ConsumableResources object.
 
static bool debug ()
 
static bool do_profile ()
 
- Static Public Member Functions inherited from sc::SavableState
static void save_state (SavableState *s, StateOut &)
 
static SavableStaterestore_state (StateIn &si)
 Restores objects saved with save_state. More...
 
static SavableStatekey_restore_state (StateIn &si, const char *keyword)
 Like restore_state, but keyword is used to override values while restoring.
 
static SavableStatedir_restore_state (StateIn &si, const char *objectname, const char *keyword=0)
 

Additional Inherited Members

- Protected Member Functions inherited from sc::SavableState
 SavableState (const SavableState &)
 
 SavableState (StateIn &)
 Each derived class StateIn CTOR handles the restore corresponding to calling save_object_state, save_vbase_state, and save_data_state listed above. More...
 
- Protected Member Functions inherited from sc::RefCount
 RefCount (const RefCount &)
 
RefCountoperator= (const RefCount &)
 

Detailed Description

ConsumableResources keeps track of consumable resources (memory, disk).

Constructor & Destructor Documentation

◆ ConsumableResources()

sc::ConsumableResources::ConsumableResources ( const Ref< KeyVal > &  kv)

A KeyVal constructor is used to generate a ConsumableResources object from the input.

The full list of keywords that are accepted is below.

KeywordTypeDefault

Description

memoryinteger1GBnumber of bytes; user is allowed to use KB/MB/GB abbreviations
See also
KeyValValuestring::sizevalue()
disk[string integer] pair["./" 0]

specifies location of scratch files and available storage in bytes ("0" means unlimited)

Member Function Documentation

◆ deallocate()

template<typename T >
void sc::ConsumableResources::deallocate ( T *const &  array)
inline

deallocate array of T that was allocated using ConsumableResources::allocate() using operator delete[] (keeps track of memory) will throw ProgrammingError if this array is not managed by ConsumableResources (i.e.

not allocated using allocate() )

◆ initial_instance()

static Ref<ConsumableResources> sc::ConsumableResources::initial_instance ( int &  argc,
char **  argv 
)
static

Create a ConsumableResources object.

This routine looks for a -resource argument, then the environmental variable MPQC_RESOURCES. The argument to -resources should be a string for the KeyVal constructor.

◆ manage_array()

template<typename T >
void sc::ConsumableResources::manage_array ( T *const &  array,
std::size_t  size 
)
inline

adds array to the list of managed arrays and decrements the memory counter

this is useful if need to do special memory allocation, e.g. in pinned memory buffer, etc.

References sc::DescribedClass::class_desc(), sc::ExEnv::out0(), and print_summary().

◆ print_summary()

void sc::ConsumableResources::print_summary ( std::ostream &  os = ExEnv::out0(),
bool  print_state = true,
bool  print_stats = false 
) const

prints ConsumableResources

Parameters
osoutput stream
print_stateset to true to print out currently available resources
print_statsset to true to print out maximum resource usage

Referenced by allocate(), and manage_array().

◆ save_data_state()

void sc::ConsumableResources::save_data_state ( StateOut )
virtual

Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR initializes them.

This must be implemented by the derived class if the class has data.

Reimplemented from sc::SavableState.

◆ sprint()

std::string sc::ConsumableResources::sprint ( ) const

prints short definition to a string

See also
print_summary()

The documentation for this class was generated from the following file:

Generated at Sun Jan 26 2020 23:24:04 for MPQC 3.0.0-alpha using the documentation package Doxygen 1.8.16.