[This is preliminary documentation and is subject to change.]
Enumeration describing how a given attribute should be copied (or not) when the communicator is cloned (duplicated).Namespace: MPI
Assembly: MPI (in MPI.dll)
Version: 0.9.0.0 (0.9.0.0)
public enum AttributeDuplication
|Visual Basic (Declaration)|
Public Enumeration AttributeDuplication
public enum class AttributeDuplication
When the communicator is duplicated, this value is not copied. For value types, small value types (less than the size of a native pointer) will be kept in the low-level MPI communicator. With larger value types, the low-level MPI communicator's attribute will store a pointer to the value, which will be automatically allocated and deallocated as appropriate. This behavior can be used to interoperate with C MPI programs that store attributes on the communicator.
When the communicator is duplicated, the new communicator will hold a "shallow" copy of the underlying data, so that both communicators reference the same value. For value types smaller than a native pointer, the value will be stored directly in the low-level communicator. This approach can be used for interoperability with C MPI programs that store primitive types or MPI handles directly in the attributes. For object types and "large" value types, the value will be stored on the (garbage-collected) heap. Copying entails creating new references to the object.
When the communicator is duplicated, the new communicator will contain a completely-new, distinct copy of the underlying data. For value types, each low-level MPI communicator will store a pointer to the data, which will be deallocated when the MPI communicator is destroyed. This approach can be used for interoperability with C MPI programs that store attributes as pointers to primitives or structures. For class types, MPI.NET will use the ICloneable interface to clone objects for a deep copy.