Why is this unsafe?
Process 0
Process 1
Send(1)
Send(0)
Recv(1)
Recv(0)
depends on availability of buffers in which to store data sent until can be received
What are some solutions for the unsafe problem=
make operations more carefully
supply receive and send buffer at same time
supply own space as buffer for send
use non-blocking operations
Solution: make operation more carefully
Solution: Supply receive buffer and send buffer at same time
Sendrecv(1)
Sendrecv(0)
Solution: supply own space as buffer for send
Bsend(1)
Bsend(0)
Solution: Use non-blocking operations
Isend(1)
Isend(0)
Irecv(1)
Irecv(0)
Waitall
What are some optimizations for Process Mapping?
4x8 decomposition btw MPI processes
machine with 4 nodes, each with 8 cores
Mapping 1 (fill) -> each node has 16 connections to other nodes
Mapping 2 (fill) -> each node has 12 connections
Mapping 3 (round-robin) -> each node has 32 connections
What is difference btw Message-Passing and Remote memory access RMA?
Message-Passing = two-sided semantics, cooperative model
Operations: (e.g MPI_Send(), MPI_Recv(), MPI_Bcast())
send data to process
receive data from process
perform collective operation on data
Remote memory access RMA = one-sided semantic, only initiator makes procedure call
Operations: (e.g MPI_Put(), MPI_Get())
put data to remote process
get data from remote process
update data at remote process
Zuletzt geändertvor 2 Monaten