mirror of
https://github.com/fverdugo/XM_40017.git
synced 2025-11-10 16:24:24 +01:00
build based on abd74c8
This commit is contained in:
parent
5810ca1bc5
commit
355180f81b
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>- · XM_40017</title><script data-outdated-warner src="../assets/warner.js"></script><link rel="canonical" href="https://fverdugo.github.io/XM_40017/LEQ/"/><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/><script src="../assets/iframeResizer.min.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.png" alt="XM_40017 logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">XM_40017</a></span></div><form class="docs-search" action="../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><a class="tocitem" href="../getting_started_with_julia/">Getting started</a></li><li><span class="tocitem">Notebooks</span><ul><li><a class="tocitem" href="../julia_basics/">Julia Basics</a></li><li><a class="tocitem" href="../julia_async/">Asynchronous programming in Julia</a></li><li><a class="tocitem" href="../julia_distributed/">Distributed computing in Julia</a></li><li><a class="tocitem" href="../mpi_tutorial/">Distributed computing with MPI</a></li><li><a class="tocitem" href="../matrix_matrix/">Matrix-matrix multiplication</a></li></ul></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>-</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>-</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/fverdugo/XM_40017/blob/main/notebooks/LEQ.ipynb" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><div class="admonition is-success">
|
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>- · XM_40017</title><script data-outdated-warner src="../assets/warner.js"></script><link rel="canonical" href="https://fverdugo.github.io/XM_40017/LEQ/"/><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/><script src="../assets/iframeResizer.min.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.png" alt="XM_40017 logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">XM_40017</a></span></div><form class="docs-search" action="../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><a class="tocitem" href="../getting_started_with_julia/">Getting started</a></li><li><span class="tocitem">Notebooks</span><ul><li><a class="tocitem" href="../julia_basics/">Julia Basics</a></li><li><a class="tocitem" href="../julia_async/">Asynchronous programming in Julia</a></li><li><a class="tocitem" href="../julia_distributed/">Distributed computing in Julia</a></li><li><a class="tocitem" href="../mpi_tutorial/">Distributed computing with MPI</a></li><li><a class="tocitem" href="../matrix_matrix/">Matrix-matrix multiplication</a></li><li><a class="tocitem" href="../jacobi_method/">Jacobi method</a></li><li><a class="tocitem" href="../asp/">All pairs of shortest paths</a></li></ul></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>-</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>-</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/fverdugo/XM_40017/blob/main/notebooks/LEQ.ipynb" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><div class="admonition is-success">
|
||||||
<header class="admonition-header">Tip</header>
|
<header class="admonition-header">Tip</header>
|
||||||
<div class="admonition-body">
|
<div class="admonition-body">
|
||||||
<ul>
|
<ul>
|
||||||
@ -14,4 +14,4 @@
|
|||||||
var myIframe = document.getElementById("notebook");
|
var myIframe = document.getElementById("notebook");
|
||||||
iFrameResize({log:true}, myIframe);
|
iFrameResize({log:true}, myIframe);
|
||||||
});
|
});
|
||||||
</script></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.25 on <span class="colophon-date" title="Tuesday 29 August 2023 10:10">Tuesday 29 August 2023</span>. Using Julia version 1.9.3.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
|
</script></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.25 on <span class="colophon-date" title="Wednesday 30 August 2023 10:26">Wednesday 30 August 2023</span>. Using Julia version 1.9.3.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
|
||||||
|
|||||||
@ -7333,7 +7333,8 @@ a.anchor-link {
|
|||||||
if (!diagrams.length) {
|
if (!diagrams.length) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.2.3/mermaid.esm.min.mjs")).default;
|
const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.3.1/mermaid.esm.min.mjs")).default;
|
||||||
|
const parser = new DOMParser();
|
||||||
|
|
||||||
mermaid.initialize({
|
mermaid.initialize({
|
||||||
maxTextSize: 100000,
|
maxTextSize: 100000,
|
||||||
@ -7349,39 +7350,52 @@ a.anchor-link {
|
|||||||
let _nextMermaidId = 0;
|
let _nextMermaidId = 0;
|
||||||
|
|
||||||
function makeMermaidImage(svg) {
|
function makeMermaidImage(svg) {
|
||||||
const img = document.createElement('img');
|
const img = document.createElement("img");
|
||||||
const maxWidth = svg.match(/max-width: (\d+)/);
|
const doc = parser.parseFromString(svg, "image/svg+xml");
|
||||||
if (maxWidth && maxWidth[1]) {
|
const svgEl = doc.querySelector("svg");
|
||||||
const width = parseInt(maxWidth[1]);
|
const { maxWidth } = svgEl?.style || {};
|
||||||
if (width && !Number.isNaN(width) && Number.isFinite(width)) {
|
const firstTitle = doc.querySelector("title");
|
||||||
img.width = width;
|
const firstDesc = doc.querySelector("desc");
|
||||||
}
|
|
||||||
|
img.setAttribute("src", `data:image/svg+xml,${encodeURIComponent(svg)}`);
|
||||||
|
if (maxWidth) {
|
||||||
|
img.width = parseInt(maxWidth);
|
||||||
}
|
}
|
||||||
img.setAttribute('src', `data:image/svg+xml,${encodeURIComponent(svg)}`);
|
if (firstTitle) {
|
||||||
return img;
|
img.setAttribute("alt", firstTitle.textContent);
|
||||||
|
}
|
||||||
|
if (firstDesc) {
|
||||||
|
const caption = document.createElement("figcaption");
|
||||||
|
caption.className = "sr-only";
|
||||||
|
caption.textContent = firstDesc.textContent;
|
||||||
|
return [img, caption];
|
||||||
|
}
|
||||||
|
return [img];
|
||||||
}
|
}
|
||||||
|
|
||||||
async function makeMermaidError(text) {
|
async function makeMermaidError(text) {
|
||||||
let errorMessage = '';
|
let errorMessage = "";
|
||||||
try {
|
try {
|
||||||
await mermaid.parse(text);
|
await mermaid.parse(text);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
errorMessage = `${err}`;
|
errorMessage = `${err}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
const result = document.createElement('details');
|
const result = document.createElement("details");
|
||||||
const summary = document.createElement('summary');
|
result.className = 'jp-RenderedMermaid-Details';
|
||||||
const pre = document.createElement('pre');
|
const summary = document.createElement("summary");
|
||||||
const code = document.createElement('code');
|
summary.className = 'jp-RenderedMermaid-Summary';
|
||||||
|
const pre = document.createElement("pre");
|
||||||
|
const code = document.createElement("code");
|
||||||
code.innerText = text;
|
code.innerText = text;
|
||||||
pre.appendChild(code);
|
pre.appendChild(code);
|
||||||
summary.appendChild(pre);
|
summary.appendChild(pre);
|
||||||
result.appendChild(summary);
|
result.appendChild(summary);
|
||||||
|
|
||||||
const warning = document.createElement('pre');
|
const warning = document.createElement("pre");
|
||||||
warning.innerText = errorMessage;
|
warning.innerText = errorMessage;
|
||||||
result.appendChild(warning);
|
result.appendChild(warning);
|
||||||
return result;
|
return [result];
|
||||||
}
|
}
|
||||||
|
|
||||||
async function renderOneMarmaid(src) {
|
async function renderOneMarmaid(src) {
|
||||||
@ -7391,30 +7405,41 @@ a.anchor-link {
|
|||||||
const el = document.createElement("div");
|
const el = document.createElement("div");
|
||||||
el.style.visibility = "hidden";
|
el.style.visibility = "hidden";
|
||||||
document.body.appendChild(el);
|
document.body.appendChild(el);
|
||||||
let result = null;
|
let results = null;
|
||||||
|
let output = null;
|
||||||
try {
|
try {
|
||||||
const { svg } = await mermaid.render(id, raw, el);
|
const { svg } = await mermaid.render(id, raw, el);
|
||||||
result = makeMermaidImage(svg);
|
results = makeMermaidImage(svg);
|
||||||
|
output = document.createElement("figure");
|
||||||
|
results.map(output.appendChild, output);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
parent.classList.add("jp-mod-warning");
|
parent.classList.add("jp-mod-warning");
|
||||||
result = await makeMermaidError(raw);
|
results = await makeMermaidError(raw);
|
||||||
|
output = results[0];
|
||||||
} finally {
|
} finally {
|
||||||
el.remove();
|
el.remove();
|
||||||
}
|
}
|
||||||
parent.classList.add("jp-RenderedMermaid");
|
parent.classList.add("jp-RenderedMermaid");
|
||||||
parent.appendChild(result);
|
parent.appendChild(output);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Promise.all([...diagrams].map(renderOneMarmaid));
|
void Promise.all([...diagrams].map(renderOneMarmaid));
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<style>
|
<style>
|
||||||
.jp-RenderedMarkdown .jp-Mermaid:not(.jp-RenderedMermaid) {
|
.jp-Mermaid:not(.jp-RenderedMermaid) {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning {
|
|
||||||
|
.jp-RenderedMermaid {
|
||||||
|
overflow: auto;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid.jp-mod-warning {
|
||||||
width: auto;
|
width: auto;
|
||||||
padding: 10px;
|
padding: 0.5em;
|
||||||
|
margin-top: 0.5em;
|
||||||
border: var(--jp-border-width) solid var(--jp-warn-color2);
|
border: var(--jp-border-width) solid var(--jp-warn-color2);
|
||||||
border-radius: var(--jp-border-radius);
|
border-radius: var(--jp-border-radius);
|
||||||
color: var(--jp-ui-font-color1);
|
color: var(--jp-ui-font-color1);
|
||||||
@ -7422,18 +7447,33 @@ a.anchor-link {
|
|||||||
white-space: pre-wrap;
|
white-space: pre-wrap;
|
||||||
word-wrap: break-word;
|
word-wrap: break-word;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning details > pre {
|
|
||||||
|
.jp-RenderedMermaid figure {
|
||||||
|
margin: 0;
|
||||||
|
overflow: auto;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid img {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid-Details > pre {
|
||||||
margin-top: 1em;
|
margin-top: 1em;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning summary {
|
|
||||||
|
.jp-RenderedMermaid-Summary {
|
||||||
color: var(--jp-warn-color2);
|
color: var(--jp-warn-color2);
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning summary > pre {
|
|
||||||
display: inline-block;
|
.jp-RenderedMermaid:not(.jp-mod-warning) pre {
|
||||||
}
|
|
||||||
.jp-RenderedMermaid > .mermaid {
|
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid-Summary > pre {
|
||||||
|
display: inline-block;
|
||||||
|
white-space: normal;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
<!-- End of mermaid configuration --></head>
|
<!-- End of mermaid configuration --></head>
|
||||||
<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
|
<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
|
||||||
|
|||||||
231
dev/asp.ipynb
231
dev/asp.ipynb
@ -65,33 +65,22 @@
|
|||||||
"source": [
|
"source": [
|
||||||
"### Floyd's sequential algoritm\n",
|
"### Floyd's sequential algoritm\n",
|
||||||
"\n",
|
"\n",
|
||||||
"The ASP problem can be solved with the [Floyd–Warshall algorithm](https://en.wikipedia.org/wiki/Floyd%E2%80%93Warshall_algorithm). A sequential implementation of this algorithm is given in this function."
|
"The ASP problem can be solved with the [Floyd–Warshall algorithm](https://en.wikipedia.org/wiki/Floyd%E2%80%93Warshall_algorithm). A sequential implementation of this algorithm is given in the following function:"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 1,
|
"execution_count": null,
|
||||||
"id": "4fe447c5",
|
"id": "4fe447c5",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [],
|
||||||
{
|
|
||||||
"data": {
|
|
||||||
"text/plain": [
|
|
||||||
"floyd! (generic function with 1 method)"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"execution_count": 1,
|
|
||||||
"metadata": {},
|
|
||||||
"output_type": "execute_result"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"source": [
|
"source": [
|
||||||
"function floyd!(C)\n",
|
"function floyd!(C)\n",
|
||||||
" n = size(C,1)\n",
|
" n = size(C,1)\n",
|
||||||
" @assert size(C,2) == n\n",
|
" @assert size(C,2) == n\n",
|
||||||
" for k in 1:n\n",
|
" for k in 1:n\n",
|
||||||
" for i in 1:n\n",
|
" for j in 1:n\n",
|
||||||
" for j in 1:n\n",
|
" for i in 1:n\n",
|
||||||
" @inbounds C[i,j] = min(C[i,j],C[i,k]+C[k,j])\n",
|
" @inbounds C[i,j] = min(C[i,j],C[i,k]+C[k,j])\n",
|
||||||
" end\n",
|
" end\n",
|
||||||
" end\n",
|
" end\n",
|
||||||
@ -110,25 +99,10 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 2,
|
"execution_count": null,
|
||||||
"id": "860e537c",
|
"id": "860e537c",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [],
|
||||||
{
|
|
||||||
"data": {
|
|
||||||
"text/plain": [
|
|
||||||
"4×4 Matrix{Int64}:\n",
|
|
||||||
" 0 9 6 1\n",
|
|
||||||
" 2 0 8 3\n",
|
|
||||||
" 5 3 0 6\n",
|
|
||||||
" 10 8 5 0"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"execution_count": 2,
|
|
||||||
"metadata": {},
|
|
||||||
"output_type": "execute_result"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"source": [
|
"source": [
|
||||||
"inf = 1000\n",
|
"inf = 1000\n",
|
||||||
"C = [\n",
|
"C = [\n",
|
||||||
@ -154,8 +128,8 @@
|
|||||||
"```julia\n",
|
"```julia\n",
|
||||||
"n = size(C,1)\n",
|
"n = size(C,1)\n",
|
||||||
"for k in 1:n\n",
|
"for k in 1:n\n",
|
||||||
" for i in 1:n\n",
|
" for j in 1:n\n",
|
||||||
" for j in 1:n\n",
|
" for i in 1:n\n",
|
||||||
" C[i,j] = min(C[i,j],C[i,k]+C[k,j])\n",
|
" C[i,j] = min(C[i,j],C[i,k]+C[k,j])\n",
|
||||||
" end\n",
|
" end\n",
|
||||||
" end\n",
|
" end\n",
|
||||||
@ -248,6 +222,69 @@
|
|||||||
"</div>"
|
"</div>"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"id": "c7027ac3",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"### Serial performance\n",
|
||||||
|
"\n",
|
||||||
|
"This algorithm is memory bound, meaning that the main cost is in getting and setting data from the input matrix `C`. In this situations, the order in which we traverse the entries of matrix `C` has a significant performance impact.\n",
|
||||||
|
"\n",
|
||||||
|
"The following function computes the same result as for the previous function `floyd!`, but the nesting of loops over i and j is changed.\n"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"id": "75cac17e",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"function floyd2!(C)\n",
|
||||||
|
" n = size(C,1)\n",
|
||||||
|
" @assert size(C,2) == n\n",
|
||||||
|
" for k in 1:n\n",
|
||||||
|
" for i in 1:n\n",
|
||||||
|
" for j in 1:n\n",
|
||||||
|
" @inbounds C[i,j] = min(C[i,j],C[i,k]+C[k,j])\n",
|
||||||
|
" end\n",
|
||||||
|
" end\n",
|
||||||
|
" end\n",
|
||||||
|
" C\n",
|
||||||
|
"end"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"id": "399385e8",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
" Compare the performance of both implementations (run the cell several times)."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"id": "907bc8c9",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"n = 1000\n",
|
||||||
|
"C = rand(n,n)\n",
|
||||||
|
"@time floyd!(C)\n",
|
||||||
|
"C = rand(n,n)\n",
|
||||||
|
"@time floyd2!(C);"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"id": "ad811b10",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"The performance difference is significant. Matrices in Julia are stored in memory in column-major order (like in Fortran, unlike in C). It means that it is more efficient to access the data also in column-major order (like in function `floyd!`). See this section of [Julia's performance tips](https://docs.julialang.org/en/v1/manual/performance-tips/#man-performance-column-major) if you are interested in further details."
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "markdown",
|
"cell_type": "markdown",
|
||||||
"id": "0c95ea88",
|
"id": "0c95ea88",
|
||||||
@ -264,8 +301,8 @@
|
|||||||
"```julia\n",
|
"```julia\n",
|
||||||
"n = size(C,1)\n",
|
"n = size(C,1)\n",
|
||||||
"for k in 1:n\n",
|
"for k in 1:n\n",
|
||||||
" for i in 1:n\n",
|
" for j in 1:n\n",
|
||||||
" for j in 1:n\n",
|
" for i in 1:n\n",
|
||||||
" C[i,j] = min(C[i,j],C[i,k]+C[k,j])\n",
|
" C[i,j] = min(C[i,j],C[i,k]+C[k,j])\n",
|
||||||
" end\n",
|
" end\n",
|
||||||
" end\n",
|
" end\n",
|
||||||
@ -401,8 +438,12 @@
|
|||||||
"source": [
|
"source": [
|
||||||
"- Each process updates $N^2/P$ entries per iteration\n",
|
"- Each process updates $N^2/P$ entries per iteration\n",
|
||||||
"- 1 process broadcasts a message of length $N$ to $P-1$ processes per iteration\n",
|
"- 1 process broadcasts a message of length $N$ to $P-1$ processes per iteration\n",
|
||||||
|
"- The send cost in this process is $O(N P)$ per iteration (if we use send/receive instead of broadcast)\n",
|
||||||
"- $P-1$ processes receive one message of length $N$ per iteration\n",
|
"- $P-1$ processes receive one message of length $N$ per iteration\n",
|
||||||
"- The receive/computation ration is $O(P/N)$ which would be small if $P<<N$"
|
"- The receive cost is $O(N)$ per iteration at each process\n",
|
||||||
|
"- The send/computation ratio is $O(P^2/N)$\n",
|
||||||
|
"- The receive/computation ratio is $O(P/N)$\n",
|
||||||
|
"- The algorithm is potentially scalable if $P<<N$"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -425,50 +466,7 @@
|
|||||||
"id": "494aa965",
|
"id": "494aa965",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"source": [
|
"source": [
|
||||||
"## Parallel Implementation"
|
"## Parallel Implementation\n"
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "c624722a",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"### Generating test data"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": null,
|
|
||||||
"id": "09937668",
|
|
||||||
"metadata": {},
|
|
||||||
"outputs": [],
|
|
||||||
"source": [
|
|
||||||
"function rand_distance_table(n)\n",
|
|
||||||
" threshold = 0.4\n",
|
|
||||||
" mincost = 3\n",
|
|
||||||
" maxcost = 10\n",
|
|
||||||
" infinity = 10000*maxcost\n",
|
|
||||||
" C = fill(infinity,n,n)\n",
|
|
||||||
" for j in 1:n\n",
|
|
||||||
" for i in 1:n\n",
|
|
||||||
" if rand() > threshold\n",
|
|
||||||
" C[i,j] = rand(mincost:maxcost)\n",
|
|
||||||
" end\n",
|
|
||||||
" end\n",
|
|
||||||
" C[j,j] = 0\n",
|
|
||||||
" end\n",
|
|
||||||
" C\n",
|
|
||||||
"end"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": null,
|
|
||||||
"id": "3116096c",
|
|
||||||
"metadata": {},
|
|
||||||
"outputs": [],
|
|
||||||
"source": [
|
|
||||||
"rand_distance_table(10)"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -511,7 +509,9 @@
|
|||||||
"id": "680e56cf",
|
"id": "680e56cf",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"source": [
|
"source": [
|
||||||
"### Code"
|
"### Code\n",
|
||||||
|
"\n",
|
||||||
|
"We split the code in two functions. The first function is called on the main process (the process running this notebook). It splits the input matrix into blocks of rows. Then, we call `floyd_worker!` (see below) remotely on each worker using the corresponding block of rows.\n"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -534,6 +534,14 @@
|
|||||||
"end"
|
"end"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"id": "9fc3be11",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"The second function is the one run on the workers. Note that we considered MPI for communication in this case."
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": null,
|
"execution_count": null,
|
||||||
@ -560,8 +568,8 @@
|
|||||||
" else\n",
|
" else\n",
|
||||||
" MPI.Recv!(C_k,comm,source=MPI.ANY_SOURCE,tag=0)\n",
|
" MPI.Recv!(C_k,comm,source=MPI.ANY_SOURCE,tag=0)\n",
|
||||||
" end\n",
|
" end\n",
|
||||||
" for i in 1:m\n",
|
" for j in 1:n\n",
|
||||||
" for j in 1:n\n",
|
" for i in 1:m\n",
|
||||||
" @inbounds Cw[i,j] = min(Cw[i,j],Cw[i,k]+C_k[j])\n",
|
" @inbounds Cw[i,j] = min(Cw[i,j],Cw[i,k]+C_k[j])\n",
|
||||||
" end\n",
|
" end\n",
|
||||||
" end\n",
|
" end\n",
|
||||||
@ -570,6 +578,39 @@
|
|||||||
"end"
|
"end"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"id": "c624722a",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"### Testing the implementation"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"id": "09937668",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"function rand_distance_table(n)\n",
|
||||||
|
" threshold = 0.4\n",
|
||||||
|
" mincost = 3\n",
|
||||||
|
" maxcost = 10\n",
|
||||||
|
" infinity = 10000*maxcost\n",
|
||||||
|
" C = fill(infinity,n,n)\n",
|
||||||
|
" for j in 1:n\n",
|
||||||
|
" for i in 1:n\n",
|
||||||
|
" if rand() > threshold\n",
|
||||||
|
" C[i,j] = rand(mincost:maxcost)\n",
|
||||||
|
" end\n",
|
||||||
|
" end\n",
|
||||||
|
" C[j,j] = 0\n",
|
||||||
|
" end\n",
|
||||||
|
" C\n",
|
||||||
|
"end"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": null,
|
"execution_count": null,
|
||||||
@ -654,21 +695,25 @@
|
|||||||
"- Use synchronous send MPI_SSEND (less efficient). Note that the blocking send MPI_SEND used above does not guarantee that the message was received.\n",
|
"- Use synchronous send MPI_SSEND (less efficient). Note that the blocking send MPI_SEND used above does not guarantee that the message was received.\n",
|
||||||
"- Barrier at the end of each iteration over $k$ (simple solution, but synchronization overhead)\n",
|
"- Barrier at the end of each iteration over $k$ (simple solution, but synchronization overhead)\n",
|
||||||
"- Order incoming messages (buffering and extra user code needed)\n",
|
"- Order incoming messages (buffering and extra user code needed)\n",
|
||||||
"- Use a specific rank id instead of `MPI.ANY_SOURCE` (one needs to know which are the rows owned by the other ranks)"
|
"- Use a specific rank id instead of `MPI.ANY_SOURCE` or use `MPI.Bcast!` (one needs to know which are the rows owned by the other ranks)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "markdown",
|
||||||
"execution_count": null,
|
"id": "c789dc7a",
|
||||||
"id": "db2b586f",
|
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"source": [
|
||||||
"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."
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"kernelspec": {
|
"kernelspec": {
|
||||||
"display_name": "Julia 1.9.1",
|
"display_name": "Julia 1.9.0",
|
||||||
"language": "julia",
|
"language": "julia",
|
||||||
"name": "julia-1.9"
|
"name": "julia-1.9"
|
||||||
},
|
},
|
||||||
@ -676,7 +721,7 @@
|
|||||||
"file_extension": ".jl",
|
"file_extension": ".jl",
|
||||||
"mimetype": "application/julia",
|
"mimetype": "application/julia",
|
||||||
"name": "julia",
|
"name": "julia",
|
||||||
"version": "1.9.1"
|
"version": "1.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nbformat": 4,
|
"nbformat": 4,
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>- · XM_40017</title><script data-outdated-warner src="../assets/warner.js"></script><link rel="canonical" href="https://fverdugo.github.io/XM_40017/asp/"/><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/><script src="../assets/iframeResizer.min.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.png" alt="XM_40017 logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">XM_40017</a></span></div><form class="docs-search" action="../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><a class="tocitem" href="../getting_started_with_julia/">Getting started</a></li><li><span class="tocitem">Notebooks</span><ul><li><a class="tocitem" href="../julia_basics/">Julia Basics</a></li><li><a class="tocitem" href="../julia_async/">Asynchronous programming in Julia</a></li><li><a class="tocitem" href="../julia_distributed/">Distributed computing in Julia</a></li><li><a class="tocitem" href="../mpi_tutorial/">Distributed computing with MPI</a></li><li><a class="tocitem" href="../matrix_matrix/">Matrix-matrix multiplication</a></li></ul></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>-</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>-</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/fverdugo/XM_40017/blob/main/notebooks/asp.ipynb" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><div class="admonition is-success">
|
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>All pairs of shortest paths · XM_40017</title><script data-outdated-warner src="../assets/warner.js"></script><link rel="canonical" href="https://fverdugo.github.io/XM_40017/asp/"/><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/><script src="../assets/iframeResizer.min.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.png" alt="XM_40017 logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">XM_40017</a></span></div><form class="docs-search" action="../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><a class="tocitem" href="../getting_started_with_julia/">Getting started</a></li><li><span class="tocitem">Notebooks</span><ul><li><a class="tocitem" href="../julia_basics/">Julia Basics</a></li><li><a class="tocitem" href="../julia_async/">Asynchronous programming in Julia</a></li><li><a class="tocitem" href="../julia_distributed/">Distributed computing in Julia</a></li><li><a class="tocitem" href="../mpi_tutorial/">Distributed computing with MPI</a></li><li><a class="tocitem" href="../matrix_matrix/">Matrix-matrix multiplication</a></li><li><a class="tocitem" href="../jacobi_method/">Jacobi method</a></li><li class="is-active"><a class="tocitem" href>All pairs of shortest paths</a></li></ul></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Notebooks</a></li><li class="is-active"><a href>All pairs of shortest paths</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>All pairs of shortest paths</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/fverdugo/XM_40017/blob/main/notebooks/asp.ipynb" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><div class="admonition is-success">
|
||||||
<header class="admonition-header">Tip</header>
|
<header class="admonition-header">Tip</header>
|
||||||
<div class="admonition-body">
|
<div class="admonition-body">
|
||||||
<ul>
|
<ul>
|
||||||
@ -14,4 +14,4 @@
|
|||||||
var myIframe = document.getElementById("notebook");
|
var myIframe = document.getElementById("notebook");
|
||||||
iFrameResize({log:true}, myIframe);
|
iFrameResize({log:true}, myIframe);
|
||||||
});
|
});
|
||||||
</script></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.25 on <span class="colophon-date" title="Tuesday 29 August 2023 10:10">Tuesday 29 August 2023</span>. Using Julia version 1.9.3.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
|
</script></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../jacobi_method/">« Jacobi method</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.25 on <span class="colophon-date" title="Wednesday 30 August 2023 10:26">Wednesday 30 August 2023</span>. Using Julia version 1.9.3.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
|
||||||
|
|||||||
@ -7333,7 +7333,8 @@ a.anchor-link {
|
|||||||
if (!diagrams.length) {
|
if (!diagrams.length) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.2.3/mermaid.esm.min.mjs")).default;
|
const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.3.1/mermaid.esm.min.mjs")).default;
|
||||||
|
const parser = new DOMParser();
|
||||||
|
|
||||||
mermaid.initialize({
|
mermaid.initialize({
|
||||||
maxTextSize: 100000,
|
maxTextSize: 100000,
|
||||||
@ -7349,39 +7350,52 @@ a.anchor-link {
|
|||||||
let _nextMermaidId = 0;
|
let _nextMermaidId = 0;
|
||||||
|
|
||||||
function makeMermaidImage(svg) {
|
function makeMermaidImage(svg) {
|
||||||
const img = document.createElement('img');
|
const img = document.createElement("img");
|
||||||
const maxWidth = svg.match(/max-width: (\d+)/);
|
const doc = parser.parseFromString(svg, "image/svg+xml");
|
||||||
if (maxWidth && maxWidth[1]) {
|
const svgEl = doc.querySelector("svg");
|
||||||
const width = parseInt(maxWidth[1]);
|
const { maxWidth } = svgEl?.style || {};
|
||||||
if (width && !Number.isNaN(width) && Number.isFinite(width)) {
|
const firstTitle = doc.querySelector("title");
|
||||||
img.width = width;
|
const firstDesc = doc.querySelector("desc");
|
||||||
}
|
|
||||||
|
img.setAttribute("src", `data:image/svg+xml,${encodeURIComponent(svg)}`);
|
||||||
|
if (maxWidth) {
|
||||||
|
img.width = parseInt(maxWidth);
|
||||||
}
|
}
|
||||||
img.setAttribute('src', `data:image/svg+xml,${encodeURIComponent(svg)}`);
|
if (firstTitle) {
|
||||||
return img;
|
img.setAttribute("alt", firstTitle.textContent);
|
||||||
|
}
|
||||||
|
if (firstDesc) {
|
||||||
|
const caption = document.createElement("figcaption");
|
||||||
|
caption.className = "sr-only";
|
||||||
|
caption.textContent = firstDesc.textContent;
|
||||||
|
return [img, caption];
|
||||||
|
}
|
||||||
|
return [img];
|
||||||
}
|
}
|
||||||
|
|
||||||
async function makeMermaidError(text) {
|
async function makeMermaidError(text) {
|
||||||
let errorMessage = '';
|
let errorMessage = "";
|
||||||
try {
|
try {
|
||||||
await mermaid.parse(text);
|
await mermaid.parse(text);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
errorMessage = `${err}`;
|
errorMessage = `${err}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
const result = document.createElement('details');
|
const result = document.createElement("details");
|
||||||
const summary = document.createElement('summary');
|
result.className = 'jp-RenderedMermaid-Details';
|
||||||
const pre = document.createElement('pre');
|
const summary = document.createElement("summary");
|
||||||
const code = document.createElement('code');
|
summary.className = 'jp-RenderedMermaid-Summary';
|
||||||
|
const pre = document.createElement("pre");
|
||||||
|
const code = document.createElement("code");
|
||||||
code.innerText = text;
|
code.innerText = text;
|
||||||
pre.appendChild(code);
|
pre.appendChild(code);
|
||||||
summary.appendChild(pre);
|
summary.appendChild(pre);
|
||||||
result.appendChild(summary);
|
result.appendChild(summary);
|
||||||
|
|
||||||
const warning = document.createElement('pre');
|
const warning = document.createElement("pre");
|
||||||
warning.innerText = errorMessage;
|
warning.innerText = errorMessage;
|
||||||
result.appendChild(warning);
|
result.appendChild(warning);
|
||||||
return result;
|
return [result];
|
||||||
}
|
}
|
||||||
|
|
||||||
async function renderOneMarmaid(src) {
|
async function renderOneMarmaid(src) {
|
||||||
@ -7391,30 +7405,41 @@ a.anchor-link {
|
|||||||
const el = document.createElement("div");
|
const el = document.createElement("div");
|
||||||
el.style.visibility = "hidden";
|
el.style.visibility = "hidden";
|
||||||
document.body.appendChild(el);
|
document.body.appendChild(el);
|
||||||
let result = null;
|
let results = null;
|
||||||
|
let output = null;
|
||||||
try {
|
try {
|
||||||
const { svg } = await mermaid.render(id, raw, el);
|
const { svg } = await mermaid.render(id, raw, el);
|
||||||
result = makeMermaidImage(svg);
|
results = makeMermaidImage(svg);
|
||||||
|
output = document.createElement("figure");
|
||||||
|
results.map(output.appendChild, output);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
parent.classList.add("jp-mod-warning");
|
parent.classList.add("jp-mod-warning");
|
||||||
result = await makeMermaidError(raw);
|
results = await makeMermaidError(raw);
|
||||||
|
output = results[0];
|
||||||
} finally {
|
} finally {
|
||||||
el.remove();
|
el.remove();
|
||||||
}
|
}
|
||||||
parent.classList.add("jp-RenderedMermaid");
|
parent.classList.add("jp-RenderedMermaid");
|
||||||
parent.appendChild(result);
|
parent.appendChild(output);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Promise.all([...diagrams].map(renderOneMarmaid));
|
void Promise.all([...diagrams].map(renderOneMarmaid));
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<style>
|
<style>
|
||||||
.jp-RenderedMarkdown .jp-Mermaid:not(.jp-RenderedMermaid) {
|
.jp-Mermaid:not(.jp-RenderedMermaid) {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning {
|
|
||||||
|
.jp-RenderedMermaid {
|
||||||
|
overflow: auto;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid.jp-mod-warning {
|
||||||
width: auto;
|
width: auto;
|
||||||
padding: 10px;
|
padding: 0.5em;
|
||||||
|
margin-top: 0.5em;
|
||||||
border: var(--jp-border-width) solid var(--jp-warn-color2);
|
border: var(--jp-border-width) solid var(--jp-warn-color2);
|
||||||
border-radius: var(--jp-border-radius);
|
border-radius: var(--jp-border-radius);
|
||||||
color: var(--jp-ui-font-color1);
|
color: var(--jp-ui-font-color1);
|
||||||
@ -7422,18 +7447,33 @@ a.anchor-link {
|
|||||||
white-space: pre-wrap;
|
white-space: pre-wrap;
|
||||||
word-wrap: break-word;
|
word-wrap: break-word;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning details > pre {
|
|
||||||
|
.jp-RenderedMermaid figure {
|
||||||
|
margin: 0;
|
||||||
|
overflow: auto;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid img {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid-Details > pre {
|
||||||
margin-top: 1em;
|
margin-top: 1em;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning summary {
|
|
||||||
|
.jp-RenderedMermaid-Summary {
|
||||||
color: var(--jp-warn-color2);
|
color: var(--jp-warn-color2);
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning summary > pre {
|
|
||||||
display: inline-block;
|
.jp-RenderedMermaid:not(.jp-mod-warning) pre {
|
||||||
}
|
|
||||||
.jp-RenderedMermaid > .mermaid {
|
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid-Summary > pre {
|
||||||
|
display: inline-block;
|
||||||
|
white-space: normal;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
<!-- End of mermaid configuration --></head>
|
<!-- End of mermaid configuration --></head>
|
||||||
<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
|
<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
|
||||||
@ -7500,24 +7540,24 @@ a.anchor-link {
|
|||||||
</div>
|
</div>
|
||||||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||||||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||||||
<h3 id="Floyd's-sequential-algoritm">Floyd's sequential algoritm<a class="anchor-link" href="#Floyd's-sequential-algoritm">¶</a></h3><p>The ASP problem can be solved with the <a href="https://en.wikipedia.org/wiki/Floyd%E2%80%93Warshall_algorithm">Floyd–Warshall algorithm</a>. A sequential implementation of this algorithm is given in this function.</p>
|
<h3 id="Floyd's-sequential-algoritm">Floyd's sequential algoritm<a class="anchor-link" href="#Floyd's-sequential-algoritm">¶</a></h3><p>The ASP problem can be solved with the <a href="https://en.wikipedia.org/wiki/Floyd%E2%80%93Warshall_algorithm">Floyd–Warshall algorithm</a>. A sequential implementation of this algorithm is given in the following function:</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=4fe447c5">
|
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=4fe447c5">
|
||||||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||||||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||||||
</div>
|
</div>
|
||||||
<div class="jp-InputArea jp-Cell-inputArea">
|
<div class="jp-InputArea jp-Cell-inputArea">
|
||||||
<div class="jp-InputPrompt jp-InputArea-prompt">In [1]:</div>
|
<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
|
||||||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||||||
<div class="cm-editor cm-s-jupyter">
|
<div class="cm-editor cm-s-jupyter">
|
||||||
<div class="highlight hl-julia"><pre><span></span><span class="k">function</span><span class="w"> </span><span class="n">floyd!</span><span class="p">(</span><span class="n">C</span><span class="p">)</span>
|
<div class="highlight hl-julia"><pre><span></span><span class="k">function</span><span class="w"> </span><span class="n">floyd!</span><span class="p">(</span><span class="n">C</span><span class="p">)</span>
|
||||||
<span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">size</span><span class="p">(</span><span class="n">C</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
|
<span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">size</span><span class="p">(</span><span class="n">C</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
|
||||||
<span class="w"> </span><span class="nd">@assert</span><span class="w"> </span><span class="n">size</span><span class="p">(</span><span class="n">C</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">n</span>
|
<span class="w"> </span><span class="nd">@assert</span><span class="w"> </span><span class="n">size</span><span class="p">(</span><span class="n">C</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">n</span>
|
||||||
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">k</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">:</span><span class="n">n</span>
|
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">k</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">:</span><span class="n">n</span>
|
||||||
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">:</span><span class="n">n</span>
|
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">:</span><span class="n">n</span>
|
||||||
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">:</span><span class="n">n</span>
|
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">:</span><span class="n">n</span>
|
||||||
<span class="w"> </span><span class="nd">@inbounds</span><span class="w"> </span><span class="n">C</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="n">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">min</span><span class="p">(</span><span class="n">C</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="n">j</span><span class="p">],</span><span class="n">C</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="n">k</span><span class="p">]</span><span class="o">+</span><span class="n">C</span><span class="p">[</span><span class="n">k</span><span class="p">,</span><span class="n">j</span><span class="p">])</span>
|
<span class="w"> </span><span class="nd">@inbounds</span><span class="w"> </span><span class="n">C</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="n">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">min</span><span class="p">(</span><span class="n">C</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="n">j</span><span class="p">],</span><span class="n">C</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="n">k</span><span class="p">]</span><span class="o">+</span><span class="n">C</span><span class="p">[</span><span class="n">k</span><span class="p">,</span><span class="n">j</span><span class="p">])</span>
|
||||||
<span class="w"> </span><span class="k">end</span>
|
<span class="w"> </span><span class="k">end</span>
|
||||||
<span class="w"> </span><span class="k">end</span>
|
<span class="w"> </span><span class="k">end</span>
|
||||||
@ -7529,18 +7569,6 @@ a.anchor-link {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="jp-Cell-outputWrapper">
|
|
||||||
<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
|
|
||||||
</div>
|
|
||||||
<div class="jp-OutputArea jp-Cell-outputArea">
|
|
||||||
<div class="jp-OutputArea-child jp-OutputArea-executeResult">
|
|
||||||
<div class="jp-OutputPrompt jp-OutputArea-prompt">Out[1]:</div>
|
|
||||||
<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain" tabindex="0">
|
|
||||||
<pre>floyd! (generic function with 1 method)</pre>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=b27707b9">
|
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=b27707b9">
|
||||||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||||||
@ -7552,12 +7580,12 @@ a.anchor-link {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=860e537c">
|
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=860e537c">
|
||||||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||||||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||||||
</div>
|
</div>
|
||||||
<div class="jp-InputArea jp-Cell-inputArea">
|
<div class="jp-InputArea jp-Cell-inputArea">
|
||||||
<div class="jp-InputPrompt jp-InputArea-prompt">In [2]:</div>
|
<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
|
||||||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||||||
<div class="cm-editor cm-s-jupyter">
|
<div class="cm-editor cm-s-jupyter">
|
||||||
<div class="highlight hl-julia"><pre><span></span><span class="n">inf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1000</span>
|
<div class="highlight hl-julia"><pre><span></span><span class="n">inf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1000</span>
|
||||||
@ -7573,22 +7601,6 @@ a.anchor-link {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="jp-Cell-outputWrapper">
|
|
||||||
<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
|
|
||||||
</div>
|
|
||||||
<div class="jp-OutputArea jp-Cell-outputArea">
|
|
||||||
<div class="jp-OutputArea-child jp-OutputArea-executeResult">
|
|
||||||
<div class="jp-OutputPrompt jp-OutputArea-prompt">Out[2]:</div>
|
|
||||||
<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain" tabindex="0">
|
|
||||||
<pre>4×4 Matrix{Int64}:
|
|
||||||
0 9 6 1
|
|
||||||
2 0 8 3
|
|
||||||
5 3 0 6
|
|
||||||
10 8 5 0</pre>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=b9eeb64d">
|
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=b9eeb64d">
|
||||||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||||||
@ -7600,8 +7612,8 @@ a.anchor-link {
|
|||||||
<p>This process is cleverly done with three nested loops:</p>
|
<p>This process is cleverly done with three nested loops:</p>
|
||||||
<div class="highlight"><pre><span></span><span class="n">n</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">size</span><span class="p">(</span><span class="n">C</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
|
<div class="highlight"><pre><span></span><span class="n">n</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">size</span><span class="p">(</span><span class="n">C</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
|
||||||
<span class="k">for</span><span class="w"> </span><span class="n">k</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">:</span><span class="n">n</span>
|
<span class="k">for</span><span class="w"> </span><span class="n">k</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">:</span><span class="n">n</span>
|
||||||
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">:</span><span class="n">n</span>
|
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">:</span><span class="n">n</span>
|
||||||
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">:</span><span class="n">n</span>
|
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">:</span><span class="n">n</span>
|
||||||
<span class="w"> </span><span class="n">C</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="n">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">min</span><span class="p">(</span><span class="n">C</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="n">j</span><span class="p">],</span><span class="n">C</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="n">k</span><span class="p">]</span><span class="o">+</span><span class="n">C</span><span class="p">[</span><span class="n">k</span><span class="p">,</span><span class="n">j</span><span class="p">])</span>
|
<span class="w"> </span><span class="n">C</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="n">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">min</span><span class="p">(</span><span class="n">C</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="n">j</span><span class="p">],</span><span class="n">C</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="n">k</span><span class="p">]</span><span class="o">+</span><span class="n">C</span><span class="p">[</span><span class="n">k</span><span class="p">,</span><span class="n">j</span><span class="p">])</span>
|
||||||
<span class="w"> </span><span class="k">end</span>
|
<span class="w"> </span><span class="k">end</span>
|
||||||
<span class="w"> </span><span class="k">end</span>
|
<span class="w"> </span><span class="k">end</span>
|
||||||
@ -7688,6 +7700,83 @@ a.anchor-link {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=c7027ac3">
|
||||||
|
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||||||
|
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||||||
|
</div>
|
||||||
|
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||||||
|
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||||||
|
<h3 id="Serial-performance">Serial performance<a class="anchor-link" href="#Serial-performance">¶</a></h3><p>This algorithm is memory bound, meaning that the main cost is in getting and setting data from the input matrix <code>C</code>. In this situations, the order in which we traverse the entries of matrix <code>C</code> has a significant performance impact.</p>
|
||||||
|
<p>The following function computes the same result as for the previous function <code>floyd!</code>, but the nesting of loops over i and j is changed.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=75cac17e">
|
||||||
|
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||||||
|
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||||||
|
</div>
|
||||||
|
<div class="jp-InputArea jp-Cell-inputArea">
|
||||||
|
<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
|
||||||
|
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||||||
|
<div class="cm-editor cm-s-jupyter">
|
||||||
|
<div class="highlight hl-julia"><pre><span></span><span class="k">function</span><span class="w"> </span><span class="n">floyd2!</span><span class="p">(</span><span class="n">C</span><span class="p">)</span>
|
||||||
|
<span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">size</span><span class="p">(</span><span class="n">C</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
|
||||||
|
<span class="w"> </span><span class="nd">@assert</span><span class="w"> </span><span class="n">size</span><span class="p">(</span><span class="n">C</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">n</span>
|
||||||
|
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">k</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">:</span><span class="n">n</span>
|
||||||
|
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">:</span><span class="n">n</span>
|
||||||
|
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">:</span><span class="n">n</span>
|
||||||
|
<span class="w"> </span><span class="nd">@inbounds</span><span class="w"> </span><span class="n">C</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="n">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">min</span><span class="p">(</span><span class="n">C</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="n">j</span><span class="p">],</span><span class="n">C</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="n">k</span><span class="p">]</span><span class="o">+</span><span class="n">C</span><span class="p">[</span><span class="n">k</span><span class="p">,</span><span class="n">j</span><span class="p">])</span>
|
||||||
|
<span class="w"> </span><span class="k">end</span>
|
||||||
|
<span class="w"> </span><span class="k">end</span>
|
||||||
|
<span class="w"> </span><span class="k">end</span>
|
||||||
|
<span class="w"> </span><span class="n">C</span>
|
||||||
|
<span class="k">end</span>
|
||||||
|
</pre></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=399385e8">
|
||||||
|
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||||||
|
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||||||
|
</div>
|
||||||
|
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||||||
|
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||||||
|
<p>Compare the performance of both implementations (run the cell several times).</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=907bc8c9">
|
||||||
|
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||||||
|
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||||||
|
</div>
|
||||||
|
<div class="jp-InputArea jp-Cell-inputArea">
|
||||||
|
<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
|
||||||
|
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||||||
|
<div class="cm-editor cm-s-jupyter">
|
||||||
|
<div class="highlight hl-julia"><pre><span></span><span class="n">n</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1000</span>
|
||||||
|
<span class="n">C</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">rand</span><span class="p">(</span><span class="n">n</span><span class="p">,</span><span class="n">n</span><span class="p">)</span>
|
||||||
|
<span class="nd">@time</span><span class="w"> </span><span class="n">floyd!</span><span class="p">(</span><span class="n">C</span><span class="p">)</span>
|
||||||
|
<span class="n">C</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">rand</span><span class="p">(</span><span class="n">n</span><span class="p">,</span><span class="n">n</span><span class="p">)</span>
|
||||||
|
<span class="nd">@time</span><span class="w"> </span><span class="n">floyd2!</span><span class="p">(</span><span class="n">C</span><span class="p">);</span>
|
||||||
|
</pre></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=ad811b10">
|
||||||
|
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||||||
|
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||||||
|
</div>
|
||||||
|
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||||||
|
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||||||
|
<p>The performance difference is significant. Matrices in Julia are stored in memory in column-major order (like in Fortran, unlike in C). It means that it is more efficient to access the data also in column-major order (like in function <code>floyd!</code>). See this section of <a href="https://docs.julialang.org/en/v1/manual/performance-tips/#man-performance-column-major">Julia's performance tips</a> if you are interested in further details.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=0c95ea88">
|
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=0c95ea88">
|
||||||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||||||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||||||
@ -7698,8 +7787,8 @@ a.anchor-link {
|
|||||||
<h3 id="Where-can-we-exploit-parallelism?">Where can we exploit parallelism?<a class="anchor-link" href="#Where-can-we-exploit-parallelism?">¶</a></h3><p>Recall:</p>
|
<h3 id="Where-can-we-exploit-parallelism?">Where can we exploit parallelism?<a class="anchor-link" href="#Where-can-we-exploit-parallelism?">¶</a></h3><p>Recall:</p>
|
||||||
<div class="highlight"><pre><span></span><span class="n">n</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">size</span><span class="p">(</span><span class="n">C</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
|
<div class="highlight"><pre><span></span><span class="n">n</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">size</span><span class="p">(</span><span class="n">C</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
|
||||||
<span class="k">for</span><span class="w"> </span><span class="n">k</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">:</span><span class="n">n</span>
|
<span class="k">for</span><span class="w"> </span><span class="n">k</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">:</span><span class="n">n</span>
|
||||||
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">:</span><span class="n">n</span>
|
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">:</span><span class="n">n</span>
|
||||||
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">:</span><span class="n">n</span>
|
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">:</span><span class="n">n</span>
|
||||||
<span class="w"> </span><span class="n">C</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="n">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">min</span><span class="p">(</span><span class="n">C</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="n">j</span><span class="p">],</span><span class="n">C</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="n">k</span><span class="p">]</span><span class="o">+</span><span class="n">C</span><span class="p">[</span><span class="n">k</span><span class="p">,</span><span class="n">j</span><span class="p">])</span>
|
<span class="w"> </span><span class="n">C</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="n">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">min</span><span class="p">(</span><span class="n">C</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="n">j</span><span class="p">],</span><span class="n">C</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="n">k</span><span class="p">]</span><span class="o">+</span><span class="n">C</span><span class="p">[</span><span class="n">k</span><span class="p">,</span><span class="n">j</span><span class="p">])</span>
|
||||||
<span class="w"> </span><span class="k">end</span>
|
<span class="w"> </span><span class="k">end</span>
|
||||||
<span class="w"> </span><span class="k">end</span>
|
<span class="w"> </span><span class="k">end</span>
|
||||||
@ -7845,8 +7934,12 @@ a.anchor-link {
|
|||||||
<ul>
|
<ul>
|
||||||
<li>Each process updates $N^2/P$ entries per iteration</li>
|
<li>Each process updates $N^2/P$ entries per iteration</li>
|
||||||
<li>1 process broadcasts a message of length $N$ to $P-1$ processes per iteration</li>
|
<li>1 process broadcasts a message of length $N$ to $P-1$ processes per iteration</li>
|
||||||
|
<li>The send cost in this process is $O(N P)$ per iteration (if we use send/receive instead of broadcast)</li>
|
||||||
<li>$P-1$ processes receive one message of length $N$ per iteration</li>
|
<li>$P-1$ processes receive one message of length $N$ per iteration</li>
|
||||||
<li>The receive/computation ration is $O(P/N)$ which would be small if $P<<N$</li>
|
<li>The receive cost is $O(N)$ per iteration at each process</li>
|
||||||
|
<li>The send/computation ratio is $O(P^2/N)$</li>
|
||||||
|
<li>The receive/computation ratio is $O(P/N)$</li>
|
||||||
|
<li>The algorithm is potentially scalable if $P<<N$</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -7876,60 +7969,6 @@ a.anchor-link {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=c624722a">
|
|
||||||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
|
||||||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
|
||||||
</div>
|
|
||||||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
|
||||||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
|
||||||
<h3 id="Generating-test-data">Generating test data<a class="anchor-link" href="#Generating-test-data">¶</a></h3>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=09937668">
|
|
||||||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
|
||||||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
|
||||||
</div>
|
|
||||||
<div class="jp-InputArea jp-Cell-inputArea">
|
|
||||||
<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
|
|
||||||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
|
||||||
<div class="cm-editor cm-s-jupyter">
|
|
||||||
<div class="highlight hl-julia"><pre><span></span><span class="k">function</span><span class="w"> </span><span class="n">rand_distance_table</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
|
|
||||||
<span class="w"> </span><span class="n">threshold</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0.4</span>
|
|
||||||
<span class="w"> </span><span class="n">mincost</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">3</span>
|
|
||||||
<span class="w"> </span><span class="n">maxcost</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">10</span>
|
|
||||||
<span class="w"> </span><span class="n">infinity</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">10000</span><span class="o">*</span><span class="n">maxcost</span>
|
|
||||||
<span class="w"> </span><span class="n">C</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fill</span><span class="p">(</span><span class="n">infinity</span><span class="p">,</span><span class="n">n</span><span class="p">,</span><span class="n">n</span><span class="p">)</span>
|
|
||||||
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">:</span><span class="n">n</span>
|
|
||||||
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">:</span><span class="n">n</span>
|
|
||||||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">rand</span><span class="p">()</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="n">threshold</span>
|
|
||||||
<span class="w"> </span><span class="n">C</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="n">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">rand</span><span class="p">(</span><span class="n">mincost</span><span class="o">:</span><span class="n">maxcost</span><span class="p">)</span>
|
|
||||||
<span class="w"> </span><span class="k">end</span>
|
|
||||||
<span class="w"> </span><span class="k">end</span>
|
|
||||||
<span class="w"> </span><span class="n">C</span><span class="p">[</span><span class="n">j</span><span class="p">,</span><span class="n">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span>
|
|
||||||
<span class="w"> </span><span class="k">end</span>
|
|
||||||
<span class="w"> </span><span class="n">C</span>
|
|
||||||
<span class="k">end</span>
|
|
||||||
</pre></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=3116096c">
|
|
||||||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
|
||||||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
|
||||||
</div>
|
|
||||||
<div class="jp-InputArea jp-Cell-inputArea">
|
|
||||||
<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
|
|
||||||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
|
||||||
<div class="cm-editor cm-s-jupyter">
|
|
||||||
<div class="highlight hl-julia"><pre><span></span><span class="n">rand_distance_table</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
|
|
||||||
</pre></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=0b451628">
|
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=0b451628">
|
||||||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||||||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||||||
@ -7982,7 +8021,7 @@ a.anchor-link {
|
|||||||
</div>
|
</div>
|
||||||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||||||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||||||
<h3 id="Code">Code<a class="anchor-link" href="#Code">¶</a></h3>
|
<h3 id="Code">Code<a class="anchor-link" href="#Code">¶</a></h3><p>We split the code in two functions. The first function is called on the main process (the process running this notebook). It splits the input matrix into blocks of rows. Then, we call <code>floyd_worker!</code> (see below) remotely on each worker using the corresponding block of rows.</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -8010,6 +8049,17 @@ a.anchor-link {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=9fc3be11">
|
||||||
|
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||||||
|
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||||||
|
</div>
|
||||||
|
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||||||
|
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||||||
|
<p>The second function is the one run on the workers. Note that we considered MPI for communication in this case.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=d5a8d3a8">
|
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=d5a8d3a8">
|
||||||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||||||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||||||
@ -8037,8 +8087,8 @@ a.anchor-link {
|
|||||||
<span class="w"> </span><span class="k">else</span>
|
<span class="w"> </span><span class="k">else</span>
|
||||||
<span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Recv!</span><span class="p">(</span><span class="n">C_k</span><span class="p">,</span><span class="n">comm</span><span class="p">,</span><span class="n">source</span><span class="o">=</span><span class="n">MPI</span><span class="o">.</span><span class="n">ANY_SOURCE</span><span class="p">,</span><span class="n">tag</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
|
<span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Recv!</span><span class="p">(</span><span class="n">C_k</span><span class="p">,</span><span class="n">comm</span><span class="p">,</span><span class="n">source</span><span class="o">=</span><span class="n">MPI</span><span class="o">.</span><span class="n">ANY_SOURCE</span><span class="p">,</span><span class="n">tag</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
|
||||||
<span class="w"> </span><span class="k">end</span>
|
<span class="w"> </span><span class="k">end</span>
|
||||||
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">:</span><span class="n">m</span>
|
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">:</span><span class="n">n</span>
|
||||||
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">:</span><span class="n">n</span>
|
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">:</span><span class="n">m</span>
|
||||||
<span class="w"> </span><span class="nd">@inbounds</span><span class="w"> </span><span class="n">Cw</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="n">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">min</span><span class="p">(</span><span class="n">Cw</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="n">j</span><span class="p">],</span><span class="n">Cw</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="n">k</span><span class="p">]</span><span class="o">+</span><span class="n">C_k</span><span class="p">[</span><span class="n">j</span><span class="p">])</span>
|
<span class="w"> </span><span class="nd">@inbounds</span><span class="w"> </span><span class="n">Cw</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="n">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">min</span><span class="p">(</span><span class="n">Cw</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="n">j</span><span class="p">],</span><span class="n">Cw</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="n">k</span><span class="p">]</span><span class="o">+</span><span class="n">C_k</span><span class="p">[</span><span class="n">j</span><span class="p">])</span>
|
||||||
<span class="w"> </span><span class="k">end</span>
|
<span class="w"> </span><span class="k">end</span>
|
||||||
<span class="w"> </span><span class="k">end</span>
|
<span class="w"> </span><span class="k">end</span>
|
||||||
@ -8050,6 +8100,46 @@ a.anchor-link {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=c624722a">
|
||||||
|
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||||||
|
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||||||
|
</div>
|
||||||
|
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||||||
|
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||||||
|
<h3 id="Testing-the-implementation">Testing the implementation<a class="anchor-link" href="#Testing-the-implementation">¶</a></h3>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=09937668">
|
||||||
|
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||||||
|
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||||||
|
</div>
|
||||||
|
<div class="jp-InputArea jp-Cell-inputArea">
|
||||||
|
<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
|
||||||
|
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||||||
|
<div class="cm-editor cm-s-jupyter">
|
||||||
|
<div class="highlight hl-julia"><pre><span></span><span class="k">function</span><span class="w"> </span><span class="n">rand_distance_table</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
|
||||||
|
<span class="w"> </span><span class="n">threshold</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0.4</span>
|
||||||
|
<span class="w"> </span><span class="n">mincost</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">3</span>
|
||||||
|
<span class="w"> </span><span class="n">maxcost</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">10</span>
|
||||||
|
<span class="w"> </span><span class="n">infinity</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">10000</span><span class="o">*</span><span class="n">maxcost</span>
|
||||||
|
<span class="w"> </span><span class="n">C</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fill</span><span class="p">(</span><span class="n">infinity</span><span class="p">,</span><span class="n">n</span><span class="p">,</span><span class="n">n</span><span class="p">)</span>
|
||||||
|
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">:</span><span class="n">n</span>
|
||||||
|
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">:</span><span class="n">n</span>
|
||||||
|
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">rand</span><span class="p">()</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="n">threshold</span>
|
||||||
|
<span class="w"> </span><span class="n">C</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="n">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">rand</span><span class="p">(</span><span class="n">mincost</span><span class="o">:</span><span class="n">maxcost</span><span class="p">)</span>
|
||||||
|
<span class="w"> </span><span class="k">end</span>
|
||||||
|
<span class="w"> </span><span class="k">end</span>
|
||||||
|
<span class="w"> </span><span class="n">C</span><span class="p">[</span><span class="n">j</span><span class="p">,</span><span class="n">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span>
|
||||||
|
<span class="w"> </span><span class="k">end</span>
|
||||||
|
<span class="w"> </span><span class="n">C</span>
|
||||||
|
<span class="k">end</span>
|
||||||
|
</pre></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=dd77ee3d">
|
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=dd77ee3d">
|
||||||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||||||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||||||
@ -8145,22 +8235,19 @@ a.anchor-link {
|
|||||||
<li>Use synchronous send MPI_SSEND (less efficient). Note that the blocking send MPI_SEND used above does not guarantee that the message was received.</li>
|
<li>Use synchronous send MPI_SSEND (less efficient). Note that the blocking send MPI_SEND used above does not guarantee that the message was received.</li>
|
||||||
<li>Barrier at the end of each iteration over $k$ (simple solution, but synchronization overhead)</li>
|
<li>Barrier at the end of each iteration over $k$ (simple solution, but synchronization overhead)</li>
|
||||||
<li>Order incoming messages (buffering and extra user code needed)</li>
|
<li>Order incoming messages (buffering and extra user code needed)</li>
|
||||||
<li>Use a specific rank id instead of <code>MPI.ANY_SOURCE</code> (one needs to know which are the rows owned by the other ranks)</li>
|
<li>Use a specific rank id instead of <code>MPI.ANY_SOURCE</code> or use <code>MPI.Bcast!</code> (one needs to know which are the rows owned by the other ranks)</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=db2b586f">
|
</div>
|
||||||
|
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=c789dc7a">
|
||||||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||||||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||||||
</div>
|
</div>
|
||||||
<div class="jp-InputArea jp-Cell-inputArea">
|
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||||||
<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
|
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||||||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
<h1 id="License">License<a class="anchor-link" href="#License">¶</a></h1><p>This notebook is part of the course <a href="https://www.francescverdugo.com/XM_40017">Programming Large Scale Parallel Systems</a> at Vrije Universiteit Amsterdam and may be used under a <a href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a> license.</p>
|
||||||
<div class="cm-editor cm-s-jupyter">
|
|
||||||
<div class="highlight hl-julia"><pre><span></span>
|
|
||||||
</pre></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>- · XM_40017</title><script data-outdated-warner src="../assets/warner.js"></script><link rel="canonical" href="https://fverdugo.github.io/XM_40017/jacobi_2D/"/><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/><script src="../assets/iframeResizer.min.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.png" alt="XM_40017 logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">XM_40017</a></span></div><form class="docs-search" action="../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><a class="tocitem" href="../getting_started_with_julia/">Getting started</a></li><li><span class="tocitem">Notebooks</span><ul><li><a class="tocitem" href="../julia_basics/">Julia Basics</a></li><li><a class="tocitem" href="../julia_async/">Asynchronous programming in Julia</a></li><li><a class="tocitem" href="../julia_distributed/">Distributed computing in Julia</a></li><li><a class="tocitem" href="../mpi_tutorial/">Distributed computing with MPI</a></li><li><a class="tocitem" href="../matrix_matrix/">Matrix-matrix multiplication</a></li></ul></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>-</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>-</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/fverdugo/XM_40017/blob/main/notebooks/jacobi_2D.ipynb" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><div class="admonition is-success">
|
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>- · XM_40017</title><script data-outdated-warner src="../assets/warner.js"></script><link rel="canonical" href="https://fverdugo.github.io/XM_40017/jacobi_2D/"/><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/><script src="../assets/iframeResizer.min.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.png" alt="XM_40017 logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">XM_40017</a></span></div><form class="docs-search" action="../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><a class="tocitem" href="../getting_started_with_julia/">Getting started</a></li><li><span class="tocitem">Notebooks</span><ul><li><a class="tocitem" href="../julia_basics/">Julia Basics</a></li><li><a class="tocitem" href="../julia_async/">Asynchronous programming in Julia</a></li><li><a class="tocitem" href="../julia_distributed/">Distributed computing in Julia</a></li><li><a class="tocitem" href="../mpi_tutorial/">Distributed computing with MPI</a></li><li><a class="tocitem" href="../matrix_matrix/">Matrix-matrix multiplication</a></li><li><a class="tocitem" href="../jacobi_method/">Jacobi method</a></li><li><a class="tocitem" href="../asp/">All pairs of shortest paths</a></li></ul></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>-</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>-</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/fverdugo/XM_40017/blob/main/notebooks/jacobi_2D.ipynb" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><div class="admonition is-success">
|
||||||
<header class="admonition-header">Tip</header>
|
<header class="admonition-header">Tip</header>
|
||||||
<div class="admonition-body">
|
<div class="admonition-body">
|
||||||
<ul>
|
<ul>
|
||||||
@ -14,4 +14,4 @@
|
|||||||
var myIframe = document.getElementById("notebook");
|
var myIframe = document.getElementById("notebook");
|
||||||
iFrameResize({log:true}, myIframe);
|
iFrameResize({log:true}, myIframe);
|
||||||
});
|
});
|
||||||
</script></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.25 on <span class="colophon-date" title="Tuesday 29 August 2023 10:10">Tuesday 29 August 2023</span>. Using Julia version 1.9.3.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
|
</script></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.25 on <span class="colophon-date" title="Wednesday 30 August 2023 10:26">Wednesday 30 August 2023</span>. Using Julia version 1.9.3.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
|
||||||
|
|||||||
@ -7333,7 +7333,8 @@ a.anchor-link {
|
|||||||
if (!diagrams.length) {
|
if (!diagrams.length) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.2.3/mermaid.esm.min.mjs")).default;
|
const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.3.1/mermaid.esm.min.mjs")).default;
|
||||||
|
const parser = new DOMParser();
|
||||||
|
|
||||||
mermaid.initialize({
|
mermaid.initialize({
|
||||||
maxTextSize: 100000,
|
maxTextSize: 100000,
|
||||||
@ -7349,39 +7350,52 @@ a.anchor-link {
|
|||||||
let _nextMermaidId = 0;
|
let _nextMermaidId = 0;
|
||||||
|
|
||||||
function makeMermaidImage(svg) {
|
function makeMermaidImage(svg) {
|
||||||
const img = document.createElement('img');
|
const img = document.createElement("img");
|
||||||
const maxWidth = svg.match(/max-width: (\d+)/);
|
const doc = parser.parseFromString(svg, "image/svg+xml");
|
||||||
if (maxWidth && maxWidth[1]) {
|
const svgEl = doc.querySelector("svg");
|
||||||
const width = parseInt(maxWidth[1]);
|
const { maxWidth } = svgEl?.style || {};
|
||||||
if (width && !Number.isNaN(width) && Number.isFinite(width)) {
|
const firstTitle = doc.querySelector("title");
|
||||||
img.width = width;
|
const firstDesc = doc.querySelector("desc");
|
||||||
}
|
|
||||||
|
img.setAttribute("src", `data:image/svg+xml,${encodeURIComponent(svg)}`);
|
||||||
|
if (maxWidth) {
|
||||||
|
img.width = parseInt(maxWidth);
|
||||||
}
|
}
|
||||||
img.setAttribute('src', `data:image/svg+xml,${encodeURIComponent(svg)}`);
|
if (firstTitle) {
|
||||||
return img;
|
img.setAttribute("alt", firstTitle.textContent);
|
||||||
|
}
|
||||||
|
if (firstDesc) {
|
||||||
|
const caption = document.createElement("figcaption");
|
||||||
|
caption.className = "sr-only";
|
||||||
|
caption.textContent = firstDesc.textContent;
|
||||||
|
return [img, caption];
|
||||||
|
}
|
||||||
|
return [img];
|
||||||
}
|
}
|
||||||
|
|
||||||
async function makeMermaidError(text) {
|
async function makeMermaidError(text) {
|
||||||
let errorMessage = '';
|
let errorMessage = "";
|
||||||
try {
|
try {
|
||||||
await mermaid.parse(text);
|
await mermaid.parse(text);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
errorMessage = `${err}`;
|
errorMessage = `${err}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
const result = document.createElement('details');
|
const result = document.createElement("details");
|
||||||
const summary = document.createElement('summary');
|
result.className = 'jp-RenderedMermaid-Details';
|
||||||
const pre = document.createElement('pre');
|
const summary = document.createElement("summary");
|
||||||
const code = document.createElement('code');
|
summary.className = 'jp-RenderedMermaid-Summary';
|
||||||
|
const pre = document.createElement("pre");
|
||||||
|
const code = document.createElement("code");
|
||||||
code.innerText = text;
|
code.innerText = text;
|
||||||
pre.appendChild(code);
|
pre.appendChild(code);
|
||||||
summary.appendChild(pre);
|
summary.appendChild(pre);
|
||||||
result.appendChild(summary);
|
result.appendChild(summary);
|
||||||
|
|
||||||
const warning = document.createElement('pre');
|
const warning = document.createElement("pre");
|
||||||
warning.innerText = errorMessage;
|
warning.innerText = errorMessage;
|
||||||
result.appendChild(warning);
|
result.appendChild(warning);
|
||||||
return result;
|
return [result];
|
||||||
}
|
}
|
||||||
|
|
||||||
async function renderOneMarmaid(src) {
|
async function renderOneMarmaid(src) {
|
||||||
@ -7391,30 +7405,41 @@ a.anchor-link {
|
|||||||
const el = document.createElement("div");
|
const el = document.createElement("div");
|
||||||
el.style.visibility = "hidden";
|
el.style.visibility = "hidden";
|
||||||
document.body.appendChild(el);
|
document.body.appendChild(el);
|
||||||
let result = null;
|
let results = null;
|
||||||
|
let output = null;
|
||||||
try {
|
try {
|
||||||
const { svg } = await mermaid.render(id, raw, el);
|
const { svg } = await mermaid.render(id, raw, el);
|
||||||
result = makeMermaidImage(svg);
|
results = makeMermaidImage(svg);
|
||||||
|
output = document.createElement("figure");
|
||||||
|
results.map(output.appendChild, output);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
parent.classList.add("jp-mod-warning");
|
parent.classList.add("jp-mod-warning");
|
||||||
result = await makeMermaidError(raw);
|
results = await makeMermaidError(raw);
|
||||||
|
output = results[0];
|
||||||
} finally {
|
} finally {
|
||||||
el.remove();
|
el.remove();
|
||||||
}
|
}
|
||||||
parent.classList.add("jp-RenderedMermaid");
|
parent.classList.add("jp-RenderedMermaid");
|
||||||
parent.appendChild(result);
|
parent.appendChild(output);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Promise.all([...diagrams].map(renderOneMarmaid));
|
void Promise.all([...diagrams].map(renderOneMarmaid));
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<style>
|
<style>
|
||||||
.jp-RenderedMarkdown .jp-Mermaid:not(.jp-RenderedMermaid) {
|
.jp-Mermaid:not(.jp-RenderedMermaid) {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning {
|
|
||||||
|
.jp-RenderedMermaid {
|
||||||
|
overflow: auto;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid.jp-mod-warning {
|
||||||
width: auto;
|
width: auto;
|
||||||
padding: 10px;
|
padding: 0.5em;
|
||||||
|
margin-top: 0.5em;
|
||||||
border: var(--jp-border-width) solid var(--jp-warn-color2);
|
border: var(--jp-border-width) solid var(--jp-warn-color2);
|
||||||
border-radius: var(--jp-border-radius);
|
border-radius: var(--jp-border-radius);
|
||||||
color: var(--jp-ui-font-color1);
|
color: var(--jp-ui-font-color1);
|
||||||
@ -7422,18 +7447,33 @@ a.anchor-link {
|
|||||||
white-space: pre-wrap;
|
white-space: pre-wrap;
|
||||||
word-wrap: break-word;
|
word-wrap: break-word;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning details > pre {
|
|
||||||
|
.jp-RenderedMermaid figure {
|
||||||
|
margin: 0;
|
||||||
|
overflow: auto;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid img {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid-Details > pre {
|
||||||
margin-top: 1em;
|
margin-top: 1em;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning summary {
|
|
||||||
|
.jp-RenderedMermaid-Summary {
|
||||||
color: var(--jp-warn-color2);
|
color: var(--jp-warn-color2);
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning summary > pre {
|
|
||||||
display: inline-block;
|
.jp-RenderedMermaid:not(.jp-mod-warning) pre {
|
||||||
}
|
|
||||||
.jp-RenderedMermaid > .mermaid {
|
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid-Summary > pre {
|
||||||
|
display: inline-block;
|
||||||
|
white-space: normal;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
<!-- End of mermaid configuration --></head>
|
<!-- End of mermaid configuration --></head>
|
||||||
<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
|
<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>- · XM_40017</title><script data-outdated-warner src="../assets/warner.js"></script><link rel="canonical" href="https://fverdugo.github.io/XM_40017/jacobi_method/"/><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/><script src="../assets/iframeResizer.min.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.png" alt="XM_40017 logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">XM_40017</a></span></div><form class="docs-search" action="../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><a class="tocitem" href="../getting_started_with_julia/">Getting started</a></li><li><span class="tocitem">Notebooks</span><ul><li><a class="tocitem" href="../julia_basics/">Julia Basics</a></li><li><a class="tocitem" href="../julia_async/">Asynchronous programming in Julia</a></li><li><a class="tocitem" href="../julia_distributed/">Distributed computing in Julia</a></li><li><a class="tocitem" href="../mpi_tutorial/">Distributed computing with MPI</a></li><li><a class="tocitem" href="../matrix_matrix/">Matrix-matrix multiplication</a></li></ul></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>-</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>-</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/fverdugo/XM_40017/blob/main/notebooks/jacobi_method.ipynb" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><div class="admonition is-success">
|
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Jacobi method · XM_40017</title><script data-outdated-warner src="../assets/warner.js"></script><link rel="canonical" href="https://fverdugo.github.io/XM_40017/jacobi_method/"/><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/><script src="../assets/iframeResizer.min.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.png" alt="XM_40017 logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">XM_40017</a></span></div><form class="docs-search" action="../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><a class="tocitem" href="../getting_started_with_julia/">Getting started</a></li><li><span class="tocitem">Notebooks</span><ul><li><a class="tocitem" href="../julia_basics/">Julia Basics</a></li><li><a class="tocitem" href="../julia_async/">Asynchronous programming in Julia</a></li><li><a class="tocitem" href="../julia_distributed/">Distributed computing in Julia</a></li><li><a class="tocitem" href="../mpi_tutorial/">Distributed computing with MPI</a></li><li><a class="tocitem" href="../matrix_matrix/">Matrix-matrix multiplication</a></li><li class="is-active"><a class="tocitem" href>Jacobi method</a></li><li><a class="tocitem" href="../asp/">All pairs of shortest paths</a></li></ul></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Notebooks</a></li><li class="is-active"><a href>Jacobi method</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Jacobi method</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/fverdugo/XM_40017/blob/main/notebooks/jacobi_method.ipynb" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><div class="admonition is-success">
|
||||||
<header class="admonition-header">Tip</header>
|
<header class="admonition-header">Tip</header>
|
||||||
<div class="admonition-body">
|
<div class="admonition-body">
|
||||||
<ul>
|
<ul>
|
||||||
@ -14,4 +14,4 @@
|
|||||||
var myIframe = document.getElementById("notebook");
|
var myIframe = document.getElementById("notebook");
|
||||||
iFrameResize({log:true}, myIframe);
|
iFrameResize({log:true}, myIframe);
|
||||||
});
|
});
|
||||||
</script></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.25 on <span class="colophon-date" title="Tuesday 29 August 2023 10:10">Tuesday 29 August 2023</span>. Using Julia version 1.9.3.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
|
</script></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../matrix_matrix/">« Matrix-matrix multiplication</a><a class="docs-footer-nextpage" href="../asp/">All pairs of shortest paths »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.25 on <span class="colophon-date" title="Wednesday 30 August 2023 10:26">Wednesday 30 August 2023</span>. Using Julia version 1.9.3.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Asynchronous programming in Julia · XM_40017</title><script data-outdated-warner src="../assets/warner.js"></script><link rel="canonical" href="https://fverdugo.github.io/XM_40017/julia_async/"/><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/><script src="../assets/iframeResizer.min.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.png" alt="XM_40017 logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">XM_40017</a></span></div><form class="docs-search" action="../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><a class="tocitem" href="../getting_started_with_julia/">Getting started</a></li><li><span class="tocitem">Notebooks</span><ul><li><a class="tocitem" href="../julia_basics/">Julia Basics</a></li><li class="is-active"><a class="tocitem" href>Asynchronous programming in Julia</a></li><li><a class="tocitem" href="../julia_distributed/">Distributed computing in Julia</a></li><li><a class="tocitem" href="../mpi_tutorial/">Distributed computing with MPI</a></li><li><a class="tocitem" href="../matrix_matrix/">Matrix-matrix multiplication</a></li></ul></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Notebooks</a></li><li class="is-active"><a href>Asynchronous programming in Julia</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Asynchronous programming in Julia</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/fverdugo/XM_40017/blob/main/notebooks/julia_async.ipynb" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><div class="admonition is-success">
|
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Asynchronous programming in Julia · XM_40017</title><script data-outdated-warner src="../assets/warner.js"></script><link rel="canonical" href="https://fverdugo.github.io/XM_40017/julia_async/"/><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/><script src="../assets/iframeResizer.min.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.png" alt="XM_40017 logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">XM_40017</a></span></div><form class="docs-search" action="../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><a class="tocitem" href="../getting_started_with_julia/">Getting started</a></li><li><span class="tocitem">Notebooks</span><ul><li><a class="tocitem" href="../julia_basics/">Julia Basics</a></li><li class="is-active"><a class="tocitem" href>Asynchronous programming in Julia</a></li><li><a class="tocitem" href="../julia_distributed/">Distributed computing in Julia</a></li><li><a class="tocitem" href="../mpi_tutorial/">Distributed computing with MPI</a></li><li><a class="tocitem" href="../matrix_matrix/">Matrix-matrix multiplication</a></li><li><a class="tocitem" href="../jacobi_method/">Jacobi method</a></li><li><a class="tocitem" href="../asp/">All pairs of shortest paths</a></li></ul></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Notebooks</a></li><li class="is-active"><a href>Asynchronous programming in Julia</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Asynchronous programming in Julia</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/fverdugo/XM_40017/blob/main/notebooks/julia_async.ipynb" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><div class="admonition is-success">
|
||||||
<header class="admonition-header">Tip</header>
|
<header class="admonition-header">Tip</header>
|
||||||
<div class="admonition-body">
|
<div class="admonition-body">
|
||||||
<ul>
|
<ul>
|
||||||
@ -14,4 +14,4 @@
|
|||||||
var myIframe = document.getElementById("notebook");
|
var myIframe = document.getElementById("notebook");
|
||||||
iFrameResize({log:true}, myIframe);
|
iFrameResize({log:true}, myIframe);
|
||||||
});
|
});
|
||||||
</script></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../julia_basics/">« Julia Basics</a><a class="docs-footer-nextpage" href="../julia_distributed/">Distributed computing in Julia »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.25 on <span class="colophon-date" title="Tuesday 29 August 2023 10:10">Tuesday 29 August 2023</span>. Using Julia version 1.9.3.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
|
</script></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../julia_basics/">« Julia Basics</a><a class="docs-footer-nextpage" href="../julia_distributed/">Distributed computing in Julia »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.25 on <span class="colophon-date" title="Wednesday 30 August 2023 10:26">Wednesday 30 August 2023</span>. Using Julia version 1.9.3.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
|
||||||
|
|||||||
@ -7333,7 +7333,8 @@ a.anchor-link {
|
|||||||
if (!diagrams.length) {
|
if (!diagrams.length) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.2.3/mermaid.esm.min.mjs")).default;
|
const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.3.1/mermaid.esm.min.mjs")).default;
|
||||||
|
const parser = new DOMParser();
|
||||||
|
|
||||||
mermaid.initialize({
|
mermaid.initialize({
|
||||||
maxTextSize: 100000,
|
maxTextSize: 100000,
|
||||||
@ -7349,39 +7350,52 @@ a.anchor-link {
|
|||||||
let _nextMermaidId = 0;
|
let _nextMermaidId = 0;
|
||||||
|
|
||||||
function makeMermaidImage(svg) {
|
function makeMermaidImage(svg) {
|
||||||
const img = document.createElement('img');
|
const img = document.createElement("img");
|
||||||
const maxWidth = svg.match(/max-width: (\d+)/);
|
const doc = parser.parseFromString(svg, "image/svg+xml");
|
||||||
if (maxWidth && maxWidth[1]) {
|
const svgEl = doc.querySelector("svg");
|
||||||
const width = parseInt(maxWidth[1]);
|
const { maxWidth } = svgEl?.style || {};
|
||||||
if (width && !Number.isNaN(width) && Number.isFinite(width)) {
|
const firstTitle = doc.querySelector("title");
|
||||||
img.width = width;
|
const firstDesc = doc.querySelector("desc");
|
||||||
}
|
|
||||||
|
img.setAttribute("src", `data:image/svg+xml,${encodeURIComponent(svg)}`);
|
||||||
|
if (maxWidth) {
|
||||||
|
img.width = parseInt(maxWidth);
|
||||||
}
|
}
|
||||||
img.setAttribute('src', `data:image/svg+xml,${encodeURIComponent(svg)}`);
|
if (firstTitle) {
|
||||||
return img;
|
img.setAttribute("alt", firstTitle.textContent);
|
||||||
|
}
|
||||||
|
if (firstDesc) {
|
||||||
|
const caption = document.createElement("figcaption");
|
||||||
|
caption.className = "sr-only";
|
||||||
|
caption.textContent = firstDesc.textContent;
|
||||||
|
return [img, caption];
|
||||||
|
}
|
||||||
|
return [img];
|
||||||
}
|
}
|
||||||
|
|
||||||
async function makeMermaidError(text) {
|
async function makeMermaidError(text) {
|
||||||
let errorMessage = '';
|
let errorMessage = "";
|
||||||
try {
|
try {
|
||||||
await mermaid.parse(text);
|
await mermaid.parse(text);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
errorMessage = `${err}`;
|
errorMessage = `${err}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
const result = document.createElement('details');
|
const result = document.createElement("details");
|
||||||
const summary = document.createElement('summary');
|
result.className = 'jp-RenderedMermaid-Details';
|
||||||
const pre = document.createElement('pre');
|
const summary = document.createElement("summary");
|
||||||
const code = document.createElement('code');
|
summary.className = 'jp-RenderedMermaid-Summary';
|
||||||
|
const pre = document.createElement("pre");
|
||||||
|
const code = document.createElement("code");
|
||||||
code.innerText = text;
|
code.innerText = text;
|
||||||
pre.appendChild(code);
|
pre.appendChild(code);
|
||||||
summary.appendChild(pre);
|
summary.appendChild(pre);
|
||||||
result.appendChild(summary);
|
result.appendChild(summary);
|
||||||
|
|
||||||
const warning = document.createElement('pre');
|
const warning = document.createElement("pre");
|
||||||
warning.innerText = errorMessage;
|
warning.innerText = errorMessage;
|
||||||
result.appendChild(warning);
|
result.appendChild(warning);
|
||||||
return result;
|
return [result];
|
||||||
}
|
}
|
||||||
|
|
||||||
async function renderOneMarmaid(src) {
|
async function renderOneMarmaid(src) {
|
||||||
@ -7391,30 +7405,41 @@ a.anchor-link {
|
|||||||
const el = document.createElement("div");
|
const el = document.createElement("div");
|
||||||
el.style.visibility = "hidden";
|
el.style.visibility = "hidden";
|
||||||
document.body.appendChild(el);
|
document.body.appendChild(el);
|
||||||
let result = null;
|
let results = null;
|
||||||
|
let output = null;
|
||||||
try {
|
try {
|
||||||
const { svg } = await mermaid.render(id, raw, el);
|
const { svg } = await mermaid.render(id, raw, el);
|
||||||
result = makeMermaidImage(svg);
|
results = makeMermaidImage(svg);
|
||||||
|
output = document.createElement("figure");
|
||||||
|
results.map(output.appendChild, output);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
parent.classList.add("jp-mod-warning");
|
parent.classList.add("jp-mod-warning");
|
||||||
result = await makeMermaidError(raw);
|
results = await makeMermaidError(raw);
|
||||||
|
output = results[0];
|
||||||
} finally {
|
} finally {
|
||||||
el.remove();
|
el.remove();
|
||||||
}
|
}
|
||||||
parent.classList.add("jp-RenderedMermaid");
|
parent.classList.add("jp-RenderedMermaid");
|
||||||
parent.appendChild(result);
|
parent.appendChild(output);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Promise.all([...diagrams].map(renderOneMarmaid));
|
void Promise.all([...diagrams].map(renderOneMarmaid));
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<style>
|
<style>
|
||||||
.jp-RenderedMarkdown .jp-Mermaid:not(.jp-RenderedMermaid) {
|
.jp-Mermaid:not(.jp-RenderedMermaid) {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning {
|
|
||||||
|
.jp-RenderedMermaid {
|
||||||
|
overflow: auto;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid.jp-mod-warning {
|
||||||
width: auto;
|
width: auto;
|
||||||
padding: 10px;
|
padding: 0.5em;
|
||||||
|
margin-top: 0.5em;
|
||||||
border: var(--jp-border-width) solid var(--jp-warn-color2);
|
border: var(--jp-border-width) solid var(--jp-warn-color2);
|
||||||
border-radius: var(--jp-border-radius);
|
border-radius: var(--jp-border-radius);
|
||||||
color: var(--jp-ui-font-color1);
|
color: var(--jp-ui-font-color1);
|
||||||
@ -7422,18 +7447,33 @@ a.anchor-link {
|
|||||||
white-space: pre-wrap;
|
white-space: pre-wrap;
|
||||||
word-wrap: break-word;
|
word-wrap: break-word;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning details > pre {
|
|
||||||
|
.jp-RenderedMermaid figure {
|
||||||
|
margin: 0;
|
||||||
|
overflow: auto;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid img {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid-Details > pre {
|
||||||
margin-top: 1em;
|
margin-top: 1em;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning summary {
|
|
||||||
|
.jp-RenderedMermaid-Summary {
|
||||||
color: var(--jp-warn-color2);
|
color: var(--jp-warn-color2);
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning summary > pre {
|
|
||||||
display: inline-block;
|
.jp-RenderedMermaid:not(.jp-mod-warning) pre {
|
||||||
}
|
|
||||||
.jp-RenderedMermaid > .mermaid {
|
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid-Summary > pre {
|
||||||
|
display: inline-block;
|
||||||
|
white-space: normal;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
<!-- End of mermaid configuration --></head>
|
<!-- End of mermaid configuration --></head>
|
||||||
<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
|
<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Julia Basics · XM_40017</title><script data-outdated-warner src="../assets/warner.js"></script><link rel="canonical" href="https://fverdugo.github.io/XM_40017/julia_basics/"/><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/><script src="../assets/iframeResizer.min.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.png" alt="XM_40017 logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">XM_40017</a></span></div><form class="docs-search" action="../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><a class="tocitem" href="../getting_started_with_julia/">Getting started</a></li><li><span class="tocitem">Notebooks</span><ul><li class="is-active"><a class="tocitem" href>Julia Basics</a></li><li><a class="tocitem" href="../julia_async/">Asynchronous programming in Julia</a></li><li><a class="tocitem" href="../julia_distributed/">Distributed computing in Julia</a></li><li><a class="tocitem" href="../mpi_tutorial/">Distributed computing with MPI</a></li><li><a class="tocitem" href="../matrix_matrix/">Matrix-matrix multiplication</a></li></ul></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Notebooks</a></li><li class="is-active"><a href>Julia Basics</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Julia Basics</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/fverdugo/XM_40017/blob/main/notebooks/julia_basics.ipynb" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><div class="admonition is-success">
|
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Julia Basics · XM_40017</title><script data-outdated-warner src="../assets/warner.js"></script><link rel="canonical" href="https://fverdugo.github.io/XM_40017/julia_basics/"/><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/><script src="../assets/iframeResizer.min.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.png" alt="XM_40017 logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">XM_40017</a></span></div><form class="docs-search" action="../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><a class="tocitem" href="../getting_started_with_julia/">Getting started</a></li><li><span class="tocitem">Notebooks</span><ul><li class="is-active"><a class="tocitem" href>Julia Basics</a></li><li><a class="tocitem" href="../julia_async/">Asynchronous programming in Julia</a></li><li><a class="tocitem" href="../julia_distributed/">Distributed computing in Julia</a></li><li><a class="tocitem" href="../mpi_tutorial/">Distributed computing with MPI</a></li><li><a class="tocitem" href="../matrix_matrix/">Matrix-matrix multiplication</a></li><li><a class="tocitem" href="../jacobi_method/">Jacobi method</a></li><li><a class="tocitem" href="../asp/">All pairs of shortest paths</a></li></ul></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Notebooks</a></li><li class="is-active"><a href>Julia Basics</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Julia Basics</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/fverdugo/XM_40017/blob/main/notebooks/julia_basics.ipynb" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><div class="admonition is-success">
|
||||||
<header class="admonition-header">Tip</header>
|
<header class="admonition-header">Tip</header>
|
||||||
<div class="admonition-body">
|
<div class="admonition-body">
|
||||||
<ul>
|
<ul>
|
||||||
@ -14,4 +14,4 @@
|
|||||||
var myIframe = document.getElementById("notebook");
|
var myIframe = document.getElementById("notebook");
|
||||||
iFrameResize({log:true}, myIframe);
|
iFrameResize({log:true}, myIframe);
|
||||||
});
|
});
|
||||||
</script></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../getting_started_with_julia/">« Getting started</a><a class="docs-footer-nextpage" href="../julia_async/">Asynchronous programming in Julia »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.25 on <span class="colophon-date" title="Tuesday 29 August 2023 10:10">Tuesday 29 August 2023</span>. Using Julia version 1.9.3.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
|
</script></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../getting_started_with_julia/">« Getting started</a><a class="docs-footer-nextpage" href="../julia_async/">Asynchronous programming in Julia »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.25 on <span class="colophon-date" title="Wednesday 30 August 2023 10:26">Wednesday 30 August 2023</span>. Using Julia version 1.9.3.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
|
||||||
|
|||||||
@ -7333,7 +7333,8 @@ a.anchor-link {
|
|||||||
if (!diagrams.length) {
|
if (!diagrams.length) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.2.3/mermaid.esm.min.mjs")).default;
|
const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.3.1/mermaid.esm.min.mjs")).default;
|
||||||
|
const parser = new DOMParser();
|
||||||
|
|
||||||
mermaid.initialize({
|
mermaid.initialize({
|
||||||
maxTextSize: 100000,
|
maxTextSize: 100000,
|
||||||
@ -7349,39 +7350,52 @@ a.anchor-link {
|
|||||||
let _nextMermaidId = 0;
|
let _nextMermaidId = 0;
|
||||||
|
|
||||||
function makeMermaidImage(svg) {
|
function makeMermaidImage(svg) {
|
||||||
const img = document.createElement('img');
|
const img = document.createElement("img");
|
||||||
const maxWidth = svg.match(/max-width: (\d+)/);
|
const doc = parser.parseFromString(svg, "image/svg+xml");
|
||||||
if (maxWidth && maxWidth[1]) {
|
const svgEl = doc.querySelector("svg");
|
||||||
const width = parseInt(maxWidth[1]);
|
const { maxWidth } = svgEl?.style || {};
|
||||||
if (width && !Number.isNaN(width) && Number.isFinite(width)) {
|
const firstTitle = doc.querySelector("title");
|
||||||
img.width = width;
|
const firstDesc = doc.querySelector("desc");
|
||||||
}
|
|
||||||
|
img.setAttribute("src", `data:image/svg+xml,${encodeURIComponent(svg)}`);
|
||||||
|
if (maxWidth) {
|
||||||
|
img.width = parseInt(maxWidth);
|
||||||
}
|
}
|
||||||
img.setAttribute('src', `data:image/svg+xml,${encodeURIComponent(svg)}`);
|
if (firstTitle) {
|
||||||
return img;
|
img.setAttribute("alt", firstTitle.textContent);
|
||||||
|
}
|
||||||
|
if (firstDesc) {
|
||||||
|
const caption = document.createElement("figcaption");
|
||||||
|
caption.className = "sr-only";
|
||||||
|
caption.textContent = firstDesc.textContent;
|
||||||
|
return [img, caption];
|
||||||
|
}
|
||||||
|
return [img];
|
||||||
}
|
}
|
||||||
|
|
||||||
async function makeMermaidError(text) {
|
async function makeMermaidError(text) {
|
||||||
let errorMessage = '';
|
let errorMessage = "";
|
||||||
try {
|
try {
|
||||||
await mermaid.parse(text);
|
await mermaid.parse(text);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
errorMessage = `${err}`;
|
errorMessage = `${err}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
const result = document.createElement('details');
|
const result = document.createElement("details");
|
||||||
const summary = document.createElement('summary');
|
result.className = 'jp-RenderedMermaid-Details';
|
||||||
const pre = document.createElement('pre');
|
const summary = document.createElement("summary");
|
||||||
const code = document.createElement('code');
|
summary.className = 'jp-RenderedMermaid-Summary';
|
||||||
|
const pre = document.createElement("pre");
|
||||||
|
const code = document.createElement("code");
|
||||||
code.innerText = text;
|
code.innerText = text;
|
||||||
pre.appendChild(code);
|
pre.appendChild(code);
|
||||||
summary.appendChild(pre);
|
summary.appendChild(pre);
|
||||||
result.appendChild(summary);
|
result.appendChild(summary);
|
||||||
|
|
||||||
const warning = document.createElement('pre');
|
const warning = document.createElement("pre");
|
||||||
warning.innerText = errorMessage;
|
warning.innerText = errorMessage;
|
||||||
result.appendChild(warning);
|
result.appendChild(warning);
|
||||||
return result;
|
return [result];
|
||||||
}
|
}
|
||||||
|
|
||||||
async function renderOneMarmaid(src) {
|
async function renderOneMarmaid(src) {
|
||||||
@ -7391,30 +7405,41 @@ a.anchor-link {
|
|||||||
const el = document.createElement("div");
|
const el = document.createElement("div");
|
||||||
el.style.visibility = "hidden";
|
el.style.visibility = "hidden";
|
||||||
document.body.appendChild(el);
|
document.body.appendChild(el);
|
||||||
let result = null;
|
let results = null;
|
||||||
|
let output = null;
|
||||||
try {
|
try {
|
||||||
const { svg } = await mermaid.render(id, raw, el);
|
const { svg } = await mermaid.render(id, raw, el);
|
||||||
result = makeMermaidImage(svg);
|
results = makeMermaidImage(svg);
|
||||||
|
output = document.createElement("figure");
|
||||||
|
results.map(output.appendChild, output);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
parent.classList.add("jp-mod-warning");
|
parent.classList.add("jp-mod-warning");
|
||||||
result = await makeMermaidError(raw);
|
results = await makeMermaidError(raw);
|
||||||
|
output = results[0];
|
||||||
} finally {
|
} finally {
|
||||||
el.remove();
|
el.remove();
|
||||||
}
|
}
|
||||||
parent.classList.add("jp-RenderedMermaid");
|
parent.classList.add("jp-RenderedMermaid");
|
||||||
parent.appendChild(result);
|
parent.appendChild(output);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Promise.all([...diagrams].map(renderOneMarmaid));
|
void Promise.all([...diagrams].map(renderOneMarmaid));
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<style>
|
<style>
|
||||||
.jp-RenderedMarkdown .jp-Mermaid:not(.jp-RenderedMermaid) {
|
.jp-Mermaid:not(.jp-RenderedMermaid) {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning {
|
|
||||||
|
.jp-RenderedMermaid {
|
||||||
|
overflow: auto;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid.jp-mod-warning {
|
||||||
width: auto;
|
width: auto;
|
||||||
padding: 10px;
|
padding: 0.5em;
|
||||||
|
margin-top: 0.5em;
|
||||||
border: var(--jp-border-width) solid var(--jp-warn-color2);
|
border: var(--jp-border-width) solid var(--jp-warn-color2);
|
||||||
border-radius: var(--jp-border-radius);
|
border-radius: var(--jp-border-radius);
|
||||||
color: var(--jp-ui-font-color1);
|
color: var(--jp-ui-font-color1);
|
||||||
@ -7422,18 +7447,33 @@ a.anchor-link {
|
|||||||
white-space: pre-wrap;
|
white-space: pre-wrap;
|
||||||
word-wrap: break-word;
|
word-wrap: break-word;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning details > pre {
|
|
||||||
|
.jp-RenderedMermaid figure {
|
||||||
|
margin: 0;
|
||||||
|
overflow: auto;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid img {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid-Details > pre {
|
||||||
margin-top: 1em;
|
margin-top: 1em;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning summary {
|
|
||||||
|
.jp-RenderedMermaid-Summary {
|
||||||
color: var(--jp-warn-color2);
|
color: var(--jp-warn-color2);
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning summary > pre {
|
|
||||||
display: inline-block;
|
.jp-RenderedMermaid:not(.jp-mod-warning) pre {
|
||||||
}
|
|
||||||
.jp-RenderedMermaid > .mermaid {
|
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid-Summary > pre {
|
||||||
|
display: inline-block;
|
||||||
|
white-space: normal;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
<!-- End of mermaid configuration --></head>
|
<!-- End of mermaid configuration --></head>
|
||||||
<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
|
<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Distributed computing in Julia · XM_40017</title><script data-outdated-warner src="../assets/warner.js"></script><link rel="canonical" href="https://fverdugo.github.io/XM_40017/julia_distributed/"/><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/><script src="../assets/iframeResizer.min.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.png" alt="XM_40017 logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">XM_40017</a></span></div><form class="docs-search" action="../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><a class="tocitem" href="../getting_started_with_julia/">Getting started</a></li><li><span class="tocitem">Notebooks</span><ul><li><a class="tocitem" href="../julia_basics/">Julia Basics</a></li><li><a class="tocitem" href="../julia_async/">Asynchronous programming in Julia</a></li><li class="is-active"><a class="tocitem" href>Distributed computing in Julia</a></li><li><a class="tocitem" href="../mpi_tutorial/">Distributed computing with MPI</a></li><li><a class="tocitem" href="../matrix_matrix/">Matrix-matrix multiplication</a></li></ul></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Notebooks</a></li><li class="is-active"><a href>Distributed computing in Julia</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Distributed computing in Julia</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/fverdugo/XM_40017/blob/main/notebooks/julia_distributed.ipynb" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><div class="admonition is-success">
|
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Distributed computing in Julia · XM_40017</title><script data-outdated-warner src="../assets/warner.js"></script><link rel="canonical" href="https://fverdugo.github.io/XM_40017/julia_distributed/"/><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/><script src="../assets/iframeResizer.min.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.png" alt="XM_40017 logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">XM_40017</a></span></div><form class="docs-search" action="../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><a class="tocitem" href="../getting_started_with_julia/">Getting started</a></li><li><span class="tocitem">Notebooks</span><ul><li><a class="tocitem" href="../julia_basics/">Julia Basics</a></li><li><a class="tocitem" href="../julia_async/">Asynchronous programming in Julia</a></li><li class="is-active"><a class="tocitem" href>Distributed computing in Julia</a></li><li><a class="tocitem" href="../mpi_tutorial/">Distributed computing with MPI</a></li><li><a class="tocitem" href="../matrix_matrix/">Matrix-matrix multiplication</a></li><li><a class="tocitem" href="../jacobi_method/">Jacobi method</a></li><li><a class="tocitem" href="../asp/">All pairs of shortest paths</a></li></ul></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Notebooks</a></li><li class="is-active"><a href>Distributed computing in Julia</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Distributed computing in Julia</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/fverdugo/XM_40017/blob/main/notebooks/julia_distributed.ipynb" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><div class="admonition is-success">
|
||||||
<header class="admonition-header">Tip</header>
|
<header class="admonition-header">Tip</header>
|
||||||
<div class="admonition-body">
|
<div class="admonition-body">
|
||||||
<ul>
|
<ul>
|
||||||
@ -14,4 +14,4 @@
|
|||||||
var myIframe = document.getElementById("notebook");
|
var myIframe = document.getElementById("notebook");
|
||||||
iFrameResize({log:true}, myIframe);
|
iFrameResize({log:true}, myIframe);
|
||||||
});
|
});
|
||||||
</script></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../julia_async/">« Asynchronous programming in Julia</a><a class="docs-footer-nextpage" href="../mpi_tutorial/">Distributed computing with MPI »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.25 on <span class="colophon-date" title="Tuesday 29 August 2023 10:10">Tuesday 29 August 2023</span>. Using Julia version 1.9.3.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
|
</script></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../julia_async/">« Asynchronous programming in Julia</a><a class="docs-footer-nextpage" href="../mpi_tutorial/">Distributed computing with MPI »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.25 on <span class="colophon-date" title="Wednesday 30 August 2023 10:26">Wednesday 30 August 2023</span>. Using Julia version 1.9.3.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
|
||||||
|
|||||||
@ -7333,7 +7333,8 @@ a.anchor-link {
|
|||||||
if (!diagrams.length) {
|
if (!diagrams.length) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.2.3/mermaid.esm.min.mjs")).default;
|
const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.3.1/mermaid.esm.min.mjs")).default;
|
||||||
|
const parser = new DOMParser();
|
||||||
|
|
||||||
mermaid.initialize({
|
mermaid.initialize({
|
||||||
maxTextSize: 100000,
|
maxTextSize: 100000,
|
||||||
@ -7349,39 +7350,52 @@ a.anchor-link {
|
|||||||
let _nextMermaidId = 0;
|
let _nextMermaidId = 0;
|
||||||
|
|
||||||
function makeMermaidImage(svg) {
|
function makeMermaidImage(svg) {
|
||||||
const img = document.createElement('img');
|
const img = document.createElement("img");
|
||||||
const maxWidth = svg.match(/max-width: (\d+)/);
|
const doc = parser.parseFromString(svg, "image/svg+xml");
|
||||||
if (maxWidth && maxWidth[1]) {
|
const svgEl = doc.querySelector("svg");
|
||||||
const width = parseInt(maxWidth[1]);
|
const { maxWidth } = svgEl?.style || {};
|
||||||
if (width && !Number.isNaN(width) && Number.isFinite(width)) {
|
const firstTitle = doc.querySelector("title");
|
||||||
img.width = width;
|
const firstDesc = doc.querySelector("desc");
|
||||||
}
|
|
||||||
|
img.setAttribute("src", `data:image/svg+xml,${encodeURIComponent(svg)}`);
|
||||||
|
if (maxWidth) {
|
||||||
|
img.width = parseInt(maxWidth);
|
||||||
}
|
}
|
||||||
img.setAttribute('src', `data:image/svg+xml,${encodeURIComponent(svg)}`);
|
if (firstTitle) {
|
||||||
return img;
|
img.setAttribute("alt", firstTitle.textContent);
|
||||||
|
}
|
||||||
|
if (firstDesc) {
|
||||||
|
const caption = document.createElement("figcaption");
|
||||||
|
caption.className = "sr-only";
|
||||||
|
caption.textContent = firstDesc.textContent;
|
||||||
|
return [img, caption];
|
||||||
|
}
|
||||||
|
return [img];
|
||||||
}
|
}
|
||||||
|
|
||||||
async function makeMermaidError(text) {
|
async function makeMermaidError(text) {
|
||||||
let errorMessage = '';
|
let errorMessage = "";
|
||||||
try {
|
try {
|
||||||
await mermaid.parse(text);
|
await mermaid.parse(text);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
errorMessage = `${err}`;
|
errorMessage = `${err}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
const result = document.createElement('details');
|
const result = document.createElement("details");
|
||||||
const summary = document.createElement('summary');
|
result.className = 'jp-RenderedMermaid-Details';
|
||||||
const pre = document.createElement('pre');
|
const summary = document.createElement("summary");
|
||||||
const code = document.createElement('code');
|
summary.className = 'jp-RenderedMermaid-Summary';
|
||||||
|
const pre = document.createElement("pre");
|
||||||
|
const code = document.createElement("code");
|
||||||
code.innerText = text;
|
code.innerText = text;
|
||||||
pre.appendChild(code);
|
pre.appendChild(code);
|
||||||
summary.appendChild(pre);
|
summary.appendChild(pre);
|
||||||
result.appendChild(summary);
|
result.appendChild(summary);
|
||||||
|
|
||||||
const warning = document.createElement('pre');
|
const warning = document.createElement("pre");
|
||||||
warning.innerText = errorMessage;
|
warning.innerText = errorMessage;
|
||||||
result.appendChild(warning);
|
result.appendChild(warning);
|
||||||
return result;
|
return [result];
|
||||||
}
|
}
|
||||||
|
|
||||||
async function renderOneMarmaid(src) {
|
async function renderOneMarmaid(src) {
|
||||||
@ -7391,30 +7405,41 @@ a.anchor-link {
|
|||||||
const el = document.createElement("div");
|
const el = document.createElement("div");
|
||||||
el.style.visibility = "hidden";
|
el.style.visibility = "hidden";
|
||||||
document.body.appendChild(el);
|
document.body.appendChild(el);
|
||||||
let result = null;
|
let results = null;
|
||||||
|
let output = null;
|
||||||
try {
|
try {
|
||||||
const { svg } = await mermaid.render(id, raw, el);
|
const { svg } = await mermaid.render(id, raw, el);
|
||||||
result = makeMermaidImage(svg);
|
results = makeMermaidImage(svg);
|
||||||
|
output = document.createElement("figure");
|
||||||
|
results.map(output.appendChild, output);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
parent.classList.add("jp-mod-warning");
|
parent.classList.add("jp-mod-warning");
|
||||||
result = await makeMermaidError(raw);
|
results = await makeMermaidError(raw);
|
||||||
|
output = results[0];
|
||||||
} finally {
|
} finally {
|
||||||
el.remove();
|
el.remove();
|
||||||
}
|
}
|
||||||
parent.classList.add("jp-RenderedMermaid");
|
parent.classList.add("jp-RenderedMermaid");
|
||||||
parent.appendChild(result);
|
parent.appendChild(output);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Promise.all([...diagrams].map(renderOneMarmaid));
|
void Promise.all([...diagrams].map(renderOneMarmaid));
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<style>
|
<style>
|
||||||
.jp-RenderedMarkdown .jp-Mermaid:not(.jp-RenderedMermaid) {
|
.jp-Mermaid:not(.jp-RenderedMermaid) {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning {
|
|
||||||
|
.jp-RenderedMermaid {
|
||||||
|
overflow: auto;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid.jp-mod-warning {
|
||||||
width: auto;
|
width: auto;
|
||||||
padding: 10px;
|
padding: 0.5em;
|
||||||
|
margin-top: 0.5em;
|
||||||
border: var(--jp-border-width) solid var(--jp-warn-color2);
|
border: var(--jp-border-width) solid var(--jp-warn-color2);
|
||||||
border-radius: var(--jp-border-radius);
|
border-radius: var(--jp-border-radius);
|
||||||
color: var(--jp-ui-font-color1);
|
color: var(--jp-ui-font-color1);
|
||||||
@ -7422,18 +7447,33 @@ a.anchor-link {
|
|||||||
white-space: pre-wrap;
|
white-space: pre-wrap;
|
||||||
word-wrap: break-word;
|
word-wrap: break-word;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning details > pre {
|
|
||||||
|
.jp-RenderedMermaid figure {
|
||||||
|
margin: 0;
|
||||||
|
overflow: auto;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid img {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid-Details > pre {
|
||||||
margin-top: 1em;
|
margin-top: 1em;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning summary {
|
|
||||||
|
.jp-RenderedMermaid-Summary {
|
||||||
color: var(--jp-warn-color2);
|
color: var(--jp-warn-color2);
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning summary > pre {
|
|
||||||
display: inline-block;
|
.jp-RenderedMermaid:not(.jp-mod-warning) pre {
|
||||||
}
|
|
||||||
.jp-RenderedMermaid > .mermaid {
|
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid-Summary > pre {
|
||||||
|
display: inline-block;
|
||||||
|
white-space: normal;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
<!-- End of mermaid configuration --></head>
|
<!-- End of mermaid configuration --></head>
|
||||||
<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
|
<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>- · XM_40017</title><script data-outdated-warner src="../assets/warner.js"></script><link rel="canonical" href="https://fverdugo.github.io/XM_40017/julia_intro/"/><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/><script src="../assets/iframeResizer.min.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.png" alt="XM_40017 logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">XM_40017</a></span></div><form class="docs-search" action="../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><a class="tocitem" href="../getting_started_with_julia/">Getting started</a></li><li><span class="tocitem">Notebooks</span><ul><li><a class="tocitem" href="../julia_basics/">Julia Basics</a></li><li><a class="tocitem" href="../julia_async/">Asynchronous programming in Julia</a></li><li><a class="tocitem" href="../julia_distributed/">Distributed computing in Julia</a></li><li><a class="tocitem" href="../mpi_tutorial/">Distributed computing with MPI</a></li><li><a class="tocitem" href="../matrix_matrix/">Matrix-matrix multiplication</a></li></ul></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>-</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>-</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/fverdugo/XM_40017/blob/main/notebooks/julia_intro.ipynb" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><div class="admonition is-success">
|
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>- · XM_40017</title><script data-outdated-warner src="../assets/warner.js"></script><link rel="canonical" href="https://fverdugo.github.io/XM_40017/julia_intro/"/><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/><script src="../assets/iframeResizer.min.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.png" alt="XM_40017 logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">XM_40017</a></span></div><form class="docs-search" action="../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><a class="tocitem" href="../getting_started_with_julia/">Getting started</a></li><li><span class="tocitem">Notebooks</span><ul><li><a class="tocitem" href="../julia_basics/">Julia Basics</a></li><li><a class="tocitem" href="../julia_async/">Asynchronous programming in Julia</a></li><li><a class="tocitem" href="../julia_distributed/">Distributed computing in Julia</a></li><li><a class="tocitem" href="../mpi_tutorial/">Distributed computing with MPI</a></li><li><a class="tocitem" href="../matrix_matrix/">Matrix-matrix multiplication</a></li><li><a class="tocitem" href="../jacobi_method/">Jacobi method</a></li><li><a class="tocitem" href="../asp/">All pairs of shortest paths</a></li></ul></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>-</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>-</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/fverdugo/XM_40017/blob/main/notebooks/julia_intro.ipynb" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><div class="admonition is-success">
|
||||||
<header class="admonition-header">Tip</header>
|
<header class="admonition-header">Tip</header>
|
||||||
<div class="admonition-body">
|
<div class="admonition-body">
|
||||||
<ul>
|
<ul>
|
||||||
@ -14,4 +14,4 @@
|
|||||||
var myIframe = document.getElementById("notebook");
|
var myIframe = document.getElementById("notebook");
|
||||||
iFrameResize({log:true}, myIframe);
|
iFrameResize({log:true}, myIframe);
|
||||||
});
|
});
|
||||||
</script></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.25 on <span class="colophon-date" title="Tuesday 29 August 2023 10:10">Tuesday 29 August 2023</span>. Using Julia version 1.9.3.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
|
</script></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.25 on <span class="colophon-date" title="Wednesday 30 August 2023 10:26">Wednesday 30 August 2023</span>. Using Julia version 1.9.3.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
|
||||||
|
|||||||
@ -7333,7 +7333,8 @@ a.anchor-link {
|
|||||||
if (!diagrams.length) {
|
if (!diagrams.length) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.2.3/mermaid.esm.min.mjs")).default;
|
const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.3.1/mermaid.esm.min.mjs")).default;
|
||||||
|
const parser = new DOMParser();
|
||||||
|
|
||||||
mermaid.initialize({
|
mermaid.initialize({
|
||||||
maxTextSize: 100000,
|
maxTextSize: 100000,
|
||||||
@ -7349,39 +7350,52 @@ a.anchor-link {
|
|||||||
let _nextMermaidId = 0;
|
let _nextMermaidId = 0;
|
||||||
|
|
||||||
function makeMermaidImage(svg) {
|
function makeMermaidImage(svg) {
|
||||||
const img = document.createElement('img');
|
const img = document.createElement("img");
|
||||||
const maxWidth = svg.match(/max-width: (\d+)/);
|
const doc = parser.parseFromString(svg, "image/svg+xml");
|
||||||
if (maxWidth && maxWidth[1]) {
|
const svgEl = doc.querySelector("svg");
|
||||||
const width = parseInt(maxWidth[1]);
|
const { maxWidth } = svgEl?.style || {};
|
||||||
if (width && !Number.isNaN(width) && Number.isFinite(width)) {
|
const firstTitle = doc.querySelector("title");
|
||||||
img.width = width;
|
const firstDesc = doc.querySelector("desc");
|
||||||
}
|
|
||||||
|
img.setAttribute("src", `data:image/svg+xml,${encodeURIComponent(svg)}`);
|
||||||
|
if (maxWidth) {
|
||||||
|
img.width = parseInt(maxWidth);
|
||||||
}
|
}
|
||||||
img.setAttribute('src', `data:image/svg+xml,${encodeURIComponent(svg)}`);
|
if (firstTitle) {
|
||||||
return img;
|
img.setAttribute("alt", firstTitle.textContent);
|
||||||
|
}
|
||||||
|
if (firstDesc) {
|
||||||
|
const caption = document.createElement("figcaption");
|
||||||
|
caption.className = "sr-only";
|
||||||
|
caption.textContent = firstDesc.textContent;
|
||||||
|
return [img, caption];
|
||||||
|
}
|
||||||
|
return [img];
|
||||||
}
|
}
|
||||||
|
|
||||||
async function makeMermaidError(text) {
|
async function makeMermaidError(text) {
|
||||||
let errorMessage = '';
|
let errorMessage = "";
|
||||||
try {
|
try {
|
||||||
await mermaid.parse(text);
|
await mermaid.parse(text);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
errorMessage = `${err}`;
|
errorMessage = `${err}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
const result = document.createElement('details');
|
const result = document.createElement("details");
|
||||||
const summary = document.createElement('summary');
|
result.className = 'jp-RenderedMermaid-Details';
|
||||||
const pre = document.createElement('pre');
|
const summary = document.createElement("summary");
|
||||||
const code = document.createElement('code');
|
summary.className = 'jp-RenderedMermaid-Summary';
|
||||||
|
const pre = document.createElement("pre");
|
||||||
|
const code = document.createElement("code");
|
||||||
code.innerText = text;
|
code.innerText = text;
|
||||||
pre.appendChild(code);
|
pre.appendChild(code);
|
||||||
summary.appendChild(pre);
|
summary.appendChild(pre);
|
||||||
result.appendChild(summary);
|
result.appendChild(summary);
|
||||||
|
|
||||||
const warning = document.createElement('pre');
|
const warning = document.createElement("pre");
|
||||||
warning.innerText = errorMessage;
|
warning.innerText = errorMessage;
|
||||||
result.appendChild(warning);
|
result.appendChild(warning);
|
||||||
return result;
|
return [result];
|
||||||
}
|
}
|
||||||
|
|
||||||
async function renderOneMarmaid(src) {
|
async function renderOneMarmaid(src) {
|
||||||
@ -7391,30 +7405,41 @@ a.anchor-link {
|
|||||||
const el = document.createElement("div");
|
const el = document.createElement("div");
|
||||||
el.style.visibility = "hidden";
|
el.style.visibility = "hidden";
|
||||||
document.body.appendChild(el);
|
document.body.appendChild(el);
|
||||||
let result = null;
|
let results = null;
|
||||||
|
let output = null;
|
||||||
try {
|
try {
|
||||||
const { svg } = await mermaid.render(id, raw, el);
|
const { svg } = await mermaid.render(id, raw, el);
|
||||||
result = makeMermaidImage(svg);
|
results = makeMermaidImage(svg);
|
||||||
|
output = document.createElement("figure");
|
||||||
|
results.map(output.appendChild, output);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
parent.classList.add("jp-mod-warning");
|
parent.classList.add("jp-mod-warning");
|
||||||
result = await makeMermaidError(raw);
|
results = await makeMermaidError(raw);
|
||||||
|
output = results[0];
|
||||||
} finally {
|
} finally {
|
||||||
el.remove();
|
el.remove();
|
||||||
}
|
}
|
||||||
parent.classList.add("jp-RenderedMermaid");
|
parent.classList.add("jp-RenderedMermaid");
|
||||||
parent.appendChild(result);
|
parent.appendChild(output);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Promise.all([...diagrams].map(renderOneMarmaid));
|
void Promise.all([...diagrams].map(renderOneMarmaid));
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<style>
|
<style>
|
||||||
.jp-RenderedMarkdown .jp-Mermaid:not(.jp-RenderedMermaid) {
|
.jp-Mermaid:not(.jp-RenderedMermaid) {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning {
|
|
||||||
|
.jp-RenderedMermaid {
|
||||||
|
overflow: auto;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid.jp-mod-warning {
|
||||||
width: auto;
|
width: auto;
|
||||||
padding: 10px;
|
padding: 0.5em;
|
||||||
|
margin-top: 0.5em;
|
||||||
border: var(--jp-border-width) solid var(--jp-warn-color2);
|
border: var(--jp-border-width) solid var(--jp-warn-color2);
|
||||||
border-radius: var(--jp-border-radius);
|
border-radius: var(--jp-border-radius);
|
||||||
color: var(--jp-ui-font-color1);
|
color: var(--jp-ui-font-color1);
|
||||||
@ -7422,18 +7447,33 @@ a.anchor-link {
|
|||||||
white-space: pre-wrap;
|
white-space: pre-wrap;
|
||||||
word-wrap: break-word;
|
word-wrap: break-word;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning details > pre {
|
|
||||||
|
.jp-RenderedMermaid figure {
|
||||||
|
margin: 0;
|
||||||
|
overflow: auto;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid img {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid-Details > pre {
|
||||||
margin-top: 1em;
|
margin-top: 1em;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning summary {
|
|
||||||
|
.jp-RenderedMermaid-Summary {
|
||||||
color: var(--jp-warn-color2);
|
color: var(--jp-warn-color2);
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning summary > pre {
|
|
||||||
display: inline-block;
|
.jp-RenderedMermaid:not(.jp-mod-warning) pre {
|
||||||
}
|
|
||||||
.jp-RenderedMermaid > .mermaid {
|
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid-Summary > pre {
|
||||||
|
display: inline-block;
|
||||||
|
white-space: normal;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
<!-- End of mermaid configuration --></head>
|
<!-- End of mermaid configuration --></head>
|
||||||
<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
|
<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>- · XM_40017</title><script data-outdated-warner src="../assets/warner.js"></script><link rel="canonical" href="https://fverdugo.github.io/XM_40017/julia_jacobi/"/><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/><script src="../assets/iframeResizer.min.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.png" alt="XM_40017 logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">XM_40017</a></span></div><form class="docs-search" action="../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><a class="tocitem" href="../getting_started_with_julia/">Getting started</a></li><li><span class="tocitem">Notebooks</span><ul><li><a class="tocitem" href="../julia_basics/">Julia Basics</a></li><li><a class="tocitem" href="../julia_async/">Asynchronous programming in Julia</a></li><li><a class="tocitem" href="../julia_distributed/">Distributed computing in Julia</a></li><li><a class="tocitem" href="../mpi_tutorial/">Distributed computing with MPI</a></li><li><a class="tocitem" href="../matrix_matrix/">Matrix-matrix multiplication</a></li></ul></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>-</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>-</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/fverdugo/XM_40017/blob/main/notebooks/julia_jacobi.ipynb" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><div class="admonition is-success">
|
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>- · XM_40017</title><script data-outdated-warner src="../assets/warner.js"></script><link rel="canonical" href="https://fverdugo.github.io/XM_40017/julia_jacobi/"/><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/><script src="../assets/iframeResizer.min.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.png" alt="XM_40017 logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">XM_40017</a></span></div><form class="docs-search" action="../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><a class="tocitem" href="../getting_started_with_julia/">Getting started</a></li><li><span class="tocitem">Notebooks</span><ul><li><a class="tocitem" href="../julia_basics/">Julia Basics</a></li><li><a class="tocitem" href="../julia_async/">Asynchronous programming in Julia</a></li><li><a class="tocitem" href="../julia_distributed/">Distributed computing in Julia</a></li><li><a class="tocitem" href="../mpi_tutorial/">Distributed computing with MPI</a></li><li><a class="tocitem" href="../matrix_matrix/">Matrix-matrix multiplication</a></li><li><a class="tocitem" href="../jacobi_method/">Jacobi method</a></li><li><a class="tocitem" href="../asp/">All pairs of shortest paths</a></li></ul></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>-</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>-</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/fverdugo/XM_40017/blob/main/notebooks/julia_jacobi.ipynb" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><div class="admonition is-success">
|
||||||
<header class="admonition-header">Tip</header>
|
<header class="admonition-header">Tip</header>
|
||||||
<div class="admonition-body">
|
<div class="admonition-body">
|
||||||
<ul>
|
<ul>
|
||||||
@ -14,4 +14,4 @@
|
|||||||
var myIframe = document.getElementById("notebook");
|
var myIframe = document.getElementById("notebook");
|
||||||
iFrameResize({log:true}, myIframe);
|
iFrameResize({log:true}, myIframe);
|
||||||
});
|
});
|
||||||
</script></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.25 on <span class="colophon-date" title="Tuesday 29 August 2023 10:10">Tuesday 29 August 2023</span>. Using Julia version 1.9.3.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
|
</script></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.25 on <span class="colophon-date" title="Wednesday 30 August 2023 10:26">Wednesday 30 August 2023</span>. Using Julia version 1.9.3.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
|
||||||
|
|||||||
@ -7333,7 +7333,8 @@ a.anchor-link {
|
|||||||
if (!diagrams.length) {
|
if (!diagrams.length) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.2.3/mermaid.esm.min.mjs")).default;
|
const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.3.1/mermaid.esm.min.mjs")).default;
|
||||||
|
const parser = new DOMParser();
|
||||||
|
|
||||||
mermaid.initialize({
|
mermaid.initialize({
|
||||||
maxTextSize: 100000,
|
maxTextSize: 100000,
|
||||||
@ -7349,39 +7350,52 @@ a.anchor-link {
|
|||||||
let _nextMermaidId = 0;
|
let _nextMermaidId = 0;
|
||||||
|
|
||||||
function makeMermaidImage(svg) {
|
function makeMermaidImage(svg) {
|
||||||
const img = document.createElement('img');
|
const img = document.createElement("img");
|
||||||
const maxWidth = svg.match(/max-width: (\d+)/);
|
const doc = parser.parseFromString(svg, "image/svg+xml");
|
||||||
if (maxWidth && maxWidth[1]) {
|
const svgEl = doc.querySelector("svg");
|
||||||
const width = parseInt(maxWidth[1]);
|
const { maxWidth } = svgEl?.style || {};
|
||||||
if (width && !Number.isNaN(width) && Number.isFinite(width)) {
|
const firstTitle = doc.querySelector("title");
|
||||||
img.width = width;
|
const firstDesc = doc.querySelector("desc");
|
||||||
}
|
|
||||||
|
img.setAttribute("src", `data:image/svg+xml,${encodeURIComponent(svg)}`);
|
||||||
|
if (maxWidth) {
|
||||||
|
img.width = parseInt(maxWidth);
|
||||||
}
|
}
|
||||||
img.setAttribute('src', `data:image/svg+xml,${encodeURIComponent(svg)}`);
|
if (firstTitle) {
|
||||||
return img;
|
img.setAttribute("alt", firstTitle.textContent);
|
||||||
|
}
|
||||||
|
if (firstDesc) {
|
||||||
|
const caption = document.createElement("figcaption");
|
||||||
|
caption.className = "sr-only";
|
||||||
|
caption.textContent = firstDesc.textContent;
|
||||||
|
return [img, caption];
|
||||||
|
}
|
||||||
|
return [img];
|
||||||
}
|
}
|
||||||
|
|
||||||
async function makeMermaidError(text) {
|
async function makeMermaidError(text) {
|
||||||
let errorMessage = '';
|
let errorMessage = "";
|
||||||
try {
|
try {
|
||||||
await mermaid.parse(text);
|
await mermaid.parse(text);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
errorMessage = `${err}`;
|
errorMessage = `${err}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
const result = document.createElement('details');
|
const result = document.createElement("details");
|
||||||
const summary = document.createElement('summary');
|
result.className = 'jp-RenderedMermaid-Details';
|
||||||
const pre = document.createElement('pre');
|
const summary = document.createElement("summary");
|
||||||
const code = document.createElement('code');
|
summary.className = 'jp-RenderedMermaid-Summary';
|
||||||
|
const pre = document.createElement("pre");
|
||||||
|
const code = document.createElement("code");
|
||||||
code.innerText = text;
|
code.innerText = text;
|
||||||
pre.appendChild(code);
|
pre.appendChild(code);
|
||||||
summary.appendChild(pre);
|
summary.appendChild(pre);
|
||||||
result.appendChild(summary);
|
result.appendChild(summary);
|
||||||
|
|
||||||
const warning = document.createElement('pre');
|
const warning = document.createElement("pre");
|
||||||
warning.innerText = errorMessage;
|
warning.innerText = errorMessage;
|
||||||
result.appendChild(warning);
|
result.appendChild(warning);
|
||||||
return result;
|
return [result];
|
||||||
}
|
}
|
||||||
|
|
||||||
async function renderOneMarmaid(src) {
|
async function renderOneMarmaid(src) {
|
||||||
@ -7391,30 +7405,41 @@ a.anchor-link {
|
|||||||
const el = document.createElement("div");
|
const el = document.createElement("div");
|
||||||
el.style.visibility = "hidden";
|
el.style.visibility = "hidden";
|
||||||
document.body.appendChild(el);
|
document.body.appendChild(el);
|
||||||
let result = null;
|
let results = null;
|
||||||
|
let output = null;
|
||||||
try {
|
try {
|
||||||
const { svg } = await mermaid.render(id, raw, el);
|
const { svg } = await mermaid.render(id, raw, el);
|
||||||
result = makeMermaidImage(svg);
|
results = makeMermaidImage(svg);
|
||||||
|
output = document.createElement("figure");
|
||||||
|
results.map(output.appendChild, output);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
parent.classList.add("jp-mod-warning");
|
parent.classList.add("jp-mod-warning");
|
||||||
result = await makeMermaidError(raw);
|
results = await makeMermaidError(raw);
|
||||||
|
output = results[0];
|
||||||
} finally {
|
} finally {
|
||||||
el.remove();
|
el.remove();
|
||||||
}
|
}
|
||||||
parent.classList.add("jp-RenderedMermaid");
|
parent.classList.add("jp-RenderedMermaid");
|
||||||
parent.appendChild(result);
|
parent.appendChild(output);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Promise.all([...diagrams].map(renderOneMarmaid));
|
void Promise.all([...diagrams].map(renderOneMarmaid));
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<style>
|
<style>
|
||||||
.jp-RenderedMarkdown .jp-Mermaid:not(.jp-RenderedMermaid) {
|
.jp-Mermaid:not(.jp-RenderedMermaid) {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning {
|
|
||||||
|
.jp-RenderedMermaid {
|
||||||
|
overflow: auto;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid.jp-mod-warning {
|
||||||
width: auto;
|
width: auto;
|
||||||
padding: 10px;
|
padding: 0.5em;
|
||||||
|
margin-top: 0.5em;
|
||||||
border: var(--jp-border-width) solid var(--jp-warn-color2);
|
border: var(--jp-border-width) solid var(--jp-warn-color2);
|
||||||
border-radius: var(--jp-border-radius);
|
border-radius: var(--jp-border-radius);
|
||||||
color: var(--jp-ui-font-color1);
|
color: var(--jp-ui-font-color1);
|
||||||
@ -7422,18 +7447,33 @@ a.anchor-link {
|
|||||||
white-space: pre-wrap;
|
white-space: pre-wrap;
|
||||||
word-wrap: break-word;
|
word-wrap: break-word;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning details > pre {
|
|
||||||
|
.jp-RenderedMermaid figure {
|
||||||
|
margin: 0;
|
||||||
|
overflow: auto;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid img {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid-Details > pre {
|
||||||
margin-top: 1em;
|
margin-top: 1em;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning summary {
|
|
||||||
|
.jp-RenderedMermaid-Summary {
|
||||||
color: var(--jp-warn-color2);
|
color: var(--jp-warn-color2);
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning summary > pre {
|
|
||||||
display: inline-block;
|
.jp-RenderedMermaid:not(.jp-mod-warning) pre {
|
||||||
}
|
|
||||||
.jp-RenderedMermaid > .mermaid {
|
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid-Summary > pre {
|
||||||
|
display: inline-block;
|
||||||
|
white-space: normal;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
<!-- End of mermaid configuration --></head>
|
<!-- End of mermaid configuration --></head>
|
||||||
<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
|
<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>- · XM_40017</title><script data-outdated-warner src="../assets/warner.js"></script><link rel="canonical" href="https://fverdugo.github.io/XM_40017/julia_tutorial/"/><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/><script src="../assets/iframeResizer.min.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.png" alt="XM_40017 logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">XM_40017</a></span></div><form class="docs-search" action="../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><a class="tocitem" href="../getting_started_with_julia/">Getting started</a></li><li><span class="tocitem">Notebooks</span><ul><li><a class="tocitem" href="../julia_basics/">Julia Basics</a></li><li><a class="tocitem" href="../julia_async/">Asynchronous programming in Julia</a></li><li><a class="tocitem" href="../julia_distributed/">Distributed computing in Julia</a></li><li><a class="tocitem" href="../mpi_tutorial/">Distributed computing with MPI</a></li><li><a class="tocitem" href="../matrix_matrix/">Matrix-matrix multiplication</a></li></ul></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>-</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>-</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/fverdugo/XM_40017/blob/main/notebooks/julia_tutorial.ipynb" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><div class="admonition is-success">
|
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>- · XM_40017</title><script data-outdated-warner src="../assets/warner.js"></script><link rel="canonical" href="https://fverdugo.github.io/XM_40017/julia_tutorial/"/><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/><script src="../assets/iframeResizer.min.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.png" alt="XM_40017 logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">XM_40017</a></span></div><form class="docs-search" action="../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><a class="tocitem" href="../getting_started_with_julia/">Getting started</a></li><li><span class="tocitem">Notebooks</span><ul><li><a class="tocitem" href="../julia_basics/">Julia Basics</a></li><li><a class="tocitem" href="../julia_async/">Asynchronous programming in Julia</a></li><li><a class="tocitem" href="../julia_distributed/">Distributed computing in Julia</a></li><li><a class="tocitem" href="../mpi_tutorial/">Distributed computing with MPI</a></li><li><a class="tocitem" href="../matrix_matrix/">Matrix-matrix multiplication</a></li><li><a class="tocitem" href="../jacobi_method/">Jacobi method</a></li><li><a class="tocitem" href="../asp/">All pairs of shortest paths</a></li></ul></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>-</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>-</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/fverdugo/XM_40017/blob/main/notebooks/julia_tutorial.ipynb" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><div class="admonition is-success">
|
||||||
<header class="admonition-header">Tip</header>
|
<header class="admonition-header">Tip</header>
|
||||||
<div class="admonition-body">
|
<div class="admonition-body">
|
||||||
<ul>
|
<ul>
|
||||||
@ -14,4 +14,4 @@
|
|||||||
var myIframe = document.getElementById("notebook");
|
var myIframe = document.getElementById("notebook");
|
||||||
iFrameResize({log:true}, myIframe);
|
iFrameResize({log:true}, myIframe);
|
||||||
});
|
});
|
||||||
</script></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.25 on <span class="colophon-date" title="Tuesday 29 August 2023 10:10">Tuesday 29 August 2023</span>. Using Julia version 1.9.3.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
|
</script></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.25 on <span class="colophon-date" title="Wednesday 30 August 2023 10:26">Wednesday 30 August 2023</span>. Using Julia version 1.9.3.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
|
||||||
|
|||||||
@ -7333,7 +7333,8 @@ a.anchor-link {
|
|||||||
if (!diagrams.length) {
|
if (!diagrams.length) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.2.3/mermaid.esm.min.mjs")).default;
|
const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.3.1/mermaid.esm.min.mjs")).default;
|
||||||
|
const parser = new DOMParser();
|
||||||
|
|
||||||
mermaid.initialize({
|
mermaid.initialize({
|
||||||
maxTextSize: 100000,
|
maxTextSize: 100000,
|
||||||
@ -7349,39 +7350,52 @@ a.anchor-link {
|
|||||||
let _nextMermaidId = 0;
|
let _nextMermaidId = 0;
|
||||||
|
|
||||||
function makeMermaidImage(svg) {
|
function makeMermaidImage(svg) {
|
||||||
const img = document.createElement('img');
|
const img = document.createElement("img");
|
||||||
const maxWidth = svg.match(/max-width: (\d+)/);
|
const doc = parser.parseFromString(svg, "image/svg+xml");
|
||||||
if (maxWidth && maxWidth[1]) {
|
const svgEl = doc.querySelector("svg");
|
||||||
const width = parseInt(maxWidth[1]);
|
const { maxWidth } = svgEl?.style || {};
|
||||||
if (width && !Number.isNaN(width) && Number.isFinite(width)) {
|
const firstTitle = doc.querySelector("title");
|
||||||
img.width = width;
|
const firstDesc = doc.querySelector("desc");
|
||||||
}
|
|
||||||
|
img.setAttribute("src", `data:image/svg+xml,${encodeURIComponent(svg)}`);
|
||||||
|
if (maxWidth) {
|
||||||
|
img.width = parseInt(maxWidth);
|
||||||
}
|
}
|
||||||
img.setAttribute('src', `data:image/svg+xml,${encodeURIComponent(svg)}`);
|
if (firstTitle) {
|
||||||
return img;
|
img.setAttribute("alt", firstTitle.textContent);
|
||||||
|
}
|
||||||
|
if (firstDesc) {
|
||||||
|
const caption = document.createElement("figcaption");
|
||||||
|
caption.className = "sr-only";
|
||||||
|
caption.textContent = firstDesc.textContent;
|
||||||
|
return [img, caption];
|
||||||
|
}
|
||||||
|
return [img];
|
||||||
}
|
}
|
||||||
|
|
||||||
async function makeMermaidError(text) {
|
async function makeMermaidError(text) {
|
||||||
let errorMessage = '';
|
let errorMessage = "";
|
||||||
try {
|
try {
|
||||||
await mermaid.parse(text);
|
await mermaid.parse(text);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
errorMessage = `${err}`;
|
errorMessage = `${err}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
const result = document.createElement('details');
|
const result = document.createElement("details");
|
||||||
const summary = document.createElement('summary');
|
result.className = 'jp-RenderedMermaid-Details';
|
||||||
const pre = document.createElement('pre');
|
const summary = document.createElement("summary");
|
||||||
const code = document.createElement('code');
|
summary.className = 'jp-RenderedMermaid-Summary';
|
||||||
|
const pre = document.createElement("pre");
|
||||||
|
const code = document.createElement("code");
|
||||||
code.innerText = text;
|
code.innerText = text;
|
||||||
pre.appendChild(code);
|
pre.appendChild(code);
|
||||||
summary.appendChild(pre);
|
summary.appendChild(pre);
|
||||||
result.appendChild(summary);
|
result.appendChild(summary);
|
||||||
|
|
||||||
const warning = document.createElement('pre');
|
const warning = document.createElement("pre");
|
||||||
warning.innerText = errorMessage;
|
warning.innerText = errorMessage;
|
||||||
result.appendChild(warning);
|
result.appendChild(warning);
|
||||||
return result;
|
return [result];
|
||||||
}
|
}
|
||||||
|
|
||||||
async function renderOneMarmaid(src) {
|
async function renderOneMarmaid(src) {
|
||||||
@ -7391,30 +7405,41 @@ a.anchor-link {
|
|||||||
const el = document.createElement("div");
|
const el = document.createElement("div");
|
||||||
el.style.visibility = "hidden";
|
el.style.visibility = "hidden";
|
||||||
document.body.appendChild(el);
|
document.body.appendChild(el);
|
||||||
let result = null;
|
let results = null;
|
||||||
|
let output = null;
|
||||||
try {
|
try {
|
||||||
const { svg } = await mermaid.render(id, raw, el);
|
const { svg } = await mermaid.render(id, raw, el);
|
||||||
result = makeMermaidImage(svg);
|
results = makeMermaidImage(svg);
|
||||||
|
output = document.createElement("figure");
|
||||||
|
results.map(output.appendChild, output);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
parent.classList.add("jp-mod-warning");
|
parent.classList.add("jp-mod-warning");
|
||||||
result = await makeMermaidError(raw);
|
results = await makeMermaidError(raw);
|
||||||
|
output = results[0];
|
||||||
} finally {
|
} finally {
|
||||||
el.remove();
|
el.remove();
|
||||||
}
|
}
|
||||||
parent.classList.add("jp-RenderedMermaid");
|
parent.classList.add("jp-RenderedMermaid");
|
||||||
parent.appendChild(result);
|
parent.appendChild(output);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Promise.all([...diagrams].map(renderOneMarmaid));
|
void Promise.all([...diagrams].map(renderOneMarmaid));
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<style>
|
<style>
|
||||||
.jp-RenderedMarkdown .jp-Mermaid:not(.jp-RenderedMermaid) {
|
.jp-Mermaid:not(.jp-RenderedMermaid) {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning {
|
|
||||||
|
.jp-RenderedMermaid {
|
||||||
|
overflow: auto;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid.jp-mod-warning {
|
||||||
width: auto;
|
width: auto;
|
||||||
padding: 10px;
|
padding: 0.5em;
|
||||||
|
margin-top: 0.5em;
|
||||||
border: var(--jp-border-width) solid var(--jp-warn-color2);
|
border: var(--jp-border-width) solid var(--jp-warn-color2);
|
||||||
border-radius: var(--jp-border-radius);
|
border-radius: var(--jp-border-radius);
|
||||||
color: var(--jp-ui-font-color1);
|
color: var(--jp-ui-font-color1);
|
||||||
@ -7422,18 +7447,33 @@ a.anchor-link {
|
|||||||
white-space: pre-wrap;
|
white-space: pre-wrap;
|
||||||
word-wrap: break-word;
|
word-wrap: break-word;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning details > pre {
|
|
||||||
|
.jp-RenderedMermaid figure {
|
||||||
|
margin: 0;
|
||||||
|
overflow: auto;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid img {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid-Details > pre {
|
||||||
margin-top: 1em;
|
margin-top: 1em;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning summary {
|
|
||||||
|
.jp-RenderedMermaid-Summary {
|
||||||
color: var(--jp-warn-color2);
|
color: var(--jp-warn-color2);
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning summary > pre {
|
|
||||||
display: inline-block;
|
.jp-RenderedMermaid:not(.jp-mod-warning) pre {
|
||||||
}
|
|
||||||
.jp-RenderedMermaid > .mermaid {
|
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid-Summary > pre {
|
||||||
|
display: inline-block;
|
||||||
|
white-space: normal;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
<!-- End of mermaid configuration --></head>
|
<!-- End of mermaid configuration --></head>
|
||||||
<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
|
<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Matrix-matrix multiplication · XM_40017</title><script data-outdated-warner src="../assets/warner.js"></script><link rel="canonical" href="https://fverdugo.github.io/XM_40017/matrix_matrix/"/><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/><script src="../assets/iframeResizer.min.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.png" alt="XM_40017 logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">XM_40017</a></span></div><form class="docs-search" action="../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><a class="tocitem" href="../getting_started_with_julia/">Getting started</a></li><li><span class="tocitem">Notebooks</span><ul><li><a class="tocitem" href="../julia_basics/">Julia Basics</a></li><li><a class="tocitem" href="../julia_async/">Asynchronous programming in Julia</a></li><li><a class="tocitem" href="../julia_distributed/">Distributed computing in Julia</a></li><li><a class="tocitem" href="../mpi_tutorial/">Distributed computing with MPI</a></li><li class="is-active"><a class="tocitem" href>Matrix-matrix multiplication</a></li></ul></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Notebooks</a></li><li class="is-active"><a href>Matrix-matrix multiplication</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Matrix-matrix multiplication</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/fverdugo/XM_40017/blob/main/notebooks/matrix_matrix.ipynb" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><div class="admonition is-success">
|
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Matrix-matrix multiplication · XM_40017</title><script data-outdated-warner src="../assets/warner.js"></script><link rel="canonical" href="https://fverdugo.github.io/XM_40017/matrix_matrix/"/><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/><script src="../assets/iframeResizer.min.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.png" alt="XM_40017 logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">XM_40017</a></span></div><form class="docs-search" action="../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><a class="tocitem" href="../getting_started_with_julia/">Getting started</a></li><li><span class="tocitem">Notebooks</span><ul><li><a class="tocitem" href="../julia_basics/">Julia Basics</a></li><li><a class="tocitem" href="../julia_async/">Asynchronous programming in Julia</a></li><li><a class="tocitem" href="../julia_distributed/">Distributed computing in Julia</a></li><li><a class="tocitem" href="../mpi_tutorial/">Distributed computing with MPI</a></li><li class="is-active"><a class="tocitem" href>Matrix-matrix multiplication</a></li><li><a class="tocitem" href="../jacobi_method/">Jacobi method</a></li><li><a class="tocitem" href="../asp/">All pairs of shortest paths</a></li></ul></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Notebooks</a></li><li class="is-active"><a href>Matrix-matrix multiplication</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Matrix-matrix multiplication</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/fverdugo/XM_40017/blob/main/notebooks/matrix_matrix.ipynb" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><div class="admonition is-success">
|
||||||
<header class="admonition-header">Tip</header>
|
<header class="admonition-header">Tip</header>
|
||||||
<div class="admonition-body">
|
<div class="admonition-body">
|
||||||
<ul>
|
<ul>
|
||||||
@ -14,4 +14,4 @@
|
|||||||
var myIframe = document.getElementById("notebook");
|
var myIframe = document.getElementById("notebook");
|
||||||
iFrameResize({log:true}, myIframe);
|
iFrameResize({log:true}, myIframe);
|
||||||
});
|
});
|
||||||
</script></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../mpi_tutorial/">« Distributed computing with MPI</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.25 on <span class="colophon-date" title="Tuesday 29 August 2023 10:10">Tuesday 29 August 2023</span>. Using Julia version 1.9.3.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
|
</script></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../mpi_tutorial/">« Distributed computing with MPI</a><a class="docs-footer-nextpage" href="../jacobi_method/">Jacobi method »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.25 on <span class="colophon-date" title="Wednesday 30 August 2023 10:26">Wednesday 30 August 2023</span>. Using Julia version 1.9.3.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
|
||||||
|
|||||||
@ -7333,7 +7333,8 @@ a.anchor-link {
|
|||||||
if (!diagrams.length) {
|
if (!diagrams.length) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.2.3/mermaid.esm.min.mjs")).default;
|
const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.3.1/mermaid.esm.min.mjs")).default;
|
||||||
|
const parser = new DOMParser();
|
||||||
|
|
||||||
mermaid.initialize({
|
mermaid.initialize({
|
||||||
maxTextSize: 100000,
|
maxTextSize: 100000,
|
||||||
@ -7349,39 +7350,52 @@ a.anchor-link {
|
|||||||
let _nextMermaidId = 0;
|
let _nextMermaidId = 0;
|
||||||
|
|
||||||
function makeMermaidImage(svg) {
|
function makeMermaidImage(svg) {
|
||||||
const img = document.createElement('img');
|
const img = document.createElement("img");
|
||||||
const maxWidth = svg.match(/max-width: (\d+)/);
|
const doc = parser.parseFromString(svg, "image/svg+xml");
|
||||||
if (maxWidth && maxWidth[1]) {
|
const svgEl = doc.querySelector("svg");
|
||||||
const width = parseInt(maxWidth[1]);
|
const { maxWidth } = svgEl?.style || {};
|
||||||
if (width && !Number.isNaN(width) && Number.isFinite(width)) {
|
const firstTitle = doc.querySelector("title");
|
||||||
img.width = width;
|
const firstDesc = doc.querySelector("desc");
|
||||||
}
|
|
||||||
|
img.setAttribute("src", `data:image/svg+xml,${encodeURIComponent(svg)}`);
|
||||||
|
if (maxWidth) {
|
||||||
|
img.width = parseInt(maxWidth);
|
||||||
}
|
}
|
||||||
img.setAttribute('src', `data:image/svg+xml,${encodeURIComponent(svg)}`);
|
if (firstTitle) {
|
||||||
return img;
|
img.setAttribute("alt", firstTitle.textContent);
|
||||||
|
}
|
||||||
|
if (firstDesc) {
|
||||||
|
const caption = document.createElement("figcaption");
|
||||||
|
caption.className = "sr-only";
|
||||||
|
caption.textContent = firstDesc.textContent;
|
||||||
|
return [img, caption];
|
||||||
|
}
|
||||||
|
return [img];
|
||||||
}
|
}
|
||||||
|
|
||||||
async function makeMermaidError(text) {
|
async function makeMermaidError(text) {
|
||||||
let errorMessage = '';
|
let errorMessage = "";
|
||||||
try {
|
try {
|
||||||
await mermaid.parse(text);
|
await mermaid.parse(text);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
errorMessage = `${err}`;
|
errorMessage = `${err}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
const result = document.createElement('details');
|
const result = document.createElement("details");
|
||||||
const summary = document.createElement('summary');
|
result.className = 'jp-RenderedMermaid-Details';
|
||||||
const pre = document.createElement('pre');
|
const summary = document.createElement("summary");
|
||||||
const code = document.createElement('code');
|
summary.className = 'jp-RenderedMermaid-Summary';
|
||||||
|
const pre = document.createElement("pre");
|
||||||
|
const code = document.createElement("code");
|
||||||
code.innerText = text;
|
code.innerText = text;
|
||||||
pre.appendChild(code);
|
pre.appendChild(code);
|
||||||
summary.appendChild(pre);
|
summary.appendChild(pre);
|
||||||
result.appendChild(summary);
|
result.appendChild(summary);
|
||||||
|
|
||||||
const warning = document.createElement('pre');
|
const warning = document.createElement("pre");
|
||||||
warning.innerText = errorMessage;
|
warning.innerText = errorMessage;
|
||||||
result.appendChild(warning);
|
result.appendChild(warning);
|
||||||
return result;
|
return [result];
|
||||||
}
|
}
|
||||||
|
|
||||||
async function renderOneMarmaid(src) {
|
async function renderOneMarmaid(src) {
|
||||||
@ -7391,30 +7405,41 @@ a.anchor-link {
|
|||||||
const el = document.createElement("div");
|
const el = document.createElement("div");
|
||||||
el.style.visibility = "hidden";
|
el.style.visibility = "hidden";
|
||||||
document.body.appendChild(el);
|
document.body.appendChild(el);
|
||||||
let result = null;
|
let results = null;
|
||||||
|
let output = null;
|
||||||
try {
|
try {
|
||||||
const { svg } = await mermaid.render(id, raw, el);
|
const { svg } = await mermaid.render(id, raw, el);
|
||||||
result = makeMermaidImage(svg);
|
results = makeMermaidImage(svg);
|
||||||
|
output = document.createElement("figure");
|
||||||
|
results.map(output.appendChild, output);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
parent.classList.add("jp-mod-warning");
|
parent.classList.add("jp-mod-warning");
|
||||||
result = await makeMermaidError(raw);
|
results = await makeMermaidError(raw);
|
||||||
|
output = results[0];
|
||||||
} finally {
|
} finally {
|
||||||
el.remove();
|
el.remove();
|
||||||
}
|
}
|
||||||
parent.classList.add("jp-RenderedMermaid");
|
parent.classList.add("jp-RenderedMermaid");
|
||||||
parent.appendChild(result);
|
parent.appendChild(output);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Promise.all([...diagrams].map(renderOneMarmaid));
|
void Promise.all([...diagrams].map(renderOneMarmaid));
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<style>
|
<style>
|
||||||
.jp-RenderedMarkdown .jp-Mermaid:not(.jp-RenderedMermaid) {
|
.jp-Mermaid:not(.jp-RenderedMermaid) {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning {
|
|
||||||
|
.jp-RenderedMermaid {
|
||||||
|
overflow: auto;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid.jp-mod-warning {
|
||||||
width: auto;
|
width: auto;
|
||||||
padding: 10px;
|
padding: 0.5em;
|
||||||
|
margin-top: 0.5em;
|
||||||
border: var(--jp-border-width) solid var(--jp-warn-color2);
|
border: var(--jp-border-width) solid var(--jp-warn-color2);
|
||||||
border-radius: var(--jp-border-radius);
|
border-radius: var(--jp-border-radius);
|
||||||
color: var(--jp-ui-font-color1);
|
color: var(--jp-ui-font-color1);
|
||||||
@ -7422,18 +7447,33 @@ a.anchor-link {
|
|||||||
white-space: pre-wrap;
|
white-space: pre-wrap;
|
||||||
word-wrap: break-word;
|
word-wrap: break-word;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning details > pre {
|
|
||||||
|
.jp-RenderedMermaid figure {
|
||||||
|
margin: 0;
|
||||||
|
overflow: auto;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid img {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid-Details > pre {
|
||||||
margin-top: 1em;
|
margin-top: 1em;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning summary {
|
|
||||||
|
.jp-RenderedMermaid-Summary {
|
||||||
color: var(--jp-warn-color2);
|
color: var(--jp-warn-color2);
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning summary > pre {
|
|
||||||
display: inline-block;
|
.jp-RenderedMermaid:not(.jp-mod-warning) pre {
|
||||||
}
|
|
||||||
.jp-RenderedMermaid > .mermaid {
|
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid-Summary > pre {
|
||||||
|
display: inline-block;
|
||||||
|
white-space: normal;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
<!-- End of mermaid configuration --></head>
|
<!-- End of mermaid configuration --></head>
|
||||||
<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
|
<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Distributed computing with MPI · XM_40017</title><script data-outdated-warner src="../assets/warner.js"></script><link rel="canonical" href="https://fverdugo.github.io/XM_40017/mpi_tutorial/"/><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/><script src="../assets/iframeResizer.min.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.png" alt="XM_40017 logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">XM_40017</a></span></div><form class="docs-search" action="../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><a class="tocitem" href="../getting_started_with_julia/">Getting started</a></li><li><span class="tocitem">Notebooks</span><ul><li><a class="tocitem" href="../julia_basics/">Julia Basics</a></li><li><a class="tocitem" href="../julia_async/">Asynchronous programming in Julia</a></li><li><a class="tocitem" href="../julia_distributed/">Distributed computing in Julia</a></li><li class="is-active"><a class="tocitem" href>Distributed computing with MPI</a></li><li><a class="tocitem" href="../matrix_matrix/">Matrix-matrix multiplication</a></li></ul></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Notebooks</a></li><li class="is-active"><a href>Distributed computing with MPI</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Distributed computing with MPI</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/fverdugo/XM_40017/blob/main/notebooks/mpi_tutorial.ipynb" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><div class="admonition is-success">
|
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Distributed computing with MPI · XM_40017</title><script data-outdated-warner src="../assets/warner.js"></script><link rel="canonical" href="https://fverdugo.github.io/XM_40017/mpi_tutorial/"/><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/><script src="../assets/iframeResizer.min.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.png" alt="XM_40017 logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">XM_40017</a></span></div><form class="docs-search" action="../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><a class="tocitem" href="../getting_started_with_julia/">Getting started</a></li><li><span class="tocitem">Notebooks</span><ul><li><a class="tocitem" href="../julia_basics/">Julia Basics</a></li><li><a class="tocitem" href="../julia_async/">Asynchronous programming in Julia</a></li><li><a class="tocitem" href="../julia_distributed/">Distributed computing in Julia</a></li><li class="is-active"><a class="tocitem" href>Distributed computing with MPI</a></li><li><a class="tocitem" href="../matrix_matrix/">Matrix-matrix multiplication</a></li><li><a class="tocitem" href="../jacobi_method/">Jacobi method</a></li><li><a class="tocitem" href="../asp/">All pairs of shortest paths</a></li></ul></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Notebooks</a></li><li class="is-active"><a href>Distributed computing with MPI</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Distributed computing with MPI</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/fverdugo/XM_40017/blob/main/notebooks/mpi_tutorial.ipynb" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><div class="admonition is-success">
|
||||||
<header class="admonition-header">Tip</header>
|
<header class="admonition-header">Tip</header>
|
||||||
<div class="admonition-body">
|
<div class="admonition-body">
|
||||||
<ul>
|
<ul>
|
||||||
@ -14,4 +14,4 @@
|
|||||||
var myIframe = document.getElementById("notebook");
|
var myIframe = document.getElementById("notebook");
|
||||||
iFrameResize({log:true}, myIframe);
|
iFrameResize({log:true}, myIframe);
|
||||||
});
|
});
|
||||||
</script></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../julia_distributed/">« Distributed computing in Julia</a><a class="docs-footer-nextpage" href="../matrix_matrix/">Matrix-matrix multiplication »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.25 on <span class="colophon-date" title="Tuesday 29 August 2023 10:10">Tuesday 29 August 2023</span>. Using Julia version 1.9.3.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
|
</script></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../julia_distributed/">« Distributed computing in Julia</a><a class="docs-footer-nextpage" href="../matrix_matrix/">Matrix-matrix multiplication »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.25 on <span class="colophon-date" title="Wednesday 30 August 2023 10:26">Wednesday 30 August 2023</span>. Using Julia version 1.9.3.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
|
||||||
|
|||||||
@ -7333,7 +7333,8 @@ a.anchor-link {
|
|||||||
if (!diagrams.length) {
|
if (!diagrams.length) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.2.3/mermaid.esm.min.mjs")).default;
|
const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.3.1/mermaid.esm.min.mjs")).default;
|
||||||
|
const parser = new DOMParser();
|
||||||
|
|
||||||
mermaid.initialize({
|
mermaid.initialize({
|
||||||
maxTextSize: 100000,
|
maxTextSize: 100000,
|
||||||
@ -7349,39 +7350,52 @@ a.anchor-link {
|
|||||||
let _nextMermaidId = 0;
|
let _nextMermaidId = 0;
|
||||||
|
|
||||||
function makeMermaidImage(svg) {
|
function makeMermaidImage(svg) {
|
||||||
const img = document.createElement('img');
|
const img = document.createElement("img");
|
||||||
const maxWidth = svg.match(/max-width: (\d+)/);
|
const doc = parser.parseFromString(svg, "image/svg+xml");
|
||||||
if (maxWidth && maxWidth[1]) {
|
const svgEl = doc.querySelector("svg");
|
||||||
const width = parseInt(maxWidth[1]);
|
const { maxWidth } = svgEl?.style || {};
|
||||||
if (width && !Number.isNaN(width) && Number.isFinite(width)) {
|
const firstTitle = doc.querySelector("title");
|
||||||
img.width = width;
|
const firstDesc = doc.querySelector("desc");
|
||||||
}
|
|
||||||
|
img.setAttribute("src", `data:image/svg+xml,${encodeURIComponent(svg)}`);
|
||||||
|
if (maxWidth) {
|
||||||
|
img.width = parseInt(maxWidth);
|
||||||
}
|
}
|
||||||
img.setAttribute('src', `data:image/svg+xml,${encodeURIComponent(svg)}`);
|
if (firstTitle) {
|
||||||
return img;
|
img.setAttribute("alt", firstTitle.textContent);
|
||||||
|
}
|
||||||
|
if (firstDesc) {
|
||||||
|
const caption = document.createElement("figcaption");
|
||||||
|
caption.className = "sr-only";
|
||||||
|
caption.textContent = firstDesc.textContent;
|
||||||
|
return [img, caption];
|
||||||
|
}
|
||||||
|
return [img];
|
||||||
}
|
}
|
||||||
|
|
||||||
async function makeMermaidError(text) {
|
async function makeMermaidError(text) {
|
||||||
let errorMessage = '';
|
let errorMessage = "";
|
||||||
try {
|
try {
|
||||||
await mermaid.parse(text);
|
await mermaid.parse(text);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
errorMessage = `${err}`;
|
errorMessage = `${err}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
const result = document.createElement('details');
|
const result = document.createElement("details");
|
||||||
const summary = document.createElement('summary');
|
result.className = 'jp-RenderedMermaid-Details';
|
||||||
const pre = document.createElement('pre');
|
const summary = document.createElement("summary");
|
||||||
const code = document.createElement('code');
|
summary.className = 'jp-RenderedMermaid-Summary';
|
||||||
|
const pre = document.createElement("pre");
|
||||||
|
const code = document.createElement("code");
|
||||||
code.innerText = text;
|
code.innerText = text;
|
||||||
pre.appendChild(code);
|
pre.appendChild(code);
|
||||||
summary.appendChild(pre);
|
summary.appendChild(pre);
|
||||||
result.appendChild(summary);
|
result.appendChild(summary);
|
||||||
|
|
||||||
const warning = document.createElement('pre');
|
const warning = document.createElement("pre");
|
||||||
warning.innerText = errorMessage;
|
warning.innerText = errorMessage;
|
||||||
result.appendChild(warning);
|
result.appendChild(warning);
|
||||||
return result;
|
return [result];
|
||||||
}
|
}
|
||||||
|
|
||||||
async function renderOneMarmaid(src) {
|
async function renderOneMarmaid(src) {
|
||||||
@ -7391,30 +7405,41 @@ a.anchor-link {
|
|||||||
const el = document.createElement("div");
|
const el = document.createElement("div");
|
||||||
el.style.visibility = "hidden";
|
el.style.visibility = "hidden";
|
||||||
document.body.appendChild(el);
|
document.body.appendChild(el);
|
||||||
let result = null;
|
let results = null;
|
||||||
|
let output = null;
|
||||||
try {
|
try {
|
||||||
const { svg } = await mermaid.render(id, raw, el);
|
const { svg } = await mermaid.render(id, raw, el);
|
||||||
result = makeMermaidImage(svg);
|
results = makeMermaidImage(svg);
|
||||||
|
output = document.createElement("figure");
|
||||||
|
results.map(output.appendChild, output);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
parent.classList.add("jp-mod-warning");
|
parent.classList.add("jp-mod-warning");
|
||||||
result = await makeMermaidError(raw);
|
results = await makeMermaidError(raw);
|
||||||
|
output = results[0];
|
||||||
} finally {
|
} finally {
|
||||||
el.remove();
|
el.remove();
|
||||||
}
|
}
|
||||||
parent.classList.add("jp-RenderedMermaid");
|
parent.classList.add("jp-RenderedMermaid");
|
||||||
parent.appendChild(result);
|
parent.appendChild(output);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Promise.all([...diagrams].map(renderOneMarmaid));
|
void Promise.all([...diagrams].map(renderOneMarmaid));
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<style>
|
<style>
|
||||||
.jp-RenderedMarkdown .jp-Mermaid:not(.jp-RenderedMermaid) {
|
.jp-Mermaid:not(.jp-RenderedMermaid) {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning {
|
|
||||||
|
.jp-RenderedMermaid {
|
||||||
|
overflow: auto;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid.jp-mod-warning {
|
||||||
width: auto;
|
width: auto;
|
||||||
padding: 10px;
|
padding: 0.5em;
|
||||||
|
margin-top: 0.5em;
|
||||||
border: var(--jp-border-width) solid var(--jp-warn-color2);
|
border: var(--jp-border-width) solid var(--jp-warn-color2);
|
||||||
border-radius: var(--jp-border-radius);
|
border-radius: var(--jp-border-radius);
|
||||||
color: var(--jp-ui-font-color1);
|
color: var(--jp-ui-font-color1);
|
||||||
@ -7422,18 +7447,33 @@ a.anchor-link {
|
|||||||
white-space: pre-wrap;
|
white-space: pre-wrap;
|
||||||
word-wrap: break-word;
|
word-wrap: break-word;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning details > pre {
|
|
||||||
|
.jp-RenderedMermaid figure {
|
||||||
|
margin: 0;
|
||||||
|
overflow: auto;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid img {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid-Details > pre {
|
||||||
margin-top: 1em;
|
margin-top: 1em;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning summary {
|
|
||||||
|
.jp-RenderedMermaid-Summary {
|
||||||
color: var(--jp-warn-color2);
|
color: var(--jp-warn-color2);
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning summary > pre {
|
|
||||||
display: inline-block;
|
.jp-RenderedMermaid:not(.jp-mod-warning) pre {
|
||||||
}
|
|
||||||
.jp-RenderedMermaid > .mermaid {
|
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid-Summary > pre {
|
||||||
|
display: inline-block;
|
||||||
|
white-space: normal;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
<!-- End of mermaid configuration --></head>
|
<!-- End of mermaid configuration --></head>
|
||||||
<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
|
<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>- · XM_40017</title><script data-outdated-warner src="../assets/warner.js"></script><link rel="canonical" href="https://fverdugo.github.io/XM_40017/notebook-hello/"/><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/><script src="../assets/iframeResizer.min.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.png" alt="XM_40017 logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">XM_40017</a></span></div><form class="docs-search" action="../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><a class="tocitem" href="../getting_started_with_julia/">Getting started</a></li><li><span class="tocitem">Notebooks</span><ul><li><a class="tocitem" href="../julia_basics/">Julia Basics</a></li><li><a class="tocitem" href="../julia_async/">Asynchronous programming in Julia</a></li><li><a class="tocitem" href="../julia_distributed/">Distributed computing in Julia</a></li><li><a class="tocitem" href="../mpi_tutorial/">Distributed computing with MPI</a></li><li><a class="tocitem" href="../matrix_matrix/">Matrix-matrix multiplication</a></li></ul></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>-</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>-</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/fverdugo/XM_40017/blob/main/notebooks/notebook-hello.ipynb" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><div class="admonition is-success">
|
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>- · XM_40017</title><script data-outdated-warner src="../assets/warner.js"></script><link rel="canonical" href="https://fverdugo.github.io/XM_40017/notebook-hello/"/><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/><script src="../assets/iframeResizer.min.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.png" alt="XM_40017 logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">XM_40017</a></span></div><form class="docs-search" action="../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><a class="tocitem" href="../getting_started_with_julia/">Getting started</a></li><li><span class="tocitem">Notebooks</span><ul><li><a class="tocitem" href="../julia_basics/">Julia Basics</a></li><li><a class="tocitem" href="../julia_async/">Asynchronous programming in Julia</a></li><li><a class="tocitem" href="../julia_distributed/">Distributed computing in Julia</a></li><li><a class="tocitem" href="../mpi_tutorial/">Distributed computing with MPI</a></li><li><a class="tocitem" href="../matrix_matrix/">Matrix-matrix multiplication</a></li><li><a class="tocitem" href="../jacobi_method/">Jacobi method</a></li><li><a class="tocitem" href="../asp/">All pairs of shortest paths</a></li></ul></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>-</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>-</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/fverdugo/XM_40017/blob/main/notebooks/notebook-hello.ipynb" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><div class="admonition is-success">
|
||||||
<header class="admonition-header">Tip</header>
|
<header class="admonition-header">Tip</header>
|
||||||
<div class="admonition-body">
|
<div class="admonition-body">
|
||||||
<ul>
|
<ul>
|
||||||
@ -14,4 +14,4 @@
|
|||||||
var myIframe = document.getElementById("notebook");
|
var myIframe = document.getElementById("notebook");
|
||||||
iFrameResize({log:true}, myIframe);
|
iFrameResize({log:true}, myIframe);
|
||||||
});
|
});
|
||||||
</script></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.25 on <span class="colophon-date" title="Tuesday 29 August 2023 10:10">Tuesday 29 August 2023</span>. Using Julia version 1.9.3.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
|
</script></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.25 on <span class="colophon-date" title="Wednesday 30 August 2023 10:26">Wednesday 30 August 2023</span>. Using Julia version 1.9.3.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
|
||||||
|
|||||||
@ -7333,7 +7333,8 @@ a.anchor-link {
|
|||||||
if (!diagrams.length) {
|
if (!diagrams.length) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.2.3/mermaid.esm.min.mjs")).default;
|
const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.3.1/mermaid.esm.min.mjs")).default;
|
||||||
|
const parser = new DOMParser();
|
||||||
|
|
||||||
mermaid.initialize({
|
mermaid.initialize({
|
||||||
maxTextSize: 100000,
|
maxTextSize: 100000,
|
||||||
@ -7349,39 +7350,52 @@ a.anchor-link {
|
|||||||
let _nextMermaidId = 0;
|
let _nextMermaidId = 0;
|
||||||
|
|
||||||
function makeMermaidImage(svg) {
|
function makeMermaidImage(svg) {
|
||||||
const img = document.createElement('img');
|
const img = document.createElement("img");
|
||||||
const maxWidth = svg.match(/max-width: (\d+)/);
|
const doc = parser.parseFromString(svg, "image/svg+xml");
|
||||||
if (maxWidth && maxWidth[1]) {
|
const svgEl = doc.querySelector("svg");
|
||||||
const width = parseInt(maxWidth[1]);
|
const { maxWidth } = svgEl?.style || {};
|
||||||
if (width && !Number.isNaN(width) && Number.isFinite(width)) {
|
const firstTitle = doc.querySelector("title");
|
||||||
img.width = width;
|
const firstDesc = doc.querySelector("desc");
|
||||||
}
|
|
||||||
|
img.setAttribute("src", `data:image/svg+xml,${encodeURIComponent(svg)}`);
|
||||||
|
if (maxWidth) {
|
||||||
|
img.width = parseInt(maxWidth);
|
||||||
}
|
}
|
||||||
img.setAttribute('src', `data:image/svg+xml,${encodeURIComponent(svg)}`);
|
if (firstTitle) {
|
||||||
return img;
|
img.setAttribute("alt", firstTitle.textContent);
|
||||||
|
}
|
||||||
|
if (firstDesc) {
|
||||||
|
const caption = document.createElement("figcaption");
|
||||||
|
caption.className = "sr-only";
|
||||||
|
caption.textContent = firstDesc.textContent;
|
||||||
|
return [img, caption];
|
||||||
|
}
|
||||||
|
return [img];
|
||||||
}
|
}
|
||||||
|
|
||||||
async function makeMermaidError(text) {
|
async function makeMermaidError(text) {
|
||||||
let errorMessage = '';
|
let errorMessage = "";
|
||||||
try {
|
try {
|
||||||
await mermaid.parse(text);
|
await mermaid.parse(text);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
errorMessage = `${err}`;
|
errorMessage = `${err}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
const result = document.createElement('details');
|
const result = document.createElement("details");
|
||||||
const summary = document.createElement('summary');
|
result.className = 'jp-RenderedMermaid-Details';
|
||||||
const pre = document.createElement('pre');
|
const summary = document.createElement("summary");
|
||||||
const code = document.createElement('code');
|
summary.className = 'jp-RenderedMermaid-Summary';
|
||||||
|
const pre = document.createElement("pre");
|
||||||
|
const code = document.createElement("code");
|
||||||
code.innerText = text;
|
code.innerText = text;
|
||||||
pre.appendChild(code);
|
pre.appendChild(code);
|
||||||
summary.appendChild(pre);
|
summary.appendChild(pre);
|
||||||
result.appendChild(summary);
|
result.appendChild(summary);
|
||||||
|
|
||||||
const warning = document.createElement('pre');
|
const warning = document.createElement("pre");
|
||||||
warning.innerText = errorMessage;
|
warning.innerText = errorMessage;
|
||||||
result.appendChild(warning);
|
result.appendChild(warning);
|
||||||
return result;
|
return [result];
|
||||||
}
|
}
|
||||||
|
|
||||||
async function renderOneMarmaid(src) {
|
async function renderOneMarmaid(src) {
|
||||||
@ -7391,30 +7405,41 @@ a.anchor-link {
|
|||||||
const el = document.createElement("div");
|
const el = document.createElement("div");
|
||||||
el.style.visibility = "hidden";
|
el.style.visibility = "hidden";
|
||||||
document.body.appendChild(el);
|
document.body.appendChild(el);
|
||||||
let result = null;
|
let results = null;
|
||||||
|
let output = null;
|
||||||
try {
|
try {
|
||||||
const { svg } = await mermaid.render(id, raw, el);
|
const { svg } = await mermaid.render(id, raw, el);
|
||||||
result = makeMermaidImage(svg);
|
results = makeMermaidImage(svg);
|
||||||
|
output = document.createElement("figure");
|
||||||
|
results.map(output.appendChild, output);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
parent.classList.add("jp-mod-warning");
|
parent.classList.add("jp-mod-warning");
|
||||||
result = await makeMermaidError(raw);
|
results = await makeMermaidError(raw);
|
||||||
|
output = results[0];
|
||||||
} finally {
|
} finally {
|
||||||
el.remove();
|
el.remove();
|
||||||
}
|
}
|
||||||
parent.classList.add("jp-RenderedMermaid");
|
parent.classList.add("jp-RenderedMermaid");
|
||||||
parent.appendChild(result);
|
parent.appendChild(output);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Promise.all([...diagrams].map(renderOneMarmaid));
|
void Promise.all([...diagrams].map(renderOneMarmaid));
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<style>
|
<style>
|
||||||
.jp-RenderedMarkdown .jp-Mermaid:not(.jp-RenderedMermaid) {
|
.jp-Mermaid:not(.jp-RenderedMermaid) {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning {
|
|
||||||
|
.jp-RenderedMermaid {
|
||||||
|
overflow: auto;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid.jp-mod-warning {
|
||||||
width: auto;
|
width: auto;
|
||||||
padding: 10px;
|
padding: 0.5em;
|
||||||
|
margin-top: 0.5em;
|
||||||
border: var(--jp-border-width) solid var(--jp-warn-color2);
|
border: var(--jp-border-width) solid var(--jp-warn-color2);
|
||||||
border-radius: var(--jp-border-radius);
|
border-radius: var(--jp-border-radius);
|
||||||
color: var(--jp-ui-font-color1);
|
color: var(--jp-ui-font-color1);
|
||||||
@ -7422,18 +7447,33 @@ a.anchor-link {
|
|||||||
white-space: pre-wrap;
|
white-space: pre-wrap;
|
||||||
word-wrap: break-word;
|
word-wrap: break-word;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning details > pre {
|
|
||||||
|
.jp-RenderedMermaid figure {
|
||||||
|
margin: 0;
|
||||||
|
overflow: auto;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid img {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid-Details > pre {
|
||||||
margin-top: 1em;
|
margin-top: 1em;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning summary {
|
|
||||||
|
.jp-RenderedMermaid-Summary {
|
||||||
color: var(--jp-warn-color2);
|
color: var(--jp-warn-color2);
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning summary > pre {
|
|
||||||
display: inline-block;
|
.jp-RenderedMermaid:not(.jp-mod-warning) pre {
|
||||||
}
|
|
||||||
.jp-RenderedMermaid > .mermaid {
|
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid-Summary > pre {
|
||||||
|
display: inline-block;
|
||||||
|
white-space: normal;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
<!-- End of mermaid configuration --></head>
|
<!-- End of mermaid configuration --></head>
|
||||||
<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
|
<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>- · XM_40017</title><script data-outdated-warner src="../assets/warner.js"></script><link rel="canonical" href="https://fverdugo.github.io/XM_40017/solutions/"/><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/><script src="../assets/iframeResizer.min.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.png" alt="XM_40017 logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">XM_40017</a></span></div><form class="docs-search" action="../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><a class="tocitem" href="../getting_started_with_julia/">Getting started</a></li><li><span class="tocitem">Notebooks</span><ul><li><a class="tocitem" href="../julia_basics/">Julia Basics</a></li><li><a class="tocitem" href="../julia_async/">Asynchronous programming in Julia</a></li><li><a class="tocitem" href="../julia_distributed/">Distributed computing in Julia</a></li><li><a class="tocitem" href="../mpi_tutorial/">Distributed computing with MPI</a></li><li><a class="tocitem" href="../matrix_matrix/">Matrix-matrix multiplication</a></li></ul></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>-</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>-</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/fverdugo/XM_40017/blob/main/notebooks/solutions.ipynb" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><div class="admonition is-success">
|
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>- · XM_40017</title><script data-outdated-warner src="../assets/warner.js"></script><link rel="canonical" href="https://fverdugo.github.io/XM_40017/solutions/"/><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/><script src="../assets/iframeResizer.min.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.png" alt="XM_40017 logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">XM_40017</a></span></div><form class="docs-search" action="../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><a class="tocitem" href="../getting_started_with_julia/">Getting started</a></li><li><span class="tocitem">Notebooks</span><ul><li><a class="tocitem" href="../julia_basics/">Julia Basics</a></li><li><a class="tocitem" href="../julia_async/">Asynchronous programming in Julia</a></li><li><a class="tocitem" href="../julia_distributed/">Distributed computing in Julia</a></li><li><a class="tocitem" href="../mpi_tutorial/">Distributed computing with MPI</a></li><li><a class="tocitem" href="../matrix_matrix/">Matrix-matrix multiplication</a></li><li><a class="tocitem" href="../jacobi_method/">Jacobi method</a></li><li><a class="tocitem" href="../asp/">All pairs of shortest paths</a></li></ul></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>-</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>-</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/fverdugo/XM_40017/blob/main/notebooks/solutions.ipynb" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><div class="admonition is-success">
|
||||||
<header class="admonition-header">Tip</header>
|
<header class="admonition-header">Tip</header>
|
||||||
<div class="admonition-body">
|
<div class="admonition-body">
|
||||||
<ul>
|
<ul>
|
||||||
@ -14,4 +14,4 @@
|
|||||||
var myIframe = document.getElementById("notebook");
|
var myIframe = document.getElementById("notebook");
|
||||||
iFrameResize({log:true}, myIframe);
|
iFrameResize({log:true}, myIframe);
|
||||||
});
|
});
|
||||||
</script></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.25 on <span class="colophon-date" title="Tuesday 29 August 2023 10:10">Tuesday 29 August 2023</span>. Using Julia version 1.9.3.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
|
</script></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.25 on <span class="colophon-date" title="Wednesday 30 August 2023 10:26">Wednesday 30 August 2023</span>. Using Julia version 1.9.3.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
|
||||||
|
|||||||
@ -7333,7 +7333,8 @@ a.anchor-link {
|
|||||||
if (!diagrams.length) {
|
if (!diagrams.length) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.2.3/mermaid.esm.min.mjs")).default;
|
const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.3.1/mermaid.esm.min.mjs")).default;
|
||||||
|
const parser = new DOMParser();
|
||||||
|
|
||||||
mermaid.initialize({
|
mermaid.initialize({
|
||||||
maxTextSize: 100000,
|
maxTextSize: 100000,
|
||||||
@ -7349,39 +7350,52 @@ a.anchor-link {
|
|||||||
let _nextMermaidId = 0;
|
let _nextMermaidId = 0;
|
||||||
|
|
||||||
function makeMermaidImage(svg) {
|
function makeMermaidImage(svg) {
|
||||||
const img = document.createElement('img');
|
const img = document.createElement("img");
|
||||||
const maxWidth = svg.match(/max-width: (\d+)/);
|
const doc = parser.parseFromString(svg, "image/svg+xml");
|
||||||
if (maxWidth && maxWidth[1]) {
|
const svgEl = doc.querySelector("svg");
|
||||||
const width = parseInt(maxWidth[1]);
|
const { maxWidth } = svgEl?.style || {};
|
||||||
if (width && !Number.isNaN(width) && Number.isFinite(width)) {
|
const firstTitle = doc.querySelector("title");
|
||||||
img.width = width;
|
const firstDesc = doc.querySelector("desc");
|
||||||
}
|
|
||||||
|
img.setAttribute("src", `data:image/svg+xml,${encodeURIComponent(svg)}`);
|
||||||
|
if (maxWidth) {
|
||||||
|
img.width = parseInt(maxWidth);
|
||||||
}
|
}
|
||||||
img.setAttribute('src', `data:image/svg+xml,${encodeURIComponent(svg)}`);
|
if (firstTitle) {
|
||||||
return img;
|
img.setAttribute("alt", firstTitle.textContent);
|
||||||
|
}
|
||||||
|
if (firstDesc) {
|
||||||
|
const caption = document.createElement("figcaption");
|
||||||
|
caption.className = "sr-only";
|
||||||
|
caption.textContent = firstDesc.textContent;
|
||||||
|
return [img, caption];
|
||||||
|
}
|
||||||
|
return [img];
|
||||||
}
|
}
|
||||||
|
|
||||||
async function makeMermaidError(text) {
|
async function makeMermaidError(text) {
|
||||||
let errorMessage = '';
|
let errorMessage = "";
|
||||||
try {
|
try {
|
||||||
await mermaid.parse(text);
|
await mermaid.parse(text);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
errorMessage = `${err}`;
|
errorMessage = `${err}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
const result = document.createElement('details');
|
const result = document.createElement("details");
|
||||||
const summary = document.createElement('summary');
|
result.className = 'jp-RenderedMermaid-Details';
|
||||||
const pre = document.createElement('pre');
|
const summary = document.createElement("summary");
|
||||||
const code = document.createElement('code');
|
summary.className = 'jp-RenderedMermaid-Summary';
|
||||||
|
const pre = document.createElement("pre");
|
||||||
|
const code = document.createElement("code");
|
||||||
code.innerText = text;
|
code.innerText = text;
|
||||||
pre.appendChild(code);
|
pre.appendChild(code);
|
||||||
summary.appendChild(pre);
|
summary.appendChild(pre);
|
||||||
result.appendChild(summary);
|
result.appendChild(summary);
|
||||||
|
|
||||||
const warning = document.createElement('pre');
|
const warning = document.createElement("pre");
|
||||||
warning.innerText = errorMessage;
|
warning.innerText = errorMessage;
|
||||||
result.appendChild(warning);
|
result.appendChild(warning);
|
||||||
return result;
|
return [result];
|
||||||
}
|
}
|
||||||
|
|
||||||
async function renderOneMarmaid(src) {
|
async function renderOneMarmaid(src) {
|
||||||
@ -7391,30 +7405,41 @@ a.anchor-link {
|
|||||||
const el = document.createElement("div");
|
const el = document.createElement("div");
|
||||||
el.style.visibility = "hidden";
|
el.style.visibility = "hidden";
|
||||||
document.body.appendChild(el);
|
document.body.appendChild(el);
|
||||||
let result = null;
|
let results = null;
|
||||||
|
let output = null;
|
||||||
try {
|
try {
|
||||||
const { svg } = await mermaid.render(id, raw, el);
|
const { svg } = await mermaid.render(id, raw, el);
|
||||||
result = makeMermaidImage(svg);
|
results = makeMermaidImage(svg);
|
||||||
|
output = document.createElement("figure");
|
||||||
|
results.map(output.appendChild, output);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
parent.classList.add("jp-mod-warning");
|
parent.classList.add("jp-mod-warning");
|
||||||
result = await makeMermaidError(raw);
|
results = await makeMermaidError(raw);
|
||||||
|
output = results[0];
|
||||||
} finally {
|
} finally {
|
||||||
el.remove();
|
el.remove();
|
||||||
}
|
}
|
||||||
parent.classList.add("jp-RenderedMermaid");
|
parent.classList.add("jp-RenderedMermaid");
|
||||||
parent.appendChild(result);
|
parent.appendChild(output);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Promise.all([...diagrams].map(renderOneMarmaid));
|
void Promise.all([...diagrams].map(renderOneMarmaid));
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<style>
|
<style>
|
||||||
.jp-RenderedMarkdown .jp-Mermaid:not(.jp-RenderedMermaid) {
|
.jp-Mermaid:not(.jp-RenderedMermaid) {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning {
|
|
||||||
|
.jp-RenderedMermaid {
|
||||||
|
overflow: auto;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid.jp-mod-warning {
|
||||||
width: auto;
|
width: auto;
|
||||||
padding: 10px;
|
padding: 0.5em;
|
||||||
|
margin-top: 0.5em;
|
||||||
border: var(--jp-border-width) solid var(--jp-warn-color2);
|
border: var(--jp-border-width) solid var(--jp-warn-color2);
|
||||||
border-radius: var(--jp-border-radius);
|
border-radius: var(--jp-border-radius);
|
||||||
color: var(--jp-ui-font-color1);
|
color: var(--jp-ui-font-color1);
|
||||||
@ -7422,18 +7447,33 @@ a.anchor-link {
|
|||||||
white-space: pre-wrap;
|
white-space: pre-wrap;
|
||||||
word-wrap: break-word;
|
word-wrap: break-word;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning details > pre {
|
|
||||||
|
.jp-RenderedMermaid figure {
|
||||||
|
margin: 0;
|
||||||
|
overflow: auto;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid img {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid-Details > pre {
|
||||||
margin-top: 1em;
|
margin-top: 1em;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning summary {
|
|
||||||
|
.jp-RenderedMermaid-Summary {
|
||||||
color: var(--jp-warn-color2);
|
color: var(--jp-warn-color2);
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning summary > pre {
|
|
||||||
display: inline-block;
|
.jp-RenderedMermaid:not(.jp-mod-warning) pre {
|
||||||
}
|
|
||||||
.jp-RenderedMermaid > .mermaid {
|
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid-Summary > pre {
|
||||||
|
display: inline-block;
|
||||||
|
white-space: normal;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
<!-- End of mermaid configuration --></head>
|
<!-- End of mermaid configuration --></head>
|
||||||
<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
|
<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>- · XM_40017</title><script data-outdated-warner src="../assets/warner.js"></script><link rel="canonical" href="https://fverdugo.github.io/XM_40017/tsp/"/><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/><script src="../assets/iframeResizer.min.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.png" alt="XM_40017 logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">XM_40017</a></span></div><form class="docs-search" action="../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><a class="tocitem" href="../getting_started_with_julia/">Getting started</a></li><li><span class="tocitem">Notebooks</span><ul><li><a class="tocitem" href="../julia_basics/">Julia Basics</a></li><li><a class="tocitem" href="../julia_async/">Asynchronous programming in Julia</a></li><li><a class="tocitem" href="../julia_distributed/">Distributed computing in Julia</a></li><li><a class="tocitem" href="../mpi_tutorial/">Distributed computing with MPI</a></li><li><a class="tocitem" href="../matrix_matrix/">Matrix-matrix multiplication</a></li></ul></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>-</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>-</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/fverdugo/XM_40017/blob/main/notebooks/tsp.ipynb" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><div class="admonition is-success">
|
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>- · XM_40017</title><script data-outdated-warner src="../assets/warner.js"></script><link rel="canonical" href="https://fverdugo.github.io/XM_40017/tsp/"/><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/><script src="../assets/iframeResizer.min.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.png" alt="XM_40017 logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">XM_40017</a></span></div><form class="docs-search" action="../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><a class="tocitem" href="../getting_started_with_julia/">Getting started</a></li><li><span class="tocitem">Notebooks</span><ul><li><a class="tocitem" href="../julia_basics/">Julia Basics</a></li><li><a class="tocitem" href="../julia_async/">Asynchronous programming in Julia</a></li><li><a class="tocitem" href="../julia_distributed/">Distributed computing in Julia</a></li><li><a class="tocitem" href="../mpi_tutorial/">Distributed computing with MPI</a></li><li><a class="tocitem" href="../matrix_matrix/">Matrix-matrix multiplication</a></li><li><a class="tocitem" href="../jacobi_method/">Jacobi method</a></li><li><a class="tocitem" href="../asp/">All pairs of shortest paths</a></li></ul></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>-</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>-</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/fverdugo/XM_40017/blob/main/notebooks/tsp.ipynb" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><div class="admonition is-success">
|
||||||
<header class="admonition-header">Tip</header>
|
<header class="admonition-header">Tip</header>
|
||||||
<div class="admonition-body">
|
<div class="admonition-body">
|
||||||
<ul>
|
<ul>
|
||||||
@ -14,4 +14,4 @@
|
|||||||
var myIframe = document.getElementById("notebook");
|
var myIframe = document.getElementById("notebook");
|
||||||
iFrameResize({log:true}, myIframe);
|
iFrameResize({log:true}, myIframe);
|
||||||
});
|
});
|
||||||
</script></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.25 on <span class="colophon-date" title="Tuesday 29 August 2023 10:10">Tuesday 29 August 2023</span>. Using Julia version 1.9.3.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
|
</script></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.25 on <span class="colophon-date" title="Wednesday 30 August 2023 10:26">Wednesday 30 August 2023</span>. Using Julia version 1.9.3.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
|
||||||
|
|||||||
@ -7333,7 +7333,8 @@ a.anchor-link {
|
|||||||
if (!diagrams.length) {
|
if (!diagrams.length) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.2.3/mermaid.esm.min.mjs")).default;
|
const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.3.1/mermaid.esm.min.mjs")).default;
|
||||||
|
const parser = new DOMParser();
|
||||||
|
|
||||||
mermaid.initialize({
|
mermaid.initialize({
|
||||||
maxTextSize: 100000,
|
maxTextSize: 100000,
|
||||||
@ -7349,39 +7350,52 @@ a.anchor-link {
|
|||||||
let _nextMermaidId = 0;
|
let _nextMermaidId = 0;
|
||||||
|
|
||||||
function makeMermaidImage(svg) {
|
function makeMermaidImage(svg) {
|
||||||
const img = document.createElement('img');
|
const img = document.createElement("img");
|
||||||
const maxWidth = svg.match(/max-width: (\d+)/);
|
const doc = parser.parseFromString(svg, "image/svg+xml");
|
||||||
if (maxWidth && maxWidth[1]) {
|
const svgEl = doc.querySelector("svg");
|
||||||
const width = parseInt(maxWidth[1]);
|
const { maxWidth } = svgEl?.style || {};
|
||||||
if (width && !Number.isNaN(width) && Number.isFinite(width)) {
|
const firstTitle = doc.querySelector("title");
|
||||||
img.width = width;
|
const firstDesc = doc.querySelector("desc");
|
||||||
}
|
|
||||||
|
img.setAttribute("src", `data:image/svg+xml,${encodeURIComponent(svg)}`);
|
||||||
|
if (maxWidth) {
|
||||||
|
img.width = parseInt(maxWidth);
|
||||||
}
|
}
|
||||||
img.setAttribute('src', `data:image/svg+xml,${encodeURIComponent(svg)}`);
|
if (firstTitle) {
|
||||||
return img;
|
img.setAttribute("alt", firstTitle.textContent);
|
||||||
|
}
|
||||||
|
if (firstDesc) {
|
||||||
|
const caption = document.createElement("figcaption");
|
||||||
|
caption.className = "sr-only";
|
||||||
|
caption.textContent = firstDesc.textContent;
|
||||||
|
return [img, caption];
|
||||||
|
}
|
||||||
|
return [img];
|
||||||
}
|
}
|
||||||
|
|
||||||
async function makeMermaidError(text) {
|
async function makeMermaidError(text) {
|
||||||
let errorMessage = '';
|
let errorMessage = "";
|
||||||
try {
|
try {
|
||||||
await mermaid.parse(text);
|
await mermaid.parse(text);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
errorMessage = `${err}`;
|
errorMessage = `${err}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
const result = document.createElement('details');
|
const result = document.createElement("details");
|
||||||
const summary = document.createElement('summary');
|
result.className = 'jp-RenderedMermaid-Details';
|
||||||
const pre = document.createElement('pre');
|
const summary = document.createElement("summary");
|
||||||
const code = document.createElement('code');
|
summary.className = 'jp-RenderedMermaid-Summary';
|
||||||
|
const pre = document.createElement("pre");
|
||||||
|
const code = document.createElement("code");
|
||||||
code.innerText = text;
|
code.innerText = text;
|
||||||
pre.appendChild(code);
|
pre.appendChild(code);
|
||||||
summary.appendChild(pre);
|
summary.appendChild(pre);
|
||||||
result.appendChild(summary);
|
result.appendChild(summary);
|
||||||
|
|
||||||
const warning = document.createElement('pre');
|
const warning = document.createElement("pre");
|
||||||
warning.innerText = errorMessage;
|
warning.innerText = errorMessage;
|
||||||
result.appendChild(warning);
|
result.appendChild(warning);
|
||||||
return result;
|
return [result];
|
||||||
}
|
}
|
||||||
|
|
||||||
async function renderOneMarmaid(src) {
|
async function renderOneMarmaid(src) {
|
||||||
@ -7391,30 +7405,41 @@ a.anchor-link {
|
|||||||
const el = document.createElement("div");
|
const el = document.createElement("div");
|
||||||
el.style.visibility = "hidden";
|
el.style.visibility = "hidden";
|
||||||
document.body.appendChild(el);
|
document.body.appendChild(el);
|
||||||
let result = null;
|
let results = null;
|
||||||
|
let output = null;
|
||||||
try {
|
try {
|
||||||
const { svg } = await mermaid.render(id, raw, el);
|
const { svg } = await mermaid.render(id, raw, el);
|
||||||
result = makeMermaidImage(svg);
|
results = makeMermaidImage(svg);
|
||||||
|
output = document.createElement("figure");
|
||||||
|
results.map(output.appendChild, output);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
parent.classList.add("jp-mod-warning");
|
parent.classList.add("jp-mod-warning");
|
||||||
result = await makeMermaidError(raw);
|
results = await makeMermaidError(raw);
|
||||||
|
output = results[0];
|
||||||
} finally {
|
} finally {
|
||||||
el.remove();
|
el.remove();
|
||||||
}
|
}
|
||||||
parent.classList.add("jp-RenderedMermaid");
|
parent.classList.add("jp-RenderedMermaid");
|
||||||
parent.appendChild(result);
|
parent.appendChild(output);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Promise.all([...diagrams].map(renderOneMarmaid));
|
void Promise.all([...diagrams].map(renderOneMarmaid));
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<style>
|
<style>
|
||||||
.jp-RenderedMarkdown .jp-Mermaid:not(.jp-RenderedMermaid) {
|
.jp-Mermaid:not(.jp-RenderedMermaid) {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning {
|
|
||||||
|
.jp-RenderedMermaid {
|
||||||
|
overflow: auto;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid.jp-mod-warning {
|
||||||
width: auto;
|
width: auto;
|
||||||
padding: 10px;
|
padding: 0.5em;
|
||||||
|
margin-top: 0.5em;
|
||||||
border: var(--jp-border-width) solid var(--jp-warn-color2);
|
border: var(--jp-border-width) solid var(--jp-warn-color2);
|
||||||
border-radius: var(--jp-border-radius);
|
border-radius: var(--jp-border-radius);
|
||||||
color: var(--jp-ui-font-color1);
|
color: var(--jp-ui-font-color1);
|
||||||
@ -7422,18 +7447,33 @@ a.anchor-link {
|
|||||||
white-space: pre-wrap;
|
white-space: pre-wrap;
|
||||||
word-wrap: break-word;
|
word-wrap: break-word;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning details > pre {
|
|
||||||
|
.jp-RenderedMermaid figure {
|
||||||
|
margin: 0;
|
||||||
|
overflow: auto;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid img {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid-Details > pre {
|
||||||
margin-top: 1em;
|
margin-top: 1em;
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning summary {
|
|
||||||
|
.jp-RenderedMermaid-Summary {
|
||||||
color: var(--jp-warn-color2);
|
color: var(--jp-warn-color2);
|
||||||
}
|
}
|
||||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning summary > pre {
|
|
||||||
display: inline-block;
|
.jp-RenderedMermaid:not(.jp-mod-warning) pre {
|
||||||
}
|
|
||||||
.jp-RenderedMermaid > .mermaid {
|
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.jp-RenderedMermaid-Summary > pre {
|
||||||
|
display: inline-block;
|
||||||
|
white-space: normal;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
<!-- End of mermaid configuration --></head>
|
<!-- End of mermaid configuration --></head>
|
||||||
<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
|
<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user