Start on notebook

2022-10-15-multicast
Bradlee Speice 2022-10-16 20:37:21 -04:00
parent abfc1496f1
commit 3c75b720d1
3 changed files with 99 additions and 5 deletions

11
.gitignore vendored
View File

@ -1,7 +1,8 @@
_site/
.swp
.sass-cache/
.jekyll-metadata
.bundle/
vendor/
.ipynb_checkpoints/
.jekyll-metadata
.sass-cache/
.swp
.vscode/
_site/
vendor/

View File

@ -0,0 +1,69 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "2bfdffd8",
"metadata": {},
"source": [
"# No More Magic: A Practical Introduction to Multicast\n",
"\n",
"Recent interaction - had a networking issue, likely required configuration tweaking, but:\n",
"\n",
"- Not a lot of people who knew how to diagnose\n",
"- Training people to diagnose is challenging\n",
"\n",
"I've said that [High Performance Systems aren't magical](/2019/07/high-performance-systems.html), but realization that for many topics, accessibility is problematic. If I _wanted_ to know more, I don't have any meaningful way to investigate beyond asking for someone's time. While manager's judgment call is fine (\"this isn't worth investigating further\"), I've had a lot of career \"upskilling\" learned from open source. Want to make sure that if other people are interested, there's a way to meaningfully engage with the topic."
]
},
{
"cell_type": "markdown",
"id": "d8cee425",
"metadata": {},
"source": [
"Add links for:\n",
"- Notebook source\n",
"- Script for running the notebook"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "2edfbd79-d246-4b9a-a4a3-8e383c6b22a1",
"metadata": {},
"outputs": [],
"source": [
"#include <cstdlib>\n",
"#include <thread>\n",
"#include <vector>\n",
"\n",
"auto run_parallel(std::initializer_list<const char*> commands) {\n",
" \n",
"}\n",
"\n",
"std::vector<std::thread> threads{};\n",
"\n",
"for (auto command : commands)\n",
" threads.emplace_back([=]() { std::system(command); });\n",
"\n",
"for (auto& thread : threads)\n",
" thread.join();"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "C++17",
"language": "C++17",
"name": "xcpp17"
},
"language_info": {
"codemirror_mode": "text/x-c++src",
"file_extension": ".cpp",
"mimetype": "text/x-c++src",
"name": "c++",
"version": "17"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@ -0,0 +1,24 @@
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
mkdir -p "$SCRIPT_DIR"/notebook
# Package pinning because of https://github.com/jupyter-xeus/xeus-cling/issues/415
read -r -d '' RUN <<EOF
apt update \
&& apt install -y \
iperf3 \
sudo \
strace \
&& chown \$MAMBA_USER:\$MAMBA_USER /notebook \
&& sudo -u \$MAMBA_USER micromamba -y -n base install -c conda-forge \
jupyterlab \
xeus-cling==0.13.0 \
libstdcxx-devel_linux-64==9.4.0 \
libgcc-devel_linux-64==9.4.0 \
&& sudo -u \$MAMBA_USER micromamba run jupyter-lab /notebook
EOF
# --net=host: Docker networking doesn't do multicast, use host networking so the
# local router handles it instead.
# --user=root: Install iperf3/strace
podman run --net=host --user=root --rm --volume "$SCRIPT_DIR"/notebook:/notebook:Z -it mambaorg/micromamba bash -c "$RUN"