mirror of
https://github.com/fverdugo/XM_40017.git
synced 2025-11-08 21:24:25 +01:00
61 lines
1.4 KiB
Plaintext
61 lines
1.4 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "d6d12733",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Solution to Matrix Multiplication Exercises\n",
|
|
"\n",
|
|
"## Implementation of Algorithm 3"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "be73e87a",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"function matmul_dist_3!(C,A,B)\n",
|
|
" m = size(C,1)\n",
|
|
" n = size(C,2)\n",
|
|
" l = size(A,2)\n",
|
|
" @assert size(A,1) == m\n",
|
|
" @assert size(B,2) == n\n",
|
|
" @assert size(B,1) == l\n",
|
|
" @assert mod(m,nworkers()) == 0\n",
|
|
" # Implement here\n",
|
|
" nrows_w = div(m,nworkers())\n",
|
|
" @sync for (i,w) in enumerate(workers())\n",
|
|
" rows_w = (1:nrows_w) .+ (i-1)*nrows_w\n",
|
|
" Aw = A[rows_w,:]\n",
|
|
" ftr = @spawnat w begin\n",
|
|
" Cw = similar(Aw,nrows_w,n)\n",
|
|
" matmul_seq!(Cw,Aw,B)\n",
|
|
" Cw\n",
|
|
" end\n",
|
|
" @async C[rows_w,:] = fetch(ftr)\n",
|
|
" end\n",
|
|
" C\n",
|
|
"end"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Julia 1.9.1",
|
|
"language": "julia",
|
|
"name": "julia-1.9"
|
|
},
|
|
"language_info": {
|
|
"file_extension": ".jl",
|
|
"mimetype": "application/julia",
|
|
"name": "julia",
|
|
"version": "1.9.1"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|