Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Jargon-buster presentation #377

Merged
merged 19 commits into from
Feb 9, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
107 changes: 54 additions & 53 deletions .github/workflows/test_and_build.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
---
name: Check lesson and build for all configs

on:
Expand All @@ -10,45 +11,45 @@ jobs:
spellcheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.7
- name: Install codespell
run: |
pip3 install codespell
- name: Check spelling
run: |
codespell --skip="assets,*.svg,bin" --quiet-level=2 -L "rouge,dropse,namd,hist"
- uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.7
- name: Install codespell
run: |
pip3 install codespell
- name: Check spelling
run: |
make spellcheck

check_lesson_and_build_default:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-ruby@v1
with:
ruby-version: '2.7'
- name: Install basic requirements
run: |
# Need this library for nokogiri
sudo apt-get install libxslt1-dev
gem install bundler json kramdown kramdown-parser-gfm
bundle config set path '.vendor/bundle'
bundle config build.nokogiri --use-system-libraries
bundle install
- name: "Lint episode markdown"
run: |
find _episodes -name \*.md -exec bundle exec mdl -r MD001,MD003,MD005,MD006,MD007,MD008,MD009,MD010,MD011,MD012,MD015,MD016,MD017,MD018,MD019,MD020,MD021,MD022,MD023,MD025,MD035,MD036,MD037,MD038,MD039,MD046 {} \;
- name: "Check lesson for warnings"
run: |
make lesson-check-all
- name: "Check lesson for errors"
run: |
make lesson-check
- name: "Check build"
run: |
make --always-make site
- uses: actions/checkout@v2
- uses: actions/setup-ruby@v1
with:
ruby-version: '2.7'
- name: Install basic requirements
run: |
# Need this library for nokogiri
sudo apt-get install libxslt1-dev
gem install bundler json kramdown kramdown-parser-gfm
bundle config set path '.vendor/bundle'
bundle config build.nokogiri --use-system-libraries
bundle install
- name: "Lint episode markdown"
run: |
find _episodes -name \*.md -exec bundle exec mdl -r MD001,MD003,MD005,MD006,MD007,MD008,MD009,MD010,MD011,MD012,MD015,MD016,MD017,MD018,MD019,MD020,MD021,MD022,MD023,MD025,MD035,MD036,MD037,MD038,MD039,MD046 {} \;
- name: "Check lesson for warnings"
run: |
make lesson-check-all
- name: "Check lesson for errors"
run: |
make lesson-check
- name: "Check build"
run: |
make --always-make site

build-specific-sites:
runs-on: ubuntu-latest
Expand All @@ -62,21 +63,21 @@ jobs:
- UCL_Myriad_sge
- Magic_Castle_EESSI_slurm
steps:
- uses: actions/checkout@v2
- uses: actions/setup-ruby@v1
with:
ruby-version: '2.7'
- name: Install basic requirements
run: |
# Need this library for nokogiri
sudo apt-get install libxslt1-dev
gem install bundler
bundle config set path '.vendor/bundle'
bundle config build.nokogiri --use-system-libraries
bundle install
- name: Check build ${{matrix.HPC_JEKYLL_CONFIG}}
run: |
make --always-make site HPC_JEKYLL_CONFIG=_includes/snippets_library/${{matrix.HPC_JEKYLL_CONFIG}}/_config_options.yml
- name: "Lint snippet markdown"
run: |
find _includes/snippets_library/${{matrix.HPC_JEKYLL_CONFIG}} -name \*.snip -exec bundle exec mdl -r MD001,MD003,MD005,MD006,MD007,MD008,MD009,MD010,MD011,MD012,MD015,MD016,MD017,MD018,MD019,MD020,MD021,MD022,MD023,MD025,MD035,MD036,MD037,MD038,MD039,MD046 {} \;
- uses: actions/checkout@v2
- uses: actions/setup-ruby@v1
with:
ruby-version: '2.7'
- name: Install basic requirements
run: |
# Need this library for nokogiri
sudo apt-get install libxslt1-dev
gem install bundler
bundle config set path '.vendor/bundle'
bundle config build.nokogiri --use-system-libraries
bundle install
- name: Check build ${{matrix.HPC_JEKYLL_CONFIG}}
run: |
make --always-make site HPC_JEKYLL_CONFIG=_includes/snippets_library/${{matrix.HPC_JEKYLL_CONFIG}}/_config_options.yml
- name: "Lint snippet markdown"
run: |
find _includes/snippets_library/${{matrix.HPC_JEKYLL_CONFIG}} -name \*.snip -exec bundle exec mdl -r MD001,MD003,MD005,MD006,MD007,MD008,MD009,MD010,MD011,MD012,MD015,MD016,MD017,MD018,MD019,MD020,MD021,MD022,MD023,MD025,MD035,MD036,MD037,MD038,MD039,MD046 {} \;
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ lesson-fixme :

## spellcheck
spellcheck:
codespell --skip="assets,*.svg,.vendor" --quiet-level=2 -L "dropse,hist,namd,rouge"
codespell --skip="assets,*.svg,.vendor" --quiet-level=2 -L "dropse,figurestyle,hist,namd,rouge"

##
## IV. Auxililary (plumbing) commands
Expand Down
6 changes: 6 additions & 0 deletions _episodes/11-hpc-intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,12 @@ problems in parallel**.
> * How could more computing help you do more or better research?
{: .discussion }

## Jargon Busting Presentation

Open the [HPC Jargon Buster]({{ site.baseurl }}/files/jargon.html#p1) in
a new tab. To present the content, press `C` to open a **c**lone in
a separate window, then press `P` to toggle presentation mode.

## A Standard Laptop for Standard Tasks

Today, people coding or analysing data typically work with laptops.
Expand Down
Binary file added fig/HPCCStuttgart_Hazel_Hen_XC40.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added fig/jargon_cluster.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added fig/jargon_laptop_b_c.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added fig/jargon_large_computer.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added fig/jargon_mainframe_b_c.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added fig/jargon_multi_cluster.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added fig/jargon_standalone.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added fig/jargon_standalone_b_c.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added fig/jargon_workflow.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added fig/jargon_workflow_a.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added files/favicon.ico
Binary file not shown.
Binary file added files/favicon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
180 changes: 180 additions & 0 deletions files/jargon.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,180 @@
<!DOCTYPE html>
<!--
This is a <a href="https://github.com/gnab/remark">remark</a>
presentation: plain Markdown with an HTML wrapper. To see the
finished product, please visit <a href=""></a>
--->
<html>
<head>
<title>HPC Jargon Buster</title>
<link href="favicon.png" rel="icon" type="image/png"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<style type="text/css">
@import url(https://fonts.googleapis.com/css?family=Yanone+Kaffeesatz);
@import url(https://fonts.googleapis.com/css?family=Droid+Serif:400,700,400italic);
@import url(https://fonts.googleapis.com/css?family=Ubuntu+Mono:400,700,400italic);

body { font-family: 'Droid Serif'; }
h1, h2, h3 {
font-family: 'Yanone Kaffeesatz';
font-weight: normal;
}
.remark-code, .remark-inline-code { font-family: 'Ubuntu Mono'; }
</style>
</head>
<body>
<textarea id="source">
class: center, middle

# High Performance Computing Jargon Buster

[The HPC Carpentry Community](https://www.hpc-carpentry.org)

???

> Press `C` to open a "clone", then `P` to toggle Presentation Mode.

HPC Carpentry is a community effort to develop educational materials
in the pedagogical style of The Carpentries.

The point of this presentation is to briefly introduce some scale-up
options, so that learners get a sense of the variety of ways this can
be done, and the source of some of the overloading of terminology
that will be used later in the lesson.

This non-interactive activity should be kept brief.

---

# Your Personal Computer

.center[
![Standalone computers (banana for scale)](/fig/jargon_standalone.png)
]

- Familiar starting point, accessed locally
- Good for local computational tasks
- Highly flexible, easy to reconfigure for new tasks

???

A laptop and a desktop computer: you sit at the keyboard & mouse and
log in to the computer directly, often as the sole user.

Good at performing local and personal tasks: limited resources, but
familiar to all of us.

---

# Shared Computing Resources

.center[
![An HPC resource (img: [Julian Herzog](https://commons.wikimedia.org/wiki/File:High_Performance_Computing_Center_Stuttgart_HLRS_2015_07_Cray_XC40_Hazel_Hen_IO.jpg))](/fig/HPCCStuttgart_Hazel_Hen_XC40.png)
]
<!-- Image: https://commons.wikimedia.org/wiki/File:High_Performance_Computing_Center_Stuttgart_HLRS_2015_07_Cray_XC40_Hazel_Hen_IO.jpg, Julian Herzog. -->

- Large-scale computation is different
- It has a rich history, and confusing terminology
- Many terms overloaded

???

Computational at larger scales typically involves changes in how
things are done, and connection to remote computer systems and
transfer of data between systems.

There are many ways to do it, and the terminology can be confusing.

This presentation will step through some scale-up scenarios to help
frame the problem.

---

# A large computer

.center[
![A large computer (banana for scale)](/fig/jargon_large_computer.png)
]

- More powerful "compute server"
- Accessed remotely, likely shared by a small group
- Less flexible &mdash; need to accommodate other users

???

First obvious way to scale, has more CPUs and memory, and more or
faster storage.Typically shared, run commercial or open-source OSs,
may be called a "compute server". Typical tasks are operations of
large user-facing programs, like scientific models or visualizations.

---

# Cloud Systems

.center[
![Cloud computers (bananas for scale)](/fig/jargon_multi_cluster.png)
]

- Generally quite heterogeneous
- Many types of servers

???

Cloud systems physically resemble clusters or supercomputers, but
with greater heterogeneity among components, and less coupling, often
without an interconnect at all. Cloud servers are generally accessed
by connecting to their services over the network. Multiple VMs may
reside on individual physical machines. Typical tasks are driven by
user connections from the outside to the various "front end" services
(e.g. web sites) which pass traffic on to the "back end" servers
(e.g. databases) to present results to users.

---

# A cluster or supercomputer

.center[
![A cluster (banana for scale)](/fig/jargon_cluster.png)
]

- Special "login node" or "head node" accessed remotely by users
- Compute service accessed via resource manager
- Some flexibility on local accounts
- Specially-built software for best performance

???

Cloud systems physically resemble clusters or supercomputers, but
with greater heterogeneity among components, and less coupling, often
without an interconnect at all. Cloud servers are generally accessed
by connecting to their services over the network. Multiple VMs may
reside on individual physical machines. Typical tasks are driven by
user connections from the outside to the various "front end" services
(e.g. web sites) which pass traffic on to the "back end" servers
(e.g. databases) to present results to users.

---

# HPC workflow

.center[
![Schematic HPC workflow](/fig/jargon_workflow.png)
]

- You talk to the cluster head node
- The cluster head node distributes compute tasks
- You view results

???

In the usual HPC workflow, users do not communicate directly with
compute nodes, but work through a scheduling system to distribute
tasks.
</textarea>
<script src="https://remarkjs.com/downloads/remark-latest.min.js" type="text/javascript">
</script>
<script type="text/javascript">
var slideshow = remark.create();
</script>
</body>
</html>