From 2ea0c0b60cf10150eefe6a8eaafd6fb0a45fa156 Mon Sep 17 00:00:00 2001 From: Tiziano Zito Date: Wed, 13 Aug 2025 13:58:07 +0200 Subject: [PATCH 1/5] add all materials --- README.md | 93 + architecture/GPUvsCPU-architecture.png | Bin 0 -> 93850 bytes architecture/NAND-gate.svg | 67 + architecture/README.md | 121 + architecture/comp_architecture_schematics.svg | 1 + architecture/cpu_clock_rate.csv | 201 ++ architecture/cpu_clock_rate.py | 83 + architecture/cpu_clock_rate.svg | 2047 +++++++++++++ architecture/memory.csv | 148 + architecture/memory.py | 101 + architecture/memory_bandwidth.svg | 2563 +++++++++++++++++ architecture/memory_clock.svg | 1734 +++++++++++ architecture/memory_latency.svg | 1944 +++++++++++++ architecture/storage.csv | 49 + architecture/storage.py | 54 + architecture/storage.svg | 1526 ++++++++++ architecture/topology.png | Bin 0 -> 31325 bytes benchmark_low_level/README.md | 57 + benchmark_low_level/bandwidth-t14.svg | 1719 +++++++++++ benchmark_low_level/latency-t14.svg | 1801 ++++++++++++ benchmark_low_level/parse_results.py | 39 + benchmark_low_level/plot.py | 115 + benchmark_low_level/results_t14 | 485 ++++ benchmark_low_level/t14-bwr.csv | 22 + benchmark_low_level/t14-bww.csv | 22 + benchmark_low_level/t14-lrnd.csv | 41 + benchmark_low_level/t14-lseq.csv | 41 + benchmark_python/README.md | 29 + benchmark_python/bench.py | 68 + benchmark_python/bench_plot.py | 106 + benchmark_python/loading-slowdown-ns128.svg | 2360 +++++++++++++++ benchmark_python/loading-timings-ns128.svg | 2348 +++++++++++++++ benchmark_python/results_ns128 | 21 + exercise-my-solution.ipynb | 241 ++ numpy/README.md | 31 + numpy/ndarray-memory-layout-1d.svg | 1 + .../ndarray-memory-layout-2d-rectangular.svg | 1 + numpy/ndarray-memory-layout-2d-square.svg | 1 + numpy/python-list-memory-layout.svg | 1 + parallel/README.md | 24 + setup/generate_materials.py | 37 + setup/materials.pdf | Bin 0 -> 215911 bytes setup/template.svg | 105 + 43 files changed, 20448 insertions(+) create mode 100644 README.md create mode 100644 architecture/GPUvsCPU-architecture.png create mode 100644 architecture/NAND-gate.svg create mode 100644 architecture/README.md create mode 100644 architecture/comp_architecture_schematics.svg create mode 100644 architecture/cpu_clock_rate.csv create mode 100644 architecture/cpu_clock_rate.py create mode 100644 architecture/cpu_clock_rate.svg create mode 100644 architecture/memory.csv create mode 100644 architecture/memory.py create mode 100644 architecture/memory_bandwidth.svg create mode 100644 architecture/memory_clock.svg create mode 100644 architecture/memory_latency.svg create mode 100644 architecture/storage.csv create mode 100644 architecture/storage.py create mode 100644 architecture/storage.svg create mode 100644 architecture/topology.png create mode 100644 benchmark_low_level/README.md create mode 100644 benchmark_low_level/bandwidth-t14.svg create mode 100644 benchmark_low_level/latency-t14.svg create mode 100644 benchmark_low_level/parse_results.py create mode 100644 benchmark_low_level/plot.py create mode 100644 benchmark_low_level/results_t14 create mode 100644 benchmark_low_level/t14-bwr.csv create mode 100644 benchmark_low_level/t14-bww.csv create mode 100644 benchmark_low_level/t14-lrnd.csv create mode 100644 benchmark_low_level/t14-lseq.csv create mode 100644 benchmark_python/README.md create mode 100755 benchmark_python/bench.py create mode 100755 benchmark_python/bench_plot.py create mode 100644 benchmark_python/loading-slowdown-ns128.svg create mode 100644 benchmark_python/loading-timings-ns128.svg create mode 100644 benchmark_python/results_ns128 create mode 100644 exercise-my-solution.ipynb create mode 100644 numpy/README.md create mode 100644 numpy/ndarray-memory-layout-1d.svg create mode 100644 numpy/ndarray-memory-layout-2d-rectangular.svg create mode 100644 numpy/ndarray-memory-layout-2d-square.svg create mode 100644 numpy/python-list-memory-layout.svg create mode 100644 parallel/README.md create mode 100644 setup/generate_materials.py create mode 100644 setup/materials.pdf create mode 100644 setup/template.svg diff --git a/README.md b/README.md new file mode 100644 index 0000000..cc9bced --- /dev/null +++ b/README.md @@ -0,0 +1,93 @@ +# What every scientist should know about computer architecture + +## Introduction + - [Puzzle](puzzle.ipynb) + - Question: how come that swapping dimensions in a for-loop makes out for a huge slowdown? + - Let students play around with the notebook and try to find the "bug" + - A more thorough [benchmark](benchmark_python/) + + +## A digression in CPU architecture and the memory hierarchy + + - Go to [A Primer in CPU architecture](architecture/) + - Measure size and timings for the memory hierarchy on my machine with a low level [C benchmark](benchmark_low_level/) + +## Analog programming + + - [Two exercises to activate the body and the mind](analog_programming.md) + + +## Back to the Python benchmark (second try) + + - can we explain what is happening? + - it must have to do with the good (or bad) use of cache properties + - but how are numpy arrays laid out in memory? + +## Anatomy of a numpy array + + - [memory layout of numpy arrays](numpy/) + +## Back to the Python benchmark (third try) + - can we explain what is happening now? Yes, more or less ;-) + - quick fix for the [puzzle](puzzle.ipynb): try and add `order='F'` in the "bad" snippet and see that it "fixes" the bug ➔ why? + - the default memeory layout is called "C-contiguous" or "row-major": + ```python + np.zeros((2,2)).flags.c_contiguous == True + np.zeros((2,2)).flags.f_contiguous == False + ``` + - note that for one-dimensional arrays it makes no difference: + ```python + np.zeros(2).flags.c_contiguous == True + np.zeros(2).flags.f_contiguous == True + ``` + - rule of thumb for multi-dimensional numpy arrays: + - the right-most index should be the inner-most loop in a series of nested loops over the dimensions of a multi-dimensional array + - the previous rule can be remembered as *the right-most index changes the faster* in a series of nested loops + - the logically contiguous data, for example the data points of a single time series, should be stored along the right-most dimension: + ```python + x = np.zeros((n_series, lenght_of_one_series)) # ➔ good! + y = np.zeros((length_of_one_series, n_series)) # ➔ bad! + ``` + - … unless of course you plan to mostly loop *across* time series :) + - watch out when migrating code from MATLAB® : it stores data in memory using the opposite convention, the column-major order! + - **DANGER**: watch out when working with [`pandas.DataFrame`](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html): + + ➔ the data are stored in memory using different conventions depending on how the `DataFrame` was initialized! Be sure to + check the `DataFrame.values.flags` attribute! + +## A final exercise to put it all together + - fork this repo to your account and clone your fork on the laptop + - create a branch `ex` and switch to it + - work on the [exercise](exercise.ipynb) + - push your solution to your fork and create a Pull Request to this repo + + +## Notes on the benchmarks + + - while running the benchmarks attached to one core on my laptop, the core was running under a constant load of 100% (almost completely user-time) and at a fixed frequency of 3.8 GHz, where the theoretical max would be 5.2 GHz + + ➔ the CPU does not "starve" because it scales its speed down to match the memory throughput? Or I am misinterpreting this? This problem which at first sight should be perfectly memory-bound, becomes CPU-bound, or actually, exactly balanced? From the [Intel documentation](https://lenovopress.lenovo.com/lp1836-tuning-uefi-settings-4th-gen-intel-xeon-scalable-processor): + > **Energy Efficient Turbo** + > + > When `Energy Efficient Turbo` is enabled, the CPU’s optimal turbo + > frequency will be tuned dynamically based on CPU utilization. The actual + > turbo frequency the CPU is set to is proportionally adjusted based on the + > duration of the turbo request. Memory usage of the OS is also monitored. + > If the OS is using memory heavily and the CPU core performance is limited + > by the available memory resources, the turbo frequency will be reduced + > until more memory load dissipates, and more memory resources become + > available. The power/performance bias setting also influences energy + > efficient turbo. `Energy Efficient Turbo` is best used when attempting to + > maximize power consumption over performance. + +## Concluding remarks + - how is all of this relevant for the users of a computing cluster? + - Never trust benchmarks! See for example [Producing Wrong Data Without Doing Anything Obviously Wrong!](https://users.cs.northwestern.edu/~robby/courses/322-2013-spring/mytkowicz-wrong-data.pdf) + +## Additional material if there's time left +- [Excerpts of parallel Python](parallel) +- how does memory *allocation* to processes work at the OS level? + - virtual memory + - swap + - optimistic over-committing allocation policies + - the oom-killer watchdog diff --git a/architecture/GPUvsCPU-architecture.png b/architecture/GPUvsCPU-architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..1370d89903e3e4a8a1697b24722b095bd59fe3c6 GIT binary patch literal 93850 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%0DUE|?|-fqp&ke>!GS3=h?v=fAo) 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 O6dtKQERi+&^Zx*ysqmlx literal 0 HcmV?d00001 diff --git a/architecture/NAND-gate.svg b/architecture/NAND-gate.svg new file mode 100644 index 0000000..64f3987 --- /dev/null +++ b/architecture/NAND-gate.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Vcc + GND + R1 + R2 + VT1 + VT2 + A + B + Q + + diff --git a/architecture/README.md b/architecture/README.md new file mode 100644 index 0000000..c9811a4 --- /dev/null +++ b/architecture/README.md @@ -0,0 +1,121 @@ +# A Primer on computer architecture + +## Binary representation of common data types +- **integers** + - int32 ➔ 32b (bits) = 4B (bytes) + - 1 bit for sign, 31 bit for magnitude + - min = -2^31 = -2,147,483,648 + - max = 2^31-1 = 2,147,483,647 + - [visualization](https://manderc.com/apps/umrechner/index_eng.php) + - In Python: + - `bin(14)` ➔ `'0b1110'` + - `np.iinfo(np.int32)` ➔ `iinfo(min=-2147483648, max=2147483647, dtype=int32)` + - Python integers, as opposed to numpy integer types, are represented with a flexible number of bits: `sys.int_info` ➔ `bits_per_digit=30, sizeof_digit=4, default_max_str_digits=4300, str_digits_check_threshold=640` + - they are called "long" or "superlong" integers, because they can have arbitrary size. Low level implementation explained: + - [Arpit Bhayani's blog](https://arpitbhayani.me/blogs/long-integers-python/) + - [Artem Golubin's blog](https://rushter.com/blog/python-integer-implementation/) + +- **real numbers**, a.k.a. floating point numbers (IEEE-754 standard): + - float64 ➔ 64b (bits) = 8B (bytes) + - 1 bit for sign, 51 bits for mantissa, 11 bits for exponent + - min, max ≈ ± 1.8 × 10^308 + - smallest ≈ 2.2 x 10^-308 + - example in Python: + - `np.finfo(np.float64)` ➔ `finfo(resolution=1e-15, min=-1.7976931348623157e+308, max=1.7976931348623157e+308, dtype=float64)` + - `sys.float_info` ➔ `max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1` + - next floating point number after `1.` in the direction of `2.`: `np.nextafter(1., 2.)` ➔ `1.0000000000000002` + - watch out for equality between floating point numbers: + - `1.1 + 2.2 == 3.3` ➔ `False` + - `(1.1+2.2).hex()` ➔ `0x1.a666666666667p+1` and `(3.3).hex()` ➔ `0x1.a666666666666p+1` + - visualization: + - [`float32`](https://www.h-schmidt.net/FloatConverter/IEEE754.html) + - [all types](https://float.exposed/) with [explanation](https://ciechanow.ski/exposing-floating-point/) + - Docs with more details: [What Every Programmer Should Know About Floating-Point Arithmetic or Why don’t my numbers add up?](https://floating-point-gui.de) + - Docs with the gory details, a.k.a. the floating point bible: [What every computer scientist should know about floating-point arithmetic](https://doi.org/10.1145/103162.103163) + +- **strings**: + - UTF8 encoded, flexible width from 1B (byte) to 4B (bytes): 1,112,064 Unicode characters (code points) + - ASCII: 7 bits (fits in one byte), 127 characters ➔ [ASCII table](https://upload.wikimedia.org/wikipedia/commons/2/26/ASCII_Table_%28suitable_for_printing%29.svg) + - [visualization](https://sonarsource.github.io/utf8-visualizer/) + - actually in Python strings (more precisely: unicode objects) are stored in different formats depending on which characters are stored for memory efficiency. Look at the gory details [here](https://docs.python.org/3.14/c-api/unicode.html) ➔ not for the faint-hearted! + +- **hexadecimal notation**: + - base16 ➔ '0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f' + - a compact way of representating binary data: 8 bits = 1 byte = 2 hexadecimal digits + - Example: `254` (decimal) ➔ `1111 1110` (binary) ➔ `fe` (hex) + +## CPU architecture +![CPU schematics](comp_architecture_schematics.svg) + - Primer on CPU (x86_64) architecture and the memory hierarchy: + - CPU registers ≈ 160 (plus another ~500 model specific), latency: 0 cycles, capacity: 8 bytes + - x86-64 instruction set, with ≈ 2000 instructions with mnemonic (plus an unknown number of "undocumented" instructions ~ 10k) + - (single instruction, mutiple data [8 or 16 data units]) SIMD CPUs + - L-Caches: L1/L2/L3, with cache lines of 128B, latencies: 1-40 cycles, capacity: ~KB and ~MB + - Main memory: RAM pages 4KB or 64KB, latency: 50~100 cycles, capacity ~GBs + - Storage (local disks): disk transfer blocks 4KB to 64MB, latency: 0.1ms (300k cycles), capacity: ~TBs + - Remote Storage (network): typically limited by ethernet connection (1-10 GB/s), latency: 10~100 ms, capacity: ∞ + - Understand the trade-offs involved: + - **capacity** measured in T/G/M/K/B + - **latency** ≈ (time-when-data-available-on-output-pins – time-when-data-requested) ➔ measured in nanoseconds or in (CPU) cycles + - **bandwidth** ≈ clock frequency × data-transfer/tick × bus-width (in bytes) ➔ measured in T/G/M/K/B per second (this is what is usually advertised as the **speed**) + - data **volatility** vs. **persistence** + - cost + - physical limits (heat dissipation, density, size, lifetime) + - temporal and spacial locality of data + - The gory details about the memory hierarchy: [What Every Programmer Should Know About Memory](https://www.akkadia.org/drepper/cpumemory.pdf) by the notorious Ulrich Drepper + +# …and what about the GPU? +![GPU vs CPU architecture](GPUvsCPU-architecture.png) + - A GPU has many (in the order of hundreds) SIMT (single instruction, multiple thread) cores, so called SMs (Streaming Multiprocessors), each one with local L1 and shared L2 caches, and shared RAM (due to to the high parallelism, with huge bandwidth, in the order of ~1TB/s) + - The SMs are specialized on data types. In order of abundance, the following data types are supported: int8, int32, int64, float16, float32, float64 + - Performance depends on: + - memory bandwidth: usually higher than CPU's RAM + - "math" bandwidth: usually higher than CPU's, but much more limited in capability; for example branches (if/else) are expensive + - latency: usually much higher than CPU's ➔ the more parallel threads are run the less the price of high latency is paid (latency "hiding") + - spatial locality is extremely critical + - A portion of the GPU-RAM is accessible to the CPU ➔ the GPU performs the copies + - The PCI-Bus (Peripheral Component Interconnect bus) is the bottleneck: data needs to flow from main (CPU) memory to GPU memory and back! + - Problems on a cluster: the GPU does not really support simultanous multiple users payloads! + +# Computer Architecture (a concrete example) +My Laptop: +![Graphical representation](topology.png) + - Lenovo - T14 Gen 4 + - CPU i7-1365U: + - 2× "performance cores" (Intel Core) max 5.20 GHz (0.19 ns/cycle) with Hyper-Threading + - 8× "efficient cores" (Intel Atom) max 3.90 GHz (0.26 ns/cycle) + - L1 (data) cache P-Core 48 KB + - L1 (data) cache E-Core 32 KB + - L2 cache P-Core 1280 KB + - L2 cache E-Core 2048 KB (shared x4) + - L3 cache 12 MB (shared P+E-Cores) + - RAM DDR5-5200: 32GB (16GB soldered + 16GB bank): + - Data rate 5200 MT/s, Transfer time 0.192 ns/cycle + - Command rate (bus clock) 2600 MHz, Cycle time 0.385 ns + - Internal clock 650 MHz, 1.54 ns + - CAS Latency 34 cycles, Total latency = CAS latency x cycle = 13.09 ns, Throughput 40.6 GB/s + - DMI (Direct Media Interface): 8×16 GT/s (≈128 GB/s) + - PCI (Peripheral Component Interconnect) Express bridges: + - Graphics: 16 GT/s (≈ 8 GB/s) + - 2× Thunderbolt: 2.5 GT/s (≈ 1 GB/s) and 16 GT/s (≈ 8 GB/s) + - GPU Intel Iris, Internal clock 300 Mhz-1.30 GHz, memory 4 GB/2.1 GHz with a bandwidth of 68 GB/s + +## Historical evolution of speed of different components in a computer +(data source: Wikipedia) + +### CPU Clock Rate +![](cpu_clock_rate.svg) + +### Memory (RAM) Clock Cycle Time +![](memory_clock.svg) + +### Memory (RAM) Bandwidth +![](memory_bandwidth.svg) + +### Memory (RAM) Latency +![](memory_latency.svg) + +### Storage Read Speed +![](storage.svg) + + diff --git a/architecture/comp_architecture_schematics.svg b/architecture/comp_architecture_schematics.svg new file mode 100644 index 0000000..a6ba132 --- /dev/null +++ b/architecture/comp_architecture_schematics.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/architecture/cpu_clock_rate.csv b/architecture/cpu_clock_rate.csv new file mode 100644 index 0000000..399939c --- /dev/null +++ b/architecture/cpu_clock_rate.csv @@ -0,0 +1,201 @@ +1969,1 MHz +1971,740 kHz +1972,200 kHz +1972,400 kHz +1972,500 kHz +1973,1 MHz +1973,2 MHz +1973,715 kHz +1974,1.33 MHz +1974,1.4 MHz +1974,1 MHz +1974,2 MHz +1974,400 kHz +1974,500 kHz +1974,715 kHz +1974,740 kHz +1975,1.2 MHz +1975,10 MHz +1975,1 MHz +1975,256 kHz +1975,2 MHz +1975,3.3 MHz +1975,4 MHz +1976,2.5 MHz +1976,3.3 MHz +1976,6.4 MHz +1976,8 MHz +1977,1.0 MHz +1977,2.0 MHz +1977,3.0 MHz +1978,1 MHz +1978,5 MHz +1979,5 MHz +1979,8 MHz +1981,10 MHz +1981,2.5 MHz +1982,18 MHz +1982,1 MHz +1982,6 MHz +1982,8 MHz +1983,2 MHz +1983,3 MHz +1984,16 MHz +1984,5 MHz +1985,12 MHz +1985,5 MHz +1985,8 MHz +1986,15 MHz +1986,16 MHz +1987,10 MHz +1987,12.5 MHz +1987,16 MHz +1987,20 MHz +1987,8 MHz +1988,10 MHz +1988,12 MHz +1988,25 MHz +1989,16-33 MHz +1989,25 MHz +1989,35 MHz +1990,20-30 MHz +1990,40 MHz +1991,100 MHz +1991,33 MHz +1991,62.5-90.91 MHz +1992,100 MHz +1992,100-200 MHz +1992,20 MHz +1992,40 MHz +1992,40-50 MHz +1993,120 MHz +1993,50-80 MHz +1993,55-71.5 MHz +1993,60-66 MHz +1994,100 MHz +1994,100-125 MHz +1994,100-180 MHz +1994,125 MHz +1994,200-300 MHz +1994,50 MHz +1994,60-120 MHz +1994,60-125 MHz +1995,101-118 MHz +1995,143-167 MHz +1995,150-200 MHz +1995,266-333 MHz +1996,141-161 MHz +1996,150 MHz +1996,150-250 MHz +1996,160-180 MHz +1996,180-250 MHz +1996,400-500 MHz +1996,75-100 MHz +1997,120-150 MHz +1997,125 MHz +1997,166-233 MHz +1997,200 MHz +1997,233-300 MHz +1997,233-366 MHz +1997,250-400 MHz +1997,370 MHz +1998,200 MHz +1998,250-300 MHz +1998,250-330 MHz +1998,262 MHz +1998,270-400 MHz +1998,300-440 MHz +1998,450-600 MHz +1998,500 MHz +1999,294-300 MHz +1999,350-500 MHz +1999,450 MHz +1999,450-600 MHz +1999,500-1000 MHz +1999,550-637 MHz +2000,1.33-1.73 GHz +2000,1.3-2 GHz +2000,450-810 MHz +2000,550 MHz-1.3 GHz +2000,600-750 MHz +2000,918 MHz +2001,1.1-1.4 GHz +2001,500-600 MHz +2001,733-800 MHz +2001,750-1200 MHz +2002,0.9-1 GHz +2002,1.1-1.35 GHz +2003,0.9-1.7 GHz +2003,1.4-2.4 GHz +2003,1.6-2.0 GHz +2004,1.65-1.9 GHz +2004,700 MHz +2005,1.05-1.35 GHz +2005,1.2-2.5 GHz +2005,1.6-3.0 GHz +2005,1-1.4 GHz +2005,2.8-3.2 GHz +2005,2-2.4 GHz +2005,3.2 GHz +2006,1.06-2.67 GHz +2006,1.1-2.33 GHz +2006,1.4-1.6 GHz +2006,3.2-4.6 GHz +2007,1.8-3.2 GHz +2007,1-1.4 GHz +2007,2.15-2.4 GHz +2007,3.5-4.7 GHz +2007,600-900 MHz +2007,850 MHz +2008,0.8-1.6 GHz +2008,1.8-2.6 GHz +2008,2.3-2.9 GHz +2008,2.4-2.88 GHz +2008,2.66-3.2 GHz +2008,2.8-4.0 GHz +2008,4.4 GHz +2008,600-866 MHz +2009,2.2-2.8 GHz +2009,2.5-3.2 GHz +2010,1.6 GHz +2010,1.73-2.66 GHz +2010,1.7-2.4 GHz +2010,1.86-3.33 GHz +2010,2.66-3.0 GHz +2010,2 GHz +2010,3.8-5.2 GHz +2010,3-4.14 GHz +2011,1.0-1.6 GHz +2011,1.6 GHz +2011,1.6-3.4 GHz +2011,1.73-2.67 GHz +2011,2.0 GHz +2011,2.8-3 GHz +2011,3.1-3.6 GHz +2012,1.73-2.53 GHz +2012,1.848 GHz +2012,3.1-5.3 GHz +2012,5.5 GHz +2013,1.9-4.4 GHz +2013,2.8-3 GHz +2013,3.6 GHz +2014,1.8-4 GHz +2014,2.5-5 GHz +2015,3.6 GHz +2015,5 GHz +2016,320 MHz +2017,1.5 GHz +2017,3.2-4.1 GHz +2017,4 GHz +2017,5.2 GHz +2017,5 GHz +2018,1.5 GHz +2018,2.2-3.2 GHz +2018,2.8-3.7 GHz +2019,2-4.7 GHz +2019,5.2 GHz +2020,3.2 GHz +2020,3.4-4.9 GHz +2021,3.2 GHz +2022,3.2 GHz +2022,5 GHz diff --git a/architecture/cpu_clock_rate.py b/architecture/cpu_clock_rate.py new file mode 100644 index 0000000..8c0504a --- /dev/null +++ b/architecture/cpu_clock_rate.py @@ -0,0 +1,83 @@ +# CPU clock rate data from Wikipedia +# https://en.wikipedia.org/wiki/Microprocessor_chronology +# Table data extracted with: https://wikitable2csv.ggor.de/ +import numpy as np +import matplotlib +from matplotlib import pyplot as plt +plt.style.use('ggplot') +matplotlib.rcParams['font.size'] = 12 +matplotlib.rcParams['font.family'] = ['Exo 2', 'sans-serif'] + +data = open('cpu_clock_rate.csv', 'rt') + +# first, remove units and rescale everything to MHz +rescaled = [] +for line in data: + date, raw = line.split(',') + try: + value, unit = raw.split() + except ValueError: + # there are lines with multiple units, for example + # 550 MHz-1.3 GHz + # take the left most one + raw = raw.split('-')[1] + value, unit = raw.split() + # if value is in the form X-Y, just use the biggest, i.e. Y + if '-' in value: + value = value.split('-')[1] + value = float(value) + # rescale value + if unit == 'kHz': + value = value/1000 + elif unit == 'GHz': + value = value*1000 + elif unit == 'MHz': + pass + else: + raise ValueError(f'Unit not understood! {unit}') + rescaled.append((date, value)) + +dtype = [('year', np.float64), ('clock', np.float64)] +rescaled = np.array(rescaled, dtype=dtype) +# sort first by year and then by value +rescaled.sort(order=['year', 'clock']) + +# add some jitter on values corresponding to the same year, so that the plot +# looks more understandable +old_year = rescaled[0][0] +count = 0 +for row in range(rescaled.shape[0]): + year = rescaled[row][0] + count += 1 + if year != old_year: + # add jitter to the values corresponding to the previous year + prev_count = count-1 + if prev_count > 1: + jitter = 1/prev_count + for i in range(1, count): + loc_year, loc_value = rescaled[row-count+i] + rescaled[row-count+i] = (loc_year+(jitter*(i-1)), loc_value) + # restart counting + count = 1 + old_year = year + +# plot the thing +plt.figure(figsize=(8.5,7.5)) +plt.semilogy(rescaled['year'], rescaled['clock'], 'o') +# my laptop here +plt.semilogy([2020], [4900], 'o') +plt.grid(None) +plt.grid(which='both', axis='both') +plt.ylim(0.1, 10000) +plt.xlim(1968, 2025) +years = np.arange(1970, 2025, 5) +plt.xticks(years, years) +plt.yticks([0.1, 1,10,100,1000, 10000], ['1 kHz\n1 ms', '1 MHz\n1 µs', '10 MHz\n100 ns', + '100 MHz\n10 ns', '1 GHz\n1 ns', '10 GHz\n0.1 ns']) +plt.tick_params(labelright=True, top=True, right=True) +plt.title('CPU clock rate') +plt.savefig('cpu_clock_rate.svg') + + + + diff --git a/architecture/cpu_clock_rate.svg b/architecture/cpu_clock_rate.svg new file mode 100644 index 0000000..f793c65 --- /dev/null +++ b/architecture/cpu_clock_rate.svg @@ -0,0 +1,2047 @@ + + + + + + + + 2024-03-09T19:48:36.950426 + image/svg+xml + + + Matplotlib v3.6.3, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/architecture/memory.csv b/architecture/memory.csv new file mode 100644 index 0000000..a380049 --- /dev/null +++ b/architecture/memory.csv @@ -0,0 +1,148 @@ +Generation,Type,Data rate (MT/s),Transfer time (ns),Command rate (MHz),Cycle time (ns),CAS latency,First word (ns),Fourth word (ns),Eighth word (ns) +SDRAM,PC100,100,10.000,100,10.000,2,20.00,50.00,90.00 +SDRAM,PC133,133,7.500,133,7.500,3,22.50,45.00,75.00 +DDR SDRAM,DDR-333,333,3.000,166,6.000,2.5,15.00,24.00,36.00 +DDR SDRAM,DDR-400,400,2.500,200,5.000,3,15.00,22.50,32.50 +DDR SDRAM,DDR-400,400,2.500,200,5.000,2.5,12.50,20.00,30.00 +DDR SDRAM,DDR-400,400,2.500,200,5.000,2,10.00,17.50,27.50 +DDR2 SDRAM,DDR2-400,400,2.500,200,5.000,4,20.00,27.50,37.50 +DDR2 SDRAM,DDR2-400,400,2.500,200,5.000,3,15.00,22.50,32.50 +DDR2 SDRAM,DDR2-533,533,1.875,266,3.750,4,15.00,20.63,28.13 +DDR2 SDRAM,DDR2-533,533,1.875,266,3.750,3,11.25,16.88,24.38 +DDR2 SDRAM,DDR2-667,667,1.500,333,3.000,5,15.00,19.50,25.50 +DDR2 SDRAM,DDR2-667,667,1.500,333,3.000,4,12.00,16.50,22.50 +DDR2 SDRAM,DDR2-800,800,1.250,400,2.500,6,15.00,18.75,23.75 +DDR2 SDRAM,DDR2-800,800,1.250,400,2.500,5,12.50,16.25,21.25 +DDR2 SDRAM,DDR2-800,800,1.250,400,2.500,4.5,11.25,15.00,20.00 +DDR2 SDRAM,DDR2-800,800,1.250,400,2.500,4,10.00,13.75,18.75 +DDR2 SDRAM,DDR2-1066,1066,0.938,533,1.875,7,13.13,15.94,19.69 +DDR2 SDRAM,DDR2-1066,1066,0.938,533,1.875,6,11.25,14.06,17.81 +DDR2 SDRAM,DDR2-1066,1066,0.938,533,1.875,5,9.38,12.19,15.94 +DDR2 SDRAM,DDR2-1066,1066,0.938,533,1.875,4.5,8.44,11.25,15.00 +DDR2 SDRAM,DDR2-1066,1066,0.938,533,1.875,4,7.50,10.31,14.06 +DDR3 SDRAM,DDR3-1066,1066,0.938,533,1.875,7,13.13,15.94,19.69 +DDR3 SDRAM,DDR3-1333,1333,0.750,666,1.500,9,13.50,15.75,18.75 +DDR3 SDRAM,DDR3-1333,1333,0.750,666,1.500,7,10.50,12.75,15.75 +DDR3 SDRAM,DDR3-1333,1333,0.750,666,1.500,6,9.00,11.25,14.25 +DDR3 SDRAM,DDR3-1375,1375,0.727,687,1.455,5,7.27,9.45,12.36 +DDR3 SDRAM,DDR3-1600,1600,0.625,800,1.250,11,13.75,15.63,18.13 +DDR3 SDRAM,DDR3-1600,1600,0.625,800,1.250,10,12.50,14.38,16.88 +DDR3 SDRAM,DDR3-1600,1600,0.625,800,1.250,9,11.25,13.13,15.63 +DDR3 SDRAM,DDR3-1600,1600,0.625,800,1.250,8,10.00,11.88,14.38 +DDR3 SDRAM,DDR3-1600,1600,0.625,800,1.250,7,8.75,10.63,13.13 +DDR3 SDRAM,DDR3-1600,1600,0.625,800,1.250,6,7.50,9.38,11.88 +DDR3 SDRAM,DDR3-1866,1866,0.536,933,1.071,10,10.71,12.32,14.46 +DDR3 SDRAM,DDR3-1866,1866,0.536,933,1.071,9,9.64,11.25,13.39 +DDR3 SDRAM,DDR3-1866,1866,0.536,933,1.071,8,8.57,10.18,12.32 +DDR3 SDRAM,DDR3-2000,2000,0.500,1000,1.000,9,9.00,10.50,12.50 +DDR3 SDRAM,DDR3-2133,2133,0.469,1066,0.938,12,11.25,12.66,14.53 +DDR3 SDRAM,DDR3-2133,2133,0.469,1066,0.938,11,10.31,11.72,13.59 +DDR3 SDRAM,DDR3-2133,2133,0.469,1066,0.938,10,9.38,10.78,12.66 +DDR3 SDRAM,DDR3-2133,2133,0.469,1066,0.938,9,8.44,9.84,11.72 +DDR3 SDRAM,DDR3-2133,2133,0.469,1066,0.938,8,7.50,8.91,10.78 +DDR3 SDRAM,DDR3-2133,2133,0.469,1066,0.938,7,6.56,7.97,9.84 +DDR3 SDRAM,DDR3-2200,2200,0.455,1100,0.909,7,6.36,7.73,9.55 +DDR3 SDRAM,DDR3-2400,2400,0.417,1200,0.833,13,10.83,12.08,13.75 +DDR3 SDRAM,DDR3-2400,2400,0.417,1200,0.833,12,10.00,11.25,12.92 +DDR3 SDRAM,DDR3-2400,2400,0.417,1200,0.833,11,9.17,10.42,12.08 +DDR3 SDRAM,DDR3-2400,2400,0.417,1200,0.833,10,8.33,9.58,11.25 +DDR3 SDRAM,DDR3-2400,2400,0.417,1200,0.833,9,7.50,8.75,10.42 +DDR3 SDRAM,DDR3-2600,2600,0.385,1300,0.769,11,8.46,9.62,11.15 +DDR3 SDRAM,DDR3-2666,2666,0.375,1333,0.750,15,11.25,12.38,13.88 +DDR3 SDRAM,DDR3-2666,2666,0.375,1333,0.750,13,9.75,10.88,12.38 +DDR3 SDRAM,DDR3-2666,2666,0.375,1333,0.750,12,9.00,10.13,11.63 +DDR3 SDRAM,DDR3-2666,2666,0.375,1333,0.750,11,8.25,9.38,10.88 +DDR3 SDRAM,DDR3-2800,2800,0.357,1400,0.714,16,11.43,12.50,13.93 +DDR3 SDRAM,DDR3-2800,2800,0.357,1400,0.714,12,8.57,9.64,11.07 +DDR3 SDRAM,DDR3-2800,2800,0.357,1400,0.714,11,7.86,8.93,10.36 +DDR3 SDRAM,DDR3-2933,2933,0.341,1466,0.682,12,8.18,9.20,10.57 +DDR3 SDRAM,DDR3-3000,3000,0.333,1500,0.667,12,8.00,9.00,10.33 +DDR3 SDRAM,DDR3-3100,3100,0.323,1550,0.645,12,7.74,8.71,10.00 +DDR3 SDRAM,DDR3-3200,3200,0.313,1600,0.625,16,10.00,10.94,12.19 +DDR3 SDRAM,DDR3-3300,3300,0.303,1650,0.606,16,9.70,10.61,11.82 +DDR4 SDRAM,DDR4-1600,1600,0.625,800,1.250,12,15.00,16.88,19.38 +DDR4 SDRAM,DDR4-1600,1600,0.625,800,1.250,11,13.75,15.63,18.13 +DDR4 SDRAM,DDR4-1600,1600,0.625,800,1.250,10,12.50,14.38,16.88 +DDR4 SDRAM,DDR4-1866,1866,0.536,933,1.071,14,15.00,16.61,18.75 +DDR4 SDRAM,DDR4-1866,1866,0.536,933,1.071,13,13.93,15.54,17.68 +DDR4 SDRAM,DDR4-1866,1866,0.536,933,1.071,12,12.86,14.46,16.61 +DDR4 SDRAM,DDR4-2133,2133,0.469,1066,0.938,16,15.00,16.41,18.28 +DDR4 SDRAM,DDR4-2133,2133,0.469,1066,0.938,15,14.06,15.47,17.34 +DDR4 SDRAM,DDR4-2133,2133,0.469,1066,0.938,14,13.13,14.53,16.41 +DDR4 SDRAM,DDR4-2400,2400,0.417,1200,0.833,17,14.17,15.42,17.08 +DDR4 SDRAM,DDR4-2400,2400,0.417,1200,0.833,16,13.33,14.58,16.25 +DDR4 SDRAM,DDR4-2400,2400,0.417,1200,0.833,15,12.50,13.75,15.42 +DDR4 SDRAM,DDR4-2666,2666,0.375,1333,0.750,19,14.25,15.38,16.88 +DDR4 SDRAM,DDR4-2666,2666,0.375,1333,0.750,17,12.75,13.88,15.38 +DDR4 SDRAM,DDR4-2666,2666,0.375,1333,0.750,16,12.00,13.13,14.63 +DDR4 SDRAM,DDR4-2666,2666,0.375,1333,0.750,15,11.25,12.38,13.88 +DDR4 SDRAM,DDR4-2666,2666,0.375,1333,0.750,13,9.75,10.88,12.38 +DDR4 SDRAM,DDR4-2800,2800,0.357,1400,0.714,17,12.14,13.21,14.64 +DDR4 SDRAM,DDR4-2800,2800,0.357,1400,0.714,16,11.43,12.50,13.93 +DDR4 SDRAM,DDR4-2800,2800,0.357,1400,0.714,15,10.71,11.79,13.21 +DDR4 SDRAM,DDR4-2800,2800,0.357,1400,0.714,14,10.00,11.07,12.50 +DDR4 SDRAM,DDR4-3000,3000,0.333,1500,0.667,17,11.33,12.33,13.67 +DDR4 SDRAM,DDR4-3000,3000,0.333,1500,0.667,16,10.67,11.67,13.00 +DDR4 SDRAM,DDR4-3000,3000,0.333,1500,0.667,15,10.00,11.00,12.33 +DDR4 SDRAM,DDR4-3000,3000,0.333,1500,0.667,14,9.33,10.33,11.67 +DDR4 SDRAM,DDR4-3200,3200,0.313,1600,0.625,16,10.00,10.94,12.19 +DDR4 SDRAM,DDR4-3200,3200,0.313,1600,0.625,15,9.38,10.31,11.56 +DDR4 SDRAM,DDR4-3200,3200,0.313,1600,0.625,14,8.75,9.69,10.94 +DDR4 SDRAM,DDR4-3300,3300,0.303,1650,0.606,16,9.70,10.61,11.82 +DDR4 SDRAM,DDR4-3333,3333,0.300,1666,0.600,16,9.60,10.50,11.70 +DDR4 SDRAM,DDR4-3400,3400,0.294,1700,0.588,16,9.41,10.29,11.47 +DDR4 SDRAM,DDR4-3466,3466,0.288,1733,0.577,18,10.38,11.25,12.40 +DDR4 SDRAM,DDR4-3466,3466,0.288,1733,0.577,17,9.81,10.67,11.83 +DDR4 SDRAM,DDR4-3466,3466,0.288,1733,0.577,16,9.23,10.10,11.25 +DDR4 SDRAM,DDR4-3600,3600,0.278,1800,0.556,19,10.56,11.39,12.50 +DDR4 SDRAM,DDR4-3600,3600,0.278,1800,0.556,18,10.00,10.83,11.94 +DDR4 SDRAM,DDR4-3600,3600,0.278,1800,0.556,17,9.44,10.28,11.39 +DDR4 SDRAM,DDR4-3600,3600,0.278,1800,0.556,16,8.89,9.72,10.83 +DDR4 SDRAM,DDR4-3600,3600,0.278,1800,0.556,15,8.33,9.17,10.28 +DDR4 SDRAM,DDR4-3600,3600,0.278,1800,0.556,14,7.78,8.61,9.72 +DDR4 SDRAM,DDR4-3733,3733,0.268,1866,0.536,17,9.11,9.91,10.98 +DDR4 SDRAM,DDR4-3866,3866,0.259,1933,0.517,18,9.31,10.09,11.12 +DDR4 SDRAM,DDR4-4000,4000,0.250,2000,0.500,19,9.50,10.25,11.25 +DDR4 SDRAM,DDR4-4000,4000,0.250,2000,0.500,18,9.00,9.75,10.75 +DDR4 SDRAM,DDR4-4000,4000,0.250,2000,0.500,17,8.50,9.25,10.25 +DDR4 SDRAM,DDR4-4000,4000,0.250,2000,0.500,16,8.00,8.75,9.75 +DDR4 SDRAM,DDR4-4133,4133,0.242,2066,0.484,19,9.19,9.92,10.89 +DDR4 SDRAM,DDR4-4200,4200,0.238,2100,0.476,19,9.05,9.76,10.71 +DDR4 SDRAM,DDR4-4266,4266,0.234,2133,0.469,19,8.91,9.61,10.55 +DDR4 SDRAM,DDR4-4266,4266,0.234,2133,0.469,18,8.44,9.14,10.08 +DDR4 SDRAM,DDR4-4266,4266,0.234,2133,0.469,17,7.97,8.67,9.61 +DDR4 SDRAM,DDR4-4266,4266,0.234,2133,0.469,16,7.50,8.20,9.14 +DDR4 SDRAM,DDR4-4400,4400,0.227,2200,0.454,19,8.64,9.32,10.23 +DDR4 SDRAM,DDR4-4400,4400,0.227,2200,0.454,18,8.18,8.86,9.77 +DDR4 SDRAM,DDR4-4400,4400,0.227,2200,0.454,17,7.73,8.41,9.32 +DDR4 SDRAM,DDR4-4600,4600,0.217,2300,0.435,19,8.26,8.91,9.78 +DDR4 SDRAM,DDR4-4600,4600,0.217,2300,0.435,18,7.82,8.48,9.35 +DDR4 SDRAM,DDR4-4800,4800,0.208,2400,0.417,20,8.33,8.96,9.79 +DDR4 SDRAM,DDR4-4800,4800,0.208,2400,0.417,19,7.92,8.54,9.38 +DDR5 SDRAM,DDR5-4800,4800,0.208,2400,0.417,40,16.67,17.29,18.13 +DDR5 SDRAM,DDR5-4800,4800,0.208,2400,0.417,38,15.83,16.46,17.29 +DDR5 SDRAM,DDR5-4800,4800,0.208,2400,0.417,36,15.00,15.63,16.46 +DDR5 SDRAM,DDR5-4800,4800,0.208,2400,0.417,34,14.17,14.79,15.63 +DDR5 SDRAM,DDR5-5200,5200,0.192,2600,0.385,40,15.38,15.96,16.73 +DDR5 SDRAM,DDR5-5200,5200,0.192,2600,0.385,38,14.62,15.19,15.96 +DDR5 SDRAM,DDR5-5200,5200,0.192,2600,0.385,36,13.85,14.42,15.19 +DDR5 SDRAM,DDR5-5200,5200,0.192,2600,0.385,34,13.08,13.65,14.42 +DDR5 SDRAM,DDR5-5600,5600,0.179,2800,0.357,40,14.29,14.82,15.54 +DDR5 SDRAM,DDR5-5600,5600,0.179,2800,0.357,38,13.57,14.11,14.82 +DDR5 SDRAM,DDR5-5600,5600,0.179,2800,0.357,36,12.86,13.39,14.11 +DDR5 SDRAM,DDR5-5600,5600,0.179,2800,0.357,34,12.14,12.68,13.39 +DDR5 SDRAM,DDR5-5600,5600,0.179,2800,0.357,30,10.71,11.25,11.96 +DDR5 SDRAM,DDR5-6000,6000,0.167,3000,0.333,40,13.33,13.83,14.50 +DDR5 SDRAM,DDR5-6000,6000,0.167,3000,0.333,38,12.67,13.17,13.83 +DDR5 SDRAM,DDR5-6000,6000,0.167,3000,0.333,36,12.00,12.50,13.17 +DDR5 SDRAM,DDR5-6000,6000,0.167,3000,0.333,32,10.67,11.17,11.83 +DDR5 SDRAM,DDR5-6000,6000,0.167,3000,0.333,30,10.00,10.50,11.17 +DDR5 SDRAM,DDR5-6200,6200,0.161,3100,0.323,40,12.90,13.39,14.03 +DDR5 SDRAM,DDR5-6200,6200,0.161,3100,0.323,38,12.26,12.74,13.39 +DDR5 SDRAM,DDR5-6200,6200,0.161,3100,0.323,36,11.61,12.10,12.74 +DDR5 SDRAM,DDR5-6400,6400,0.156,3200,0.313,40,12.50,12.97,13.59 +DDR5 SDRAM,DDR5-6400,6400,0.156,3200,0.313,38,11.88,12.34,12.97 +DDR5 SDRAM,DDR5-6400,6400,0.156,3200,0.313,36,11.25,11.72,12.34 +DDR5 SDRAM,DDR5-6400,6400,0.156,3200,0.313,34,10.63,11.09,11.72 +DDR5 SDRAM,DDR5-6400,6400,0.156,3200,0.313,32,10.00,10.47,11.09 +DDR5 SDRAM,DDR5-6600,6600,0.152,3300,0.303,34,10.30,10.76,11.36 diff --git a/architecture/memory.py b/architecture/memory.py new file mode 100644 index 0000000..5dc36cc --- /dev/null +++ b/architecture/memory.py @@ -0,0 +1,101 @@ +# RAM clock rate and transfer rate data from Wikipedia +# https://en.wikipedia.org/wiki/DDR_SDRAM +# Table data extracted with: https://wikitable2csv.ggor.de/ +import numpy as np +import pandas +import matplotlib +from matplotlib import pyplot as plt +plt.style.use('ggplot') +matplotlib.rcParams['font.size'] = 12 +matplotlib.rcParams['font.family'] = ['Exo 2', 'sans-serif'] + + +data = pandas.read_csv('memory.csv') +#data = data.sort_values('Memory clock (MHz)') +_types = list(data['Type']) +_transfers = list(data['Data rate (MT/s)']) +_cycle_times = list(data['Cycle time (ns)']) +_latencies = list(data['Eighth word (ns)']) + +# remove redundant data +types = [] +transfers = [] +cycle_times = [] +latencies = [] +for idx, typ in enumerate(_types): + # just select the first occurence of this type + if typ in types: + continue + # filter DDR4 inferior to DDR4-3333 + prefix = 'DDR4-' + if typ.startswith(prefix) and int(typ.removeprefix(prefix)) < 3333: + continue + types.append(typ) + transfers.append(_transfers[idx]) + cycle_times.append(_cycle_times[idx]) + latencies.append(_latencies[idx]) + +# transform transfers from MT/s to GB/s +transfers = np.array(transfers, dtype='float64')*8/1024 +plt.figure(figsize=(8.5,7.5)) +plt.title('Memory Bandwidth [GB/s] (1995-2023)') +# my laptop first +me = types.index('DDR5-5200') +plt.plot(range(len(types)), transfers, 'o') +plt.plot(me, transfers[me], 'o') +plt.xticks(range(len(types))[::3], types[::3], rotation=30, ha='right') +yticks = range(0,56) +ylabels = [] +for t in yticks: + if not t%5: + ylabels.append(str(t)) + else: + ylabels.append('') +plt.yticks(yticks, ylabels) +plt.ylabel('GB/s') +plt.tick_params(axis='y', which='both', reset=True, labelright=True, right=True) +plt.savefig('memory_bandwidth.svg') + +plt.figure(figsize=(8.5,7.5)) +plt.title('Memory Cycle Time [ns] (1995-2023)') +# my laptop first +me = types.index('DDR5-5200') +plt.semilogy(range(len(types)), cycle_times, 'o') +plt.semilogy(me, cycle_times[me], 'o') +plt.xticks(range(len(types))[::3], types[::3], rotation=30, ha='right') +plt.ylim(0.1, 11) +line = np.arange(0,10).astype('float64') +yticks = list(line[1:]*0.1)+list(line[1:])+list(line[1:2]*10) +ylabels = [] +for value in yticks: + if value in (0.1, 0.5, 1., 1.5, 5., 10.): + ylabels.append(f'{value} ns') + else: + ylabels.append('') +plt.yticks(yticks, ylabels) +plt.tick_params(axis='y', which='both', reset=True, labelright=True, right=True) +plt.savefig('memory_clock.svg') + +# transform transfers from MT/s to GB/s +plt.figure(figsize=(8.5,7.5)) +plt.title('Memory Latency [ns] (1998-2023)') +# my laptop first +me = types.index('DDR5-5200') +mel = latencies[me] +y = latencies[2:] +x = types[2:] +plt.plot(range(len(x)), y, 'o') +plt.plot(me, mel, 'o') +plt.xticks(range(len(x))[::3], x[::3], rotation=30, ha='right') +plt.ylim(8,40) +yticks = range(8,41) +ylabels = [] +for t in yticks: + if not t%5: + ylabels.append(str(t)+' ns') + else: + ylabels.append('') +plt.yticks(yticks, ylabels) +plt.tick_params(axis='y', which='both', reset=True, labelright=True, right=True) +plt.savefig('memory_latency.svg') + diff --git a/architecture/memory_bandwidth.svg b/architecture/memory_bandwidth.svg new file mode 100644 index 0000000..9d579a6 --- /dev/null +++ b/architecture/memory_bandwidth.svg @@ -0,0 +1,2563 @@ + + + + + + + + 2024-08-16T18:39:22.726694 + image/svg+xml + + + Matplotlib v3.8.3, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/architecture/memory_clock.svg b/architecture/memory_clock.svg new file mode 100644 index 0000000..1330e40 --- /dev/null +++ b/architecture/memory_clock.svg @@ -0,0 +1,1734 @@ + + + + + + + + 2024-08-16T18:39:22.912183 + image/svg+xml + + + Matplotlib v3.8.3, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/architecture/memory_latency.svg b/architecture/memory_latency.svg new file mode 100644 index 0000000..ff91f61 --- /dev/null +++ b/architecture/memory_latency.svg @@ -0,0 +1,1944 @@ + + + + + + + + 2024-08-16T18:39:23.040253 + image/svg+xml + + + Matplotlib v3.8.3, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/architecture/storage.csv b/architecture/storage.csv new file mode 100644 index 0000000..14e86f0 --- /dev/null +++ b/architecture/storage.csv @@ -0,0 +1,49 @@ +Teletype Model 33 paper tape,10 B/s,1963 +Single Density 8-inch FM Floppy Disk Controller (160 KB),31 KB/s,1973 +C2N Commodore Datasette 1530 cassette tape interface,15 B/s,1977 +Apple II cassette tape interface,200 B/s,1977 +TRS-80 Model 1 Level 1 BASIC cassette tape interface,32 B/s,1977 +Single Density 5.25-inch FM Floppy Disk Controller (180 KB),15.5 KB/s,1978 +MFM hard disk,0.625 MB/s,1980 +Amstrad CPC tape,250 B/s,1984 +High Density MFM Floppy Disk Controller (1.2 MB/1.44 MB),31 KB/s,1984 +ATA PIO Mode 0,3.3 MB/s,1986 +SCSI (Narrow SCSI) (5 MHz),5 MB/s,1986 +CD Controller (1×),0.146 MB/s,1988 +Serial Storage Architecture SSA,80 MB/s,1990 +ATA PIO Mode 1,5.2 MB/s,1994 +ATA PIO Mode 2,8.3 MB/s,1994 +ATA PIO Mode 3,11.1 MB/s,1996 +ATA PIO Mode 4,16.7 MB/s,1996 +Fibre Channel 1GFC (1.0625 GHz),103.23 MB/s,1997 +Ultra DMA ATA 33,33 MB/s,1998 +Ultra DMA ATA 66,66.7 MB/s,2000 +Fibre Channel 2GFC (2.125 GHz),206.5 MB/s,2001 +Ultra DMA ATA 100,100 MB/s,2002 +SATA revision 1.0,150 MB/s,2003 +iSCSI over 10GbE,1.239 GB/s,2004 +iSCSI over Fast Ethernet,11.9 MB/s,2004 +iSCSI over gigabit Ethernet- jumbo frames,123.9 MB/s,2004 +Serial Attached SCSI (SAS) SAS-1,300 MB/s,2004 +SATA Revision 2.0,300 MB/s,2004 +Fibre Channel 4GFC (4.25 GHz),413 MB/s,2004 +Ultra DMA ATA 133,133 MB/s,2005 +Fibre Channel 8GFC (8.50 GHz),826 MB/s,2005 +iSCSI over InfiniBand 4×,4 GB/s,2007 +SATA Revision 3.0,600 MB/s,2008 +FCoE over 10GbE,1.206 GB/s,2009 +AoE over 10GbE,1.242 GB/s,2009 +AoE over Fast Ethernet,11.9 MB/s,2009 +AoE over gigabit Ethernet- jumbo frames,124.2 MB/s,2009 +Serial Attached SCSI (SAS) SAS-2,600 MB/s,2009 +FCoE over 100G Ethernet,12.064 GB/s,2010 +iSCSI over 100G Ethernet,12.392 GB/s,2010 +Fibre Channel 16GFC (14.025 GHz),1.652 GB/s,2011 +Serial Attached SCSI (SAS) SAS-3,1.2 GB/s,2013 +SATA Express,2 GB/s,2013 +NVMe over M.2 or U.2 (using PCI Express 3.0 ×4 link),3.938 GB/s,2013 +Fibre Channel 32GFC (28.05 GHz),3.303 GB/s,2016 +Serial Attached SCSI (SAS) SAS-4,2.4 GB/s,2017 +NVMe over M.2 or U.2 (using PCI Express 4.0 ×4 link),7.876 GB/s,2017 +UFS (version 3.0),2.9 GB/s,2018 +NVMe over M.2- U.2- U.3 or EDSFF (using PCI Express 5.0 ×4 link),15.754 GB/s,2019 diff --git a/architecture/storage.py b/architecture/storage.py new file mode 100644 index 0000000..ddfacdb --- /dev/null +++ b/architecture/storage.py @@ -0,0 +1,54 @@ +# Storage interfaces rates from +# https://en.wikipedia.org/wiki/List_of_interface_bit_rates#Storage +# Table data extracted with: https://wikitable2csv.ggor.de/ +import numpy as np +import matplotlib +from matplotlib import pyplot as plt +plt.style.use('ggplot') +matplotlib.rcParams['font.size'] = 12 +matplotlib.rcParams['font.family'] = ['Exo 2', 'sans-serif'] + +data = open('storage.csv', 'rt') +# remove units and rescale everything to MB/s +b_to_mb = 1/(1024*1024) +kb_to_mb = 1/1024 +gb_to_mb = 1024 +rescaled = [] +for line in data: + typ, rate, year = line.split(',') + value, unit = rate.split() + value = float(value) + if unit == 'B/s': + value = value*b_to_mb + elif unit == 'KB/s': + value = value*kb_to_mb + elif unit == 'MB/s': + pass + elif unit == 'GB/s': + value = value*gb_to_mb + else: + raise ValueError(f'Unit not understood! {unit}') + rescaled.append((int(year), value)) + +dtype = [('year', np.float64), ('speed', np.float64)] +rescaled = np.array(rescaled, dtype=dtype) +# sort first by year and then by value +rescaled.sort(order=['year', 'speed']) + +# plot the thing +plt.figure(figsize=(8.5,7.5)) +plt.semilogy(rescaled['year'], rescaled['speed'], 'o') +# my laptop here +plt.semilogy([2023], [6585], 'o') +plt.grid(None) +plt.grid(which='both', axis='y') +plt.grid(which='both', axis='x') +plt.ylim(b_to_mb, 100*gb_to_mb) +plt.xlim(1960, 2025) +years = range(1960,2026,5) +plt.xticks(years, years, rotation=45, ha='center') +plt.yticks([b_to_mb, kb_to_mb, 1, 10, 100, gb_to_mb, 10*gb_to_mb, 100*gb_to_mb], + ['1 B/s', '1 KB/s', '1 MB/s', '10 MB/s', '100 MB/s', '1 GB/s', '10 GB/s', '100 GB/s']) +plt.tick_params(labeltop=False, labelright=True, top=True, right=True) +plt.title('Storage (read) speed') +plt.savefig('storage.svg') diff --git a/architecture/storage.svg b/architecture/storage.svg new file mode 100644 index 0000000..19be256 --- /dev/null +++ b/architecture/storage.svg @@ -0,0 +1,1526 @@ + + + + + + + + 2024-03-09T19:54:25.352366 + image/svg+xml + + + Matplotlib v3.6.3, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/architecture/topology.png b/architecture/topology.png new file mode 100644 index 0000000000000000000000000000000000000000..0ac05a9670e3b7c189c314cfa0f8c15361ff8c1b GIT binary patch literal 31325 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 /proc/sys/kernel/randomize_va_space + ``` + - Set scaling governor to performance for CPU0: + ```bash + echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + ``` + - Reserve CPU 0 fro our benchmark, i.e. kick out (almost) all other processes + ```bash + cset shield --cpu 0 --kthread=on + ``` + - If you are on INTEL and CPU0 is part of a SMT-pair (hyperthreading), disable the peer + ```bash + echo 0 > /sys/devices/system/cpu/cpu1/online + ``` + - Disable turbo mode on INTEL: + ```bash + echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo + ``` + - Run the configuration script for lmbench. Select only the `HARDWARE` set of benchmarks and set the maximum amount of memory to something like 1024MB + ```bash + cd /usr/lib/lmbench/scripts + # the following command will create the configuration file /usr/lib/lmbench/bin/x86_64-linux-gnu/CONFIG. + cset shield --exec -- ./config-run + # run the benchmark + cset shield --exec -- /usr/bin/lmbench-run + # results are in /var/lib/lmbench/results/x86_64-linux-gnu/ + ``` + + diff --git a/benchmark_low_level/bandwidth-t14.svg b/benchmark_low_level/bandwidth-t14.svg new file mode 100644 index 0000000..cc99a94 --- /dev/null +++ b/benchmark_low_level/bandwidth-t14.svg @@ -0,0 +1,1719 @@ + + + + + + + + 2024-08-16T18:58:33.224677 + image/svg+xml + + + Matplotlib v3.8.3, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/benchmark_low_level/latency-t14.svg b/benchmark_low_level/latency-t14.svg new file mode 100644 index 0000000..469c577 --- /dev/null +++ b/benchmark_low_level/latency-t14.svg @@ -0,0 +1,1801 @@ + + + + + + + + 2024-08-16T18:58:33.332734 + image/svg+xml + + + Matplotlib v3.8.3, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/benchmark_low_level/parse_results.py b/benchmark_low_level/parse_results.py new file mode 100644 index 0000000..0096a98 --- /dev/null +++ b/benchmark_low_level/parse_results.py @@ -0,0 +1,39 @@ +import os +import sys + +# prefix is something like results_ +results = sys.argv[1] +name = results.removeprefix('results_') +types = {} +results = open(results, 'rt') + + +for idx, line in enumerate(results): + if line.startswith('Memory read bandwidth'): + types['bwr'] = idx + elif line.startswith('Memory write bandwidth'): + types['bww'] = idx + elif line.startswith('Memory load latency'): + types['lseq'] = idx + elif line.startswith('Random load latency'): + types['lrnd'] = idx + else: + pass + +for typ, idx in types.items(): + csv = open(f'{name}-{typ}.csv', 'wt') + results.seek(0) + for count, line in enumerate(results): + if count <= idx: + continue + if line.startswith('"'): + continue + try: + val1, val2 = line.split(" ") + except ValueError: + # we are at the end of the section + csv.close() + break + csv.write(f'{val1},{val2}') + + diff --git a/benchmark_low_level/plot.py b/benchmark_low_level/plot.py new file mode 100644 index 0000000..621f00d --- /dev/null +++ b/benchmark_low_level/plot.py @@ -0,0 +1,115 @@ +import os +import sys +import numpy as np +import matplotlib +import itertools +from matplotlib import pyplot as plt +plt.style.use('ggplot') +matplotlib.rcParams['font.size'] = 12 + +name = 't14' + +caches = (48*1024, 1280*1024, 12*1024*1024) + +def get_labels(x): + xlabels = [] + for value in x: + b = int(2**value) + if b < 1024: + xlabels.append(f'{b}B') + elif b < 1048576: + xlabels.append(f'{b//1024}K') + elif b < 1073741824: + xlabels.append(f'{b//1024//1024}M') + else: + xlabels.append(f'{b//1024//1024//1024}G') + return xlabels + + +# manually set ticks, to disable, set ticks = None + +line = np.linspace(1, 10, 9, endpoint=False) +yticks = list(line)+list(line*10)+list(line[:2]*100) + +ylabels = {1 : '1 ns', 5 : '5 ns', 10 : '10 ns', 50 : '50 ns', 100: '100 ns'} +ticks = {'l': (yticks, [ylabels[i] if i in ylabels else '' for i in yticks]), + 'bw': (range(5,46,5), [f'{i} GB/s' for i in range(5,46,5)]), + } + +# manually set limits, to disable set to ylim = None + +ylim = {'l' : (1, 200), + 'bw' : (5,45), + } + +for type_ in ('bw', 'l'): + if type_ == 'bw': + suffix = ('r', 'w') + ylabel = '' + title = f'Memory Bandwidth ({name}) [GB/s]' + legend1, legend2 = 'read', 'write' + pic = f'bandwidth-{name}.svg' + plt_func = plt.plot + else: + suffix = ('seq', 'rnd') + ylabel = '' + title = f'Memory Latency ({name}) [ns]' + legend1, legend2 = 'sequential access', 'random access' + pic = f'latency-{name}.svg' + plt_func = plt.semilogy + + + data1 = np.loadtxt(f'{name}-{type_}{suffix[0]}.csv', delimiter=',') + data2 = np.loadtxt(f'{name}-{type_}{suffix[1]}.csv', delimiter=',') + + # convert to bytes and then to the corresponding power of two + + if type_ == 'bw': + x1 = np.log2(data1[:,0]*1024*1024).round() + y1 = data1[:,1]/1024 + x2 = np.log2(data2[:,0]*1024*1024).round() + y2 = data2[:,1]/1024 + else: + x1 = np.log2(data1[::2,0]*1024*1024).round() + y1 = data1[::2,1] + x2 = np.log2(data2[::2,0]*1024*1024).round() + y2 = data2[::2,1] + ylabels = None + + + xlabel = 'block size' + xlabels = get_labels(x1) + + plt.figure(figsize=(8.5,7.5)) + if type_ == 'l': + # plot two empy plots so we advance the color cyle (bad trick) + _ = plt_func([],[]) + _ = plt_func([],[]) + p1, = plt_func(x1, y1, 'o') + plt.ylabel(ylabel) + plt.xlabel(xlabel) + p2, = plt_func(x2, y2, 'o') + if ylim and type_ in ylim: + plt.ylim(*ylim[type_]) + plt.xticks(x1, xlabels, rotation=60) + if ticks and type_ in ticks: + plt.yticks(*ticks[type_]) + plt.legend((p1, p2), (legend1, legend2)) + if ylim and type_ in ylim: + miny, maxy = ylim[type_] + else: + miny = min(y1.min(), y2.min()) + maxy = max(y1.max(), y2.max()) + # caches + for idx, cache in enumerate(caches): + level = idx + 1 + size = np.log2(cache) + plt.plot((size, size), (miny, maxy), + color = 'darkblue', alpha=0.4) + plt.text(size-1, 2*miny, f'L{level}\n⟵', + color='darkblue', verticalalignment='top') + + plt.title(title) + plt.savefig(pic) + + diff --git a/benchmark_low_level/results_t14 b/benchmark_low_level/results_t14 new file mode 100644 index 0000000..dcca71f --- /dev/null +++ b/benchmark_low_level/results_t14 @@ -0,0 +1,485 @@ +[lmbench3.0 results for Linux multivac 6.10.3-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.10.3-1 (2024-08-04) x86_64 GNU/Linux] +[LMBENCH_VER: 3.0-a9] +[BENCHMARK_HARDWARE: YES] +[BENCHMARK_OS: NO] +[ALL: 512 1k 2k 4k 8k 16k 32k 64k 128k 256k 512k 1m 2m 4m 8m 16m 32m 64m 128m 256m 512m 1024m] +[DISKS: ] +[DISK_DESC: ] +[ENOUGH: 5000] +[FAST: ] +[FASTMEM: NO] +[FILE: /var/tmp/lmbench/XXX] +[FSDIR: /var/tmp/lmbench] +[HALF: 512 1k 2k 4k 8k 16k 32k 64k 128k 256k 512k 1m 2m 4m 8m 16m 32m 64m 128m 256m 512m] +[INFO: INFO.multivac] +[LINE_SIZE: ] +[LOOP_O: 0.00000000] +[MB: 1024] +[MHZ: 1296 MHz, 0.7716 nanosec clock] +[MOTHERBOARD: ] +[NETWORKS: ] +[PROCESSORS: 11] +[REMOTE: ] +[SLOWFS: YES] +[OS: x86_64-linux-gnu] +[SYNC_MAX: 1] +[LMBENCH_SCHED: DEFAULT] +[TIMING_O: 0] +[LMBENCH VERSION: 3.0-20240810] +[USER: root] +[HOSTNAME: multivac] +[NODENAME: multivac] +[SYSNAME: Linux] +[PROCESSOR: unknown] +[MACHINE: x86_64] +[RELEASE: 6.10.3-amd64] +[VERSION: #1 SMP PREEMPT_DYNAMIC Debian 6.10.3-1 (2024-08-04)] +[Sat Aug 10 04:20:43 PM CEST 2024] +[ 16:20:43 up 1:18, 4 users, load average: 0.37, 0.94, 1.05] +[net: Kernel Interface table] +[net: Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg] +[net: eth0 1500 0 0 0 0 0 0 0 0 BMU] +[if: eth0: flags=4099 mtu 1500] +[if: ether fc:5c:ee:4d:b5:eb txqueuelen 1000 (Ethernet)] +[if: RX packets 0 bytes 0 (0.0 B)] +[if: RX errors 0 dropped 0 overruns 0 frame 0] +[if: TX packets 0 bytes 0 (0.0 B)] +[if: TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0] +[if: device interrupt 16 memory 0xbc300000-bc320000] +[if: ] +[net: eth1 1500 34948 0 2352 0 7773 0 0 0 BMRU] +[if: eth1: flags=4163 mtu 1500] +[if: inet 192.168.111.103 netmask 255.255.255.0 broadcast 192.168.111.255] +[if: inet6 fe80::44e3:4a35:5130:3045 prefixlen 64 scopeid 0x20] +[if: inet6 2003:ef:2f2e:c900:e437:85c7:3d97:f353 prefixlen 64 scopeid 0x0] +[if: ether b0:4f:13:ef:1a:3e txqueuelen 1000 (Ethernet)] +[if: RX packets 34948 bytes 33936985 (32.3 MiB)] +[if: RX errors 0 dropped 2352 overruns 0 frame 0] +[if: TX packets 7773 bytes 1213416 (1.1 MiB)] +[if: TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0] +[if: ] +[net: lo 65536 95 0 0 0 95 0 0 0 LRU] +[if: lo: flags=73 mtu 65536] +[if: inet 127.0.0.1 netmask 255.0.0.0] +[if: inet6 ::1 prefixlen 128 scopeid 0x10] +[if: loop txqueuelen 1000 (Local Loopback)] +[if: RX packets 95 bytes 5588 (5.4 KiB)] +[if: RX errors 0 dropped 0 overruns 0 frame 0] +[if: TX packets 95 bytes 5588 (5.4 KiB)] +[if: TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0] +[if: ] +[mount: sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)] +[mount: proc on /proc type proc (rw,relatime)] +[mount: udev on /dev type devtmpfs (rw,nosuid,relatime,size=16228560k,nr_inodes=4057140,mode=755,inode64)] +[mount: devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)] +[mount: tmpfs on /run type tmpfs (rw,nosuid,nodev,noexec,relatime,size=3251140k,mode=755,inode64)] +[mount: /dev/mapper/CRYPT-ROOT on / type ext4 (rw,relatime,errors=remount-ro)] +[mount: securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)] +[mount: tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,inode64)] +[mount: cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate,memory_recursiveprot)] +[mount: pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)] +[mount: efivarfs on /sys/firmware/efi/efivars type efivarfs (rw,nosuid,nodev,noexec,relatime)] +[mount: bpf on /sys/fs/bpf type bpf (rw,nosuid,nodev,noexec,relatime,mode=700)] +[mount: systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=39,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=67)] +[mount: hugetlbfs on /dev/hugepages type hugetlbfs (rw,nosuid,nodev,relatime,pagesize=2M)] +[mount: none on /sys/kernel/debug type debugfs (rw,nosuid,nodev,noexec,relatime)] +[mount: mqueue on /dev/mqueue type mqueue (rw,nosuid,nodev,noexec,relatime)] +[mount: tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k,inode64)] +[mount: tracefs on /sys/kernel/tracing type tracefs (rw,nosuid,nodev,noexec,relatime)] +[mount: tmpfs on /run/credentials/systemd-journald.service type tmpfs (ro,nosuid,nodev,noexec,relatime,nosymfollow,size=1024k,nr_inodes=1024,mode=700,inode64,noswap)] +[mount: tmpfs on /run/credentials/systemd-udev-load-credentials.service type tmpfs (ro,nosuid,nodev,noexec,relatime,nosymfollow,size=1024k,nr_inodes=1024,mode=700,inode64,noswap)] +[mount: tmpfs on /run/credentials/systemd-tmpfiles-setup-dev-early.service type tmpfs (ro,nosuid,nodev,noexec,relatime,nosymfollow,size=1024k,nr_inodes=1024,mode=700,inode64,noswap)] +[mount: configfs on /sys/kernel/config type configfs (rw,nosuid,nodev,noexec,relatime)] +[mount: fusectl on /sys/fs/fuse/connections type fusectl (rw,nosuid,nodev,noexec,relatime)] +[mount: tmpfs on /run/credentials/systemd-sysctl.service type tmpfs (ro,nosuid,nodev,noexec,relatime,nosymfollow,size=1024k,nr_inodes=1024,mode=700,inode64,noswap)] +[mount: tmpfs on /run/credentials/systemd-tmpfiles-setup-dev.service type tmpfs (ro,nosuid,nodev,noexec,relatime,nosymfollow,size=1024k,nr_inodes=1024,mode=700,inode64,noswap)] +[mount: tmpfs on /tmp type tmpfs (rw,nosuid,nodev,relatime,size=16777216k,inode64)] +[mount: tmpfs on /run/credentials/systemd-tmpfiles-setup.service type tmpfs (ro,nosuid,nodev,noexec,relatime,nosymfollow,size=1024k,nr_inodes=1024,mode=700,inode64,noswap)] +[mount: binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,nosuid,nodev,noexec,relatime)] +[mount: sunrpc on /run/rpc_pipefs type rpc_pipefs (rw,relatime)] +[mount: tmpfs on /run/user/1002 type tmpfs (rw,nosuid,nodev,relatime,size=3251136k,nr_inodes=812784,mode=700,uid=1002,gid=100,inode64)] +[mount: tmpfs on /run/credentials/getty@tty1.service type tmpfs (ro,nosuid,nodev,noexec,relatime,nosymfollow,size=1024k,nr_inodes=1024,mode=700,inode64,noswap)] +[mount: tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,size=3251136k,nr_inodes=812784,mode=700,inode64)] +[mount: none on /cpusets type cgroup (rw,relatime,cpuset,noprefix,release_agent=/sbin/cpuset_release_agent)] +integer bit: 0.54 nanoseconds +integer add: 0.77 nanoseconds +integer div: 8.49 nanoseconds +integer mod: 12.58 nanoseconds +int64 bit: 0.52 nanoseconds +uint64 add: 0.77 nanoseconds +int64 div: 11.58 nanoseconds +int64 mod: 14.91 nanoseconds +float add: 1.54 nanoseconds +float mul: 3.09 nanoseconds +float div: 8.49 nanoseconds +double add: 1.54 nanoseconds +double mul: 3.09 nanoseconds +double div: 10.80 nanoseconds +float bogomflops: 1.16 nanoseconds +double bogomflops: 1.54 nanoseconds +integer bit parallelism: 2.77 +integer add parallelism: 2.73 +integer div parallelism: 1.83 +integer mod parallelism: 2.83 +int64 bit parallelism: 2.49 +int64 add parallelism: 2.60 +int64 div parallelism: 1.50 +int64 mod parallelism: 1.90 +float add parallelism: 4.00 +float mul parallelism: 8.00 +float div parallelism: 3.67 +double add parallelism: 4.00 +double mul parallelism: 8.00 +double div parallelism: 3.50 +unable to register (XACT_PROG, XACT_VERS, udp). +: RPC: Unable to receive + +"libc bcopy unaligned +0.000512 41652.95 +0.001024 47761.25 +0.002048 50233.88 +0.004096 55637.27 +0.008192 64524.03 +0.016384 67719.30 +0.032768 18212.36 +0.065536 18407.52 +0.131072 18473.55 +0.262144 18475.00 +0.524288 14642.79 +1.05 8957.30 +2.10 8208.03 +4.19 8208.03 +8.39 9645.77 +16.78 7631.79 +33.55 7129.38 +67.11 6951.41 +134.22 6900.65 +268.44 6848.89 +536.87 6861.76 + +"libc bcopy aligned +0.000512 44106.76 +0.001024 49354.68 +0.002048 51472.69 +0.004096 55925.21 +0.008192 63828.24 +0.016384 66379.51 +0.032768 18202.45 +0.065536 18336.03 +0.131072 18457.77 +0.262144 18327.76 +0.524288 15715.46 +1.05 8922.33 +2.10 8367.89 +4.19 8343.10 +8.39 9679.16 +16.78 7632.95 +33.55 7179.72 +67.11 6990.51 +134.22 6911.31 +268.44 6892.15 +536.87 6891.97 + +Memory bzero bandwidth +0.000512 73586.23 +0.001024 78019.46 +0.002048 80349.42 +0.004096 74573.30 +0.008192 78524.11 +0.016384 80567.79 +0.032768 81708.84 +0.065536 21219.16 +0.131072 21299.79 +0.262144 21333.96 +0.524288 21347.23 +1.05 19382.88 +2.10 12829.98 +4.19 12611.10 +8.39 12606.02 +16.78 10399.64 +33.55 9537.93 +67.11 9140.41 +134.22 9007.90 +268.44 8931.77 +536.87 8918.57 +1073.74 8908.13 + +"unrolled bcopy unaligned +0.000512 10357.22 +0.001024 10363.21 +0.002048 10356.95 +0.004096 10357.76 +0.008192 10343.49 +0.016384 10351.27 +0.032768 7899.27 +0.065536 7893.76 +0.131072 7873.84 +0.262144 7832.99 +0.524288 7281.78 +1.05 6503.77 +2.10 6418.22 +4.19 6461.47 +8.39 5194.99 +16.78 4722.65 +33.55 4639.72 +67.11 4606.91 +134.22 4593.51 +268.44 4596.34 +536.87 4587.27 + +"unrolled partial bcopy unaligned +0.000512 41402.69 +0.001024 41453.86 +0.002048 41452.30 +0.004096 41425.45 +0.008192 41418.12 +0.016384 41333.58 +0.032768 18957.19 +0.065536 18955.39 +0.131072 18962.49 +0.262144 18969.69 +0.524288 14659.04 +1.05 8844.77 +2.10 8192.00 +4.19 8206.57 +8.39 6326.25 +16.78 5801.25 +33.55 5644.14 +67.11 5609.70 +134.22 5600.81 +268.44 5589.38 +536.87 5591.24 + +Memory read bandwidth +0.000512 29201.61 +0.001024 29294.55 +0.002048 29363.12 +0.004096 29433.86 +0.008192 29442.59 +0.016384 29285.40 +0.032768 29336.30 +0.065536 27978.05 +0.131072 28392.59 +0.262144 28408.05 +0.524288 28424.68 +1.05 28385.92 +2.10 28385.92 +4.19 28395.43 +8.39 28334.85 +16.78 26342.45 +33.55 23489.28 +67.11 22195.75 +134.22 21644.53 +268.44 21620.12 +536.87 21505.80 +1073.74 21526.50 + +Memory partial read bandwidth +0.000512 58916.90 +0.001024 59661.44 +0.002048 61203.68 +0.004096 58783.21 +0.008192 61320.45 +0.016384 61266.70 +0.032768 60940.09 +0.065536 30488.23 +0.131072 30517.76 +0.262144 30516.13 +0.524288 29627.83 +1.05 24662.86 +2.10 17384.93 +4.19 17168.66 +8.39 16915.36 +16.78 13189.64 +33.55 11584.48 +67.11 11024.95 +134.22 10892.53 +268.44 10824.45 +536.87 10781.84 +1073.74 10759.80 + +Memory write bandwidth +0.000512 41405.52 +0.001024 41396.47 +0.002048 41429.93 +0.004096 41445.34 +0.008192 41401.00 +0.016384 41398.70 +0.032768 41426.50 +0.065536 21381.05 +0.131072 21388.82 +0.262144 21374.31 +0.524288 21370.17 +1.05 18114.68 +2.10 12417.83 +4.19 12264.05 +8.39 12250.61 +16.78 9679.16 +33.55 8978.98 +67.11 8703.00 +134.22 8589.38 +268.44 8520.41 +536.87 8543.59 +1073.74 8544.75 + +Memory partial write bandwidth +0.000512 41406.05 +0.001024 41431.27 +0.002048 41414.90 +0.004096 41425.45 +0.008192 41431.04 +0.016384 41453.60 +0.032768 41366.48 +0.065536 21392.21 +0.131072 21364.37 +0.262144 21381.05 +0.524288 21366.56 +1.05 18649.81 +2.10 12411.48 +4.19 12249.30 +8.39 12300.01 +16.78 9693.61 +33.55 9024.86 +67.11 8771.25 +134.22 8618.06 +268.44 8557.89 +536.87 8549.44 +1073.74 8543.32 + +Memory partial read/write bandwidth +0.000512 20712.63 +0.001024 20714.87 +0.002048 20703.88 +0.004096 20718.77 +0.008192 20719.28 +0.016384 20715.33 +0.032768 20722.87 +0.065536 20693.70 +0.131072 20690.58 +0.262144 20638.28 +0.524288 20665.37 +1.05 18846.95 +2.10 12887.53 +4.19 12613.33 +8.39 12576.62 +16.78 10295.93 +33.55 9551.50 +67.11 9191.74 +134.22 9087.19 +268.44 9035.49 +536.87 9018.95 +1073.74 9023.04 + +Usage: tlb [-c] [-L ] [-M len[K|M]] [-W ] [-N ] + +Memory load parallelism +Usage: par_mem [-L ] [-M len[K|M]] [-W ] [-N ] + +STREAM copy latency: 1.48 nanoseconds +STREAM copy bandwidth: 10781.39 MB/sec +STREAM scale latency: 1.50 nanoseconds +STREAM scale bandwidth: 10668.00 MB/sec +STREAM add latency: 2.11 nanoseconds +STREAM add bandwidth: 11374.24 MB/sec +STREAM triad latency: 2.13 nanoseconds +STREAM triad bandwidth: 11264.63 MB/sec +STREAM2 fill latency: 0.89 nanoseconds +STREAM2 fill bandwidth: 8955.12 MB/sec +STREAM2 copy latency: 1.48 nanoseconds +STREAM2 copy bandwidth: 10775.60 MB/sec +STREAM2 daxpy latency: 1.81 nanoseconds +STREAM2 daxpy bandwidth: 13256.52 MB/sec +STREAM2 sum latency: 1.60 nanoseconds +STREAM2 sum bandwidth: 5006.72 MB/sec + +Memory load latency +"stride=128 +0.00049 3.859 +0.00098 3.859 +0.00195 3.859 +0.00293 3.859 +0.00391 3.861 +0.00586 3.858 +0.00781 3.858 +0.01172 3.859 +0.01562 3.859 +0.02344 3.859 +0.03125 3.859 +0.04688 3.861 +0.06250 11.580 +0.09375 11.576 +0.12500 11.577 +0.18750 11.583 +0.25000 11.577 +0.37500 11.576 +0.50000 11.579 +0.75000 11.578 +1.00000 11.590 +1.50000 13.543 +2.00000 13.936 +3.00000 13.999 +4.00000 13.996 +6.00000 13.997 +8.00000 14.002 +12.00000 14.976 +16.00000 19.832 +24.00000 20.880 +32.00000 21.339 +48.00000 21.899 +64.00000 22.023 +96.00000 22.156 +128.00000 22.213 +192.00000 22.283 +256.00000 22.320 +384.00000 22.306 +512.00000 22.325 +768.00000 22.345 +1024.00000 22.361 + +Random load latency +"stride=16 +0.00049 3.859 +0.00098 3.858 +0.00195 3.858 +0.00293 3.858 +0.00391 3.858 +0.00586 3.858 +0.00781 3.859 +0.01172 3.858 +0.01562 3.858 +0.02344 3.859 +0.03125 3.859 +0.04688 3.864 +0.06250 11.575 +0.09375 14.276 +0.12500 15.462 +0.18750 16.079 +0.25000 16.646 +0.37500 16.373 +0.50000 16.352 +0.75000 18.529 +1.00000 18.245 +1.50000 42.351 +2.00000 55.350 +3.00000 61.011 +4.00000 62.143 +6.00000 63.587 +8.00000 65.259 +12.00000 84.563 +16.00000 107.165 +24.00000 131.898 +32.00000 141.864 +48.00000 150.654 +64.00000 156.245 +96.00000 162.950 +128.00000 167.497 +192.00000 170.394 +256.00000 171.779 +384.00000 172.858 +512.00000 172.877 +768.00000 173.626 +1024.00000 173.702 + + + +[Sat Aug 10 04:39:13 PM CEST 2024] diff --git a/benchmark_low_level/t14-bwr.csv b/benchmark_low_level/t14-bwr.csv new file mode 100644 index 0000000..8de9220 --- /dev/null +++ b/benchmark_low_level/t14-bwr.csv @@ -0,0 +1,22 @@ +0.000512,29201.61 +0.001024,29294.55 +0.002048,29363.12 +0.004096,29433.86 +0.008192,29442.59 +0.016384,29285.40 +0.032768,29336.30 +0.065536,27978.05 +0.131072,28392.59 +0.262144,28408.05 +0.524288,28424.68 +1.05,28385.92 +2.10,28385.92 +4.19,28395.43 +8.39,28334.85 +16.78,26342.45 +33.55,23489.28 +67.11,22195.75 +134.22,21644.53 +268.44,21620.12 +536.87,21505.80 +1073.74,21526.50 diff --git a/benchmark_low_level/t14-bww.csv b/benchmark_low_level/t14-bww.csv new file mode 100644 index 0000000..c8859ca --- /dev/null +++ b/benchmark_low_level/t14-bww.csv @@ -0,0 +1,22 @@ +0.000512,41405.52 +0.001024,41396.47 +0.002048,41429.93 +0.004096,41445.34 +0.008192,41401.00 +0.016384,41398.70 +0.032768,41426.50 +0.065536,21381.05 +0.131072,21388.82 +0.262144,21374.31 +0.524288,21370.17 +1.05,18114.68 +2.10,12417.83 +4.19,12264.05 +8.39,12250.61 +16.78,9679.16 +33.55,8978.98 +67.11,8703.00 +134.22,8589.38 +268.44,8520.41 +536.87,8543.59 +1073.74,8544.75 diff --git a/benchmark_low_level/t14-lrnd.csv b/benchmark_low_level/t14-lrnd.csv new file mode 100644 index 0000000..dd3d5b5 --- /dev/null +++ b/benchmark_low_level/t14-lrnd.csv @@ -0,0 +1,41 @@ +0.00049,3.859 +0.00098,3.858 +0.00195,3.858 +0.00293,3.858 +0.00391,3.858 +0.00586,3.858 +0.00781,3.859 +0.01172,3.858 +0.01562,3.858 +0.02344,3.859 +0.03125,3.859 +0.04688,3.864 +0.06250,11.575 +0.09375,14.276 +0.12500,15.462 +0.18750,16.079 +0.25000,16.646 +0.37500,16.373 +0.50000,16.352 +0.75000,18.529 +1.00000,18.245 +1.50000,42.351 +2.00000,55.350 +3.00000,61.011 +4.00000,62.143 +6.00000,63.587 +8.00000,65.259 +12.00000,84.563 +16.00000,107.165 +24.00000,131.898 +32.00000,141.864 +48.00000,150.654 +64.00000,156.245 +96.00000,162.950 +128.00000,167.497 +192.00000,170.394 +256.00000,171.779 +384.00000,172.858 +512.00000,172.877 +768.00000,173.626 +1024.00000,173.702 diff --git a/benchmark_low_level/t14-lseq.csv b/benchmark_low_level/t14-lseq.csv new file mode 100644 index 0000000..1d0919e --- /dev/null +++ b/benchmark_low_level/t14-lseq.csv @@ -0,0 +1,41 @@ +0.00049,3.859 +0.00098,3.859 +0.00195,3.859 +0.00293,3.859 +0.00391,3.861 +0.00586,3.858 +0.00781,3.858 +0.01172,3.859 +0.01562,3.859 +0.02344,3.859 +0.03125,3.859 +0.04688,3.861 +0.06250,11.580 +0.09375,11.576 +0.12500,11.577 +0.18750,11.583 +0.25000,11.577 +0.37500,11.576 +0.50000,11.579 +0.75000,11.578 +1.00000,11.590 +1.50000,13.543 +2.00000,13.936 +3.00000,13.999 +4.00000,13.996 +6.00000,13.997 +8.00000,14.002 +12.00000,14.976 +16.00000,19.832 +24.00000,20.880 +32.00000,21.339 +48.00000,21.899 +64.00000,22.023 +96.00000,22.156 +128.00000,22.213 +192.00000,22.283 +256.00000,22.320 +384.00000,22.306 +512.00000,22.325 +768.00000,22.345 +1024.00000,22.361 diff --git a/benchmark_python/README.md b/benchmark_python/README.md new file mode 100644 index 0000000..51aa31e --- /dev/null +++ b/benchmark_python/README.md @@ -0,0 +1,29 @@ +## Benchmark +![](loading-timings-ns128.svg) +![](loading-slowdown-ns128.svg) + +## Benchmarks details + + - Create in memory a list of `N=128` one dimensional numpy arrays of length `L` starting from `L=2` up to `L=2^22=4_194_304` in steps of powers of two. + - Given that each item of the array is of type `float64`, i.e. 8 bytes, the size of the arrays goes from `16B` to `32M` + - The total memory required is at least `128 × 32M × 2 = 8G` + - Load the whole list in one big numpy array of size `N`x`L` (*good*) and `L`x`N` (*bad*). The corresponding loops are: + ```python + # good loop (store each time series on a different row) + for row, time_series in enumerate(collection): + ts[row, :] = time_series + ``` + + ```python + # bad loop (store each time series on a different column) + for column, time_series in enumerate(collection): + ts[:, column] = time_series + ``` + - Time the *bad* and the *good* loop + - Plot the timings for the *good* and the *bad* loop as a function of `L` + - Plot `slowdown = time_bad/time_good` as a function of `L` + +## Scripts + + - [Benchmark script](bench.py) and [measurements](results_ns128) + - [Plotting script](bench_plot.py) diff --git a/benchmark_python/bench.py b/benchmark_python/bench.py new file mode 100755 index 0000000..232cad4 --- /dev/null +++ b/benchmark_python/bench.py @@ -0,0 +1,68 @@ +#!/usr/bin/python3 +# Commands and ideas from: https://llvm.org/docs/Benchmarking.html +# we assume that CPU 0 and 1 are together in an intel SMT-pair (hyperthreading) +# - Disable address space randomization: +# echo 0 > /proc/sys/kernel/randomize_va_space +# - Set scaling governor to performance for CPU 0 +# echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor +# - Reserve CPU 0 fro our benchmark +# cset shield --cpu 0 --kthread=on +# - Disable the SMT-peer of CPU 0, i.e. CPU 1 +# echo 0 > /sys/devices/system/cpu/cpu1/online +# - Disable turbo mode (works only on Intel): +# echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo +# - Run with +# cset shield --exec -- ./bench.py +# + +# To use the full power of the CPU, skip all the other steps and +# just run with +# taskset --cpu-list 0 ./bench.py +import os +import sys +import timeit + +import numpy as np + +NSERIES = (128, ) +POWS = 2**np.arange(2, 23, dtype=int) + +# Size of one dimensional numpy arrays of dtype 'float64': +# A fix overhead of 96 bytes plus a variable size: +# (n_items x 8 bytes) + +def load_data_row(x, time_series): + """Store one time series per raw""" + for row, ts in enumerate(time_series): + x[row,:] = ts + return x + +def load_data_column(x, time_series): + """Store one time series per column""" + for column, ts in enumerate(time_series): + x[:, column] = ts + return x + +if __name__ == '__main__': + for nseries in NSERIES: + print(30*'=', '\n', nseries) + float_items = POWS + byte_sizes = (float_items*8) #+ 96 + bads = [] + goods = [] + results = open(f'results_ns{nseries}', 'wt') + for i, len_one_series in enumerate(float_items): + time_series = np.zeros((nseries, len_one_series), dtype='float64') + x = np.empty((nseries, len_one_series), dtype='float64') + print('Timing good...') + good = min(timeit.repeat(lambda: load_data_row(x, time_series), number=5))/5 + x = np.empty((len_one_series, nseries), dtype='float64') + print('Timing bad...') + bad = min(timeit.repeat(lambda: load_data_column(x, time_series), number=5))/5 + print(f'{len_one_series}/{POWS[-1]} {good} {bad}') + bads.append(bad) + goods.append(good) + results.write(f'{byte_sizes[i]} {good} {bad}\n') + results.flush() + results.close() + diff --git a/benchmark_python/bench_plot.py b/benchmark_python/bench_plot.py new file mode 100755 index 0000000..15e184d --- /dev/null +++ b/benchmark_python/bench_plot.py @@ -0,0 +1,106 @@ +#!/usr/bin/python3 +import os +import sys + +import numpy as np +import matplotlib +from matplotlib import pyplot as plt +plt.style.use('ggplot') +matplotlib.rcParams['font.size'] = 12 +matplotlib.rcParams['font.family'] = ['Exo 2', 'sans-serif'] + +from bench import NSERIES + +def get_xlabels(x): + xlabels = [] + for value in x: + b = int(2**value) + if b < 1024: + xlabels.append(f'{b}B') + elif b < 1048576: + xlabels.append(f'{b//1024}K') + elif b < 1073741824: + xlabels.append(f'{b//1024//1024}M') + else: + xlabels.append(f'{b//1024//1024//1024}G') + return xlabels + +def get_ylabels(y): + ylabels = [] + for power in y: + power = int(np.log10(power)) + if power < -6: + value = 10**(power+9) + ylabels.append(f'{value}ns') + elif power < -3: + value = 10**(power+6) + ylabels.append(f'{value}μs') + elif power < 0: + value = 10**(power+3) + ylabels.append(f'{value}ms') + else: + value = 10**power + ylabels.append(f'{value}s') + return ylabels + +prefix = 'results_ns' +maxy = 1e1 +miny = 1e-6 +for results in (f for f in os.listdir('.') if f.startswith(prefix)): + num_series = results.removeprefix(prefix) + + sizes, bads, goods = [], [], [] + with open(results, 'r') as fh: + for line in fh: + size, good, bad = line.split() + bads.append(float(bad)) + goods.append(float(good)) + sizes.append(int(size)) + goods = np.array(goods) + bads = np.array(bads) + x = np.log2(sizes) + y1 = goods + y2 = bads + # generate two plots: good+bad timings and slowdown plot + plt.figure(figsize=(8.5, 7.5)) + p1, = plt.semilogy(x, y1, 'o') + p2, = plt.semilogy(x, y2, 'o') + plt.xlabel('size of one time series') + plt.ylabel('loading time') + plt.grid(None) + plt.grid(which='both', axis='both') + plt.xticks(x, get_xlabels(x), rotation=60) + plt.ylim(miny, maxy) + yticks = np.logspace(int(np.log10(miny)), + int(np.log10(maxy)), + num=int(np.log10(maxy/miny))+1) + plt.yticks(yticks, get_ylabels(yticks)) + plt.tick_params(axis='y', labelright=True, right=True) + lgd = plt.legend((p1, p2), ('good', 'bad'), frameon=True) + lgd.get_frame().set_edgecolor('black') + plt.title(f'Timings\n{num_series} time series') + plt.savefig(f'loading-timings-ns{num_series}.svg') + + # slowdown plot + plt.figure(figsize=(8.5, 7.5)) + p1, = plt.plot(x, bads/goods, 'og', label=r'$\frac{\mathrm{time\_bad}}{\mathrm{time\_good}}$') + plt.xlabel('size of one time series') + plt.ylabel('slowdown') + plt.grid(None) + plt.grid(which='both', axis='both') + plt.xticks(x, get_xlabels(x), rotation=60) + plt.tick_params(axis='y', which='both', reset=True, labelright=True, right=True) + lmaxy = (bads/goods).max() + yticks = range(0, int(np.ceil(lmaxy))+1) + yticks_labels = [] + for i in yticks: + if not i%5: + yticks_labels.append(str(i)) + else: + yticks_labels.append('') + plt.yticks(yticks, yticks_labels) + #plt.legend((p1,), ('time_bad/time_good',)) + lgd = plt.legend(frameon=True, fontsize=16) + lgd.get_frame().set_edgecolor('black') + plt.title(f'Slowdown\n{num_series} time series') + plt.savefig(f'loading-slowdown-ns{num_series}.svg') diff --git a/benchmark_python/loading-slowdown-ns128.svg b/benchmark_python/loading-slowdown-ns128.svg new file mode 100644 index 0000000..5f24215 --- /dev/null +++ b/benchmark_python/loading-slowdown-ns128.svg @@ -0,0 +1,2360 @@ + + + + + + + + 2024-08-05T16:24:04.379937 + image/svg+xml + + + Matplotlib v3.8.3, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/benchmark_python/loading-timings-ns128.svg b/benchmark_python/loading-timings-ns128.svg new file mode 100644 index 0000000..68d0234 --- /dev/null +++ b/benchmark_python/loading-timings-ns128.svg @@ -0,0 +1,2348 @@ + + + + + + + + 2024-08-05T16:24:04.166622 + image/svg+xml + + + Matplotlib v3.8.3, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/benchmark_python/results_ns128 b/benchmark_python/results_ns128 new file mode 100644 index 0000000..234cca4 --- /dev/null +++ b/benchmark_python/results_ns128 @@ -0,0 +1,21 @@ +32 3.624640012276359e-05 3.637080008047633e-05 +64 3.6378599907038735e-05 3.75960000383202e-05 +128 3.5999999818159266e-05 3.659379981399979e-05 +256 3.647979974630289e-05 3.8503600080730394e-05 +512 3.6466600067797114e-05 4.5260399929247797e-05 +1024 3.694279985211324e-05 6.389359987224452e-05 +2048 3.771199990296736e-05 0.00010158859986404422 +4096 3.9600799937034026e-05 0.00017927039989444892 +8192 4.872880017501302e-05 0.00035019980023207606 +16384 0.0001166390000435058 0.0009462125999561977 +32768 0.00020714380007120782 0.0018965299997944385 +65536 0.00041309340012958274 0.003799166400131071 +131072 0.0009548601999995298 0.013321203599844011 +262144 0.002020656999957282 0.03497214360031649 +524288 0.004090915599954314 0.07588242120000359 +1048576 0.008223017600175807 0.15468134920010926 +2097152 0.01658681320004689 0.3135109368002304 +4194304 0.03318921820027754 0.629940018599882 +8388608 0.031091862199900788 1.2587968365998676 +16777216 0.0620614524003031 2.517574722000063 +33554432 0.125347068800329 5.040295794399936 diff --git a/exercise-my-solution.ipynb b/exercise-my-solution.ipynb new file mode 100644 index 0000000..6d5861f --- /dev/null +++ b/exercise-my-solution.ipynb @@ -0,0 +1,241 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-04T09:40:28.904Z", + "iopub.status.busy": "2024-03-04T09:40:28.896Z", + "iopub.status.idle": "2024-03-04T09:40:28.978Z", + "shell.execute_reply": "2024-03-04T09:40:28.967Z" + } + }, + "outputs": [], + "source": [ + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-04T10:02:39.062Z", + "iopub.status.busy": "2024-03-04T10:02:39.057Z", + "iopub.status.idle": "2024-03-04T10:02:39.068Z", + "shell.execute_reply": "2024-03-04T10:02:39.071Z" + } + }, + "outputs": [], + "source": [ + "n_series = 32\n", + "len_one_series = 5*2**20\n", + "time_series = np.random.rand(n_series, len_one_series)\n", + "gap = 16*2**10" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-04T10:02:41.027Z", + "iopub.status.busy": "2024-03-04T10:02:41.020Z", + "iopub.status.idle": "2024-03-04T10:02:41.036Z", + "shell.execute_reply": "2024-03-04T10:02:41.040Z" + }, + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Size of one time series: 40 M\n", + "Size of collection: 1280 M\n", + "Gap size: 128 K\n", + "Gapped series size: 2 K\n" + ] + } + ], + "source": [ + "print(f'Size of one time series: {int(time_series[0].nbytes/2**20)} M')\n", + "print(f'Size of collection: {int(time_series.nbytes/2**20)} M')\n", + "print(f'Gap size: {int(gap*8/2**10)} K')\n", + "print(f'Gapped series size: {int(time_series[0, ::gap].nbytes/2**10)} K')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following function implements an approximation of a power series of every `gap` value in our time series.\n", + "\n", + "If we define one time series of length `N` to be:\n", + "\n", + "$[x_0, x_1, x_2, ..., x_N]$,\n", + "\n", + "then the \"gapped\" series with `gap=g` is:\n", + "\n", + "$[x_0, x_g, x_{2g}, ..., x_{N/g}]$,\n", + "\n", + "where $N/g$ is the number of gaps.\n", + "\n", + "The approximation of the power series up to power `30` for our \"gapped\" series is defined as:\n", + "\n", + "$$\\mathbf{P} = \\sum_{p=0}^{30} \\sum_i x_i^{p} = \\sum_i x_i^0 + \\sum_i x_i^1 + \\sum_i x_i^2 + ... + \\sum_i x_i^{30} $$\n", + "\n", + "where $i \\in [0, g, 2g, ..., N/g]$" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-04T10:06:08.461Z", + "iopub.status.busy": "2024-03-04T10:06:08.459Z", + "iopub.status.idle": "2024-03-04T10:06:08.466Z", + "shell.execute_reply": "2024-03-04T10:06:08.468Z" + } + }, + "outputs": [], + "source": [ + "# compute an approximation of a power series for a collection of gapped timeseries\n", + "def power(time_series, P, gap):\n", + " for row in range(time_series.shape[0]):\n", + " for pwr in range(30):\n", + " P[row] += (time_series[row, ::gap]**pwr).sum()\n", + " return P\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Challenge\n", + "- Can you improve on the above implementation of the `power` function?\n", + "- Change the following `power_improved` function and see what you can do\n", + "- **Remember**: you can't change any other cell in this notebook!" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-04T10:06:08.461Z", + "iopub.status.busy": "2024-03-04T10:06:08.459Z", + "iopub.status.idle": "2024-03-04T10:06:08.466Z", + "shell.execute_reply": "2024-03-04T10:06:08.468Z" + } + }, + "outputs": [], + "source": [ + "def power_improved(time_series, P, gap):\n", + " y = time_series[:,::gap].copy()\n", + " for row in range(time_series.shape[0]):\n", + " for pwr in range(30):\n", + " P[row] += (y[row, :]**pwr).sum()\n", + " return P" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# verify that they yield the same results\n", + "P = np.zeros(n_series, dtype='float64')\n", + "out1 = power(time_series, P, gap)\n", + "P = np.zeros(n_series, dtype='float64')\n", + "out2 = power_improved(time_series, P, gap)\n", + "np.testing.assert_allclose(out1, out2)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-04T10:06:14.959Z", + "iopub.status.busy": "2024-03-04T10:06:14.956Z", + "iopub.status.idle": "2024-03-04T10:06:17.437Z", + "shell.execute_reply": "2024-03-04T10:06:17.443Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "38.9 ms ± 492 μs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" + ] + } + ], + "source": [ + "P = np.zeros(n_series, dtype='float64')\n", + "%timeit power(time_series, P, gap)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-04T10:06:20.056Z", + "iopub.status.busy": "2024-03-04T10:06:20.053Z", + "iopub.status.idle": "2024-03-04T10:06:21.695Z", + "shell.execute_reply": "2024-03-04T10:06:21.700Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "6.79 ms ± 35.2 μs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n" + ] + } + ], + "source": [ + "P = np.zeros(n_series, dtype='float64')\n", + "%timeit power_improved(time_series, P, gap)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.5" + }, + "nteract": { + "version": "0.28.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/numpy/README.md b/numpy/README.md new file mode 100644 index 0000000..a73b534 --- /dev/null +++ b/numpy/README.md @@ -0,0 +1,31 @@ +# Anatomy of a numpy array +## one dimension, float64 +![1d array](ndarray-memory-layout-1d.svg) + +## two dimensions, square, float64 +![2d array - square](ndarray-memory-layout-2d-square.svg) + +## two dimensions, rectangular, int32 +![2d array - rectangular](ndarray-memory-layout-2d-rectangular.svg) + +## what about Python lists? +![memory layout of a Python list](python-list-memory-layout.svg) + +## interesting attributes of numpy arrays + - `x.data`, `x.data.hex()`, `x.data.format`, `x.tobytes()` + - `x.flags`: + - `OWNDATA` + - `C_CONTIGUOUS` + - `F_CONTIGUOUS` + - more [flags](https://numpy.org/doc/stable/reference/generated/numpy.ndarray.flags.html) + +## If your arrays are bigger than RAM + - [`numpy.memmap`](https://numpy.org/doc/stable/reference/generated/numpy.memmap.html): an array-like + object that maps memory to an array stored on disk, used for accessing small segments of large + files on disk, without reading the entire file into memory. Use with caution! + + - [`HDF5`](https://support.hdfgroup.org/documentation/hdf5/latest/_intro_h_d_f5.html): hierarchical + data format, with aribitrary metadata and multilanguage support + with [`h5py`](https://docs.h5py.org/en/stable/) with an array-lie interface + - other projects, for example [`xarray`](https://docs.xarray.dev/en/stable/) + and [`zarr`](https://zarr.readthedocs.io/en/stable/) diff --git a/numpy/ndarray-memory-layout-1d.svg b/numpy/ndarray-memory-layout-1d.svg new file mode 100644 index 0000000..26e8c2a --- /dev/null +++ b/numpy/ndarray-memory-layout-1d.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/numpy/ndarray-memory-layout-2d-rectangular.svg b/numpy/ndarray-memory-layout-2d-rectangular.svg new file mode 100644 index 0000000..cff7818 --- /dev/null +++ b/numpy/ndarray-memory-layout-2d-rectangular.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/numpy/ndarray-memory-layout-2d-square.svg b/numpy/ndarray-memory-layout-2d-square.svg new file mode 100644 index 0000000..69e08b9 --- /dev/null +++ b/numpy/ndarray-memory-layout-2d-square.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/numpy/python-list-memory-layout.svg b/numpy/python-list-memory-layout.svg new file mode 100644 index 0000000..358c330 --- /dev/null +++ b/numpy/python-list-memory-layout.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/parallel/README.md b/parallel/README.md new file mode 100644 index 0000000..73d4d1d --- /dev/null +++ b/parallel/README.md @@ -0,0 +1,24 @@ +# The dangers and joys of automatic parallelization (like in numpy linear algebra routines) and the use of clusters/schedulers (but also on your laptop) +- Go through the [notebook](../parallel.ipynb) to play around with numpy auto-parallelization, CPU affinity and OpenMP thread pool control + +- Now we want to submit our code to a cluster, or even just running it in parallel on our own laptop: + - run [`overcommit.py`](overcommit.py) while monitoring with htop + - try the [`submit.sh`](submit.sh) script + - see problems with overcomitting + - explain the PSI (Pressure Stalled Information) fields in `htop`. Useful readings: + - https://docs.kernel.org/accounting/psi.html + - https://facebookmicrosites.github.io/psi/docs/overview +- Discuss implications for local and cluster workflows + +# Hands on +- Let's try to make it more quantitative: + - Write a benchmark in the style of [benchmark_python](../benchmark_python/bench.py) + - We want to assess the performance of matrix multiplication as a function of: + - the size of the matrix `N` + - the number of openMP threads `T`, controlled with `threadpoolctl` or by environment variable `OMP_NUM_THREADS` + - the number of processes `P`, controlled by the [`submit.sh`](submit.sh) script or something similar +- The results will of course depend on the particular architecture of the machine on which you are running +- Submit your benchmark, together with some plotting routines, as a PR to this repo! + + + diff --git a/setup/generate_materials.py b/setup/generate_materials.py new file mode 100644 index 0000000..1c8a3b1 --- /dev/null +++ b/setup/generate_materials.py @@ -0,0 +1,37 @@ +MSVG = 'template.svg' +TEMPL = '0xNN' +NREG = 4 +N = 30 + + +import sys +import subprocess + +if N > 255: + print('cannot do it!') + sys.exit() + +addresses = [hex(i).replace("0x", "0x0") for i in range(N//2+1)] + \ + [hex(i) for i in range(N//2+1,N)] + \ + [f'REG{i}' for i in range(NREG)] + +msvg = open(MSVG).read() +delete = [] +to_join = [] +for a in addresses: + print(f'Processing {a}...') + new_svg = a+MSVG + new_svg_pdf = new_svg.replace('.svg', '.pdf') + with open(new_svg, 'wt') as svg: + svg.write(msvg.replace(TEMPL,a)) + delete.extend([new_svg, new_svg_pdf]) + subprocess.run(['inkscape', '--export-filename='+new_svg_pdf, new_svg], capture_output=True) + to_join.append(new_svg_pdf) + +subprocess.run(['pdftk'] + to_join + ['output', 'materials.pdf'], capture_output=True) +subprocess.check_call(['rm'] + delete) + + + + + diff --git a/setup/materials.pdf b/setup/materials.pdf new file mode 100644 index 0000000000000000000000000000000000000000..fdc550077424001351c0f8260d342e1e90dcd2b4 GIT binary patch literal 215911 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[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 q+S(pe4AuZ_#mc76hI + + + + + + + + + + + + + + + 0xNN + 0xNN + + From b2e104b696ba23245e7f53f6dc9d45f81f3121b0 Mon Sep 17 00:00:00 2001 From: Tiziano Zito Date: Fri, 15 Aug 2025 19:29:42 +0200 Subject: [PATCH 2/5] add a big picture scheme for comp arch --- architecture/README.md | 2 ++ architecture/computer_architecture_big_picture.svg | 1 + 2 files changed, 3 insertions(+) create mode 100644 architecture/computer_architecture_big_picture.svg diff --git a/architecture/README.md b/architecture/README.md index c9811a4..f4fc21c 100644 --- a/architecture/README.md +++ b/architecture/README.md @@ -64,6 +64,8 @@ - temporal and spacial locality of data - The gory details about the memory hierarchy: [What Every Programmer Should Know About Memory](https://www.akkadia.org/drepper/cpumemory.pdf) by the notorious Ulrich Drepper +![Computer architecture - big picture](comp_architecture_big_picture.svg) + # …and what about the GPU? ![GPU vs CPU architecture](GPUvsCPU-architecture.png) - A GPU has many (in the order of hundreds) SIMT (single instruction, multiple thread) cores, so called SMs (Streaming Multiprocessors), each one with local L1 and shared L2 caches, and shared RAM (due to to the high parallelism, with huge bandwidth, in the order of ~1TB/s) diff --git a/architecture/computer_architecture_big_picture.svg b/architecture/computer_architecture_big_picture.svg new file mode 100644 index 0000000..9b71c49 --- /dev/null +++ b/architecture/computer_architecture_big_picture.svg @@ -0,0 +1 @@ + \ No newline at end of file From 3dbc354460a0e70b32a77b8e794e0eb02d4db336 Mon Sep 17 00:00:00 2001 From: Tiziano Zito Date: Fri, 15 Aug 2025 19:30:51 +0200 Subject: [PATCH 3/5] rename file --- ...itecture_big_picture.svg => comp_architecture_big_picture.svg} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename architecture/{computer_architecture_big_picture.svg => comp_architecture_big_picture.svg} (100%) diff --git a/architecture/computer_architecture_big_picture.svg b/architecture/comp_architecture_big_picture.svg similarity index 100% rename from architecture/computer_architecture_big_picture.svg rename to architecture/comp_architecture_big_picture.svg From cae320374b88debfe70cc5b4058de4b23f8f1555 Mon Sep 17 00:00:00 2001 From: Tiziano Zito Date: Fri, 15 Aug 2025 19:54:59 +0200 Subject: [PATCH 4/5] add presentation mode for schematics --- ...p_architecture_big_picture_presentation.pdf | Bin 0 -> 125070 bytes ...mp_architecture_schematics_presentation.pdf | Bin 0 -> 217078 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 architecture/comp_architecture_big_picture_presentation.pdf create mode 100644 architecture/comp_architecture_schematics_presentation.pdf diff --git a/architecture/comp_architecture_big_picture_presentation.pdf b/architecture/comp_architecture_big_picture_presentation.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c821bce14f87d8ce4a366c9bc4f800197122450d GIT binary patch literal 125070 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

?} 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�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

gpHyCwILgHBc4j#g-B`D%9v_+afeS4zbgSbN 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 Rhnou#j*?PbK>`u({{ftqomv0@ literal 0 HcmV?d00001 diff --git a/architecture/comp_architecture_schematics_presentation.pdf b/architecture/comp_architecture_schematics_presentation.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8ebea388afef723bd1eb7a16043b81fca858ffa9 GIT binary patch literal 217078 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 Date: Thu, 28 Aug 2025 16:39:03 +0200 Subject: [PATCH 5/5] it is not PCI is memory --- analog_programming.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/analog_programming.md b/analog_programming.md index 3ff3d7f..a91eda6 100644 --- a/analog_programming.md +++ b/analog_programming.md @@ -40,8 +40,8 @@ Present your solution to the general assembly and choose one implementation to t - Everyone who is not a CPU is data: - you'll have an address when you are stored in memory - you'll have a value (the value of the tarot card you hold on your hand): don't let it go! - - when `fetch`-ed by the CPU, you'll take the PCI-bus and go sit on the corresponding register, taking the card with you - - when `push`-ed by the CPU, you'll take the PCI-bus and go sit on the corresponding memory address, taking the card with you + - when `fetch`-ed by the CPU, you'll take the memory-bus and go sit on the corresponding register, taking the card with you + - when `push`-ed by the CPU, you'll take the memory-bus and go sit on the corresponding memory address, taking the card with you - when `sort`-ed, move to the appropriate register, according the semantics of the `sort` instruction defined above ## Run the compiled code!