AFEPack
|
#include <MPI.h>
公有类型 | |
typedef Remote_pointer< T > | pointer_t |
typedef std::pair< int, pointer_t > | pair_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 |
一个类型为 T 的对象的拷贝的远程指针数组。这个信息完整的描述一个对 象的共享情况。本地对象的指针另外存储,不在此数组中。其元素是
<rank, remote_pointer>
的对。
typedef std::multimap<int,pointer_t> MPI::Shared_object< T >::_Base |
typedef std::pair<int,pointer_t> MPI::Shared_object< T >::pair_t |
typedef Remote_pointer<T> MPI::Shared_object< T >::pointer_t |
MPI::Shared_object< T >::Shared_object | ( | ) | [inline] |
本地对象的指针
MPI::Shared_object< T >::Shared_object | ( | T & | t | ) | [inline] |
bool MPI::Shared_object< T >::add_clone | ( | int | rank, |
T * | ptr | ||
) | [inline] |
bool MPI::Shared_object< T >::add_clone | ( | int | rank, |
int | type, | ||
T * | ptr | ||
) | [inline] |
bool MPI::Shared_object< T >::add_clone | ( | int | rank, |
const pointer_t & | ptr | ||
) | [inline] |
bool MPI::Shared_object< T >::is_duplicate_entry | ( | int | rank, |
const pointer_t & | ptr | ||
) | const [inline] |
检查是否已经有此条目。
bool MPI::Shared_object< T >::is_on_primary_rank | ( | int | rank | ) | const [inline] |
返回对象是否在首秩上。由于此处没有存储秩,因此需要传入秩作为参数。 rank 必须是本进程的秩,确保在 rank 上有对象的拷贝。由于multimap 是有序的容器,实现时只需要比较第一个元素的秩即可。
bool MPI::Shared_object< T >::is_primary_object | ( | int | rank | ) | const [inline] |
对一个在首秩上的对象,其可能还有多个拷贝,其中那个内存地址最小 的对象称为"主对象"。
判断此对象本身是否是主对象。基于上面同样的原因,也传入本进程的 秩作为参数。
不在首秩上
在此情况下,本地有多个拷贝, 下面在几个本地拷贝中进行比较。
(first_rank > rank)
是本进程上的唯一拷贝
T& MPI::Shared_object< T >::local_object | ( | ) | const [inline] |
T*& MPI::Shared_object< T >::local_pointer | ( | ) | [inline] |
T* MPI::Shared_object< T >::local_pointer | ( | ) | const [inline] |
int MPI::Shared_object< T >::primary_rank | ( | int | rank | ) | const [inline] |
对一个对象来说,其所有的拷贝所在的秩中最小的那个秩称为"首秩"。由 于不是完全一致的共享对象(共享类型不为 0)在一个进程上可以有多个拷 贝,一个对象在首秩上的拷贝可以有多个。 返回对象的首秩。其中rank必须是本进程的秩。
T* MPI::Shared_object< T >::_ptr |