13#ifndef SRC_MADNESS_WORLD_CLOUD_H_ 
   14#define SRC_MADNESS_WORLD_CLOUD_H_ 
   52    struct type_name<
std::vector<Function<double,1>>> { 
static const char* 
value() { 
return "std::vector<Function<double,1>>"; } };
 
   54    struct type_name<
std::vector<Function<double,2>>> { 
static const char* 
value() { 
return "std::vector<Function<double,2>>"; } };
 
   56    struct type_name<
std::vector<Function<double,3>>> { 
static const char* 
value() { 
return "std::vector<Function<double,3>>"; } };
 
   58    struct type_name<
std::vector<Function<double,4>>> { 
static const char* 
value() { 
return "std::vector<Function<double,4>>"; } };
 
   60    struct type_name<
std::vector<Function<double,5>>> { 
static const char* 
value() { 
return "std::vector<Function<double,5>>"; } };
 
   62    struct type_name<
std::vector<Function<double,6>>> { 
static const char* 
value() { 
return "std::vector<Function<double,6>>"; } };
 
   64template<
typename keyT>
 
   75        for (
auto &l2 : list2.
list) 
list.push_back(l2);
 
 
  103    template <
typename T>
 
  106    template <
typename T>
 
  109    template<
typename T, std::
size_t NDIM>
 
  112    template<
typename T, std::
size_t NDIM>
 
  115    template<
typename keyQ, 
typename valueT>
 
  118    template<
typename keyQ, 
typename valueT>
 
  121    template<
typename T, std::
size_t NDIM>
 
  141            std::size_t hashtype = 
typeid(
T).hash_code();
 
 
 
  190    using valueT = std::vector<unsigned char>;
 
  191    typedef std::map<keyT, cached_objT> 
cacheT;
 
  207            default: os << 
"UnknownStoragePolicy"; 
break;
 
 
  213        std::ostringstream os;
 
 
  232    template <
typename T>
 
  235    template <
typename T>
 
  248            print(
"You need to call clear_cache(subworld) before destroying the cloud");
 
  249            print(
"\n------------------------------\n");
 
  250            std::string msg=
"deferred destruction of cloud with non-empty cache";
 
  251            std::cerr << msg << std::endl;
 
 
  282            std::cout << 
"Cloud::validate_distribution(): distribution type mismatch, container is " << disttype
 
 
  302        double byte2gbyte=1.0/(1024*1024*1024);
 
  303        double global_memsize=
stats[
"memory_global"].template get<double>();
 
  304        double max_record_size=
stats[
"max_record_size"].template get<double>();
 
  305        double min_memsize=
stats[
"memory_min"].template get<double>();
 
  306        double max_memsize=
stats[
"memory_max"].template get<double>();
 
  307        double global_size=
stats[
"container_size_global"].template get<double>();
 
  309        if (universe.
rank()==0) {
 
  310            print(
"Cloud memory:");
 
  312            print(
"size of cloud (total)");
 
  313            print(
"  number of records:        ",global_size);
 
  314            print(
"  memory in GBytes:         ",global_memsize*byte2gbyte);
 
  315            print(
"size of cloud (average per node)");
 
  316            print(
"  number of records:        ",
double(global_size)/universe.
size());
 
  317            print(
"  memory in GBytes:         ",global_memsize*byte2gbyte/universe.
size());
 
  318            print(
"min/max of node");
 
  319            print(
"  memory in GBytes:         ",min_memsize*byte2gbyte,max_memsize*byte2gbyte);
 
  320            print(
"  max record size in GBytes:",max_record_size*byte2gbyte);
 
 
  344        std::size_t memsize=0;
 
  345        std::size_t max_record_size=0;
 
  347            memsize+=item.second.size();
 
  348            max_record_size=std::max(max_record_size,item.second.size());
 
  350        std::size_t global_memsize=memsize;
 
  351        std::size_t max_memsize=memsize;
 
  352        std::size_t min_memsize=memsize;
 
  354        universe.
gop.
sum(global_memsize);
 
  355        universe.
gop.
max(max_memsize);
 
  356        universe.
gop.
max(max_record_size);
 
  357        universe.
gop.
min(min_memsize);
 
  361        auto global_size=local_size;
 
  362        universe.
gop.
sum(global_size);
 
  364        j[
"container_size_global"] = global_size;
 
  365        j[
"memory_global"] = global_memsize;
 
  366        j[
"memory_min"] = min_memsize;
 
  367        j[
"memory_max"] = max_memsize;
 
  368        j[
"memory_rss_GB_max"] = rss;
 
  369        j[
"max_record_size"] = max_record_size;
 
 
  377        double ctime_max = double(
copy_time)*1.e-6;
 
  378        double ctime_acc = double(
copy_time)*1.e-6;
 
  379        double ctime_av = double(
copy_time)*1.e-6;
 
  383        universe.
gop.
max(rtime_max);
 
  384        universe.
gop.
sum(rtime_acc);
 
  385        rtime_av = rtime_acc/universe.
size();
 
  386        universe.
gop.
max(ctime_max);
 
  387        universe.
gop.
sum(ctime_acc);
 
  388        ctime_av = ctime_acc/universe.
size();
 
  395        universe.
gop.
sum(cstores);
 
  397        j[
"reading_time_max_s"] = rtime_max;
 
  398        j[
"reading_time_acc_s"] = rtime_acc;
 
  399        j[
"reading_time_av_s"] = rtime_av;
 
  400        j[
"copy_time_max_s"] = ctime_max;
 
  401        j[
"copy_time_acc_s"] = ctime_acc;
 
  402        j[
"copy_time_av_s"] = ctime_av;
 
  403        j[
"writing_time_s"] = wtime;
 
  404        j[
"replication_time_s"] = ptime;
 
  405        j[
"target_replication_time_s"] = tptime;
 
  406        j[
"cache_reads"] = creads;
 
  407        j[
"cache_stores"] = cstores;
 
 
  417        double rtime_max=timings[
"reading_time_max_s"].template get<double>();
 
  418        double rtime_av=timings[
"reading_time_av_s"].template get<double>();
 
  419        double rtime_acc=timings[
"reading_time_acc_s"].template get<double>();
 
  423        double wtime=timings[
"writing_time_s"].template get<double>();
 
  424        double ptime=timings[
"replication_time_s"].template get<double>();
 
  425        double tptime=timings[
"target_replication_time_s"].template get<double>();
 
  426        long creads=timings[
"cache_reads"].template get<long>();
 
  427        long cstores=timings[
"cache_stores"].template get<long>();
 
  429        auto precision = std::cout.precision();
 
  430        std::cout << std::fixed << std::setprecision(1);
 
  431        print(
"cloud storing wall time                        ", wtime);
 
  432        print(
"cloud replication wall time                    ", ptime);
 
  433        print(
"target replication wall time                   ", tptime);
 
  434        print(
"cloud max reading time (all procs)             ", rtime_max, std::defaultfloat);
 
  435        print(
"cloud average reading cpu time (all procs)     ", rtime_av, std::defaultfloat);
 
  436        print(
"cloud accumulated reading cpu time (all procs) ", rtime_acc, std::defaultfloat);
 
  437        std::cout << std::setprecision(precision) << std::scientific;
 
  438        print(
"cloud cache stores                             ", 
long(cstores));
 
  439        print(
"cloud cache loads                              ", 
long(creads));
 
 
  443        double byte2gbyte=1.0/(1024*1024*1024);
 
  444        double global_memsize=
stats[
"memory_global"].template get<double>();
 
  445        double max_record_size=
stats[
"max_record_size"].template get<double>();
 
  446        double min_memsize=
stats[
"memory_min"].template get<double>();
 
  447        double max_memsize=
stats[
"memory_max"].template get<double>();
 
  448        double global_size=
stats[
"container_size_global"].template get<double>();
 
  450        print(
"Cloud memory:");
 
  451        print(
"  size of cloud (total)");
 
  452        print(
"    number of records:        ",global_size);
 
  453        print(
"    memory in GBytes:         ",global_memsize*byte2gbyte);
 
  457        print(
"  min/max of node");
 
  458        print(
"    memory in GBytes:         ",min_memsize*byte2gbyte,max_memsize*byte2gbyte);
 
  459        print(
"    max record size in GBytes:",max_record_size*byte2gbyte);
 
 
  484    template<
typename T, std::
size_t NDIM>
 
  493                    fimpl->replicate(
false);
 
  496                    fimpl->replicate_on_hosts(
true);
 
  498                    fimpl->undo_replicate(
false);
 
 
 
  514            loop_types<DistributeFunctor, double, float, double_complex, float_complex>(std::tuple<DistributionType>(dt),wo);
 
 
  531        return forward_load<T>(world, rlist);
 
 
  543        return forward_load<T>(world, recordlist);
 
 
  554            return load_tuple<T>(world, recordlist);
 
  557            target.cloud_load(world, *
this, recordlist);
 
  560            return do_load<T>(world, recordlist);
 
 
  568            print(
"Cloud contents are replicated and read-only!");
 
  581            recordlist+=
source.cloud_store(world,*
this);
 
 
  619            if (
debug and (world.
rank()==0)) 
print(
"replication_per_node ended after ",cpu1-cpu0,
" seconds");
 
  621            MADNESS_EXCEPTION(
"cloud replication_per_node failed, presumably because some data is larger than 2GB",1);
 
 
  636        std::list<keyT> keylist;
 
  638            keylist.push_back(it->first);
 
  642            if (rank == world.
rank()) {
 
  643                std::size_t keylistsize = keylist.size();
 
  646                for (
auto key : keylist) {
 
  650                    auto data = acc->second;
 
  651                    std::size_t sz=
data.size();
 
  657                    for (std::size_t start=0; start<sz; start+=chunk_size) {
 
  658                        std::size_t remainder = std::min(sz - start, chunk_size);
 
  665                std::size_t keylistsize;
 
  667                for (
size_t i=0; i<keylistsize; i++) {
 
  674                    for (std::size_t start=0; start<sz; start+=chunk_size) {
 
  675                        std::size_t remainder=std::min(sz-start,chunk_size);
 
  685        if (
debug and (world.
rank()==0)) 
print(
"replication ended after ",cpu1-cpu0,
" seconds");
 
 
  701    template<
typename> 
struct is_tuple : std::false_type { };
 
  702    template<
typename ...T> 
struct is_tuple<
std::tuple<T...>> : std::true_type { };
 
  704    template<
typename Q> 
struct is_vector : std::false_type { };
 
  705    template<
typename Q> 
struct is_vector<
std::vector<Q>> : std::true_type { };
 
  736        if (
auto obj = std::any_cast<T>(&
cached_objects.find(record)->second)) 
return *obj;
 
 
  770            if (is_already_present) std::cout << 
"skipping ";
 
  773                << 
" to record " << record << std::endl;
 
  775            std::cout << 
"storing object of " << 
type_name<T>::value() << 
" to record " << record << std::endl;
 
  778            if (
source.is_compressed() and T::dimT>3) 
print(
"WARNING: storing compressed hi-dim `function");
 
  782        if (is_already_present) {
 
 
  815    typename std::enable_if<is_vector<T>::value, 
T>
::type 
  817        std::size_t sz = do_load<std::size_t>(world, recordlist);
 
  819        for (std::size_t i = 0; i < sz; ++i) {
 
  820            target[i] = do_load<typename T::value_type>(world, recordlist);
 
 
  830    typename std::enable_if<!is_vector<T>::value, 
T>
::type 
  832        keyT record = recordlist.pop_front_and_return();
 
  835        if (
is_cached(record)) 
return load_from_cache<T>(world, record);
 
  847                    std::shared_ptr<implT> impl;
 
  853                        print(
"failed to load function pointer from cloud, maybe the target is out of scope?");
 
  854                        print(
"record:", record, 
"world:", world.
id());
 
 
  887        if (
debug and world.
rank()==0) std::cout << 
"done with vector storing; container size " 
 
  893    template<
typename... Ts>
 
  896        auto storeaway = [&](
const auto &
arg) {
 
  899        auto l = [&](Ts 
const &... 
arg) {
 
  900            ((storeaway(
arg)), ...);
 
  902        std::apply(l, input);
 
 
  912        if (
debug) std::cout << 
"loading tuple of type " << 
typeid(
T).
name() << 
" to world " << world.
id() << std::endl;
 
  914        std::apply([&](
auto &&... args) {
 
  915            ((args = 
forward_load<
typename std::remove_reference<
decltype(args)>
::type>(world, recordlist)), ...);
 
 
 
cloud class
Definition cloud.h:178
 
bool is_cached(const keyT &key) const
Definition cloud.h:742
 
bool use_cache
Definition cloud.h:184
 
void clear()
Definition cloud.h:468
 
void replicate_per_node(const std::size_t chunk_size=INT_MAX)
Definition cloud.h:606
 
bool is_in_container(const keyT &key) const
checks if a (universe) container record is used
Definition cloud.h:750
 
bool force_load_from_cache
forces load from cache (mainly for debugging)
Definition cloud.h:183
 
bool debug
prints debug output
Definition cloud.h:180
 
std::atomic< long > writing_time1
Definition cloud.h:696
 
nlohmann::json get_statistics(World &world) const
return a json object with the cloud settings and statistics
Definition cloud.h:326
 
std::enable_if< is_vector< T >::value, T >::type do_load(World &world, recordlistT &recordlist) const
Definition cloud.h:816
 
recordlistT store_other(madness::World &world, const std::vector< T > &source)
Definition cloud.h:881
 
std::any cached_objT
Definition cloud.h:188
 
recordlistT store(madness::World &world, const T &source)
Definition cloud.h:566
 
T load_tuple(madness::World &world, recordlistT &recordlist) const
Definition cloud.h:911
 
std::is_base_of< archive::ParallelSerializableObject, T > is_parallel_serializable_object
Definition cloud.h:707
 
~Cloud()
Definition cloud.h:245
 
madness::archive::ContainerRecordOutputArchive::keyT keyT
Definition cloud.h:189
 
std::atomic< long > replication_time
Definition cloud.h:697
 
Recordlist< keyT > recordlistT
Definition cloud.h:192
 
StoragePolicy storage_policy
are the functions (WorldObjects) stored in the cloud or only pointers to them
Definition cloud.h:220
 
std::is_constructible< T, World & > is_world_constructible
Definition cloud.h:709
 
std::atomic< long > target_replication_time
Definition cloud.h:693
 
nlohmann::json gather_timings(World &universe) const
Definition cloud.h:373
 
friend std::string to_string(const StoragePolicy sp)
Definition cloud.h:212
 
recordlistT store_other(madness::World &world, const T &source)
Definition cloud.h:766
 
bool is_replicated
if contents of the container are replicated
Definition cloud.h:181
 
void set_force_load_from_cache(bool value)
Definition cloud.h:263
 
decltype(std::declval< T >().cloud_store(std::declval< World & >(), std::declval< Cloud & >())) member_cloud_serialize_t
Definition cloud.h:233
 
void replicate(const std::size_t chunk_size=INT_MAX)
Definition cloud.h:626
 
recordlistT local_list_of_container_keys
Definition cloud.h:227
 
DistributionType cloud_replication_policy
cloud is a container: replication policy for the cloud container: distributed, node-replicated,...
Definition cloud.h:223
 
void print_size(World &universe)
Definition cloud.h:300
 
std::atomic< long > reading_time
Definition cloud.h:690
 
void clear_timings()
Definition cloud.h:472
 
recordlistT store_tuple(World &world, const std::tuple< Ts... > &input)
store a tuple in multiple records
Definition cloud.h:894
 
void set_debug(bool value)
Definition cloud.h:255
 
nlohmann::json gather_memory_statistics(World &universe) const
get size of the cloud container
Definition cloud.h:342
 
std::enable_if<!is_vector< T >::value, T >::type do_load(World &world, recordlistT &recordlist) const
Definition cloud.h:831
 
T load(madness::World &world, const recordlistT recordlist) const
load a single object from the cloud, recordlist is kept unchanged
Definition cloud.h:526
 
void cache(madness::World &world, const T &obj, const keyT &record) const
Definition cloud.h:727
 
void set_fence(bool value)
Definition cloud.h:259
 
std::atomic< long > cache_reads
Definition cloud.h:698
 
friend std::ostream & operator<<(std::ostream &os, const StoragePolicy &sp)
Definition cloud.h:203
 
static void print_timings(const nlohmann::json timings)
Definition cloud.h:416
 
std::list< WorldObjectBase * > world_object_base_list
Definition cloud.h:230
 
static void print_memory_statistics(const nlohmann::json stats)
Definition cloud.h:442
 
DistributionType get_replication_policy() const
is the cloud container replicated: per rank, per node, or distributed
Definition cloud.h:275
 
Cloud(madness::World &universe)
Definition cloud.h:241
 
cacheT cached_objects
Definition cloud.h:226
 
void clear_cache(World &subworld)
Definition cloud.h:462
 
std::atomic< long > copy_time
Definition cloud.h:692
 
StoragePolicy get_storing_policy() const
storing policy refers to storing functions or pointers to functions
Definition cloud.h:296
 
void replicate_according_to_policy(const std::size_t chunk_size=INT_MAX)
Definition cloud.h:589
 
T load_from_cache(madness::World &world, const keyT &record) const
load an object from the cache, record is unchanged
Definition cloud.h:733
 
madness::meta::is_detected< member_cloud_serialize_t, T > has_cloud_serialize
Definition cloud.h:236
 
std::vector< unsigned char > valueT
Definition cloud.h:190
 
void set_replication_policy(const DistributionType value)
is the cloud container replicated: per rank, per node, or distributed
Definition cloud.h:268
 
void distribute_targets(const DistributionType dt=Distributed)
distribute/node/rank replicate the targets of all world objects stored in the cloud
Definition cloud.h:509
 
bool dofence
fences after load/store
Definition cloud.h:182
 
void print_timings(World &universe) const
backwards compatibility
Definition cloud.h:412
 
bool validate_replication_policy() const
Definition cloud.h:279
 
T allocator(World &world) const
Definition cloud.h:757
 
std::atomic< long > writing_time
Definition cloud.h:695
 
void set_storing_policy(const StoragePolicy value)
storing policy refers to storing functions or pointers to functions
Definition cloud.h:291
 
madness::WorldContainer< keyT, valueT > container
Definition cloud.h:225
 
T forward_load(madness::World &world, recordlistT &recordlist) const
load a single object from the cloud, recordlist is consumed while loading elements
Definition cloud.h:548
 
StoragePolicy
Definition cloud.h:194
 
@ StoreFunctionPointer
Definition cloud.h:197
 
@ StoreFunction
Definition cloud.h:195
 
std::map< keyT, cached_objT > cacheT
Definition cloud.h:191
 
T consuming_load(madness::World &world, recordlistT &recordlist) const
similar to load, but will consume the recordlist
Definition cloud.h:539
 
std::atomic< long > cache_stores
Definition cloud.h:699
 
FunctionImpl holds all Function state to facilitate shallow copy semantics.
Definition funcimpl.h:945
 
A multiresolution adaptive numerical function.
Definition mra.h:139
 
A tensor is a multidimensional array.
Definition tensor.h:317
 
Makes a distributed container with specified attributes.
Definition worlddc.h:1127
 
bool find(accessor &acc, const keyT &key)
Write access to LOCAL value by key. Returns true if found, false otherwise (always false for remote).
Definition worlddc.h:1274
 
void max(T *buf, size_t nelem)
Inplace global max while still processing AM & tasks.
Definition worldgop.h:884
 
void fence(bool debug=false)
Synchronizes all processes in communicator AND globally ensures no pending AM or tasks.
Definition worldgop.cc:161
 
void min(T *buf, size_t nelem)
Inplace global min while still processing AM & tasks.
Definition worldgop.h:878
 
void sum(T *buf, size_t nelem)
Inplace global sum while still processing AM & tasks.
Definition worldgop.h:872
 
void Bcast(T *buffer, int count, int root) const
MPI broadcast an array of count elements.
Definition worldmpi.h:416
 
A parallel world class.
Definition world.h:132
 
ProcessID rank() const
Returns the process rank in this World (same as MPI_Comm_rank()).
Definition world.h:320
 
WorldMpiInterface & mpi
MPI interface.
Definition world.h:204
 
ProcessID size() const
Returns the number of processes in this World (same as MPI_Comm_size()).
Definition world.h:330
 
unsigned long id() const
Definition world.h:315
 
WorldGopInterface & gop
Global operations.
Definition world.h:207
 
Definition parallel_dc_archive.h:14
 
long keyT
Definition parallel_dc_archive.h:16
 
An archive for storing local or parallel data wrapping a BinaryFstreamOutputArchive.
Definition parallel_archive.h:321
 
auto T(World &world, response_space &f) -> response_space
Definition global_functions.cc:28
 
Tensor< typename Tensor< T >::scalar_type > arg(const Tensor< T > &t)
Return a new tensor holding the argument of each element of t (complex types only)
Definition tensor.h:2503
 
static const double v
Definition hatom_sf_dirac.cc:20
 
#define MADNESS_CHECK(condition)
Check a condition — even in a release build the condition is always evaluated so it can have side eff...
Definition madness_exception.h:182
 
#define MADNESS_EXCEPTION(msg, value)
Macro for throwing a MADNESS exception.
Definition madness_exception.h:119
 
#define MADNESS_CHECK_THROW(condition, msg)
Check a condition — even in a release build the condition is always evaluated so it can have side eff...
Definition madness_exception.h:207
 
Definition array_addons.h:50
 
Namespace for all elements and tools of MADNESS.
Definition DFParameters.h:10
 
void hash_range(hashT &seed, It first, It last)
Definition worldhash.h:280
 
double get_rss_usage_in_GB()
Definition ranks_and_hosts.cpp:10
 
static double cpu_time()
Returns the cpu time in seconds relative to an arbitrary origin.
Definition timers.h:127
 
DistributionType
some introspection of how data is distributed
Definition worlddc.h:81
 
@ NodeReplicated
even if there are several ranks per node
Definition worlddc.h:84
 
@ Distributed
no replication of the container, the container is distributed over the world
Definition worlddc.h:82
 
@ RankReplicated
replicate the container over all world ranks
Definition worlddc.h:83
 
void hash_combine(hashT &seed, const T &v)
Combine hash values.
Definition worldhash.h:260
 
static class madness::twoscale_cache_class cache[kmax+1]
 
DistributionType validate_distribution_type(const dcT &dc)
check distribution type of WorldContainer – global communication
Definition worlddc.h:319
 
void print(const T &t, const Ts &... ts)
Print items to std::cout (items separated by spaces) and terminate with a new line.
Definition print.h:226
 
double wall_time()
Returns the wall time in seconds relative to an arbitrary origin.
Definition timers.cc:48
 
std::string type(const PairType &n)
Definition PNOParameters.h:18
 
static bool print_timings
Definition SCF.cc:106
 
std::string name(const FuncType &type, const int ex=-1)
Definition ccpairfunction.h:28
 
madness::hashT hash_value(const std::array< T, N > &a)
Hash std::array with madness hash.
Definition array_addons.h:78
 
Definition hatom_sf_dirac.cc:91
 
Definition test_ccpairfunction.cc:22
 
functor to distribute/rank/node-replicate a function, passed in as a pointer to WorldObjectBase
Definition cloud.h:485
 
DistributionType dt
Definition cloud.h:486
 
int operator()(WorldObjectBase *wo) const
Definition cloud.h:488
 
DistributeFunctor(const DistributionType dt)
Definition cloud.h:487
 
std::atomic< long > & rtime
Definition cloud.h:715
 
World & world
Definition cloud.h:713
 
double wall0
Definition cloud.h:714
 
~cloudtimer()
Definition cloud.h:719
 
cloudtimer(World &world, std::atomic< long > &readtime)
Definition cloud.h:717
 
static keyT compute_record(const std::vector< T > &arg)
Definition cloud.h:125
 
keyT pop_front_and_return()
Definition cloud.h:84
 
static keyT compute_record(const Function< T, NDIM > &arg)
Definition cloud.h:110
 
Recordlist(const Recordlist &other)
Definition cloud.h:72
 
Recordlist(const keyT &key)
Definition cloud.h:70
 
static keyT compute_record(const std::shared_ptr< T > &arg)
Definition cloud.h:131
 
static keyT compute_record(const T &arg)
Definition cloud.h:134
 
std::size_t size() const
Definition cloud.h:90
 
madness::meta::is_detected< member_id_t, T > has_member_id
Definition cloud.h:100
 
decltype(std::declval< T >().id()) member_id_t
Definition cloud.h:97
 
friend std::ostream & operator<<(std::ostream &os, const Recordlist &arg)
Definition cloud.h:148
 
Recordlist & operator+=(const Recordlist &list2)
Definition cloud.h:74
 
static keyT compute_record(const WorldContainer< keyQ, valueT > &arg)
Definition cloud.h:116
 
decltype(std::declval< T >().hash()) member_hash_t
Definition cloud.h:104
 
static keyT compute_record(const std::shared_ptr< WorldContainer< keyQ, valueT > > &arg)
Definition cloud.h:119
 
std::list< keyT > list
Definition cloud.h:66
 
Recordlist & operator+=(const keyT &key)
Definition cloud.h:79
 
static keyT compute_record(const FunctionImpl< T, NDIM > *arg)
Definition cloud.h:113
 
static keyT compute_record(const std::shared_ptr< madness::FunctionImpl< T, NDIM > > &arg)
Definition cloud.h:122
 
static keyT compute_record(const Tensor< T > &arg)
Definition cloud.h:128
 
madness::meta::is_detected< member_hash_t, T > has_member_hash
Definition cloud.h:107
 
Recordlist()
Definition cloud.h:68
 
Base class for WorldObject, useful for introspection.
Definition world_object.h:340
 
class to temporarily redirect output to cout
Definition print.h:277
 
static const char * value()
Definition cloud.h:39
 
static const char * value()
Definition cloud.h:41
 
static const char * value()
Definition cloud.h:43
 
static const char * value()
Definition cloud.h:45
 
static const char * value()
Definition cloud.h:47
 
static const char * value()
Definition cloud.h:49
 
static const char * value()
Definition cloud.h:52
 
static const char * value()
Definition cloud.h:54
 
static const char * value()
Definition cloud.h:56
 
static const char * value()
Definition cloud.h:58
 
static const char * value()
Definition cloud.h:60
 
static const char * value()
Definition cloud.h:62
 
A utility to get the name of a type as a string from chatGPT.
Definition cloud.h:34
 
static const char * value()
Definition cloud.h:35
 
#define MPI_BYTE
Definition stubmpi.h:77
 
double source(const coordT &r)
Definition testperiodic.cc:48
 
static madness::WorldMemInfo stats
Definition worldmem.cc:64
 
int ProcessID
Used to clearly identify process number/rank.
Definition worldtypes.h:43
 
FLOAT target(const FLOAT &x)
Definition y.cc:295