Send/Recv Deep Copy

Located in file: MEL_deepcopy.hpp

template <typename T>
enable_if_not_pointer<T> MEL::Deep::Send(T &obj, const int dst, const int tag, const Comm &comm)

Send a deep object reference.

Parameters
  • obj -

    The deep object to transport

  • dst -

    The rank of the destination process

  • tag -

    The message tag to send with

  • comm -

    The comm world to transport within

template <typename P>
enable_if_pointer<P> MEL::Deep::Send(P &ptr, const int dst, const int tag, const Comm &comm)

Send a pointer to a deep/non-deep object.

Parameters
  • ptr -

    Pointer to the object to transport

  • dst -

    The rank of the destination process

  • tag -

    The message tag to send with

  • comm -

    The comm world to transport within

template <typename P>
enable_if_pointer<P> MEL::Deep::Send(P &ptr, const int len, const int dst, const int tag, const Comm &comm)

Send a pointer to an array of deep/non-deep objects.

Parameters
  • ptr -

    Pointer to the array of objects to transport

  • len -

    The number of elements to send

  • dst -

    The rank of the destination process

  • tag -

    The message tag to send with

  • comm -

    The comm world to transport within

template <typename T>
enable_if_deep_not_pointer<T> MEL::Deep::BufferedSend(T &obj, const int dst, const int tag, const Comm &comm, const int bufferSize)

Send a deep object reference using a buffered send.

Buffersize must be calculated ahead of time

Parameters
  • obj -

    The deep object to transport

  • dst -

    The rank of the destination process

  • tag -

    The message tag to send with

  • comm -

    The comm world to transport within

  • bufferSize -

    The buffer size needed to pack the entire structure contiguously

template <typename T>
enable_if_deep_not_pointer<T> MEL::Deep::BufferedSend(T &obj, const int dst, const int tag, const Comm &comm)

Send a deep object reference using a buffered send.

Buffersize is calculated before transport

Parameters
  • obj -

    The deep object to transport

  • dst -

    The rank of the destination process

  • tag -

    The message tag to send with

  • comm -

    The comm world to transport within

template <typename P>
enable_if_pointer<P> MEL::Deep::BufferedSend(P &ptr, const int dst, const int tag, const Comm &comm, const int bufferSize)

Send a pointer to a deep/non-deep object using a buffered send.

Buffersize must be calculated ahead of time

Parameters
  • ptr -

    Pointer to the object to transport

  • dst -

    The rank of the destination process

  • tag -

    The message tag to send with

  • comm -

    The comm world to transport within

  • bufferSize -

    The buffer size needed to pack the entire structure contiguously

template <typename P>
enable_if_pointer<P> MEL::Deep::BufferedSend(P &ptr, const int dst, const int tag, const Comm &comm)

Send a pointer to a deep/non-deep object using a buffered send.

Buffersize is calculated before transport

Parameters
  • ptr -

    Pointer to the object to transport

  • dst -

    The rank of the destination process

  • tag -

    The message tag to send with

  • comm -

    The comm world to transport within

template <typename P>
enable_if_pointer<P> MEL::Deep::BufferedSend(P &ptr, const int len, const int dst, const int tag, const Comm &comm, const int bufferSize)

Send a pointer to an array of deep/non-deep objects using a buffered send.

Buffersize must be calculated ahead of time

Parameters
  • ptr -

    Pointer to the array of objects to transport

  • len -

    The number of elements to send

  • dst -

    The rank of the destination process

  • tag -

    The message tag to send with

  • comm -

    The comm world to transport within

  • bufferSize -

    The buffer size needed to pack the entire structure contiguously

template <typename P>
enable_if_pointer<P> MEL::Deep::BufferedSend(P &ptr, const int len, const int dst, const int tag, const Comm &comm)

Send a pointer to an array of deep/non-deep objects using a buffered send.

Buffersize is calculated before transport

Parameters
  • ptr -

    Pointer to the array of objects to transport

  • len -

    The number of elements to send

  • dst -

    The rank of the destination process

  • tag -

    The message tag to send with

  • comm -

    The comm world to transport within

template <typename T>
enable_if_not_pointer<T> MEL::Deep::Recv(T &obj, const int src, const int tag, const Comm &comm)

Receive a deep object reference.

Parameters
  • obj -

    The deep object to transport

  • src -

    The rank of the source process

  • tag -

    The message tag to receive with

  • comm -

    The comm world to transport within

template <typename P>
enable_if_pointer<P> MEL::Deep::Recv(P &ptr, const int src, const int tag, const Comm &comm)

Receive a pointer to a deep/non-deep object.

Parameters
  • ptr -

    Pointer to the object to transport

  • src -

    The rank of the source process

  • tag -

    The message tag to receive with

  • comm -

    The comm world to transport within

template <typename P>
enable_if_pointer<P> MEL::Deep::Recv(P &ptr, int &len, const int src, const int tag, const Comm &comm)

Receive a pointer to an array of deep/non-deep objects.

Parameters
  • ptr -

    Pointer to the array of objects to transport

  • len -

    The number of elements that were received

  • src -

    The rank of the source process

  • tag -

    The message tag to receive with

  • comm -

    The comm world to transport within

template <typename P>
enable_if_pointer<P> MEL::Deep::Recv(P &ptr, const int len, const int src, const int tag, const Comm &comm)

Receive a pointer to an array of deep/non-deep objects.

Parameters
  • ptr -

    Pointer to the array of objects to transport

  • len -

    The number of elements to receive

  • src -

    The rank of the source process

  • tag -

    The message tag to receive with

  • comm -

    The comm world to transport within

template <typename T>
enable_if_deep_not_pointer<T> MEL::Deep::BufferedRecv(T &obj, const int src, const int tag, const Comm &comm)

Receive a deep object reference using a buffered receive.

Buffersize determined by probing the incoming message

Parameters
  • obj -

    The deep object to transport

  • src -

    The rank of the source process

  • tag -

    The message tag to receive with

  • comm -

    The comm world to transport within

template <typename P>
enable_if_pointer<P> MEL::Deep::BufferedRecv(P &ptr, const int src, const int tag, const Comm &comm)

Receive a pointer to a deep/non-deep object using a buffered receive.

Buffersize determined by probing the incoming message

Parameters
  • ptr -

    Pointer to the deep/non-deep object to transport

  • src -

    The rank of the source process

  • tag -

    The message tag to receive with

  • comm -

    The comm world to transport within

template <typename P>
enable_if_pointer<P> MEL::Deep::BufferedRecv(P &ptr, int &len, const int src, const int tag, const Comm &comm)

Receive a pointer to an array of deep/non-deep objects using a buffered receive.

Buffersize determined by probing the incoming message

Parameters
  • ptr -

    Pointer to the array of deep/non-deep objects to transport

  • len -

    The number of elements that were received

  • src -

    The rank of the source process

  • tag -

    The message tag to receive with

  • comm -

    The comm world to transport within

template <typename P>
enable_if_pointer<P> MEL::Deep::BufferedRecv(P &ptr, const int len, const int src, const int tag, const Comm &comm)

Receive a pointer to an array of deep/non-deep objects using a buffered receive.

Buffersize determined by probing the incoming message

Parameters
  • ptr -

    Pointer to the array of deep/non-deep objects to transport

  • len -

    The number of elements to receive

  • src -

    The rank of the source process

  • tag -

    The message tag to receive with

  • comm -

    The comm world to transport within