diff --git a/notebooks/jacobi_method.ipynb b/notebooks/jacobi_method.ipynb index ead9eb5..7e95ef0 100644 --- a/notebooks/jacobi_method.ipynb +++ b/notebooks/jacobi_method.ipynb @@ -38,10 +38,10 @@ "id": "d4cb59d5", "metadata": {}, "source": [ - "## The Jacobi method\n", + "## The Jacobi method for the Laplace equation\n", "\n", "\n", - "The [Jacobi method](https://en.wikipedia.org/wiki/Jacobi_method) is a numerical tool to solve systems of linear algebraic equations. One of the main applications of the method is to solve boundary value problems (BVPs). I.e., given the values at the boundary (of a grid), the Jacoby method will find the interior values that fulfill a certain equation.\n", + "The [Jacobi method](https://en.wikipedia.org/wiki/Jacobi_method) is a numerical tool to solve systems of linear algebraic equations. One of the main applications of the Jacobi method is to solve boundary value problems (BVPs). I.e., given the values at the boundary (of a grid), the Jacoby method will find the interior values that fulfill a certain equation.\n", "\n" ] }, @@ -55,20 +55,43 @@ "" ] }, + { + "cell_type": "markdown", + "id": "93e84ff8", + "metadata": {}, + "source": [ + "When solving a Laplace equation in 1D, the Jacobi method leads to this iterative scheme. The entry $i$ of vector $u$ at iteration $t+1$ is computed as:\n", + "\n", + "$u^{t+1}_i = \\dfrac{u^t_{i-1}+u^t_{i+1}}{2}$" + ] + }, { "cell_type": "markdown", "id": "e63a5792", "metadata": {}, "source": [ - "### Serial implementation" + "### Serial implementation\n", + "\n", + "The following code implements the iterative scheme above for boundary conditions -1 and 1." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "id": "14a58308", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "jacobi (generic function with 1 method)" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "function jacobi(n,niters)\n", " u = zeros(n+2)\n", @@ -87,12 +110,30 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "id": "76e1eba1", "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": [ - "jacobi(5,1000)" + "jacobi(5,0)" ] }, { @@ -100,10 +141,6 @@ "id": "6e085701", "metadata": {}, "source": [ - "
\n", - "Note: The values computed by the Jacobi method are linearly increasing from -1 to 1. It is possible to show mathematically that the method we implemented in the function above approximates a 1D Laplace equation via a finite difference method and the solution of this equation is a linear function.\n", - "
\n", - "\n", "
\n", "Note: In our version of the jacobi method, we return after a given number of iterations. Other stopping criteria are possible. For instance, iterate until the difference between u and u_new is below a tolerance. \n", "
" @@ -462,7 +499,36 @@ "id": "9d4de5a9", "metadata": {}, "source": [ - "## Extension to 2D" + "## Extension to 2D\n", + "\n", + "\n", + "Now, let us study the method for a 2D example." + ] + }, + { + "attachments": { + "fig_jacobi_07.png": { + "image/png": "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" + } + }, + "cell_type": "markdown", + "id": "df867b3d", + "metadata": {}, + "source": [ + "
\n", + "\n", + "
\n" + ] + }, + { + "cell_type": "markdown", + "id": "b1e1a12b", + "metadata": {}, + "source": [ + "For the Laplace equation in 2D, the interior values in the computational grid (represented by a matrix $u$) are computed with this iterative scheme. The entry $(i,j)$ of matrix $u$ at iteration $t+1$ is computed as:\n", + "\n", + "\n", + "$u^{t+1}_{(i,j)} = \\dfrac{u^t_{(i-1,j)}+u^t_{(i+1,j)}+u^t_{(i,j-1)}+u^t_{(i,j+1)}}{4}$" ] }, { @@ -470,20 +536,32 @@ "id": "6f5d2895", "metadata": {}, "source": [ - "### Serial implementation" + "### Serial implementation\n", + "\n", + "The next code implements a simple example, where the boundary values are equal to 1." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 26, "id": "4ab59b2f", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "jacobi_2d (generic function with 1 method)" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "function jacobi_2d(n,niters)\n", " u = zeros(n+2,n+2)\n", " u[1,:] = u[end,:] = u[:,1] = u[:,end] .= 1\n", - " heater = 1/n^2\n", " u_new = copy(u)\n", " for t in 1:niters\n", " for j in 2:(n+1)\n", @@ -492,7 +570,7 @@ " south = u[i,j-1]\n", " east = u[i+1,j]\n", " west = u[i-1,j]\n", - " u_new[i,j] = 0.25*(north+south+east+west) + heater\n", + " u_new[i,j] = 0.25*(north+south+east+west)\n", " end\n", " end\n", " u, u_new = u_new, u\n", @@ -503,12 +581,140 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 25, "id": "6da0aa54", "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": [ - "u = jacobi_2d(100,1000)" + "u = jacobi_2d(10,0)" + ] + }, + { + "cell_type": "markdown", + "id": "45d786dd", + "metadata": {}, + "source": [ + "### Where do we can exploit parallelism?\n", + "\n", + "```julia\n", + "for t in 1:niters\n", + " for j in 2:(n+1)\n", + " for i in 2:(n+1)\n", + " north = u[i,j+1]\n", + " south = u[i,j-1]\n", + " east = u[i+1,j]\n", + " west = u[i-1,j]\n", + " u_new[i,j] = 0.25*(north+south+east+west)\n", + " end\n", + " end\n", + " u, u_new = u_new, u\n", + "end\n", + "```\n", + "\n", + "- The outer loop cannot be parallelized (like in the 1d case). \n", + "- The two inner loops can be parallelized\n" + ] + }, + { + "cell_type": "markdown", + "id": "267ecd2a", + "metadata": {}, + "source": [ + "### Parallelization strategies" + ] + }, + { + "attachments": { + "fig_jacobi_07.png": { + "image/png": "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" + } + }, + "cell_type": "markdown", + "id": "7445dc4a", + "metadata": {}, + "source": [ + "
\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "969c42ee", + "metadata": {}, + "source": [ + "### Data dependencies" + ] + }, + { + "attachments": { + "fig_jacobi_07.png": { + "image/png": "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" + } + }, + "cell_type": "markdown", + "id": "b343f4c1", + "metadata": {}, + "source": [ + "\n", + "
\n", + "\n", + "
\n" + ] + }, + { + "cell_type": "markdown", + "id": "df861921", + "metadata": {}, + "source": [] + }, + { + "attachments": { + "fig_jacobi_07.png": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABJoAAAFICAYAAAAYp5QFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAewgAAHsIBbtB1PgAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAACAASURBVHic7d13lGRVoTbutycPDMMAQ44CEiUrIAh+fMDVK6LiVYyIAS4mMHsVAxjhKgYMfB+KiYyoiBe8SBBBEUEkShIkSRAYYGBy6v7+6J7qU6F75sr5sQ8/n2etM2vvWjVrvevU7qrqt2qf7ksyEACWenmS80uHoM1jSVYtHQKgIQ5OcnLpEAAwkjGlAwAAAADw/w/jSgcAAAB4FlspyXNKhxhFX5LnVub3JZlfKMtINkgyaWg8I8njBbP0Mj3D366ek+SBgll6WSHJekPjgSR3FMzSS+ca/FuSeYWyjGT9JJOHxk1cg6sNHUkyN8n9BbMsU2fR9NEk15UIMopzkkwZGt+c5P0Fs/RyXJLthsZzk7yyYJZeXpXkPZX5/mneC8tFlfEPkpxeKsgIfpbBNxBJcmuSIwpm6eU/k+w4NJ6fwce4SfZL+8/tvyV5qlCWkfwyyfjSIVgun09yWekQHc7I4BvQJLk3ySEFs/TyySQvHhovTvKvBbP0smuSz1Xm70pyZ6EsI7kwg2+S84YPfTw77Pm/C8dp98VD3pSZjz6SJNl533/Na977wcKJ2p3x1WNz3WWXJElWXWvtfOzEZu36+sv1f8pJR32sNT/ye6dl2vQ1Cibq9vm3vT5PPf5Y6RiMbM8k55UOAdAUnUXTdUkuLhFkFIsr4yfTvHxPVMZL0rx8W3bMf5NkdoEcy+vONO8cLqqMm7gGq217E9fgJh3zyzP4KUGTuFbds8ef07w1vqAynpPm5Tu0Mu5P8/JN7phfleZ96DWQoaJpoy23zo577VM4TrsJEye1xqutvU7j8v3qtB+2xhMnTW5cvv7+/rb58174oqyx3gaF0vQ2bsKE0hEAYLm5RhMAAAAAtXCNJgAAgHoszOC1Xppk1Qxe/iFJ8oWzz8vmO76gYJxub95m48yfO2fp9LIkBxaM08svk+yUJNvuvmc+ffLZheO0+9kJx+f0r3yxetOapbKMYIUkdy+dfPbMc7PVC3YtGKfbQdtuknlzWht/rkjy6oJxevlFkl2SZOtddstnTj+ncJx2N15xeT77lte25oomAACA+jxSOkCHtv2hU6atkmmrN+s6ZIObk1sWpXnnsHUpjbHjxzfu/E1accXOm5p2/qa0TVae1rhz2DembRE2cQ22LinUxDU4ZeVpbXNb5wAAAACohaIJAAAAgFoomgAAAACohaIJAAAAgFoomgAAAACohaIJAAAAgFoomgAAAACohaIJAAAAgFoomgAAAACohaIJAAAAgFoomgAAAACohaIJAAAAgFoomgAAAACohaIJAAAAgFoomgAAAACohaIJAAAAgFoomgAAAACohaIJAAAAgFoomgAAAACohaIJAAAAgFoomgAAAACohaIJAAAAgFoomgAAAACohaIJAAAAgFoomgAAAACohaIJAAAAgFoomgAAAACohaIJAAAAgFoomgAAAACohaIJAAAAgFoomgAAAACohaIJAAAAgFqM65ifm2RxiSCjmFoZ75rkyVJBRjClMl4pzcs3sWP+YJKBEkGW01FJ/qN0iA7VNbhzmvcYr9gxblq+zjV4V5q3BidUxlskOb9UEHpaqTL+QZLvlAoygmq+LdO8n8Hqc8SENC/f+I7579K89yKtD+aOe/c7cvwH3l0yS5e5s2a1xr867Ye57Jyzy4XpYcHcOa3x3++7J69Yd+WCabotWbSobf6OnbdOX1+zPoudN3tWdbpNqRwAsDw6i6YViqRYfmPS/kt/EzU930rLvktRE9L+S3/TWINPX9PXYNPz/TOqvlZNHjqaqi/N/xlser5GvxdZtHBBFi1cUDrGiPqXLMncWU+VjjGigf7+RudLknmzZ5eOsCxN/xkG4J9csz6uAQAAAOBZqy/tW1huTDKzUJaR7J5kbJLsseOO2ev5zy8cp93J552Xex58MEmy/lpr5W2veEXhRO3+ePPN+e8rrmjNP3nooRnT11cwUbfPfmd4F8ybXvaybLLeegXTdPvyj36UeQsGP73effvts/fOOxdO1O6755yThx59NEmy7hpr5B2velXhRO2uuOGGXHLVVdWbrkyyaIS7l7JHBp8Pk+Tfk3y3YBa6zcnwt1xuTfJowSy9vDDD278WJLlqlPuWsE2SVYbGA0l+WzBLL2tkcMtqkuSDBx2UKZOb9aW1z333uxkYGHy79KL9D8hztm7WzqWfnXB85jw1uCNy0213yAtftn/hRO0u+fHpefCuO5MkK01bJa965+GFE7W777Zb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" + } + }, + "cell_type": "markdown", + "id": "6f97781b", + "metadata": {}, + "source": [ + "\n", + "
\n", + "\n", + "
\n" + ] + }, + { + "cell_type": "markdown", + "id": "850b1848", + "metadata": {}, + "source": [ + "### Complexity analysis\n", + "\n", + "The complexity analysis is let as an exercise (see below).\n" ] }, { @@ -656,6 +862,26 @@ " jacobi_mpi(n,niters)\n", "end" ] + }, + { + "cell_type": "markdown", + "id": "ebb650d0", + "metadata": {}, + "source": [ + "### Exercise 2\n", + "\n", + "Compute the complexity of the communication and computation of the three data partition strategies (1d block partition, 2d block partition, and 2d cyclic partition) when computing a single iteration of the Jacobi method in 2D. Assume that the grid is of size $N \\times N$ and the number of processes $P$ is a perfect square number, i.e. $\\sqrt{P}$ is an integer. Hint: For the complexity analysis, you can ignore the effect of the boundary conditions.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7b3d7cb3", + "metadata": {}, + "outputs": [], + "source": [ + "# TODO" + ] } ], "metadata": {