{
"cells": [
{
"cell_type": "markdown",
"id": "46d0dd15",
"metadata": {},
"source": [
"
\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": "8dcee319",
"metadata": {},
"source": [
"## Gaussian elimination\n",
"\n",
"\n",
"System of linear algebraic equations\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",
"Elimination steps\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"
]
},
{
"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": "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": "14d57c52",
"metadata": {},
"source": [
"### Two possible data partitions"
]
},
{
"attachments": {
"g23933.png": {
"image/png": "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"
}
},
"cell_type": "markdown",
"id": "f06f0869",
"metadata": {},
"source": [
"