FiniteVolumeGPU/Figures_Simula.ipynb
2025-03-25 23:25:23 +01:00

598 lines
187 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"\n",
"import numpy as np\n",
"import os\n",
"import json\n",
"import pandas as pd\n",
"from matplotlib import pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"nproc = range(1, 17)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"def speedup(t_serial, t):\n",
" return t_serial/t"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"def read_profiling_files(profile_dir_path=\".\", drop_multinode=False, drop_singlenode=False):\n",
" profiling_data = pd.DataFrame()\n",
"\n",
" json_filenames = [file for file in os.listdir(profile_dir_path) if file.endswith(\"_profiling.json\")]\n",
"\n",
" if(drop_singlenode):\n",
" json_filenames = [file for file in json_filenames if \"1_nodes\" not in file]\n",
"\n",
" if(drop_multinode):\n",
" json_filenames = [file for file in json_filenames if \"1_nodes\" in file]\n",
"\n",
" for json_filename in json_filenames:\n",
" with open(os.path.join(profile_dir_path, json_filename)) as json_file:\n",
" profiling_data = profiling_data.append(json.load(json_file), ignore_index=True)\n",
" profiling_data = profiling_data.sort_values(by=[\"n_processes\"], ignore_index=True)\n",
"\n",
" profiling_data.n_processes = profiling_data.n_processes.astype(int)\n",
" profiling_data = profiling_data.sort_values(by=[\"n_processes\"], ignore_index=True)\n",
"\n",
" return profiling_data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Weak scaling"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"ename": "FileNotFoundError",
"evalue": "[Errno 2] No such file or directory: 'output_dgx-2/weak_scaling/2022-06-23T154025/'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[11], line 3\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# DGX-2\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;66;03m#weak_scaling_profiling_data = read_profiling_files(\"output_dgx-2/weak_scaling/2022-06-09T134809/\")\u001b[39;00m\n\u001b[0;32m----> 3\u001b[0m weak_scaling_profiling_data \u001b[38;5;241m=\u001b[39m \u001b[43mread_profiling_files\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43moutput_dgx-2/weak_scaling/2022-06-23T154025/\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 5\u001b[0m \u001b[38;5;66;03m# HGX\u001b[39;00m\n\u001b[1;32m 6\u001b[0m \u001b[38;5;66;03m#weak_scaling_profiling_data = read_profiling_files(\"output_hgx/weak_scaling/2022-06-16T162931/\")\u001b[39;00m\n\u001b[1;32m 7\u001b[0m \u001b[38;5;66;03m##weak_scaling_profiling_data = read_profiling_files(\"output_hgx/weak_scaling/2022-06-16T170630/\")\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[38;5;66;03m#singlenode_weak_scaling_profiling_data = read_profiling_files(\"output_saga/weak_scaling/2022-06-16T151516/\", drop_multinode=True)\u001b[39;00m\n\u001b[1;32m 11\u001b[0m \u001b[38;5;66;03m#multinode_weak_scaling_profiling_data = read_profiling_files(\"output_saga/weak_scaling/2022-06-16T151516/\", drop_singlenode=True)\u001b[39;00m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28mprint\u001b[39m(weak_scaling_profiling_data)\n",
"Cell \u001b[0;32mIn[10], line 4\u001b[0m, in \u001b[0;36mread_profiling_files\u001b[0;34m(profile_dir_path, drop_multinode, drop_singlenode)\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mread_profiling_files\u001b[39m(profile_dir_path\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m\"\u001b[39m, drop_multinode\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m, drop_singlenode\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m):\n\u001b[1;32m 2\u001b[0m profiling_data \u001b[38;5;241m=\u001b[39m pd\u001b[38;5;241m.\u001b[39mDataFrame()\n\u001b[0;32m----> 4\u001b[0m json_filenames \u001b[38;5;241m=\u001b[39m [file \u001b[38;5;28;01mfor\u001b[39;00m file \u001b[38;5;129;01min\u001b[39;00m \u001b[43mos\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mlistdir\u001b[49m\u001b[43m(\u001b[49m\u001b[43mprofile_dir_path\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mif\u001b[39;00m file\u001b[38;5;241m.\u001b[39mendswith(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m_profiling.json\u001b[39m\u001b[38;5;124m\"\u001b[39m)]\n\u001b[1;32m 6\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m(drop_singlenode):\n\u001b[1;32m 7\u001b[0m json_filenames \u001b[38;5;241m=\u001b[39m [file \u001b[38;5;28;01mfor\u001b[39;00m file \u001b[38;5;129;01min\u001b[39;00m json_filenames \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m1_nodes\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m file]\n",
"\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'output_dgx-2/weak_scaling/2022-06-23T154025/'"
]
}
],
"source": [
"# DGX-2\n",
"#weak_scaling_profiling_data = read_profiling_files(\"output_dgx-2/weak_scaling/2022-06-09T134809/\")\n",
"weak_scaling_profiling_data = read_profiling_files(\"output_dgx-2/weak_scaling/2022-06-23T154025/\")\n",
"\n",
"# HGX\n",
"#weak_scaling_profiling_data = read_profiling_files(\"output_hgx/weak_scaling/2022-06-16T162931/\")\n",
"##weak_scaling_profiling_data = read_profiling_files(\"output_hgx/weak_scaling/2022-06-16T170630/\")\n",
"\n",
"# Saga\n",
"#singlenode_weak_scaling_profiling_data = read_profiling_files(\"output_saga/weak_scaling/2022-06-16T151516/\", drop_multinode=True)\n",
"#multinode_weak_scaling_profiling_data = read_profiling_files(\"output_saga/weak_scaling/2022-06-16T151516/\", drop_singlenode=True)\n",
"\n",
"print(weak_scaling_profiling_data)\n",
"#print(singlenode_weak_scaling_profiling_data)\n",
"#print(multinode_weak_scaling_profiling_data)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Strong scaling"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def amdahls_speedup(parallel_share, nproc):\n",
" serial_share = 1.0 - parallel_share\n",
" return [1.0 / (serial_share + parallel_share / float(n)) for n in nproc]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def gustafsons_speedup(parallel_share, nproc):\n",
" serial_share = 1.0 - parallel_share\n",
" return [serial_share + parallel_share * float(n) for n in nproc]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" t_init t_total outfile \\\n",
"0 15.227155 189.004926 /work/martinls/232634/ShallowWaterGPU/mpi_out_... \n",
"1 12.726498 145.335962 /work/martinls/232635/ShallowWaterGPU/mpi_out_... \n",
"2 11.482033 123.139408 /work/martinls/232636/ShallowWaterGPU/mpi_out_... \n",
"3 10.548483 100.839853 /work/martinls/232637/ShallowWaterGPU/mpi_out_... \n",
"4 10.746949 95.866956 /work/martinls/232638/ShallowWaterGPU/mpi_out_... \n",
"5 10.345715 87.113081 /work/martinls/232639/ShallowWaterGPU/mpi_out_... \n",
"6 9.915406 75.785243 /work/martinls/232640/ShallowWaterGPU/mpi_out_... \n",
"7 10.107682 69.963608 /work/martinls/232641/ShallowWaterGPU/mpi_out_... \n",
"8 10.620777 66.039795 /work/martinls/232642/ShallowWaterGPU/mpi_out_... \n",
"9 11.305829 63.000684 /work/martinls/232643/ShallowWaterGPU/mpi_out_... \n",
"10 11.614343 60.330283 /work/martinls/232644/ShallowWaterGPU/mpi_out_... \n",
"11 12.639043 60.506280 /work/martinls/232645/ShallowWaterGPU/mpi_out_... \n",
"12 13.312508 57.034760 /work/martinls/232646/ShallowWaterGPU/mpi_out_... \n",
"\n",
" t_sim_init t_nc_write t_full_step t_mpi_halo_exchange \\\n",
"0 11.414952 118.087399 42.976445 0.0 \n",
"1 8.819334 90.167300 32.226894 0.0 \n",
"2 7.751206 75.901292 26.841162 0.0 \n",
"3 6.980121 58.661561 23.018016 0.0 \n",
"4 6.335883 57.172819 20.371334 0.0 \n",
"5 5.870950 51.546669 18.195306 0.0 \n",
"6 5.579971 41.915547 16.725574 0.0 \n",
"7 5.234274 38.144568 14.960167 0.0 \n",
"8 4.945005 35.074090 13.968068 0.0 \n",
"9 4.773231 32.496020 13.152020 0.0 \n",
"10 4.734492 30.088176 11.919627 0.0 \n",
"11 4.422556 30.348880 11.168828 0.0 \n",
"12 4.536324 26.665879 10.616396 0.0 \n",
"\n",
" t_mpi_halo_exchange_download t_mpi_halo_exchange_upload \\\n",
"0 41.536133 0.042114 \n",
"1 31.025757 0.041748 \n",
"2 25.926025 0.039062 \n",
"3 22.155762 0.040649 \n",
"4 19.375610 0.040161 \n",
"5 17.366577 0.039062 \n",
"6 15.636230 0.040527 \n",
"7 14.279663 0.040649 \n",
"8 13.050293 0.039307 \n",
"9 11.995850 0.039917 \n",
"10 11.195801 0.039429 \n",
"11 10.509277 0.039307 \n",
"12 9.817139 0.040283 \n",
"\n",
" t_mpi_halo_exchange_sendreceive t_mpi_step nx ny dt \\\n",
"0 1.334229 0.025146 45056.0 11264.0 0.000001 \n",
"1 0.792480 0.026306 45056.0 8396.0 0.000001 \n",
"2 0.567139 0.025024 45056.0 6997.0 0.000001 \n",
"3 0.596924 0.025452 45056.0 5997.0 0.000001 \n",
"4 0.803955 0.024841 45056.0 5248.0 0.000001 \n",
"5 0.732422 0.025330 45056.0 4664.0 0.000001 \n",
"6 0.979492 0.026062 45056.0 4198.0 0.000001 \n",
"7 0.487793 0.025635 45056.0 3816.0 0.000001 \n",
"8 0.795654 0.024780 45056.0 3498.0 0.000001 \n",
"9 0.995605 0.025330 45056.0 3229.0 0.000001 \n",
"10 0.691406 0.025452 45056.0 2998.0 0.000001 \n",
"11 0.388672 0.025757 45056.0 2798.0 0.000001 \n",
"12 0.655518 0.025146 45056.0 2624.0 0.000001 \n",
"\n",
" n_time_steps slurm_job_id n_cuda_devices n_processes \\\n",
"0 200.0 232634.0 4 4 \n",
"1 200.0 232635.0 5 5 \n",
"2 200.0 232636.0 6 6 \n",
"3 200.0 232637.0 7 7 \n",
"4 200.0 232638.0 8 8 \n",
"5 200.0 232639.0 9 9 \n",
"6 200.0 232640.0 10 10 \n",
"7 200.0 232641.0 11 11 \n",
"8 200.0 232642.0 12 12 \n",
"9 200.0 232643.0 13 13 \n",
"10 200.0 232644.0 14 14 \n",
"11 200.0 232645.0 15 15 \n",
"12 200.0 232646.0 16 16 \n",
"\n",
" git_hash \\\n",
"0 aa693a9a468e3d591417342d96128d90c9df7884\\n \n",
"1 aa693a9a468e3d591417342d96128d90c9df7884\\n \n",
"2 aa693a9a468e3d591417342d96128d90c9df7884\\n \n",
"3 aa693a9a468e3d591417342d96128d90c9df7884\\n \n",
"4 aa693a9a468e3d591417342d96128d90c9df7884\\n \n",
"5 aa693a9a468e3d591417342d96128d90c9df7884\\n \n",
"6 aa693a9a468e3d591417342d96128d90c9df7884\\n \n",
"7 aa693a9a468e3d591417342d96128d90c9df7884\\n \n",
"8 aa693a9a468e3d591417342d96128d90c9df7884\\n \n",
"9 aa693a9a468e3d591417342d96128d90c9df7884\\n \n",
"10 aa693a9a468e3d591417342d96128d90c9df7884\\n \n",
"11 aa693a9a468e3d591417342d96128d90c9df7884\\n \n",
"12 aa693a9a468e3d591417342d96128d90c9df7884\\n \n",
"\n",
" git_status \n",
"0 M Figures.ipynb\\n M dgx-2_scaling_benchmark.j... \n",
"1 M Figures.ipynb\\n M dgx-2_scaling_benchmark.j... \n",
"2 M Figures.ipynb\\n M dgx-2_scaling_benchmark.j... \n",
"3 M Figures.ipynb\\n M dgx-2_scaling_benchmark.j... \n",
"4 M Figures.ipynb\\n M dgx-2_scaling_benchmark.j... \n",
"5 M Figures.ipynb\\n M dgx-2_scaling_benchmark.j... \n",
"6 M Figures.ipynb\\n M dgx-2_scaling_benchmark.j... \n",
"7 M Figures.ipynb\\n M dgx-2_scaling_benchmark.j... \n",
"8 M Figures.ipynb\\n M dgx-2_scaling_benchmark.j... \n",
"9 M Figures.ipynb\\n M dgx-2_scaling_benchmark.j... \n",
"10 M Figures.ipynb\\n M dgx-2_scaling_benchmark.j... \n",
"11 M Figures.ipynb\\n M dgx-2_scaling_benchmark.j... \n",
"12 M Figures.ipynb\\n M dgx-2_scaling_benchmark.j... \n"
]
}
],
"source": [
"# DGX-2\n",
"#strong_scaling_profiling_data = read_profiling_files(\"output_dgx-2/strong_scaling/2022-06-09T160712/\")\n",
"strong_scaling_profiling_data = read_profiling_files(\"output_dgx-2/strong_scaling/2022-06-23T172838/\")\n",
"\n",
"# HGX\n",
"#strong_scaling_profiling_data = read_profiling_files(\"output_hgx/strong_scaling/2022-06-16T152945/\")\n",
"\n",
"# Saga\n",
"#singlenode_strong_scaling_profiling_data = read_profiling_files(\"output_saga/strong_scaling/2022-06-16T190721/\", drop_multinode=True)\n",
"#multinode_strong_scaling_profiling_data = read_profiling_files(\"output_saga/strong_scaling/2022-06-16T190721/\", drop_singlenode=True)\n",
"\n",
"print(strong_scaling_profiling_data)\n",
"#print(singlenode_strong_scaling_profiling_data)\n",
"#print(multinode_strong_scaling_profiling_data)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Plotting"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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3LhxHHvssURFRVG/fn2uvPJKwOtxsGjRIp566qnM9ykhIYG0tDSuueYamjZtSnR0NC1atOCRRx4hPT09c5sZvRWmTJlCXFwcNWvWZNiwYRw8eDDXbQP07t2bXbt28dlnn+X6nomIFKflG/5i+H+XYamHWFB9HP3X3o399nGowxIRkVBwzgX1ATQBZgN7gX3AXCDer0483kRbY7OURQDzgK14t3FaB9wHxATYRzjwH2CDr+4PwEX5jM95b0tgP//889GF91TzHlm9erFXtmb+kbKlL3plb99ypGzPJq/s0ZbZ13/mNK88ccWRsgUPHL2ffLrqqqtc3759M18//PDDrlq1am7WrFlu9erV7uabb3ZVq1Z1Z5xxRmadMWPGuJYtW7r333/f/f777+7VV191MTExbt68eZl1xo0b5xYvXuzWr1/v3nvvPde4cWP3n//8J3P5Sy+95KpUqZJrbICrW7eue/755926devc77//7hYuXOgAt3379sx669evd4BbunSpc85l1jnppJPcggUL3OrVq13v3r1dq1atXHp6esB97dy50zVq1MjdfffdbvPmzW7z5s3ZtpWxv5deeslFRES4s846yy1btsx99dVXrkGDBu5vf/ub69evn/v+++/dggULXI0aNdyECRMK9J75mzhxomvRokW2sv3797vmzZu7U0891S1atMitXbvWzZ492y1YsMA559ycOXNcRESEe+KJJ9wvv/ziHn/8cRcREeHeeeedbO9rXFyce+WVV9xvv/3m7rzzThcZGekSEhKcc869+eabrmrVqm7evHluw4YNbunSpe6JJ55wzjm3e/dud8opp7hhw4Zlvk+pqakuOTnZ3XXXXe7bb79169evd7NmzXLVq1d306ZNy9zvVVdd5apVq+aGDx/ufv75Z/fhhx+66tWruwceeCDXbWfo2rVrtt+hnAT8WxQphbLklaDn3PLyyCs3F8WPibtdu3s+cMfeMc/96/WVLu2zR5yb2sO5XQklsj8REQm93HJzsG/zhPPGCg/Mo04CfrNOO+dSgXwNonXOpeE1nu8rXJTl3+TJk7n99tu5+GLvNhVTpkzhww8/zFx+4MABJk6cyEcffcRpp50GQNOmTfn222956qmn6Nu3LwB33XVX5jrx8fGMGTOGCRMmMH78+ALFc8kllzB8+PDM1xs2bMj3uuPHj6dnz54A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",
"text/plain": [
"<Figure size 1152x432 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.rcParams['font.size'] = 16\n",
"plt.rcParams['legend.fontsize'] = 14\n",
"plt.rcParams['axes.linewidth'] = 2\n",
"plt.rcParams['lines.linewidth'] = 2\n",
"\n",
"fig, (ax_weak, ax_strong) = plt.subplots(1, 2, figsize=(16,6))\n",
"\n",
"t_total_no_init_or_file_io = weak_scaling_profiling_data[\"t_total\"] \\\n",
" -weak_scaling_profiling_data[\"t_init\"] \\\n",
" -weak_scaling_profiling_data[\"t_nc_write\"] \\\n",
" -weak_scaling_profiling_data[\"t_sim_init\"]\n",
"\n",
"t_total_halo_exchange = weak_scaling_profiling_data[\"t_mpi_halo_exchange_download\"] \\\n",
" +weak_scaling_profiling_data[\"t_mpi_halo_exchange_sendreceive\"] \\\n",
" +weak_scaling_profiling_data[\"t_mpi_halo_exchange_upload\"]\n",
"\n",
"#ax_weak.plot(weak_scaling_profiling_data[\"n_processes\"].to_numpy(dtype=\"int\"), \n",
"# speedup(t_total_no_init_or_file_io[0], t_total_no_init_or_file_io), label=\"Total (no init or file I/O)\")\n",
"\n",
"ax_weak.plot(weak_scaling_profiling_data[\"n_processes\"].to_numpy(dtype=\"int\"), \n",
" speedup(weak_scaling_profiling_data[\"t_full_step\"][0], weak_scaling_profiling_data[\"t_full_step\"]), label=\"Shared-memory run time\", marker=\"o\")\n",
"ax_weak.locator_params(axis=\"x\", nbins=16)\n",
"ax_weak.set_ylim(0.89, 1.01)\n",
"\n",
"\"\"\"\n",
"ax_weak.plot(weak_scaling_profiling_data[\"n_processes\"][0:].to_numpy(dtype=\"int\"), \n",
" speedup(t_total_halo_exchange[0], t_total_halo_exchange[0:]), label=\"Halo exchange (D/E/U)\", linestyle=\"dashed\")\n",
"\n",
"ax_weak.plot(weak_scaling_profiling_data[\"n_processes\"].to_numpy(dtype=\"int\"), \n",
" speedup(weak_scaling_profiling_data[\"t_total\"][0], weak_scaling_profiling_data[\"t_total\"]), label=\"Total\")\n",
"\n",
"ax_weak.plot(weak_scaling_profiling_data[\"n_processes\"].to_numpy(dtype=\"int\"), \n",
" speedup(weak_scaling_profiling_data[\"t_mpi_halo_exchange_sendreceive\"][0], weak_scaling_profiling_data[\"t_mpi_halo_exchange_sendreceive\"]), label=\"MPI send/recv\")\n",
"\n",
"ax_weak.plot(weak_scaling_profiling_data[\"n_processes\"].to_numpy(dtype=\"int\"), \n",
" speedup(weak_scaling_profiling_data[\"t_mpi_halo_exchange_download\"][0], weak_scaling_profiling_data[\"t_mpi_halo_exchange_download\"]), label=\"Download (GPU->CPU)\")\n",
"\n",
"ax_weak.plot(weak_scaling_profiling_data[\"n_processes\"].to_numpy(dtype=\"int\"), \n",
" speedup(weak_scaling_profiling_data[\"t_mpi_halo_exchange_upload\"][0], weak_scaling_profiling_data[\"t_mpi_halo_exchange_upload\"]), label=\"Upload (CPU->GPU)\")\n",
"\n",
"ax_weak.plot(weak_scaling_profiling_data[\"n_processes\"].to_numpy(dtype=\"int\"), \n",
" speedup(weak_scaling_profiling_data[\"t_nc_write\"][0], weak_scaling_profiling_data[\"t_nc_write\"]), label=\"Write to file\")\n",
"\n",
"ax_weak.plot(weak_scaling_profiling_data[\"n_processes\"].to_numpy(dtype=\"int\"), \n",
" speedup(weak_scaling_profiling_data[\"t_init\"][0], weak_scaling_profiling_data[\"t_init\"]), label=\"Init\")\n",
"\"\"\"\n",
"\n",
"ax_weak.plot(nproc, np.ones(len(nproc)), label=\"Ideal run time (constant)\", linestyle=\"dotted\")\n",
"\n",
"ax_weak.set_xlabel(\"Number of ranks/GPUs\")\n",
"ax_weak.set_ylabel(\"Efficiency\")\n",
"ax_weak.legend(loc=\"lower left\")\n",
"ax_weak.title.set_text(\"Weak scaling\")\n",
"#fig.show()\n",
"\n",
"##############################################\n",
"\n",
"#fig, ax = plt.subplots(figsize=(8,6))\n",
"\n",
"t_total_no_init_or_file_io = strong_scaling_profiling_data[\"t_total\"] \\\n",
" -strong_scaling_profiling_data[\"t_init\"] \\\n",
" -strong_scaling_profiling_data[\"t_nc_write\"] \\\n",
" -strong_scaling_profiling_data[\"t_sim_init\"]\n",
"\n",
"t_total_halo_exchange = strong_scaling_profiling_data[\"t_mpi_halo_exchange_download\"] \\\n",
" +strong_scaling_profiling_data[\"t_mpi_halo_exchange_sendreceive\"] \\\n",
" +strong_scaling_profiling_data[\"t_mpi_halo_exchange_upload\"]\n",
"\n",
"#ax_strong.plot(strong_scaling_profiling_data[\"n_processes\"].to_numpy(dtype=\"int\"), \n",
"# speedup(t_total_no_init_or_file_io[0], t_total_no_init_or_file_io)*4, label=\"Total (no init or file I/O)\")\n",
"\n",
"ax_strong.plot(strong_scaling_profiling_data[\"n_processes\"].to_numpy(dtype=\"int\"), \n",
" speedup(strong_scaling_profiling_data[\"t_full_step\"][0], strong_scaling_profiling_data[\"t_full_step\"])*4, label=\"Shared-memory run time\", marker=\"o\")\n",
"\n",
"\"\"\"\n",
"ax_strong.plot(strong_scaling_profiling_data[\"n_processes\"].to_numpy(dtype=\"int\"), \n",
" speedup(t_total_halo_exchange[0], t_total_halo_exchange)*4, label=\"Halo exchange (D/E/U)\", linestyle=\"dashed\")\n",
"\n",
"ax_strong.plot(strong_scaling_profiling_data[\"n_processes\"].to_numpy(dtype=\"int\"), \n",
" speedup(strong_scaling_profiling_data[\"t_total\"][0], strong_scaling_profiling_data[\"t_total\"])*4, label=\"Total\")\n",
" \n",
"ax_strong.plot(strong_scaling_profiling_data[\"n_processes\"].to_numpy(dtype=\"int\"), \n",
" speedup(strong_scaling_profiling_data[\"t_mpi_halo_exchange_sendreceive\"][0], strong_scaling_profiling_data[\"t_mpi_halo_exchange_sendreceive\"]), label=\"MPI send/recv\")\n",
"\n",
"ax_strong.plot(strong_scaling_profiling_data[\"n_processes\"].to_numpy(dtype=\"int\"), \n",
" speedup(strong_scaling_profiling_data[\"t_mpi_halo_exchange_download\"][0], strong_scaling_profiling_data[\"t_mpi_halo_exchange_download\"]), label=\"Download (GPU->CPU)\")\n",
"\n",
"ax_strong.plot(strong_scaling_profiling_data[\"n_processes\"].to_numpy(dtype=\"int\"), \n",
" speedup(strong_scaling_profiling_data[\"t_mpi_halo_exchange_upload\"][0], strong_scaling_profiling_data[\"t_mpi_halo_exchange_upload\"]), label=\"Upload (CPU->GPU)\")\n",
"\n",
"ax_strong.plot(strong_scaling_profiling_data[\"n_processes\"].to_numpy(dtype=\"int\"), \n",
" speedup(strong_scaling_profiling_data[\"t_nc_write\"][0], strong_scaling_profiling_data[\"t_nc_write\"]), label=\"Write to file\")\n",
"\n",
"ax_strong.plot(strong_scaling_profiling_data[\"n_processes\"].to_numpy(dtype=\"int\"), \n",
" speedup(strong_scaling_profiling_data[\"t_init\"][0], strong_scaling_profiling_data[\"t_init\"]), label=\"Init\")\n",
"\"\"\"\n",
"\n",
"#ax_strong.plot(nproc, amdahls_speedup(0.9, nproc), label=\"Amdahls 90%\", linestyle=\"dashed\")\n",
"#ax_strong.plot(nproc, amdahls_speedup(0.5, nproc), label=\"Amdahls 50%\", linestyle=\"dashed\")\n",
"#ax_strong.plot(nproc, amdahls_speedup(0.1, nproc), label=\"Amdahls 10%\", linestyle=\"dashed\")\n",
"\n",
"#ax_strong.plot(nproc, gustafsons_speedup(0.9, nproc), label=\"Gustafsons 90%\")\n",
"#ax_strong.plot(nproc, gustafsons_speedup(0.5, nproc), label=\"Gustafsons 50%\")\n",
"#ax_strong.plot(nproc, gustafsons_speedup(0.1, nproc), label=\"Gustafsons 10%\")\n",
"\n",
"ax_strong.plot(nproc[3:], nproc[3:], label=\"Ideal run time (linear)\", linestyle=\"dotted\")\n",
"\n",
"ax_strong.set_xlabel(\"Number of ranks/GPUs\")\n",
"ax_strong.set_ylabel(\"Speedup\")\n",
"ax_strong.legend(loc=\"upper left\")\n",
"ax_strong.title.set_text(\"Strong scaling\")\n",
"fig.suptitle(\"DGX-2 server\")\n",
"fig.show()\n",
"\n",
"fig.savefig(\"dgx-2-scaling.pdf\", bbox_inches='tight')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/cluster/projects/nn9882k/martinls/.conda/envs/ShallowWaterGPU_HPC/lib/python3.7/site-packages/ipykernel_launcher.py:45: UserWarning: Matplotlib is currently using module://matplotlib_inline.backend_inline, which is a non-GUI backend, so cannot show the figure.\n"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 1152x432 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"###\n",
"### Saga\n",
"###\n",
"\n",
"plt.rcParams['font.size'] = 16\n",
"plt.rcParams['legend.fontsize'] = 14\n",
"plt.rcParams['axes.linewidth'] = 2\n",
"plt.rcParams['lines.linewidth'] = 2\n",
"\n",
"fig, (ax_weak, ax_strong) = plt.subplots(1, 2, figsize=(16,6))\n",
"\n",
"ax_weak.plot(singlenode_weak_scaling_profiling_data[\"n_processes\"][0:4].to_numpy(dtype=\"int\"), \n",
" speedup(singlenode_weak_scaling_profiling_data[\"t_full_step\"][0], singlenode_weak_scaling_profiling_data[\"t_full_step\"][0:4]), \n",
" label=\"Single-node runtime (no init or file I/O)\", marker=\"x\")\n",
"\n",
"ax_weak.plot(multinode_weak_scaling_profiling_data[\"n_processes\"][0:3].to_numpy(dtype=\"int\"), \n",
" speedup(singlenode_weak_scaling_profiling_data[\"t_full_step\"][0], multinode_weak_scaling_profiling_data[\"t_full_step\"][0:3]), \n",
" label=\"24 nodes runtime (no init or file I/O)\", marker=\"o\", color=\"green\")\n",
"\n",
"ax_weak.locator_params(axis=\"x\", nbins=4)\n",
"\n",
"ax_weak.plot(nproc[0:4], np.ones(len(nproc[0:4])), label=\"Ideal runtime (constant)\", linestyle=\"dotted\", color=\"orange\")\n",
"\n",
"ax_weak.set_xlabel(\"Number of ranks/GPUs\")\n",
"ax_weak.set_ylabel(\"Efficiency\")\n",
"ax_weak.legend(loc=\"upper left\", bbox_to_anchor=[0.0, 0.8])\n",
"\n",
"##############################################\n",
"\n",
"#ax_strong.plot(singlenode_strong_scaling_profiling_data[\"n_processes\"].to_numpy(dtype=\"int\"), \n",
"# speedup(singlenode_strong_scaling_profiling_data[\"t_full_step\"][0], singlenode_strong_scaling_profiling_data[\"t_full_step\"])*4, \n",
"# label=\"Single-node (no init or file I/O)\", marker=\"x\")\n",
"\n",
"ax_strong.plot(multinode_strong_scaling_profiling_data[\"n_processes\"].to_numpy(dtype=\"int\"), \n",
" speedup(multinode_strong_scaling_profiling_data[\"t_full_step\"][0], multinode_strong_scaling_profiling_data[\"t_full_step\"])*4, \n",
" label=\"Four nodes runtime (no init or file I/O)\", marker=\"o\")\n",
"\n",
"ax_strong.locator_params(axis=\"x\", nbins=16)\n",
"\n",
"ax_strong.plot(nproc[0:], nproc[0:], label=\"Ideal runtime (linear)\", linestyle=\"dotted\")\n",
"\n",
"ax_strong.set_xlabel(\"Number of ranks/GPUs\")\n",
"ax_strong.set_ylabel(\"Speedup\")\n",
"ax_strong.legend(loc=\"upper left\")\n",
"fig.show()\n",
"\n",
"fig.savefig(\"saga-scaling.pdf\", bbox_inches='tight')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"bar_width = 0.8\n",
"\n",
"share_init = (profiling_data[\"t_init\"]+profiling_data[\"t_sim_init\"])/profiling_data[\"t_total\"]\n",
"share_mpi = profiling_data[\"t_step_mpi_halo_exchange\"]/profiling_data[\"t_total\"]\n",
"share_simulate = profiling_data[\"t_step_mpi\"]/profiling_data[\"t_total\"]\n",
"\n",
"plt.bar(profiling_data[\"n_processes\"], \n",
" share_init, color='red', edgecolor='white', width=bar_width, label=\"Init\")\n",
"\n",
"plt.bar(profiling_data[\"n_processes\"], \n",
" share_mpi, bottom=share_init, color='orange', edgecolor='white', width=bar_width, label=\"MPI\")\n",
"\n",
"plt.bar(profiling_data[\"n_processes\"], \n",
" share_simulate, bottom=share_init+share_mpi , color='green', edgecolor='white', width=bar_width, label=\"Simulate\")\n",
"\n",
"plt.xlabel(\"Number of cores/GPUs\")\n",
"plt.ylabel(\"Share of normalized runtime\")\n",
"plt.legend(loc=\"upper left\")\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"bar_width = 0.8\n",
"\n",
"share_init = (profiling_data[\"t_init\"]+profiling_data[\"t_sim_init\"])\n",
"share_mpi = profiling_data[\"t_step_mpi_halo_exchange\"]\n",
"share_simulate = profiling_data[\"t_step_mpi\"]\n",
"\n",
"plt.bar(profiling_data[\"n_processes\"], \n",
" share_init, color='red', edgecolor='white', width=bar_width, label=\"Init\")\n",
"\n",
"plt.bar(profiling_data[\"n_processes\"], \n",
" share_mpi, bottom=share_init, color='orange', edgecolor='white', width=bar_width, label=\"MPI\")\n",
"\n",
"plt.bar(profiling_data[\"n_processes\"], \n",
" share_simulate, bottom=share_init+share_mpi , color='green', edgecolor='white', width=bar_width, label=\"Simulate\")\n",
"\n",
"plt.xlabel(\"Number of cores/GPUs\")\n",
"plt.ylabel(\"Runtime (s)\")\n",
"plt.legend(loc=\"upper right\")\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "ShallowWaterGPU",
"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.9.19"
}
},
"nbformat": 4,
"nbformat_minor": 4
}