From 8049e7168ac3d505f025f18a98cfc6604917fc07 Mon Sep 17 00:00:00 2001
From: "Documenter.jl"
Date: Fri, 8 Sep 2023 16:04:01 +0000
Subject: [PATCH] build based on 9a7ce52
---
dev/LEQ.ipynb | 467 ++++++++++++++------
dev/LEQ/index.html | 4 +-
dev/LEQ_src/index.html | 476 ++++++++++++++-------
dev/asp/index.html | 4 +-
dev/getting_started_with_julia/index.html | 4 +-
dev/index.html | 4 +-
dev/jacobi_2D/index.html | 4 +-
dev/jacobi_method/index.html | 4 +-
dev/julia_async.ipynb | 117 ++++-
dev/julia_async/index.html | 4 +-
dev/julia_async_src/index.html | 145 ++++++-
dev/julia_basics.ipynb | 14 +-
dev/julia_basics/index.html | 4 +-
dev/julia_basics_src/index.html | 20 +-
dev/julia_distributed/index.html | 4 +-
dev/julia_intro/index.html | 4 +-
dev/julia_jacobi/index.html | 4 +-
dev/julia_tutorial/index.html | 4 +-
dev/matrix_matrix/index.html | 4 +-
dev/mpi_tutorial/index.html | 4 +-
dev/notebook-hello/index.html | 4 +-
dev/search/index.html | 2 +-
dev/search_index.js | 2 +-
dev/solutions/index.html | 4 +-
dev/solutions_for_all_notebooks/index.html | 17 +
dev/tsp/index.html | 4 +-
26 files changed, 951 insertions(+), 377 deletions(-)
create mode 100644 dev/solutions_for_all_notebooks/index.html
diff --git a/dev/LEQ.ipynb b/dev/LEQ.ipynb
index 03bdcda..0a0f970 100644
--- a/dev/LEQ.ipynb
+++ b/dev/LEQ.ipynb
@@ -2,172 +2,116 @@
"cells": [
{
"cell_type": "markdown",
- "id": "9c32b051",
+ "id": "46d0dd15",
"metadata": {},
"source": [
- "# Solving Linear Equations\n",
+ "\n",
"\n",
- "## Serial Algorithm\n",
- "To demonstrate the algorithm, we will consider a simple system of linear equations $Ax = b$:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 66,
- "id": "2b369b73",
- "metadata": {},
- "outputs": [],
- "source": [
- "A = [1.0 4.0 5.0 8.0 1.0; \n",
- " 2.0 -1.0 4.0 3.0 0.0; \n",
- " 7.0 6.0 3.0 -4.0 5.0; \n",
- " -3.0 4.0 2.0 2.0 2.0; \n",
- " 0.0 -4.0 2.0 1.0 2.0]\n",
+ "### Programming large-scale parallel systems\n",
"\n",
- "b = [61.0; 24.0; 37.0; 29.0; 12.0];"
+ "# Gaussian elimination"
]
},
{
"cell_type": "markdown",
- "id": "53124eb8",
+ "id": "ff0fbd76",
"metadata": {},
"source": [
- "The code in the following cell converts the general problem $Ax=b$ to the upper triangular equation system $Ux=y$. Note that this function assumes that the pivots are all nonzero. This function will be erroneos if any of the diagonal entries are zero!"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 67,
- "id": "7a7b926a",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "convert_to_upper_triangular! (generic function with 1 method)"
- ]
- },
- "execution_count": 67,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "function convert_to_upper_triangular!(A,b)\n",
- " n = size(A,1)\n",
- " # Upper Triangularization: convert Ax=b to Ux=y\n",
- " for k in 1:n\n",
- " for j in k+1:n\n",
- " # Divide by pivot\n",
- " A[k,j] = A[k,j] / A[k,k]\n",
- " end\n",
- " b[k] = b[k] / A[k,k]\n",
- " A[k,k] = 1\n",
- " # Substract lower rows\n",
- " for i in k+1:n \n",
- " for j in k+1:n\n",
- " A[i,j]=A[i,j] - A[i,k] * A[k,j]\n",
- " end\n",
- " b[i] = b[i] - A[i,k] * b[k]\n",
- " A[i,k] = 0\n",
- " end\n",
- " end\n",
- " return A, b #U,y\n",
- "end\n"
+ "## Contents\n",
+ "\n",
+ "In this notebook, we will learn\n",
+ "\n",
+ "- How to parallelize Gaussian elimination\n",
+ "- How the data partition can create (or solve) load imbalances"
]
},
{
"cell_type": "markdown",
- "id": "78ef1849",
+ "id": "8dcee319",
"metadata": {},
"source": [
- "The function in the following cell solves the upper triangular equation system using backwards substitution. Note that the function alters the input values. "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 68,
- "id": "5a134433",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "solve_upper_triangular! (generic function with 1 method)"
- ]
- },
- "execution_count": 68,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "function solve_upper_triangular!(U,y)\n",
- " n = size(U,1)\n",
- " for step in reverse(1:n)\n",
- " if U[step,step] == 0\n",
- " if y[step] != 0\n",
- " return \"No solution\"\n",
- " else\n",
- " return \"Infinity solutions\"\n",
- " end\n",
- " else\n",
- " # Backwards substitution\n",
- " y[step] = y[step] / U[step,step]\n",
- " end\n",
- " for row in reverse(1:step-1)\n",
- " y[row] -= U[row,step] * y[step]\n",
- " end\n",
- " end\n",
- " return y \n",
- "end"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 69,
- "id": "b92332f7",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "5-element Vector{Float64}:\n",
- " 1.0000000000000009\n",
- " 1.999999999999999\n",
- " 2.9999999999999964\n",
- " 4.000000000000002\n",
- " 5.000000000000005"
- ]
- },
- "execution_count": 69,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "U,y = convert_to_upper_triangular!(A,b)\n",
- "sol = solve_upper_triangular!(U,y)"
+ "## Gaussian elimination\n",
+ "\n",
+ "[Gaussian elimination](https://en.wikipedia.org/wiki/Gaussian_elimination) is provably one of the first algorithms you have learned to solve linear equations like this one:\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",
+ "\n",
+ "The value of $x$, $y$, and $z$ can be found by creating an *augmented matrix* and applying Gaussian elimination to it:\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 & 0 & 1 & 4 \\\\\n",
+ "\\end{matrix}\n",
+ "\\right]\n",
+ "$$\n",
+ "\n",
+ "The result is an upper diagonal matrix with ones on the diagonal. From this matrix the values $x$, $y$, and $z$ can be found via [backward substitution](https://en.wikipedia.org/wiki/Triangular_matrix).\n",
+ "\n"
]
},
{
"cell_type": "markdown",
- "id": "962ec4a9",
+ "id": "94c10106",
"metadata": {},
"source": [
- "We can test if the obtained solution is correct using `@test`:"
+ "### Serial implementation\n",
+ "\n",
+ "Gaussian elimination can be implemented as shown in the following function. Note that the result is overwritten in-place on the input matrix."
]
},
{
"cell_type": "code",
"execution_count": 70,
- "id": "0e336c85",
+ "id": "e4070214",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
- "\u001b[32m\u001b[1mTest Passed\u001b[22m\u001b[39m"
+ "gaussian_elimination! (generic function with 2 methods)"
]
},
"execution_count": 70,
@@ -176,22 +120,261 @@
}
],
"source": [
- "using Test\n",
- "@test sol ≈ [1.0; 2.0; 3.0; 4.0; 5.0]"
+ "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": "cb7f89e5",
+ "metadata": {},
+ "source": [
+ "Let us test the function with the example above:"
]
},
{
"cell_type": "code",
- "execution_count": null,
- "id": "28dff449",
+ "execution_count": 68,
+ "id": "eb30df0d",
"metadata": {},
- "outputs": [],
- "source": []
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "3×4 Matrix{Float64}:\n",
+ " 1.0 3.0 1.0 9.0\n",
+ " 1.0 2.0 -1.0 1.0\n",
+ " 3.0 11.0 5.0 35.0"
+ ]
+ },
+ "execution_count": 68,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "A = Float64[1 3 1; 1 2 -1; 3 11 5]\n",
+ "b = Float64[9,1,35]\n",
+ "B = [A b]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 71,
+ "id": "52bfada2",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "3×4 Matrix{Float64}:\n",
+ " 1.0 3.0 1.0 9.0\n",
+ " 0.0 1.0 2.0 8.0\n",
+ " 0.0 0.0 1.0 4.0"
+ ]
+ },
+ "execution_count": 71,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "gaussian_elimination!(B)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "563aa0d0",
+ "metadata": {},
+ "source": [
+ "We get the same result as shown before (as expected)."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "39f2e8ef",
+ "metadata": {},
+ "source": [
+ "## Parallelization\n",
+ "\n",
+ "Gaussian elimination is expensive and thus it makes sense to try to seed-up this computation by using several processors. It requires $(2n^3)/3$ operation, where $n$ is the number of rows in the input matrix. Thus, the time complexity is $O(n^3)$, which rapidly grows with $n$.\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",
+ "```\n",
+ "\n",
+ "- The loop over k cannot be parallelized (the state of B at iteration k depends on the state at iteration k-1)\n",
+ "- Loops over t, i, and j can be parallelized\n",
+ "- BUT the loop over t needs to be done before loop over i and j"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "a67e0aad",
+ "metadata": {},
+ "source": [
+ "### Data partition\n",
+ "\n",
+ "Let us start considering a simple 1D block partition. We assume that each process contains only a portion of the input matrix consisting in a block of consecutive rows. In this algorithm, the data stored in a process does not correspond with the data updated at a given iteration over the outer loop over k. The data updated is only a subset of the data stored, which leads to load imbalances (as we will see in a second).\n",
+ "\n",
+ "Consider next figure. Let's find out which is the data updated and the data used by CPU 3 at iteration $k$.\n"
+ ]
+ },
+ {
+ "attachments": {
+ "g20491.png": {
+ "image/png": "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"
+ }
+ },
+ "cell_type": "markdown",
+ "id": "6d8b79ba",
+ "metadata": {},
+ "source": [
+ "
\n",
+ "\n",
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "edb211d0",
+ "metadata": {},
+ "source": [
+ "By looking into the code above, you can see that `B[i,j]` is updated at iteration k, if and only if i and j are greater or equal than k. Thus, from all entries owned by CPU3, only the ones fulfilling this condition will be updated. See the entries highlighted in the next figure."
+ ]
+ },
+ {
+ "attachments": {
+ "g20853.png": {
+ "image/png": "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"
+ }
+ },
+ "cell_type": "markdown",
+ "id": "f18f33da",
+ "metadata": {},
+ "source": [
+ "
\n",
+ "\n",
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "1eced940",
+ "metadata": {},
+ "source": [
+ "### Data dependencies\n",
+ "\n",
+ "At iteration k, CPU3 needs part of row k to update its entries. The process owning row k needs to broadcast this entries to all other processes that require them. This communication pattern is almost identical to the one previously studied in Floyd's algorithm."
+ ]
+ },
+ {
+ "attachments": {
+ "g21211.png": {
+ "image/png": "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"
+ }
+ },
+ "cell_type": "markdown",
+ "id": "410eb1ba",
+ "metadata": {},
+ "source": [
+ "
\n",
+ "\n",
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "d04f70fa",
+ "metadata": {},
+ "source": [
+ "### Load imbalance\n",
+ "\n",
+ "Do all processes process the same amount of data at a given iteration? This answer is no. To understand this let us find out the data updated by CPU1 in the figure below. At iteration k, CPU 1 has not data to process since k is larger than all row ids that CPU 1 owns. This is in contrast to CPU 2 and CPU 3 which have data to process. As a result, CPU 1 is idle (doing nothing), which is waisting computational resources that could be otherwise used."
+ ]
+ },
+ {
+ "attachments": {
+ "g23603.png": {
+ "image/png": "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"
+ }
+ },
+ "cell_type": "markdown",
+ "id": "3988b2ae",
+ "metadata": {},
+ "source": [
+ "
\n",
+ "\n",
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "c1957040",
+ "metadata": {},
+ "source": [
+ "### Addressing the load imbalance\n",
+ "\n",
+ "For this algorithm, a cyclic distribution mitigates the load imbalance.\n",
+ "\n",
+ "- Cyclic partitions are often useful in algorithms with *predictable* load imbalance\n",
+ "- A cyclic partition is a form of *static* load balancing\n",
+ "- Cyclic partition are not suitable for all communication patters. E.g., algorithms that require communication between nearest-neighbors like Jacobi."
+ ]
+ },
+ {
+ "attachments": {
+ "g23933.png": {
+ "image/png": "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"
+ }
+ },
+ "cell_type": "markdown",
+ "id": "c6450ee1",
+ "metadata": {},
+ "source": [
+ "
The code in the following cell converts the general problem $Ax=b$ to the upper triangular equation system $Ux=y$. Note that this function assumes that the pivots are all nonzero. This function will be erroneos if any of the diagonal entries are zero!
How the data partition can create (or solve) load imbalances
+
-
-
-
-
-
-
Out[67]:
-
-
convert_to_upper_triangular! (generic function with 1 method)
-
-
-
-
-
-
+
-
The function in the following cell solves the upper triangular equation system using backwards substitution. Note that the function alters the input values.
The result is an upper diagonal matrix with ones on the diagonal. From this matrix the values $x$, $y$, and $z$ can be found via backward substitution.
-
-
-
-
-
-
Out[68]:
-
-
solve_upper_triangular! (generic function with 1 method)
Gaussian elimination is expensive and thus it makes sense to try to seed-up this computation by using several processors. It requires $(2n^3)/3$ operation, where $n$ is the number of rows in the input matrix. Thus, the time complexity is $O(n^3)$, which rapidly grows with $n$.
Let us start considering a simple 1D block partition. We assume that each process contains only a portion of the input matrix consisting in a block of consecutive rows. In this algorithm, the data stored in a process does not correspond with the data updated at a given iteration over the outer loop over k. The data updated is only a subset of the data stored, which leads to load imbalances (as we will see in a second).
+
Consider next figure. Let's find out which is the data updated and the data used by CPU 3 at iteration $k$.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
By looking into the code above, you can see that B[i,j] is updated at iteration k, if and only if i and j are greater or equal than k. Thus, from all entries owned by CPU3, only the ones fulfilling this condition will be updated. See the entries highlighted in the next figure.
At iteration k, CPU3 needs part of row k to update its entries. The process owning row k needs to broadcast this entries to all other processes that require them. This communication pattern is almost identical to the one previously studied in Floyd's algorithm.
Do all processes process the same amount of data at a given iteration? This answer is no. To understand this let us find out the data updated by CPU1 in the figure below. At iteration k, CPU 1 has not data to process since k is larger than all row ids that CPU 1 owns. This is in contrast to CPU 2 and CPU 3 which have data to process. As a result, CPU 1 is idle (doing nothing), which is waisting computational resources that could be otherwise used.
The programming of this course will be done using the Julia programming language. Thus, we start by explaining how to get up and running with Julia. After studying this page, you will be able to:
Courses related with high-performance computing (HPC) often use languages such as C, C++, or Fortran. We use Julia instead to make the course accessible to a wider set of students, including the ones that have no experience with C/C++ or Fortran, but are willing to learn parallel programming. Julia is a relatively new programming language specifically designed for scientific computing. It combines a high-level syntax close to interpreted languages like Python with the performance of compiled languages like C, C++, or Fortran. Thus, Julia will allow us to write efficient parallel algorithms with a syntax that is convenient in a teaching setting. In addition, Julia provides easy access to different programming models to write distributed algorithms, which will be useful to learn and experiment with them.
Tip
You can run the code in this link to learn how Julia compares to other languages (C and Python) in terms of performance.
There are several ways of opening Julia depending on your operating system and your IDE, but it is usually as simple as launching the Julia app. With VSCode, open a folder (File > Open Folder). Then, press Ctrl+Shift+P to open the command bar, and execute Julia: Start REPL. If this does not work, make sure you have the Julia extension for VSCode installed. Independently of the method you use, opening Julia results in a window with some text ending with:
julia>
You have just opened the Julia read-evaluate-print loop, or simply the Julia REPL. Congrats! You will spend most of time using the REPL, when working in Julia. The REPL is a console waiting for user input. Just as in other consoles, the string of text right before the input area (julia> in the case) is called the command prompt or simply the prompt.
Curious about what the function println does? Enter into help mode to look into the documentation. This is done by typing a question mark (?) into the input field:
julia> ?
After typing ?, the command prompt changes to help?>. It means we are in help mode. Now, we can type a function name to see its documentation.
The REPL comes with two more modes, namely package and shell modes. To enter package mode type
julia> ]
Package mode is used to install and manage packages. We are going to discuss the package mode in greater detail later. To return back to normal mode press the backspace key several times.
To enter shell mode type semicolon (;)
julia> ;
The prompt should have changed to shell> indicating that we are in shell mode. Now you can type commands that you would normally do on your system command line. For instance,
shell> ls
will display the contents of the current folder in Mac or Linux. Using shell mode in Windows is not straightforward, and thus not recommended for beginners.
Real-world Julia programs are not typed in the REPL in practice. They are written in one or more files and included in the REPL. To try this, create a new file called hello.jl, write the code of the "Hello world" example above, and save it. If you are using VSCode, you can create the file using File > New File > Julia File. Once the file is saved with the name hello.jl, execute it as follows
julia> include("hello.jl")
Warning
Make sure that the file "hello.jl" is located in the current working directory of your Julia session. You can query the current directory with function pwd(). You can change to another directory with function cd() if needed. Also, make sure that the file extension is .jl.
The recommended way of running Julia code is using the REPL as we did. But it is also possible to run code directly from the system command line. To this end, open a terminal and call Julia followed by the path to the file containing the code you want to execute.
$ julia hello.jl
The previous line assumes that you have Julia properly installed in the system and that it's usable from the terminal. In UNIX systems (Linux and Mac), the Julia binary needs to be in one of the directories listed in the PATH environment variable. To check that Julia is properly installed, you can use
$ julia --version
If this runs without error and you see a version number, you are good to go!
Note
In this tutorial, when a code snipped starts with $, it should be run in the terminal. Otherwise, the code is to be run in the Julia REPL.
Tip
Avoid calling Julia code from the terminal, use the Julia REPL instead! Each time you call Julia from the terminal, you start a fresh Julia session and Julia will need to compile your code from scratch. This can be time consuming for large projects. In contrast, if you execute code in the REPL, Julia will compile code incrementally, which is much faster. Running code in a cluster (like in DAS-5 for the Julia assignment) is among the few situations you need to run Julia code from the terminal.
The programming of this course will be done using the Julia programming language. Thus, we start by explaining how to get up and running with Julia. After studying this page, you will be able to:
Courses related with high-performance computing (HPC) often use languages such as C, C++, or Fortran. We use Julia instead to make the course accessible to a wider set of students, including the ones that have no experience with C/C++ or Fortran, but are willing to learn parallel programming. Julia is a relatively new programming language specifically designed for scientific computing. It combines a high-level syntax close to interpreted languages like Python with the performance of compiled languages like C, C++, or Fortran. Thus, Julia will allow us to write efficient parallel algorithms with a syntax that is convenient in a teaching setting. In addition, Julia provides easy access to different programming models to write distributed algorithms, which will be useful to learn and experiment with them.
Tip
You can run the code in this link to learn how Julia compares to other languages (C and Python) in terms of performance.
There are several ways of opening Julia depending on your operating system and your IDE, but it is usually as simple as launching the Julia app. With VSCode, open a folder (File > Open Folder). Then, press Ctrl+Shift+P to open the command bar, and execute Julia: Start REPL. If this does not work, make sure you have the Julia extension for VSCode installed. Independently of the method you use, opening Julia results in a window with some text ending with:
julia>
You have just opened the Julia read-evaluate-print loop, or simply the Julia REPL. Congrats! You will spend most of time using the REPL, when working in Julia. The REPL is a console waiting for user input. Just as in other consoles, the string of text right before the input area (julia> in the case) is called the command prompt or simply the prompt.
Curious about what the function println does? Enter into help mode to look into the documentation. This is done by typing a question mark (?) into the input field:
julia> ?
After typing ?, the command prompt changes to help?>. It means we are in help mode. Now, we can type a function name to see its documentation.
The REPL comes with two more modes, namely package and shell modes. To enter package mode type
julia> ]
Package mode is used to install and manage packages. We are going to discuss the package mode in greater detail later. To return back to normal mode press the backspace key several times.
To enter shell mode type semicolon (;)
julia> ;
The prompt should have changed to shell> indicating that we are in shell mode. Now you can type commands that you would normally do on your system command line. For instance,
shell> ls
will display the contents of the current folder in Mac or Linux. Using shell mode in Windows is not straightforward, and thus not recommended for beginners.
Real-world Julia programs are not typed in the REPL in practice. They are written in one or more files and included in the REPL. To try this, create a new file called hello.jl, write the code of the "Hello world" example above, and save it. If you are using VSCode, you can create the file using File > New File > Julia File. Once the file is saved with the name hello.jl, execute it as follows
julia> include("hello.jl")
Warning
Make sure that the file "hello.jl" is located in the current working directory of your Julia session. You can query the current directory with function pwd(). You can change to another directory with function cd() if needed. Also, make sure that the file extension is .jl.
The recommended way of running Julia code is using the REPL as we did. But it is also possible to run code directly from the system command line. To this end, open a terminal and call Julia followed by the path to the file containing the code you want to execute.
$ julia hello.jl
The previous line assumes that you have Julia properly installed in the system and that it's usable from the terminal. In UNIX systems (Linux and Mac), the Julia binary needs to be in one of the directories listed in the PATH environment variable. To check that Julia is properly installed, you can use
$ julia --version
If this runs without error and you see a version number, you are good to go!
Note
In this tutorial, when a code snipped starts with $, it should be run in the terminal. Otherwise, the code is to be run in the Julia REPL.
Tip
Avoid calling Julia code from the terminal, use the Julia REPL instead! Each time you call Julia from the terminal, you start a fresh Julia session and Julia will need to compile your code from scratch. This can be time consuming for large projects. In contrast, if you execute code in the REPL, Julia will compile code incrementally, which is much faster. Running code in a cluster (like in DAS-5 for the Julia assignment) is among the few situations you need to run Julia code from the terminal.
Since we are in a parallel computing course, let's run a parallel "Hello world" example in Julia. Open a Julia REPL and write
julia> using Distributed
julia> @everywhere println("Hello, world! I am proc $(myid()) from $(nprocs())")
Here, we are using the Distributed package, which is part of the Julia standard library that provides distributed memory parallel support. The code prints the process id and the number of processes in the current Julia session.
You will probably only see output from 1 process. We need to add more processes to run the example in parallel. This is done with the addprocs function.
julia> addprocs(3)
We have added 3 new processes. Plus the old one, we have 4 processes. Run the code again.
julia> @everywhere println("Hello, world! I am proc $(myid()) from $(nprocs())")
Now, you should see output from 4 processes.
It is possible to specify the number of processes when starting Julia from the terminal with the -p argument (useful, e.g., when running in a cluster). If you launch Julia from the terminal as
$ julia -p 3
and then run
julia> @everywhere println("Hello, world! I am proc $(myid()) from $(nprocs())")
One of the most useful features of Julia is its package manager. It allows one to install Julia packages in a straightforward and platform independent way. To illustrate this, let us consider the following parallel "Hello world" example. This example uses the Message Passing Interface (MPI). We will learn more about MPI later in the course.
Copy the following block of code into a new file named "hello_mpi.jl"
You should get an error or a
BenchmarkTools = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf"
DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
MPI = "da04e1cc-30fd-572f-bb4f-1f8673147195"
Copy the contents of previous code block into a file called Project.toml and place it in an empty folder named newproject. It is important that the file is named Project.toml. You can create a new folder from the REPL with
julia> mkdir("newproject")
To install all the packages registered in this file you need to activate the folder containing your Project.toml file
(@v1.8) pkg> activate newproject
and then instantiating it
(newproject) pkg> instantiate
The instantiate command will download and install all listed packages and their dependencies in just one click.
In some situations it is required to use package commands in Julia code, e.g., to automatize installation and deployment of Julia applications. This can be done using the Pkg package. For instance
We have learned the basics of how to work with Julia. If you want to further dig into the topics we have covered here, you can take a look at the following links:
We have learned the basics of how to work with Julia. If you want to further dig into the topics we have covered here, you can take a look at the following links:
This page contains part of the course material of the Programming Large-Scale Parallel Systems course at VU Amsterdam. We provide several lecture notes in jupyter notebook format, which will help you to learn how to design, analyze, and program parallel algorithms on multi-node computing systems. Further information about the course is found in the study guide (click here) and our Canvas page (for registered students).
Note
Material will be added incrementally to the website as the course advances.
Warning
This page will eventually contain only a part of the course material. The rest will be available on Canvas. In particular, the material in this public webpage does not fully cover all topics in the final exam.
Download the notebooks and run them locally on your computer (recommended). At each notebook page you will find a green box with links to download the notebook.
You also have the static version of the notebooks displayed in this webpage for quick reference.
This page contains part of the course material of the Programming Large-Scale Parallel Systems course at VU Amsterdam. We provide several lecture notes in jupyter notebook format, which will help you to learn how to design, analyze, and program parallel algorithms on multi-node computing systems. Further information about the course is found in the study guide (click here) and our Canvas page (for registered students).
Note
Material will be added incrementally to the website as the course advances.
Warning
This page will eventually contain only a part of the course material. The rest will be available on Canvas. In particular, the material in this public webpage does not fully cover all topics in the final exam.
Download the notebooks and run them locally on your computer (recommended). At each notebook page you will find a green box with links to download the notebook.
You also have the static version of the notebooks displayed in this webpage for quick reference.
This page was created with the support of the Faculty of Science of Vrije Universiteit Amsterdam in the framework of the project "Interactive lecture notes and exercises for the Programming Large-Scale Parallel Systems course" funded by the "Innovation budget BETA 2023 Studievoorschotmiddelen (SVM) towards Activated Blended Learning".
Settings
This document was generated with Documenter.jl version 0.27.25 on Friday 8 September 2023. Using Julia version 1.9.3.
+julia> notebook()
These commands will open a jupyter in your web browser. Navigate in jupyter to the notebook file you have downloaded and open it.
This page was created with the support of the Faculty of Science of Vrije Universiteit Amsterdam in the framework of the project "Interactive lecture notes and exercises for the Programming Large-Scale Parallel Systems course" funded by the "Innovation budget BETA 2023 Studievoorschotmiddelen (SVM) towards Activated Blended Learning".
Settings
This document was generated with Documenter.jl version 0.27.25 on Friday 8 September 2023. Using Julia version 1.9.3.
This document was generated with Documenter.jl version 0.27.25 on Friday 8 September 2023. Using Julia version 1.9.3.
+
Settings
This document was generated with Documenter.jl version 0.27.25 on Friday 8 September 2023. Using Julia version 1.9.3.
diff --git a/dev/julia_async.ipynb b/dev/julia_async.ipynb
index a50b4ca..d18e354 100644
--- a/dev/julia_async.ipynb
+++ b/dev/julia_async.ipynb
@@ -37,7 +37,7 @@
"\n",
"### Creating a task\n",
"\n",
- "A task is a piece of computation work that can be run asynchronously (i.e., that can be run in the background). To create a task, we first need to create a function that represents the work to be done in the task. In next cell, we generate a task that generates and sums two matrices."
+ "Technically, a task in Julia is a *symmetric co-routine*. More informally, a task is a piece of computation work that can be started (scheduled) at some point in the future, and that can be interrupted and resumed. To create a task, we first need to create a function that represents the work to be done in the task. In next cell, we generate a task that generates and sums two matrices."
]
},
{
@@ -181,7 +181,7 @@
"source": [
"### Tasks do not run in parallel\n",
"\n",
- "It is also important to note that tasks do not run in parallel. We were able to run code while previous tasks was running because the task was idling most of the time. If the task does actual work, the current process will be busy running this task and it is likely that we cannot run other code at the same time. Let's illustrate this with an example. The following code computes an approximation of $\\pi$ using [Leibniz formula](https://en.wikipedia.org/wiki/Leibniz_formula_for_pi). The quality of the approximation increases with the value of `n`."
+ "It is also important to note that tasks do not run in parallel. We were able to run code while previous tasks was running because the task was idling most of the time in the sleep function. If the task does actual work, the current process will be busy running this task and preventing to run other tasks. Let's illustrate this with an example. The following code computes an approximation of $\\pi$ using [Leibniz formula](https://en.wikipedia.org/wiki/Leibniz_formula_for_pi). The quality of the approximation increases with the value of `n`."
]
},
{
@@ -265,6 +265,109 @@
"1+1"
]
},
+ {
+ "cell_type": "markdown",
+ "id": "a700fe69",
+ "metadata": {},
+ "source": [
+ "### `yield`\n",
+ "\n",
+ "If tasks do not run in parallel, what is the purpose of tasks? Tasks are handy since they can be interrupted and to switch control to other tasks. This is achieved via function `yield`. When we call yield, we provide the opportunity to switch to another task. The function below is a variation of function `compute_π` in which we yield every 1000 iterations. At the call to yield we allow other tasks to take over. Without this call to yield, once we start function `compute_π` we cannot start any other tasks until this function finishes."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "9260c065",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "function compute_π_yield(n)\n",
+ " s = 1.0\n",
+ " for i in 1:n\n",
+ " s += (isodd(i) ? -1 : 1) / (i*2+1)\n",
+ " if mod(i,1000) == 0\n",
+ " yield()\n",
+ " end\n",
+ " end\n",
+ " 4*s\n",
+ "end"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "69fd4131",
+ "metadata": {},
+ "source": [
+ "You can check this behavior experimentally with the two following cells. The next one creates and schedules a task that computes pi with the function `compute_π_yield`. Note that you can run the 2nd cell bellow while this task is running since we call to yield often inside `compute_π_yield`."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "a85f3f39",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "fun = () -> compute_π_yield(3_000_000_000)\n",
+ "t = Task(fun)\n",
+ "schedule(t)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "24e23e88",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "1+1"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "66ca10d6",
+ "metadata": {},
+ "source": [
+ "### Example: Implementing function sleep\n",
+ "\n",
+ "Using yield, we can implement our own version of the sleep function as follows:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "beed2b29",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "function mysleep(secs)\n",
+ " final_time = time() + secs\n",
+ " while time() < final_time\n",
+ " yield()\n",
+ " end\n",
+ " nothing\n",
+ "end"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "5c44f6c1",
+ "metadata": {},
+ "source": [
+ "You can check that it behaves as expected."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "73c13bfb",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "@time mysleep(3)"
+ ]
+ },
{
"cell_type": "markdown",
"id": "25048665",
@@ -602,7 +705,7 @@
"metadata": {},
"source": [
"
\n",
- "Question (Q1): How long will the compute time of next cell be? \n",
+ "Question (NB2-Q1): How long will the compute time of next cell be? \n",
"
\n",
- "Question (Q2): How long will the compute time of next cell be? \n",
+ "Question (NB2-Q2): How long will the compute time of next cell be? \n",
"
\n",
- "Question (Q3): How long will the compute time of next cell be? \n",
+ "Question (NB2-Q3): How long will the compute time of next cell be? \n",
"
\n",
- "Question (Q4): How long will the compute time of the 2nd cell be? \n",
+ "Question (NB2-Q4): How long will the compute time of the 2nd cell be? \n",
"
\n",
- "Question (Q5): How long will the compute time of the 2nd cell be? \n",
+ "Question (NB2-Q5): How long will the compute time of the 2nd cell be? \n",
"
\n",
"\n",
" a) infinity\n",
diff --git a/dev/julia_async/index.html b/dev/julia_async/index.html
index ac746d0..6dd27b1 100644
--- a/dev/julia_async/index.html
+++ b/dev/julia_async/index.html
@@ -1,5 +1,5 @@
-Asynchronous programming in Julia · XM_40017
A task is a piece of computation work that can be run asynchronously (i.e., that can be run in the background). To create a task, we first need to create a function that represents the work to be done in the task. In next cell, we generate a task that generates and sums two matrices.
Technically, a task in Julia is a symmetric co-routine. More informally, a task is a piece of computation work that can be started (scheduled) at some point in the future, and that can be interrupted and resumed. To create a task, we first need to create a function that represents the work to be done in the task. In next cell, we generate a task that generates and sums two matrices.
It is also important to note that tasks do not run in parallel. We were able to run code while previous tasks was running because the task was idling most of the time. If the task does actual work, the current process will be busy running this task and it is likely that we cannot run other code at the same time. Let's illustrate this with an example. The following code computes an approximation of $\pi$ using Leibniz formula. The quality of the approximation increases with the value of n.
It is also important to note that tasks do not run in parallel. We were able to run code while previous tasks was running because the task was idling most of the time in the sleep function. If the task does actual work, the current process will be busy running this task and preventing to run other tasks. Let's illustrate this with an example. The following code computes an approximation of $\pi$ using Leibniz formula. The quality of the approximation increases with the value of n.
If tasks do not run in parallel, what is the purpose of tasks? Tasks are handy since they can be interrupted and to switch control to other tasks. This is achieved via function yield. When we call yield, we provide the opportunity to switch to another task. The function below is a variation of function compute_π in which we yield every 1000 iterations. At the call to yield we allow other tasks to take over. Without this call to yield, once we start function compute_π we cannot start any other tasks until this function finishes.
You can check this behavior experimentally with the two following cells. The next one creates and schedules a task that computes pi with the function compute_π_yield. Note that you can run the 2nd cell bellow while this task is running since we call to yield often inside compute_π_yield.
-Question (Q1): How long will the compute time of next cell be?
+Question (NB2-Q1): How long will the compute time of next cell be?
a) 10*t
b) t
@@ -8274,7 +8405,7 @@ d) near 0*t
-Question (Q2): How long will the compute time of next cell be?
+Question (NB2-Q2): How long will the compute time of next cell be?
a) 10*t
b) t
@@ -8307,7 +8438,7 @@ d) near 0*t
-Question (Q3): How long will the compute time of next cell be?
+Question (NB2-Q3): How long will the compute time of next cell be?
a) 10*t
b) t
@@ -8340,7 +8471,7 @@ d) near 0*t
-Question (Q4): How long will the compute time of the 2nd cell be?
+Question (NB2-Q4): How long will the compute time of the 2nd cell be?
a) infinity
b) 1 second
@@ -8390,7 +8521,7 @@ d) 3 seconds
-Question (Q5): How long will the compute time of the 2nd cell be?
+Question (NB2-Q5): How long will the compute time of the 2nd cell be?
a) infinity
b) 1 second
diff --git a/dev/julia_basics.ipynb b/dev/julia_basics.ipynb
index 781b196..ff73688 100644
--- a/dev/julia_basics.ipynb
+++ b/dev/julia_basics.ipynb
@@ -449,7 +449,7 @@
"source": [
"\n",
"
\n",
- "Question: What will be the value of `x` in the last line ? (Think your answer before executing next cell to find out the result) \n",
+ "Question (NB1-Q1): What will be the value of `x` in the last line ? (Think your answer before executing next cell to find out the result) \n",
"
-Question: What will be the value of `x` in the last line ? (Think your answer before executing next cell to find out the result)
+Question (NB1-Q1): What will be the value of `x` in the last line ? (Think your answer before executing next cell to find out the result)
@@ -8161,7 +8161,7 @@ a.anchor-link {
-Question: What will be the value of `x` in the last line ?
+Question (NB1-Q2): What will be the value of `x` in the last line ?
@@ -8774,7 +8774,7 @@ a.anchor-link {
-Question: Which will be the value of `x` below?
+Question (NB1-Q3): Which will be the value of `x` below?