This commit is contained in:
Francesc Verdugo 2023-08-14 18:42:36 +02:00
parent d2af3894cf
commit f283a8f8da

View File

@ -35,21 +35,10 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 5, "execution_count": null,
"id": "1dc78750", "id": "1dc78750",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [],
{
"data": {
"text/plain": [
"jacobi_2_check (generic function with 1 method)"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [ "source": [
"using Printf\n", "using Printf\n",
"\n", "\n",
@ -109,21 +98,10 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 6, "execution_count": null,
"id": "14a58308", "id": "14a58308",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [],
{
"data": {
"text/plain": [
"jacobi (generic function with 1 method)"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [ "source": [
"function jacobi(n,niters)\n", "function jacobi(n,niters)\n",
" u = zeros(n+2)\n", " u = zeros(n+2)\n",
@ -142,28 +120,10 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 14, "execution_count": null,
"id": "76e1eba1", "id": "76e1eba1",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [],
{
"data": {
"text/plain": [
"7-element Vector{Float64}:\n",
" -1.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 1.0"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [ "source": [
"jacobi(5,0)" "jacobi(5,0)"
] ]
@ -276,20 +236,12 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 2, "execution_count": null,
"id": "4edad93f", "id": "4edad93f",
"metadata": { "metadata": {
"scrolled": true "scrolled": true
}, },
"outputs": [ "outputs": [],
{
"name": "stdout",
"output_type": "stream",
"text": [
"It's not correct. Keep trying! 💪\n"
]
}
],
"source": [ "source": [
"answer = \"x\" # replace x with a, b, c or d\n", "answer = \"x\" # replace x with a, b, c or d\n",
"gauss_seidel_1_check(answer)" "gauss_seidel_1_check(answer)"
@ -326,7 +278,7 @@
} }
}, },
"cell_type": "markdown", "cell_type": "markdown",
"id": "60d64ef2", "id": "a9667c42",
"metadata": {}, "metadata": {},
"source": [ "source": [
"<div>\n", "<div>\n",
@ -336,7 +288,7 @@
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"id": "a4b9af33", "id": "3f90d701",
"metadata": {}, "metadata": {},
"source": [ "source": [
"### Data dependencies\n", "### Data dependencies\n",
@ -353,7 +305,7 @@
} }
}, },
"cell_type": "markdown", "cell_type": "markdown",
"id": "b9656556", "id": "210e80e7",
"metadata": {}, "metadata": {},
"source": [ "source": [
"<div>\n", "<div>\n",
@ -376,7 +328,7 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"id": "ab1d263d", "id": "3c437326",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
@ -400,7 +352,7 @@
} }
}, },
"cell_type": "markdown", "cell_type": "markdown",
"id": "33aeb726", "id": "98e0eb71",
"metadata": {}, "metadata": {},
"source": [ "source": [
"<div>\n", "<div>\n",
@ -410,7 +362,7 @@
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"id": "06e45af2", "id": "0148f9b3",
"metadata": {}, "metadata": {},
"source": [ "source": [
"Thus, the algorithm is usually implemented following two main phases at each iteration Jacobi:\n", "Thus, the algorithm is usually implemented following two main phases at each iteration Jacobi:\n",
@ -426,7 +378,7 @@
} }
}, },
"cell_type": "markdown", "cell_type": "markdown",
"id": "d4da41d9", "id": "baccd833",
"metadata": {}, "metadata": {},
"source": [ "source": [
"<div>\n", "<div>\n",
@ -436,7 +388,7 @@
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"id": "486c46bf", "id": "8b436c73",
"metadata": {}, "metadata": {},
"source": [ "source": [
"## Efficiency" "## Efficiency"
@ -459,18 +411,10 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 4, "execution_count": null,
"id": "3a03fc4c", "id": "3a03fc4c",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [],
{
"name": "stdout",
"output_type": "stream",
"text": [
"It's not correct. Keep trying! 💪\n"
]
}
],
"source": [ "source": [
"answer = \"x\" # replace x with a, b, c or d\n", "answer = \"x\" # replace x with a, b, c or d\n",
"jacobi_1_check(answer)" "jacobi_1_check(answer)"
@ -627,7 +571,7 @@
} }
}, },
"cell_type": "markdown", "cell_type": "markdown",
"id": "d3c3a458", "id": "7d66b1a2",
"metadata": {}, "metadata": {},
"source": [ "source": [
"<div>\n", "<div>\n",
@ -653,7 +597,7 @@
} }
}, },
"cell_type": "markdown", "cell_type": "markdown",
"id": "43040f66", "id": "f14142ea",
"metadata": {}, "metadata": {},
"source": [ "source": [
"<div>\n", "<div>\n",
@ -686,21 +630,10 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 26, "execution_count": null,
"id": "4ab59b2f", "id": "4ab59b2f",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [],
{
"data": {
"text/plain": [
"jacobi_2d (generic function with 1 method)"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [ "source": [
"function jacobi_2d(n,niters)\n", "function jacobi_2d(n,niters)\n",
" u = zeros(n+2,n+2)\n", " u = zeros(n+2,n+2)\n",
@ -724,33 +657,10 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 25, "execution_count": null,
"id": "6da0aa54", "id": "6da0aa54",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [],
{
"data": {
"text/plain": [
"12×12 Matrix{Float64}:\n",
" 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0\n",
" 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0\n",
" 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0\n",
" 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0\n",
" 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0\n",
" 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0\n",
" 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0\n",
" 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0\n",
" 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0\n",
" 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0\n",
" 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0\n",
" 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [ "source": [
"u = jacobi_2d(10,0)" "u = jacobi_2d(10,0)"
] ]
@ -804,7 +714,7 @@
} }
}, },
"cell_type": "markdown", "cell_type": "markdown",
"id": "dc342d8a", "id": "e52959a5",
"metadata": {}, "metadata": {},
"source": [ "source": [
"<div>\n", "<div>\n",
@ -814,7 +724,7 @@
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"id": "766bc1d4", "id": "e0cee28b",
"metadata": {}, "metadata": {},
"source": [ "source": [
"Which of the thee alternatives is more efficient? To answer this question we need to quantify how much data is processed and communicated in each case. The following analysis assumes that the grid is of $N$ by $N$ cells and that the number of processes is $P$." "Which of the thee alternatives is more efficient? To answer this question we need to quantify how much data is processed and communicated in each case. The following analysis assumes that the grid is of $N$ by $N$ cells and that the number of processes is $P$."
@ -822,7 +732,7 @@
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"id": "2580b969", "id": "f6ea16f5",
"metadata": {}, "metadata": {},
"source": [ "source": [
"### 1D block partition\n" "### 1D block partition\n"
@ -835,7 +745,7 @@
} }
}, },
"cell_type": "markdown", "cell_type": "markdown",
"id": "e51f4de6", "id": "0cfeca62",
"metadata": {}, "metadata": {},
"source": [ "source": [
"<div>\n", "<div>\n",
@ -845,7 +755,7 @@
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"id": "6a061b83", "id": "4600c94a",
"metadata": {}, "metadata": {},
"source": [ "source": [
"- We update $N^2/P$ items per iteration\n", "- We update $N^2/P$ items per iteration\n",
@ -869,7 +779,7 @@
} }
}, },
"cell_type": "markdown", "cell_type": "markdown",
"id": "d16e5534", "id": "e5142fa1",
"metadata": {}, "metadata": {},
"source": [ "source": [
"<div>\n", "<div>\n",
@ -879,7 +789,7 @@
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"id": "3459d6bd", "id": "091b0310",
"metadata": {}, "metadata": {},
"source": [ "source": [
"- We update $N^2/P$ items per iteration\n", "- We update $N^2/P$ items per iteration\n",
@ -890,10 +800,10 @@
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"id": "cac2194d", "id": "a8fb49a3",
"metadata": {}, "metadata": {},
"source": [ "source": [
"### 2D Cyclic partition" "### 2D cyclic partition"
] ]
}, },
{ {
@ -903,7 +813,7 @@
} }
}, },
"cell_type": "markdown", "cell_type": "markdown",
"id": "9c2d4518", "id": "1bc30b74",
"metadata": {}, "metadata": {},
"source": [ "source": [
"<div>\n", "<div>\n",
@ -913,7 +823,7 @@
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"id": "88c6c735", "id": "c45f4e44",
"metadata": {}, "metadata": {},
"source": [ "source": [
"- We update $N^2/P$ items\n", "- We update $N^2/P$ items\n",