Commit b93ca0c8 authored by Kenneth Moreland's avatar Kenneth Moreland
Browse files

icetSendRecvLargeMessages no longer stores all masks for all processes.

The method did an all gather that collected on each process masks for
all processes for what processes it gets messages.  This takes n^2
where n is the number of processes.  For large numbers of processes,
that gets really big.  This change uses all to all to collect only
which messages the local process gets.
parent 537cf837
......@@ -103,3 +103,5 @@ Const versions of icetImageGetColor* and icetImageGetDepth* functions.
Added Alltoall to communicator. (Search for Allgather for places to add in
documentation.)
icetSendRecvLargeMessages takes const array for messageDestinations.
......@@ -365,8 +365,9 @@ ICET_EXPORT void icetDiagnostics(IceTBitField mask);
#define ICET_DATA_REP_GROUP_BUF (ICET_CORE_BUFFER_START | (IceTEnum)0x0003)
#define ICET_COMM_COUNT_BUF (ICET_CORE_BUFFER_START | (IceTEnum)0x0004)
#define ICET_COMM_OFFSET_BUF (ICET_CORE_BUFFER_START | (IceTEnum)0x0005)
#define ICET_IMAGE_COLLECT_OFFSET_BUF (ICET_CORE_BUFFER_START | (IceTEnum)0x0006)
#define ICET_IMAGE_COLLECT_SIZE_BUF (ICET_CORE_BUFFER_START | (IceTEnum)0x0007)
#define ICET_STRATEGY_COMMON_BUF_0 (ICET_CORE_BUFFER_START | (IceTEnum)0x0006)
#define ICET_STRATEGY_COMMON_BUF_1 (ICET_CORE_BUFFER_START | (IceTEnum)0x0007)
#define ICET_STRATEGY_COMMON_BUF_2 (ICET_CORE_BUFFER_START | (IceTEnum)0x0008)
#define ICET_RENDER_LAYER_BUFFER_START (ICET_STATE_BUFFER_START | (IceTEnum)0x0010)
#define ICET_RENDER_LAYER_BUFFER_END (ICET_STATE_BUFFER_START | (IceTEnum)0x0020)
......
This diff is collapsed.
......@@ -96,8 +96,10 @@ void icetRenderTransferSparseImages(IceTSparseImage compositeImage1,
messageDestinations - An array of size numMessagesSending that contains
the ranks of message destinations.
messagesInOrder - If true, then messages will be received in the order
specified by the ICET_PROCESS_ORDERS state variable. If false,
messages may come in an arbitrary order.
specified by the ICET_PROCESS_ORDERS state variable. The locally
generated message will come in first, followed by messages adjacent to
either the left or right. If messagesInOrder is false, messages may
come in an arbitrary order.
generateDataFunc - A callback function that generates messages. The
function is given the index in messageDestinations and the rank of
the destination as arguments. The data of the message and the size
......@@ -118,7 +120,7 @@ typedef IceTVoid *(*IceTGenerateData)(IceTInt id, IceTInt dest,
IceTSizeType *size);
typedef void (*IceTHandleData)(void *buffer, IceTInt src);
void icetSendRecvLargeMessages(IceTInt numMessagesSending,
IceTInt *messageDestinations,
const IceTInt *messageDestinations,
IceTBoolean messagesInOrder,
IceTGenerateData generateDataFunc,
IceTHandleData handleDataFunc,
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment