2#ifndef STORMM_SYNTHESIS_SYSTEM_CACHE_MAP
3#define STORMM_SYNTHESIS_SYSTEM_CACHE_MAP
8#include "Accelerator/hybrid.h"
9#include "phasespace_synthesis.h"
10#include "atomgraph_synthesis.h"
11#include "synthesis_enumerators.h"
12#include "systemcache.h"
18using card::HybridTargetLevel;
19using card::GpuDetails;
27 const int* cache_origins_in,
const int* topology_origins_in,
28 const int* label_origins_in,
const int* csystem_proj_in,
29 const int* csystem_bounds_in,
const int* clabel_proj_in,
30 const int* clabel_bounds_in,
const int* ctopol_proj_in,
31 const int* ctopol_bounds_in);
132 std::vector<int>
getLabelGroup(
const std::string &query_label)
const;
250 int cache_system_count;
251 int synthesis_system_count;
253 int cache_label_count;
254 int cache_topology_count;
287 void rebasePointers();
290 void validateCorrespondence()
const;
An evolution of GpuBuffer in pmemd.cuda, the Composite array has elements that are accessible from ei...
Definition hybrid.h:202
SynthesisCacheMap()
The constructor can work with a coordinate or topology synthesis, but in either case requires a pairw...
Definition synthesis_cache_map.cpp:28
A collection of one or more AtomGraph objects, with similar components arranged in contiguous arrays ...
Definition atomgraph_synthesis.h:55
A fixed-precision representation of coordinates, velocities, and forces to manage a set of simulation...
Definition phasespace_synthesis.h:325
const SynthesisMapReader data(HybridTargetLevel tier=HybridTargetLevel::HOST) const
Get an abstract of this map.
Definition synthesis_cache_map.cpp:394
void setCache(const std::vector< int > &cache_origins_in, const SystemCache *sc_in)
Set the systems cache along with a list of correspondences.
Definition synthesis_cache_map.cpp:417
int getLabelCacheIndex(int synthesis_index) const
Get the system label index of a system from the synthesis.
Definition synthesis_cache_map.cpp:292
void setSynthesis(const AtomGraphSynthesis *poly_ag_in)
Set the PhaseSpaceSynthesis or AtomGraphSynthesis pointers. This will be useful if the map is used to...
Definition synthesis_cache_map.cpp:480
int getSynthesisTopologyCount() const
Get the number of (unique) topologies in the associated synthesis. This will check the coordinate syn...
Definition synthesis_cache_map.cpp:212
std::vector< int > getLabelGroup(const std::string &query_label) const
Get a list of all system indices in the synthesis derived from systems in the cache matching a partic...
Definition synthesis_cache_map.cpp:241
int getCacheLabelCount() const
Get the number of labels in the associated cache.
Definition synthesis_cache_map.cpp:202
int getTopologyCacheIndex(int synthesis_index) const
Get the index of a topology in the cache guiding a system in the synthesis. This might not be the sam...
Definition synthesis_cache_map.cpp:287
const SynthesisCacheMap * getSelfPointer() const
Get a const pointer to the object itself (useful when the object has been passed by const reference).
Definition synthesis_cache_map.cpp:389
int getPartitionCount(SystemGrouping organization) const
Get the number of partitions that the synthesis should be divided into under any of the methods for g...
Definition synthesis_cache_map.cpp:297
int getTotalProjection(int query_index, SystemGrouping organization) const
Get the number of systems in the synthesis associated with a particular system, label,...
Definition synthesis_cache_map.cpp:316
int getSynthesisSystemCount() const
Get the number of systems in the associated synthesis.
Definition synthesis_cache_map.cpp:197
int getSystemCacheIndex(int synthesis_index) const
Get the system cache index of a system from the synthesis.
Definition synthesis_cache_map.cpp:282
int getCacheTopologyCount() const
Get the number of unique topologies in the associated cache.
Definition synthesis_cache_map.cpp:207
const PhaseSpaceSynthesis * getCoordinateSynthesisPointer() const
Get a const pointer to the coordinate synthesis referenced by this map.
Definition synthesis_cache_map.cpp:384
SynthesisCacheMap()
The constructor can work with a coordinate or topology synthesis, but in either case requires a pairw...
Definition synthesis_cache_map.cpp:28
std::vector< int > getSourceGroup(int query_index) const
Get a list of all system indices in the synthesis derived from a particular -sys keyword entry (a sin...
Definition synthesis_cache_map.cpp:227
const SystemCache * getCachePointer() const
Get a const pointer to the system cache referenced by this map.
Definition synthesis_cache_map.cpp:374
const AtomGraphSynthesis * getTopologySynthesisPointer() const
Get a const pointer to the coordinate synthesis referenced by this map.
Definition synthesis_cache_map.cpp:379
int getCacheSystemCount() const
Get the number of systems in the associated cache.
Definition synthesis_cache_map.cpp:192
std::vector< int > getTopologyGroup(const AtomGraph *query_ag) const
Get a list of all system indices in the synthesis derived from systems in the cache matching a partic...
Definition synthesis_cache_map.cpp:259
Simple but central struct to store the primitive form of the collection of systems that most STORMM a...
Definition systemcache.h:63
A struct to hold information relating to an Amber topology. This struct's member functions are limite...
Definition atomgraph.h:50
SynthesisMapReader(int ncache_in, int nsynth_in, int nlabel_in, int ntopol_in, const int *cache_origins_in, const int *topology_origins_in, const int *label_origins_in, const int *csystem_proj_in, const int *csystem_bounds_in, const int *clabel_proj_in, const int *clabel_bounds_in, const int *ctopol_proj_in, const int *ctopol_bounds_in)
As with other abstracts, the constructor takes a list of input arguments for all member variables.
Definition synthesis_cache_map.cpp:13
A set of pointers to critical arrays in the map below.
Definition synthesis_cache_map.h:22
const int nsynth
Definition synthesis_cache_map.h:42
const int * topology_origins
Definition synthesis_cache_map.h:49
SynthesisMapReader(int ncache_in, int nsynth_in, int nlabel_in, int ntopol_in, const int *cache_origins_in, const int *topology_origins_in, const int *label_origins_in, const int *csystem_proj_in, const int *csystem_bounds_in, const int *clabel_proj_in, const int *clabel_bounds_in, const int *ctopol_proj_in, const int *ctopol_bounds_in)
As with other abstracts, the constructor takes a list of input arguments for all member variables.
Definition synthesis_cache_map.cpp:13
const int * ctopol_bounds
Definition synthesis_cache_map.h:63
SynthesisMapReader(const SynthesisMapReader &original)=default
The copy and move constructors take their default forms, but copy and move assignment operators are i...
const int * cache_origins
Cache system origin of each system in the synthesis.
Definition synthesis_cache_map.h:48
const int ncache
Definition synthesis_cache_map.h:40
const int * csystem_proj
Definition synthesis_cache_map.h:53
const int * clabel_bounds
Definition synthesis_cache_map.h:59
const int * csystem_bounds
Definition synthesis_cache_map.h:55
const int * clabel_proj
Definition synthesis_cache_map.h:57
const int ntopol
Definition synthesis_cache_map.h:46
const int * ctopol_proj
Definition synthesis_cache_map.h:61
const int nlabel
Definition synthesis_cache_map.h:44
const int * label_origins
Cache label origin of each system in the synthesis.
Definition synthesis_cache_map.h:52