XM_40017/notebooks/LEQ.ipynb
2024-09-16 18:11:56 +02:00

498 lines
165 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"id": "46d0dd15",
"metadata": {},
"source": [
"<img src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/3/39/VU_logo.png/800px-VU_logo.png?20161029201021\" width=\"350\">\n",
"\n",
"### Programming large-scale parallel systems\n",
"\n",
"# Gaussian elimination"
]
},
{
"cell_type": "markdown",
"id": "ff0fbd76",
"metadata": {},
"source": [
"## Contents\n",
"\n",
"In this notebook, we will learn\n",
"\n",
"- How to parallelize Gaussian elimination\n",
"- How to fix static load imbalance"
]
},
{
"cell_type": "markdown",
"id": "480af594",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\">\n",
"<b>Note:</b> Do not forget to execute the cell below before starting this notebook! \n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "7e93809a",
"metadata": {},
"outputs": [],
"source": [
"using Printf\n",
"function answer_checker(answer,solution)\n",
" if answer == solution\n",
" \"🥳 Well done! \"\n",
" else\n",
" \"It's not correct. Keep trying! 💪\"\n",
" end |> println\n",
"end\n",
"ge_par_check(answer) = answer_checker(answer, \"a\")\n",
"ge_dep_check(answer) = answer_checker(answer, \"b\")"
]
},
{
"cell_type": "markdown",
"id": "8dcee319",
"metadata": {},
"source": [
"## Gaussian elimination\n",
"\n",
"\n",
"[Gaussian elimination](https://en.wikipedia.org/wiki/Gaussian_elimination) is a method to solve systems of linear equations, e.g.\n",
"\n",
"$$\n",
"\\left[\n",
"\\begin{matrix}\n",
"1 & 3 & 1 \\\\\n",
"1 & 2 & -1 \\\\\n",
"3 & 11 & 5 \\\\\n",
"\\end{matrix}\n",
"\\right]\n",
"\\left[\n",
"\\begin{matrix}\n",
"x \\\\\n",
"y \\\\\n",
"z \\\\\n",
"\\end{matrix}\n",
"\\right]\n",
"=\n",
"\\left[\n",
"\\begin{matrix}\n",
"9 \\\\\n",
"1 \\\\\n",
"35 \\\\\n",
"\\end{matrix}\n",
"\\right]\n",
"$$\n",
"\n",
"The steps of the Gaussian elimination will transform the system into an upper triangular matrix. The system of linear equations can now easily be solved by backward substitution. \n",
"\n",
"\n",
"$$\n",
"\\left[\n",
"\\begin{matrix}\n",
"1 & 3 & 1 & 9 \\\\\n",
"1 & 2 & -1 & 1 \\\\\n",
"3 & 11 & 5 & 35 \\\\\n",
"\\end{matrix}\n",
"\\right]\n",
"\\rightarrow\n",
"\\left[\n",
"\\begin{matrix}\n",
"1 & 3 & 1 & 9 \\\\\n",
"0 & -1 & -2 & -8 \\\\\n",
"0 & 2 & 2 & 8 \\\\\n",
"\\end{matrix}\n",
"\\right]\n",
"\\rightarrow\n",
"\\left[\n",
"\\begin{matrix}\n",
"1 & 3 & 1 & 9 \\\\\n",
"0 & 1 & 2 & 8 \\\\\n",
"0 & 2 & 2 & 8 \\\\\n",
"\\end{matrix}\n",
"\\right]\n",
"\\rightarrow\n",
"\\left[\n",
"\\begin{matrix}\n",
"1 & 3 & 1 & 9 \\\\\n",
"0 & 1 & 2 & 8 \\\\\n",
"0 & 0 & -2 & -8 \\\\\n",
"\\end{matrix}\n",
"\\right]\n",
"\\rightarrow\n",
"\\left[\n",
"\\begin{matrix}\n",
"1 & 3 & 1 & 9 \\\\\n",
"0 & 1 & 2 & 8 \\\\\n",
"0 & 0 & 1 & 4 \\\\\n",
"\\end{matrix}\n",
"\\right]\n",
"$$\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "94c10106",
"metadata": {},
"source": [
"### Serial implementation\n",
"The following algorithm computes the Gaussian elimination on a matrix which represents a system of linear equations.\n",
"- The first inner loop in line 4 divides the current row by the value of the diagonal entry, thus transforming the diagonal to contain only ones. \n",
"- The second inner loop beginning in line 8 substracts the rows from one another such that all entries below the diagonal become zero. "
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e4070214",
"metadata": {},
"outputs": [],
"source": [
"function gaussian_elimination!(B)\n",
" n,m = size(B)\n",
" @inbounds for k in 1:n\n",
" for t in (k+1):m\n",
" B[k,t] = B[k,t]/B[k,k]\n",
" end\n",
" B[k,k] = 1\n",
" for i in (k+1):n \n",
" for j in (k+1):m\n",
" B[i,j] = B[i,j] - B[i,k]*B[k,j]\n",
" end\n",
" B[i,k] = 0\n",
" end\n",
" end\n",
" B\n",
"end"
]
},
{
"cell_type": "markdown",
"id": "3763b000",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\">\n",
"<b>Note:</b> This algorithm is not correct for all matrices: if any diagonal element <code>B[k,k]</code> is zero, the computation in the first inner loop fails. To get around this problem, another step can be added to the algorithm that swaps the rows until the diagonal entry of the current row is not zero. This process of finding a nonzero value is called <b>pivoting</b>. \n",
"</div>"
]
},
{
"cell_type": "markdown",
"id": "fbb3d1eb",
"metadata": {},
"source": [
"You can verify that the algorithm computes the upper triangular matrix correctly for the example in the introduction by running the following code cell. "
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "eb30df0d",
"metadata": {},
"outputs": [],
"source": [
"A = Float64[1 3 1; 1 2 -1; 3 11 5]\n",
"b = Float64[9,1,35]\n",
"B = [A b]\n",
"gaussian_elimination!(B)"
]
},
{
"cell_type": "markdown",
"id": "39f2e8ef",
"metadata": {},
"source": [
"## Parallelization\n"
]
},
{
"cell_type": "markdown",
"id": "1b1a6469",
"metadata": {},
"source": [
"### Where can we extract parallelism?\n",
"\n",
"```julia\n",
"n,m = size(B)\n",
"for k in 1:n\n",
" for t in (k+1):m\n",
" B[k,t] = B[k,t]/B[k,k]\n",
" end\n",
" B[k,k] = 1\n",
" for i in (k+1):n \n",
" for j in (k+1):m\n",
" B[i,j] = B[i,j] - B[i,k]*B[k,j]\n",
" end\n",
" B[i,k] = 0\n",
" end\n",
"end\n",
"```"
]
},
{
"cell_type": "markdown",
"id": "e52c4b38",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-success\">\n",
"<b>Question:</b> Which of the loops can be parallelized?\n",
"</div>\n",
"\n",
" a) the inner loops, but not the outer loop\n",
" b) the outer loop, but not the inner loops\n",
" c) all loops\n",
" d) only the first inner loop"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "078e974e",
"metadata": {},
"outputs": [],
"source": [
"answer = \"x\" # replace x with a, b, c, or d \n",
"ge_par_check(answer)"
]
},
{
"cell_type": "markdown",
"id": "14d57c52",
"metadata": {},
"source": [
"### Two possible data partitions"
]
},
{
"cell_type": "markdown",
"id": "6b17aee4",
"metadata": {},
"source": [
"The outer loop of the algorithm is not parallelizable, since the iterations depend on the results of the previous iterations. However, we can extract parallelism from the inner loops. Let's have a look at two different parallelization schemes. \n",
"\n",
"1. **Block-wise partitioning**: Each processor gets a block of subsequent rows. \n",
"2. **Cyclic partitioning**: The rows are alternately assigned to different processors. "
]
},
{
"attachments": {
"fig-asp-1d-partition.png": {
"image/png": "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"
}
},
"cell_type": "markdown",
"id": "c518f863",
"metadata": {},
"source": [
"<div>\n",
"<img src=\"attachment:fig-asp-1d-partition.png\" align=\"left\" width=\"400\"/>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"id": "102d6fa2",
"metadata": {},
"source": [
"## What is the work per process at iteration k?\n",
"To evaluate the efficiency of both partitioning schemes, consider how much work the processors do in the following example. \n",
"In any iteration k, which part of the matrix is updated in the inner loops? \n",
"\n",
"### Block-wise partition"
]
},
{
"attachments": {
"fig-asp-data-updated.png": {
"image/png": "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m+ybdSiJnvrPpbSPmVicucm+uUxsxo6fSnvH+OLMTfbN5Y8eAIbP2Ggv68hpYtM+bpW+aTO2ye0x+OzDV9HXvbwvr8fgogWP0NY+zmdusm/uEpvXmPlaG+5hYydU6lqarfaxk/qmzti6kNdj8MXHb6RQaO/L63mmp2sJmOXyGJz7QNYRNCaa2fCJ6DXiuTMXmJt1HFnL5Y+MiIiIiMhwpORaRERERCQlSq5FRERERFKi5FpEREREJCVKrkVEREREUqLkWkREREQkJUquRURERERSouRaRERERCQlSq5FRERERFKi5FpEREREJCVKrkVEREREUqLkWkREREQkJUquRURERERSouRaRERERCQlSq5FRERERFKi5FpEREREJCVKrkVEREREUqLkWkREREQkJUquRURERERSouRaRERERCQlSq5FRERERFKi5FpEREREJCVKrkVEREREUqLkWkREREQkJUquRURERERSouRaRERERCQlSq5FRERERFKi5FpEREREJCVKrkVEREREUqLkWkREREQkJUquRURERERSouRaRERERCQlSq5FRERERFKi5FpEREREJCVKrkVEREREUqLkWkREREQkJUquRURERERS0p51AHHPP3YD/7r8yqzDGKCvewV3XvEFsHxejyxf9ELbgzefxXOPXJN1KIlefOImDGv7V6Et61ASdS58juWLny/86/ITsw6lot7u5XbXlSdRaB+bdSiJVix+of3RO37Ji0/enHUoiZ5/5Fow2vL6GXctfYmu5a9YXuMD6OtdYf++6qsUOsZlHUqipa883fbff/6UBc/ckXUoiV549Dq6li9sz+tnXOztptjblctjcN6TbwN2yzoMkZrkLrme/uLTxS0XXduXdRxxTxaLHVvc/Y8eyzqQCuZ1dbVv+OSDxTWfeTZ3+w6gc/m8tjYr2JZ3XduTdSxJXulbbgu6u9vzGh/A073Fjs3vubGnPacXeM8vW9K+3mP3Ftd++qlcHoNLlj/T1m4F23JpPj/jV3s7eb5rRUeej8G53T0dm9x7Q+9Ya/esY0myYMXy9lnPPFpc98WXcnkM9q14rm1FsSe358FeLzK3pyeXx+CKzu3bXtLddhkmcpdc7zFxduGE6W/N3Rfor0se8K+sfkBHW04Tm7s75/a8d8pOHbtNmJ3LAL8876+ML7T3nrj6mzuyjiXJ/Ste4LGu+X2nrvHWXMYHcNWSB4snrb5/x4TCmKxDSfSfFc91HzVlhzF7T9wkl8fgN1+6mhV9PT2nrHFgLj/jp7pf5sHnni/m+Ri8esnDxS9Mf3P7lLbxWYeSaM7cF3sOX/X1HW+ZtHkuj8EzXv4H83oWd5+6xltz+SVeVuzm2qUP5/IYPHX+LB7pyjoKkdrk8gQkIiIiIjIcKbkWEREREUmJkmsRERERkZQouRYRERERSYmSaxERERGRlCi5FhERERFJiZJrEREREZGUKLkWEREREUmJkmsRERERkZQouRYRERERSYmSaxERERGRlCi5FhERERFJiZJrEREREZGUKLkWEREREUmJkmsRERERkZQouRYRERERSYmSaxERERGRlCi5FhERERFJiZJrEREREZGUKLkWEREREUmJkmsRERERkZQouRYRERERSYmSaxERERGRlCi5FhERERFJiZJrEREREZGUKLkWEREREUmJkmsRERERkZQouRYRERERSYmSaxERERGRlCi5FhERERFJiZJrEREREZGUKLkWEREREUmJkmsRERERkZQouRYRERERSYmSaxERERGRlCi5FhERERFJiZJrEREREZGUtGcdQFyX97GouCLrMAZwYHFxBQXL5/VIEWdZsSuX+w6gy3uwIrmNb6l3UaSY2/ggHINLil30UMw6lERFitZZ7MntPuwq9tCd0/MLwBLvoojnNj4Ax1lSXIGZZR1Kol6KLM/zebDYRxe9ltf4OovdQD7P0130Zh2CSM3M3bMNwJgPrN7/fkLh+z6pcHK2QSVYXFxRWKUwLp9ZDbC82F3osDbvsLbc7TuApcUuM7CJhbG53Ie9XrQlxRU2tW1CLuMDWFLsKkwqjHHDcvkZLy92F9qtzcfk9Bhc1Ndp7VbI7THYRx+L+7oKeT4GlxW7CxMKHbk9BpcVuwod1uZjrD2v8ZmDTcrpMei4LSt25zK+JcVvW2fxQ6VXdXPdWT+zgEQGkbuW63dP2cFOmH587ppFXv/46X7TBp8stOW05fqtT/+45wur79+x24TZudt3AF+e91fGF9p7T1z9zbk75gDuX/ECn37x0r6rZh3XlnUslez4+LeL1876eGFCYUwuP+OD5/6k+/9W22vM3hM3yWV833zpalb09fScsuaBHVnHkuSp7pf5wHMXFq/b4BP5PMkAOz/+3eKV63+0MKVt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"
}
},
"cell_type": "markdown",
"id": "a67e0aad",
"metadata": {},
"source": [
"<div>\n",
"<img src=\"attachment:fig-asp-data-updated.png\" align=\"left\" width=\"250\"/>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"id": "d9d29899",
"metadata": {},
"source": [
"It is clear from the code that at any given iteration `k`, the matrix is updated from row `k` to `n` and from column `k` to `m`. If we look at how that reflects the distribution of work over the processes, we can see that CPU 1 does not have any work, whereas CPU 2 does a little work and CPU 3 and 4 do a lot of work. "
]
},
{
"attachments": {
"fig-asp-data-updated-2.png": {
"image/png": "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R8m1iIiIiEhK1C1ERERERCQlSq5FRERERFKi5FpEREREJCVKrkVEREREUqLkWkREREQkJUquRURERERSouRaRERERCQlHVkH0M+MK4ADso5DREREcus37hyRdRAileQiuTaz0TBvCqxuWcciIiIiefXyamZrjXL37qwjESkn8xkazfgzLJuOdb8Vn6TkWkRERJLZ646PuwfGzHHnoKzDEUmSh+R6HrB6pkGIiIjIUDLHnRlZByGSJBfdQopNfwusu2nWUQz0r799w7fZ+ySztvasQ0n00I3n9K27+X7tq66+YdahJHr2wStoaxtVWG/z9+TyIdqlC17k6X9fVtjyXZ/PZXwA/7rmNN9qjy9be8eorENJ9NDNP+xbZ+M92ietkcMvMDDnkb9S6O3tmzn7gFx+iVcsfZX//PNnvtUeX8rtHbx///1033K3z1nHqHFZh5Lo4VvO65v+lne2T5m+ZdahJHrhP3+ne9mivlnbHJTLY7Cvt4v7rz/D3/ruk3N3DD73EMx9JusoRGqTu+R62gyYvXvWUQx0//XnsOW7TqStPZfnRJ6892eFWdts3r72RvlMrhe/fi0do8YXZu+ez+T61edf4cXHf+Kzd/981qGU9cA/vu9b7Po56xydz+T6qft+3jdz9sz29TbPZ3K9fMmN9HUvK8zePZ/J9aL5b/DM/T/22bvnN7l+8MYf+uY7H2ujx+czuX7mgV8WZmwxrX39rfKZXPd03crSBS/0zd49n8l1T1c3D9/yA5+9e/6S66ULlVzL0JHLREdEREREZChSci0iIiIikhIl1yIiIiIiKVFyLSIiIiKSEiXXIiIiIiIpUXItIiIiIpISJdciIiIiIilRci0iIiIikhIl1yIiIiIiKVFyLSIiIiKSEiXXIiIiIiIpUXItIiIiIpISJdciIiIiIilRci0iIiIikhIl1yIiIiIiKVFyLSIiIiKSEiXXIiIiIiIpUXItIiIiIpISJdciIiIiIilRci0iIiIikhIl1yIiIiIiKVFyLSIiIiKSEiXXIiIiIiIpUXItIiIiIpISJdciIiIiIilRci0iIiIikhIl1yIiIiIiKVFyLSIiIiKSEiXXIiIiIiIpUXItIiIiIpISJdciIiIiIilRci0iIiIikhIl1yIiIiIiKVFyLSIiIiKSEiXXIiIiIiIpUXItIiIiIpISc/dsAzDmAav3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Ax2jxhfW3mjPXCY2o8dOpqNzbGHtjfbM5Y8eAIZPf8tu1jl6QtaRJOoYs0rflOmzc3sMvvDYNfR1L+vL6zG4aP4TtHeM8bU32jN3ic2brM2nz9rFRo+ve1jbQdExakLf5OlbtuX1GHzlqZtpa+voy+t5pqdrMZjl8hic83DWETQmmtnwmeg17LkzB5iTdRxZy+WPjIiIiIjIUKTkWkREREQkJUquRURERERSouRaRERERCQlSq5FRERERFKi5FpEREREJCVKrkVEREREUqLkWkREREQkJUquRURERERSouRaRERERCQlSq5FRERERFKi5FpEREREJCVKrkVEREREUqLkWkREREQkJUquRURERERSouRaRERERCQlSq5FRERERFKi5FpEREREJCVKrkVEREREUqLkWkREREQkJUquRURERERSouRaRERERCQlSq5FRERERFKi5FpEREREJCVKrkVEREREUqLkWkREREQkJUquRURERERSouRaRERERCQlSq5FRERERFKi5FpEREREJCVKrkVEREREUqLkWkREREQkJUquRURERERSouRaRERERCQlSq5FRERERFKi5FpEREREJCVKrkVEREREUtKRdQBxLz15E3f95eqswxigr2c591z1FbD2rENJtGzhS+2P3HouLz5+XdahJHrl6VswrP2utnzuv+ULXmTZopfa7vrLCVmHUlZv9zK79+qTaesYnXUoiVYsernjibt/wSvP3Jp1KIleevx6MNrz+hl3LXmNrmWvW17jA+jrXWH/uuYbtI8am3UoiZa8/mz7f/75E+Y/f3fWoSR6+Ykb6Fq2oCOvn3Ght5tCb1cuj8G5z7wX2CnrMERqkrvkerVXnitsvvD6vqzjiHumr9C52b3/6DGzrENJNLerq2ODZx4prPH8C7nbdwDLl81tb7c22/ze63uyjiXJ633LbH53d0de4wN4rrfQuel9N/d0WD5vOL20dHHHek/eX1jruWdzeQwuXvZ8e4e12eZL8vkZL+hbzktdKzrzfAzO6e7u3PiBm3tHW4dnHUuS+SuWdcx8/onCuq+8mstjsG/Fi+0rCj25PQ/2eoE5PT25PAZXLN+m/VXdbZchInfJ9S7jZ7Udv9p7cvcFumrxw37qtP0685rY/Gv5nJ7/N2n7zp3GzcplgF+bexVj2zp6T1h9786sY0ny0IqXebJrXt9p096Ty/gArln8SOHk1d/dOa5tVNahJHpgxYvdR07adtTu4zfK5TH4nVevZUVfT8+p0/bL5Wf8XPfrPLzipUKej8FrFz9W+Mpqe3dMas9ny/VBc17pOWzVt3XuM2HTXB6DZ7/2D+b2LOo+bdp7cvklXlro5volj+XyGDxt3kwe78o6CpHa5PIEJCIiIiIyFCm5FhERERFJiZJrEREREZGUKLkWEREREUmJkmsRERERkZQouRYRERERSYmSaxERERGRlCi5FhERERFJiZJrEREREZGUKLkWEREREUmJkmsRERERkZQouRYRERERSYmSaxERERGRlCi5FhERERFJiZJrEREREZGUKLkWEREREUmJkmsRERERkZQouRYRERERSYmSaxERERGRlCi5FhERERFJiZJrEREREZGUKLkWEREREUmJkmsRERERkZQouRYRERERSYmSaxERERGRlCi5FhERERFJiZJrEREREZGUKLkWEREREUmJkmsRERERkZQouRYRERERSYmSaxERERGRlCi5FhERERFJiZJrEREREZGUKLkWEREREUmJkmsRERERkZQouRYRERERSYmSaxERERGRlHRkHUBcl/exsLAi6zAGcGBRYQXtls/rkQLO0kJXLvcdQJf3YAVyG98S76JAIbfxQTgGFxe66KGQdSiJChRseaEnt/uwq9BDd07PLwCLvYsCntv4ABxnUWEFZpZ1KIl6KeT7PFjoo4tey2t8ywvdQD7P0130Zh2CSM3M3bMNwJgHrN7/flzb//mEtlOyDSrBosKKtlXaxuQzqwGWFbrbOq3dO609d/sOYEmhywxsfNvoXO7DXi/Y4sIKm9w+LpfxASwudLVNaBvlhuXyM15W6G7rsHYfldNjcGHfcuuwttweg330saivqy3Px+DSQnfbuLbO3B6DSwtdbZ3W7qOsI6/xmYNNyOkx6LgtLXTnMr7FhTNteeHjxVd1c9yZkVlAIhXkruX6g5O2teNX+3zumkXe9tQZfvP6n23ryGnL9XueO6/nK6u/u3OncbNyt+8Avjb3Ksa2dfSesPreuTvmAB5a8TJfeOUPfdfMPK4961jK2e6pMwvXz/x027i2Ubn8jA+Yc0H3/0zdbdTu4zfKZXzfefVaVvT19Jy6xn6dWceS5Lnu1znqxYsLN6z/mXyeZIB3PPW/hatnfLJtUvvYXH7G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"
}
},
"cell_type": "markdown",
"id": "d083cd53",
"metadata": {},
"source": [
"<div>\n",
"<img src=\"attachment:fig-asp-data-updated-2.png\" align=\"left\" width=\"250\"/>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"id": "6409890d",
"metadata": {},
"source": [
"### Load imbalance\n",
"\n",
"The block-wise partitioning scheme leads to load imbalance across the processes: CPUs with rows $<k$ are idle during any iteration $k$. The bad load balance leads to bad speedups, as some CPUs are waiting instead of doing useful work. \n",
" \n",
"### Data dependencies\n",
" \n",
"<div class=\"alert alert-block alert-success\">\n",
"<b>Question:</b> What are the data dependencies in the block-wise partitioning?\n",
"</div>\n",
"\n",
" a) CPUs with rows >k need all rows <=k\n",
" b) CPUs with rows >k need part of row k\n",
" c) All CPUs need row k \n",
" d) CPUs with row k needs all rows >k \n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e0565e92",
"metadata": {},
"outputs": [],
"source": [
"answer = \"x\" # replace x with a, b, c, or d \n",
"ge_dep_check(answer)"
]
},
{
"cell_type": "markdown",
"id": "51498a44",
"metadata": {},
"source": [
"### Cyclic partition\n",
"\n",
"In contrast, if we look at how the work is balanced for the same example and cyclic partitioning, we find that the processes have similar work load. "
]
},
{
"attachments": {
"fig-asp-data-updated-cyclic.png": {
"image/png": "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"
}
},
"cell_type": "markdown",
"id": "b90252f1",
"metadata": {},
"source": [
"<div>\n",
"<img src=\"attachment:fig-asp-data-updated-cyclic.png\" align=\"left\" width=\"250\"/>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"id": "866824c6",
"metadata": {},
"source": [
"## Conclusion\n",
"Cyclic partitioning tends to work well in problems with predictable load imbalance. It is a form of **static load balancing** which means using a pre-defined load schedule based on prior information about the algorithm (as opposed to **dynamic load balancing** which can schedule loads flexibly during runtime). The data dependencies are the same as for the 1d block partitioning.\n",
"\n",
"At the same time, cyclic partitioning is not suitable for all communication patterns. For example, it can lead to a large communication overhead in the parallel Jacobi method, since the computation of each value depends on its neighbouring elements."
]
},
{
"cell_type": "markdown",
"id": "20982b04",
"metadata": {},
"source": [
"## Exercise\n",
"The actual implementation of the parallel algorithm is left as an exercise. Implement both 1d block and 1d cyclic partitioning and compare their performance. The implementation is closely related to that of Floyd's algorithm. To test your algorithms, generate input matrices with the function below (a random matrix is not enough, we need a non singular matrix that does not require pivoting). "
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "a65cf8e6",
"metadata": {},
"outputs": [],
"source": [
"function tridiagonal_matrix(n)\n",
" C = zeros(n,n)\n",
" stencil = [(-1,2,-1),(-1,0,1)]\n",
" for i in 1:n\n",
" for (coeff,o) in zip((-1,2,-1),(-1,0,1))\n",
" j = i+o\n",
" if j in 1:n\n",
" C[i,j] = coeff\n",
" end\n",
" end\n",
" end\n",
" C\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "31d8586a",
"metadata": {},
"outputs": [],
"source": [
"n = 12\n",
"C = tridiagonal_matrix(n)\n",
"b = ones(n)\n",
"B = [C b]\n",
"gaussian_elimination!(B)"
]
},
{
"cell_type": "markdown",
"id": "f60d9ea0",
"metadata": {},
"source": [
"# License\n",
"\n",
"\n",
"\n",
"This notebook is part of the course [Programming Large Scale Parallel Systems](https://www.francescverdugo.com/XM_40017) at Vrije Universiteit Amsterdam and may be used under a [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) license."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "8ab22f67",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Julia 1.9.0",
"language": "julia",
"name": "julia-1.9"
},
"language_info": {
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
"version": "1.9.0"
}
},
"nbformat": 4,
"nbformat_minor": 5
}