Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Sbalzarini Lab
S
Software
P
Parallel Computing
OpenFPM
openfpm_vcluster
Commits
0e7112c7
Commit
0e7112c7
authored
Feb 08, 2016
by
Pietro Incardona
Browse files
Semantic communication
parent
0ed3620c
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/VCluster.hpp
View file @
0e7112c7
...
...
@@ -347,6 +347,57 @@ public:
MPI_IallreduceW
<
T
>::
reduce
(
num
,
MPI_MAX
,
req
.
last
());
}
/*! \brief Send and receive multiple messages
*
* It send multiple messages to a set of processors the and receive
* multiple messages from another set of processors, all the processor must call this
* function, NBX is more performant than PCX with more processors (1000+)
*
* suppose the following situation the calling processor want to communicate
* * 2 vector of 100 integers to processor 1
* * 1 vector of 50 integers to processor 6
* * 1 vector of 48 integers to processor 7
* * 1 vector of 70 integers to processor 8
*
* \param prc list of processors you should communicate with [1,1,6,7,8]
*
* \param v vector containing the data to send [v=vector<vector<int>>, v.size()=4, T=vector<int>], T at the moment
* is only tested for vectors of 0 or more generic elements (without pointers)
*
* \param msg_alloc This is a call-back with the purpose to allocate space
* for the incoming messages and give back a valid pointer, supposing that this call-back has been triggered by
* the processor of id 5 that want to communicate with me a message of size 100 byte the call-back will have
* the following 6 parameters
* in the call-back in order:
* * message size required to receive the message (100)
* * total message size to receive from all the processors (NBX does not provide this information)
* * the total number of processor want to communicate with you (NBX does not provide this information)
* * processor id (5)
* * ri request id (it is an id that goes from 0 to total_p, and is incremented
* every time message_alloc is called)
* * void pointer, parameter for additional data to pass to the call-back
*
* \param opt options, only NONE supported
*
*/
template
<
typename
T
>
void
sendrecvMultipleMessagesNBX
(
openfpm
::
vector
<
size_t
>
&
prc
,
openfpm
::
vector
<
T
*
>
&
data
,
void
*
(
*
msg_alloc
)(
size_t
,
size_t
,
size_t
,
size_t
,
size_t
,
void
*
),
void
*
ptr_arg
,
long
int
opt
=
NONE
)
{
#ifdef DEBUG
checkType
<
typename
T
::
value_type
>
();
#endif
// resize the pointer list
ptr_send
.
resize
(
prc
.
size
());
sz_send
.
resize
(
prc
.
size
());
for
(
size_t
i
=
0
;
i
<
prc
.
size
()
;
i
++
)
{
ptr_send
.
get
(
i
)
=
data
.
get
(
i
)
->
getPointer
();
sz_send
.
get
(
i
)
=
data
.
get
(
i
)
->
size
()
*
sizeof
(
typename
T
::
value_type
);
}
sendrecvMultipleMessagesNBX
(
prc
.
size
(),(
size_t
*
)
sz_send
.
getPointer
(),(
size_t
*
)
prc
.
getPointer
(),(
void
**
)
ptr_send
.
getPointer
(),
msg_alloc
,
ptr_arg
,
opt
);
}
/*! \brief Send and receive multiple messages
*
* It send multiple messages to a set of processors the and receive
...
...
@@ -881,7 +932,6 @@ public:
*
* \warning operation is asynchronous execute must be called to ensure they are executed
*
* \param tag id
* \param v vector to receive (automaticaly resized)
* \param send data to send
*
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment