mirror of
https://github.com/fverdugo/XM_40017.git
synced 2025-11-08 23:54:25 +01:00
Adding MPI p2p notebook
This commit is contained in:
parent
19ec76a80f
commit
adea887862
@ -13,7 +13,7 @@ EditURL = "https://github.com/fverdugo/XM_40017/blob/main/notebooks/SCRIPT_NAME.
|
|||||||
<div class="admonition-body">
|
<div class="admonition-body">
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
Download this notebook and run it locally on your machine [recommended]. Click <a href="https://www.francescverdugo.com/XM_40017/dev/SCRIPT_NAME.ipynb" download>here</a>.
|
Download this notebook and run it locally on your machine [highly recommended]. Click <a href="https://www.francescverdugo.com/XM_40017/dev/SCRIPT_NAME.ipynb" download>here</a>.
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
@ -121,6 +121,7 @@ makedocs(;
|
|||||||
"Distributed computing in Julia" => "julia_distributed.md",
|
"Distributed computing in Julia" => "julia_distributed.md",
|
||||||
#"Distributed computing with MPI" => "mpi_tutorial.md",
|
#"Distributed computing with MPI" => "mpi_tutorial.md",
|
||||||
"Matrix-matrix multiplication"=>"matrix_matrix.md",
|
"Matrix-matrix multiplication"=>"matrix_matrix.md",
|
||||||
|
"MPI (point-to-point)" => "julia_mpi.md",
|
||||||
#"Jacobi method" => "jacobi_method.md",
|
#"Jacobi method" => "jacobi_method.md",
|
||||||
#"All pairs of shortest paths" => "asp.md",
|
#"All pairs of shortest paths" => "asp.md",
|
||||||
#"Gaussian elimination" => "LEQ.md",
|
#"Gaussian elimination" => "LEQ.md",
|
||||||
|
|||||||
@ -81,36 +81,6 @@ msg = 2
|
|||||||
@fetchfrom 2 work(msg)
|
@fetchfrom 2 work(msg)
|
||||||
```
|
```
|
||||||
|
|
||||||
## MPI (Point-to-point)
|
|
||||||
|
|
||||||
### Exercise 1
|
|
||||||
|
|
||||||
```julia
|
|
||||||
using MPI
|
|
||||||
MPI.Init()
|
|
||||||
comm = MPI.Comm_dup(MPI.COMM_WORLD)
|
|
||||||
rank = MPI.Comm_rank(comm)
|
|
||||||
nranks = MPI.Comm_size(comm)
|
|
||||||
buffer = Ref(0)
|
|
||||||
if rank == 0
|
|
||||||
msg = 2
|
|
||||||
buffer[] = msg
|
|
||||||
println("msg = $(buffer[])")
|
|
||||||
MPI.Send(buffer,comm;dest=rank+1,tag=0)
|
|
||||||
MPI.Recv!(buffer,comm;source=nranks-1,tag=0)
|
|
||||||
println("msg = $(buffer[])")
|
|
||||||
else
|
|
||||||
dest = if (rank != nranks-1)
|
|
||||||
rank+1
|
|
||||||
else
|
|
||||||
0
|
|
||||||
end
|
|
||||||
MPI.Recv!(buffer,comm;source=rank-1,tag=0)
|
|
||||||
buffer[] += 1
|
|
||||||
println("msg = $(buffer[])")
|
|
||||||
MPI.Send(buffer,comm;dest,tag=0)
|
|
||||||
end
|
|
||||||
```
|
|
||||||
|
|
||||||
## Matrix-matrix multiplication
|
## Matrix-matrix multiplication
|
||||||
|
|
||||||
@ -161,6 +131,37 @@ end
|
|||||||
end
|
end
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## MPI (Point-to-point)
|
||||||
|
|
||||||
|
### Exercise 2
|
||||||
|
|
||||||
|
```julia
|
||||||
|
using MPI
|
||||||
|
MPI.Init()
|
||||||
|
comm = MPI.COMM_WORLD
|
||||||
|
rank = MPI.Comm_rank(comm)
|
||||||
|
nranks = MPI.Comm_size(comm)
|
||||||
|
buffer = Ref(0)
|
||||||
|
if rank == 0
|
||||||
|
msg = 2
|
||||||
|
buffer[] = msg
|
||||||
|
println("msg = $(buffer[])")
|
||||||
|
MPI.Send(buffer,comm;dest=rank+1,tag=0)
|
||||||
|
MPI.Recv!(buffer,comm;source=nranks-1,tag=0)
|
||||||
|
println("msg = $(buffer[])")
|
||||||
|
else
|
||||||
|
dest = if (rank != nranks-1)
|
||||||
|
rank+1
|
||||||
|
else
|
||||||
|
0
|
||||||
|
end
|
||||||
|
MPI.Recv!(buffer,comm;source=rank-1,tag=0)
|
||||||
|
buffer[] += 1
|
||||||
|
println("msg = $(buffer[])")
|
||||||
|
MPI.Send(buffer,comm;dest,tag=0)
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
## Jacobi method
|
## Jacobi method
|
||||||
|
|
||||||
### Exercise 1
|
### Exercise 1
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user