AFEPack
公有类型 | 公有成员 | 公有属性
MPI::Shared_object< T >模板结构参考

#include <MPI.h>

所有成员的列表。

公有类型

typedef Remote_pointer< T > pointer_t
typedef std::pair< int, pointer_tpair_t
typedef std::multimap< int,
pointer_t
_Base

公有成员

 Shared_object ()
 本地对象的指针
 Shared_object (T &t)
bool add_clone (int rank, T *ptr)
bool add_clone (int rank, int type, T *ptr)
bool add_clone (int rank, const pointer_t &ptr)
T *& local_pointer ()
T * local_pointer () const
T & local_object () const
bool is_duplicate_entry (int rank, const pointer_t &ptr) const
bool is_primary_object (int rank) const
int primary_rank (int rank) const
bool is_on_primary_rank (int rank) const

公有属性

T * _ptr

详细描述

template<class T>
struct MPI::Shared_object< T >

一个类型为 T 的对象的拷贝的远程指针数组。这个信息完整的描述一个对 象的共享情况。本地对象的指针另外存储,不在此数组中。其元素是

<rank, remote_pointer>

的对。


成员类型定义文档

template<class T>
typedef std::multimap<int,pointer_t> MPI::Shared_object< T >::_Base
template<class T>
typedef std::pair<int,pointer_t> MPI::Shared_object< T >::pair_t
template<class T>
typedef Remote_pointer<T> MPI::Shared_object< T >::pointer_t

构造及析构函数文档

template<class T>
MPI::Shared_object< T >::Shared_object ( ) [inline]

本地对象的指针

template<class T>
MPI::Shared_object< T >::Shared_object ( T &  t) [inline]

成员函数文档

template<class T>
bool MPI::Shared_object< T >::add_clone ( int  rank,
T *  ptr 
) [inline]
template<class T>
bool MPI::Shared_object< T >::add_clone ( int  rank,
int  type,
T *  ptr 
) [inline]
template<class T>
bool MPI::Shared_object< T >::add_clone ( int  rank,
const pointer_t ptr 
) [inline]
template<class T>
bool MPI::Shared_object< T >::is_duplicate_entry ( int  rank,
const pointer_t ptr 
) const [inline]

检查是否已经有此条目。

template<class T>
bool MPI::Shared_object< T >::is_on_primary_rank ( int  rank) const [inline]

返回对象是否在首秩上。由于此处没有存储秩,因此需要传入秩作为参数。 rank 必须是本进程的秩,确保在 rank 上有对象的拷贝。由于multimap 是有序的容器,实现时只需要比较第一个元素的秩即可。

template<class T>
bool MPI::Shared_object< T >::is_primary_object ( int  rank) const [inline]

对一个在首秩上的对象,其可能还有多个拷贝,其中那个内存地址最小 的对象称为"主对象"。

判断此对象本身是否是主对象。基于上面同样的原因,也传入本进程的 秩作为参数。

不在首秩上

在此情况下,本地有多个拷贝, 下面在几个本地拷贝中进行比较。

(first_rank > rank)

是本进程上的唯一拷贝

template<class T>
T& MPI::Shared_object< T >::local_object ( ) const [inline]
template<class T>
T*& MPI::Shared_object< T >::local_pointer ( ) [inline]
template<class T>
T* MPI::Shared_object< T >::local_pointer ( ) const [inline]
template<class T>
int MPI::Shared_object< T >::primary_rank ( int  rank) const [inline]

对一个对象来说,其所有的拷贝所在的秩中最小的那个秩称为"首秩"。由 于不是完全一致的共享对象(共享类型不为 0)在一个进程上可以有多个拷 贝,一个对象在首秩上的拷贝可以有多个。 返回对象的首秩。其中rank必须是本进程的秩。


成员数据文档

template<class T>
T* MPI::Shared_object< T >::_ptr

该结构的文档由以下文件生成: