32 #ifndef _util_group_file_h 33 #define _util_group_file_h 38 #include <util/class/class.h> 39 #include <util/group/thread.h> 40 #include <util/group/memory.h> 77 void obtain_local_lock(
size_t start,
size_t fence);
78 void release_local_lock(
size_t start,
size_t fence);
94 int me()
const {
return me_; }
96 int n()
const {
return n_; }
103 size_t localsize() {
return distsize_to_size(offsets_[me_+1]-offsets_[me_]); }
108 {
return distsize_to_size(offsets_[node+1] - offsets_[node]); }
137 virtual void sum_reduction(
double *data,
distsize_t doffset,
int dsize);
138 virtual void sum_reduction_on_node(
double *data,
size_t doffset,
int dsize,
143 virtual void sync() = 0;
163 static FileGrp* initial_filegrp(
int &argc,
char** argv);
164 static FileGrp* initial_filegrp();
static void set_default_filegrp(const Ref< FileGrp > &)
The default file group contains the primary file group to be used by an application.
static FileGrp * get_default_filegrp()
Returns the default file group.
virtual void * obtain_readwrite(distsize_t offset, int size)=0
Only one thread can have an unreleased obtain_readwrite at a time.
int n() const
Returns how many nodes there are.
Definition: file.h:96
virtual void * obtain_readonly(distsize_t offset, int size)=0
This gives read access to the file location. No locking is done.
void set_filename(char *name)
Sets the filename for the FileGrp.
virtual void release_readonly(void *data, distsize_t offset, int size)=0
This is called when read access is no longer needed.
void open()
Opens the files.
virtual FileGrp * clone()=0
Clones the given FileGrp. The new FileGrp may need to be initialized additionally.
virtual void * obtain_writeonly(distsize_t offset, int size)=0
This gives write access to the data location. No locking is done.
virtual void set_localsize(size_t)=0
Set the size of locally held data.
virtual void deactivate()
Deactivate is called after the data has been used.
Classes which need runtime information about themselves and their relationship to other classes can v...
Definition: class.h:244
distsize_t localoffset()
Returns the global offset to this node's data.
Definition: file.h:105
A template class that maintains references counts.
Definition: ref.h:332
void close()
Closes the files.
virtual void release_writeonly(void *data, distsize_t offset, int size)=0
This is called when write access is no longer needed.
distsize_t offset(int node)
Returns the global offset to node's data.
Definition: file.h:110
virtual void print(std::ostream &o=ExEnv::out0()) const
Prints out information about the object.
distsize_t totalsize()
Returns the sum of all data allocated on all nodes.
Definition: file.h:112
virtual void activate()
Activate is called before the data is to be used.
size_t localsize()
Returns the amount of data residing locally on me().
Definition: file.h:103
virtual void sync()=0
Synchronizes all the nodes.
static std::ostream & out0()
Return an ostream that writes from node 0.
virtual void catchup()
Processes outstanding requests.
const char * get_filename() const
Returns the filename for the FileGrp.
Definition: file.h:91
int size(int node)
Returns the amount of data residing on node.
Definition: file.h:107
The FileGrp abstract class provides a way of accessing distributed file in a parallel machine...
Definition: file.h:55
int me() const
Returns who I am.
Definition: file.h:94
virtual void release_readwrite(void *data, distsize_t offset, int size)=0
This is called when read/write access is no longer needed.