1#ifndef LINEARALGEBRA_SRC_MOLPRO_LINALG_ARRAY_DISTRARRAYDISK_H
2#define LINEARALGEBRA_SRC_MOLPRO_LINALG_ARRAY_DISTRARRAYDISK_H
5#include <molpro/Profiler.h>
6#include <molpro/linalg/array/DistrArray.h>
7#include <molpro/linalg/array/Span.h>
45 DistrArrayDisk(std::unique_ptr<Distribution> distr, MPI_Comm commun);
61 [[nodiscard]] std::unique_ptr<LocalBuffer>
local_buffer()
override;
63 [[nodiscard]] std::unique_ptr<const LocalBuffer>
local_buffer()
const override;
Distributed array located primarily on disk.
Definition DistrArrayDisk.h:36
size_t disk_page_size() const override
Definition DistrArrayDisk.h:58
value_type dot(const DistrArrayDisk &y) const
Definition DistrArrayDisk.h:55
~DistrArrayDisk() override
void disk_array
a compile time tag that this is a distributed disk array
Definition DistrArrayDisk.h:38
std::unique_ptr< LocalBuffer > local_buffer() override
Not available: an array on disk is not held in memory.
Definition DistrArrayDisk.cpp:36
bool m_allocated
Flags that the memory view buffer has been allocated.
Definition DistrArrayDisk.h:40
virtual void erase()=0
Erase the array from disk.
size_t m_buffer_size
buffer size for paged access via BufferManager
Definition DistrArrayDisk.h:42
const Distribution & distribution() const override
Access distribution of the array among processes.
Definition DistrArrayDisk.cpp:30
std::unique_ptr< Distribution > m_distribution
describes distribution of array among processes
Definition DistrArrayDisk.h:41
void set_buffer_size(size_t buffer_size)
Definition DistrArrayDisk.h:57
Array distributed across many processes supporting remote-memory-access, access to process local buff...
Definition DistrArray.h:137
double value_type
Definition DistrArray.h:140
virtual value_type dot(const DistrArray &y) const
Scalar product of two arrays. Collective. Throws error if any array is empty. Both arrays should be p...
Definition DistrArray.cpp:224
Specifies distribution of a contiguous array into non-overlapping chunks.
Definition Distribution.h:16
Definition ArrayHandler.h:19
double dot(const DistrArrayDisk &x, const DistrArrayDisk &y)