mirror of
https://github.com/smyalygames/FiniteVolumeGPU.git
synced 2025-05-18 06:24:13 +02:00
366 lines
82 KiB
Plaintext
366 lines
82 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 18,
|
|
"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": 19,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"nproc = range(1, 11)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 20,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def speedup(t_serial, t):\n",
|
|
" return t_serial/t"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 21,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
" dt n_cuda_devices n_processes n_time_steps nx ny \\\n",
|
|
"0 0.00001 2 1 20002.0 4096.0 4096.0 \n",
|
|
"1 0.00001 2 2 20002.0 4096.0 2048.0 \n",
|
|
"5 0.00001 2 3 20002.0 4096.0 1365.0 \n",
|
|
"4 0.00001 2 4 20002.0 4096.0 1024.0 \n",
|
|
"7 0.00001 2 5 20002.0 4096.0 819.0 \n",
|
|
"3 0.00001 2 6 20002.0 4096.0 683.0 \n",
|
|
"2 0.00001 2 7 20002.0 4096.0 585.0 \n",
|
|
"6 0.00001 2 8 20002.0 4096.0 512.0 \n",
|
|
"\n",
|
|
" slurm_job_id t_init t_nc_write t_sim_init t_sim_mpi_init t_step \\\n",
|
|
"0 0.755573 3.819266 21.847542 0.000650 164.309420 \n",
|
|
"1 0.640923 1.762661 11.810046 0.000821 94.098560 \n",
|
|
"5 0.507208 1.252253 8.936866 0.000799 121.531043 \n",
|
|
"4 0.562472 0.697483 6.947314 0.018794 90.286328 \n",
|
|
"7 0.660878 0.574789 5.756451 0.000960 89.756629 \n",
|
|
"3 0.639691 0.427603 4.894204 0.001099 93.592929 \n",
|
|
"2 0.748003 0.310309 4.291747 0.000927 88.290830 \n",
|
|
"6 0.797432 0.171954 3.618473 0.001000 93.693081 \n",
|
|
"\n",
|
|
" t_step_mpi t_step_mpi_halo_exchange t_total \n",
|
|
"0 140.046875 23.750000 191.498132 \n",
|
|
"1 70.695312 21.898438 109.181583 \n",
|
|
"5 99.964844 21.191406 132.867866 \n",
|
|
"4 38.195312 51.867188 99.346226 \n",
|
|
"7 45.941406 43.597656 97.349326 \n",
|
|
"3 54.195312 38.941406 100.244988 \n",
|
|
"2 73.683594 14.226562 94.291717 \n",
|
|
"6 51.875000 41.148438 99.006911 \n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"def read_profiling_files(profile_dir_path=\".\"):\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",
|
|
" 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",
|
|
"\n",
|
|
" profiling_data = profiling_data.sort_values(by=[\"n_processes\"])\n",
|
|
"\n",
|
|
" return profiling_data\n",
|
|
"\n",
|
|
"profiling_data = read_profiling_files()\n",
|
|
"print(profiling_data)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Weak scaling"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 9,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAfgAAAFzCAYAAADSXxtkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAgFUlEQVR4nO3de5hddX3v8feXJBhQKAgRkfA04MmBREgCjIhYCUUpV0FQOyAUUTkUC3g5BQWLR61Pe6JYQaqVcIkIAkFSoGg5aLnEEBkkE5NALkQSRBgTyEgKBDCQhO/5Y6+M4zCZmSSzZzO/vF/PM8/s3++3Lt+9ZpLPrMteKzITSZJUlq0aXYAkSep/BrwkSQUy4CVJKpABL0lSgQx4SZIKZMBLklSgoY0uoD/tvPPOOWrUqEaXIUnSgJg9e/bvM3NEd2NFBfyoUaNobW1tdBmSJA2IiPjthsY8RC9JUoEMeEmSCmTAS5JUoKLOwXdnzZo1tLW1sXr16kaXok00fPhwRo4cybBhwxpdiiQNGsUHfFtbG9tttx2jRo0iIhpdjjZSZvLMM8/Q1tbGHnvs0ehyJGnQKP4Q/erVq9lpp50M90EqIthpp508AiNJG6n4gAcM90HOn58kbbwtIuAlSdrSGPAD4E1velO3/aeffjrTpk3bpGV+5Stf4Zvf/Ga3Y5deeinXXnvtJi13Y9x2220sXLhwk+d//PHHueGGGzraDz/8MKeffno/VCZJMuALs3btWqZMmcJHP/rRuq+rvwN+3333pa2tjSeeeKI/ypOkLdoWF/DNk1u4ufVJANase5XmyS3cOqcNgD+8so7myS38eN4yAJ5fvYbmyS3cOX85ACtffIXmyS3ctfBpAFas2rgLvzKTc845h7Fjx3LMMcewYsWKjrHZs2czceJEDjjgAI444giWL6+t88orr+Sd73wn48eP50Mf+hAvvfRSj+u455572H///Rk6tPYBiSVLlvD+97+f8ePHs//++7N06VIyk/PPP5999tmHfffdl5tuugmA6dOnc+ihh/LhD3+Yvffem1NOOYXMBOCCCy5g7NixjBs3jvPOO4/777+f22+/nfPPP58JEyawdOnSDdZ6+umn8+lPf5qDDz6YPffcs+OoxQUXXMB9993HhAkTuOSSSwD4wAc+wNSpUzdqu0qSXmuLC/hGuvXWW1m8eDEPP/wwV155Jffffz9Q+6z+ueeey7Rp05g9ezaf+MQn+Id/+AcATjzxRGbNmsW8efMYM2YMV199dY/r+MUvfsEBBxzQ0T7llFM4++yzmTdvHvfffz+77rort9xyC3PnzmXevHncddddnH/++R1/UMyZM4dLL72UhQsX8thjj/GLX/yClStXcuutt7JgwQIeeughLrroIg4++GCOO+44Lr74YubOncvb3/72Hmtdvnw5M2fO5Cc/+QkXXHABAJMmTeK9730vc+fO5XOf+xwATU1N3Hffff230SVpC1X85+C7uulv393xetiQrf6kvc3WQ/6kvf3wYX/SfvMbt/6T9lu2G75R654xYwYnn3wyQ4YM4W1vexuHHXYYAIsXL2b+/PkcfvjhAKxbt45dd90VgPnz53PRRRfx7LPP8sILL3DEEUf0uI7ly5czZswYAFatWsXvfvc7TjjhBKB2wxiAmTNndtSxyy67MHHiRGbNmsX222/PgQceyMiRIwGYMGECjz/+OAcddBDDhw/njDPO4JhjjuHYY4/tdt091frBD36QrbbairFjx/L0009vsP63vOUtLFu2rNdtKUnq2RYX8I3W3Ue+MpN3vOMdtLS0vGbs9NNP57bbbmP8+PFcc801TJ8+vcflb7PNNh2fGV9/eL279W3IG97who7XQ4YMYe3atQwdOpQHH3yQu+++m6lTp/Kd73yHe+65Z6Nq7bzcnta/evVqttlmmw2OS5L6xkP0A+iQQw5h6tSprFu3juXLl3PvvfcCsNdee9He3t4R8GvWrGHBggVAbS981113Zc2aNVx//fW9rmPMmDEsWbIEgO23356RI0dy2223AfDyyy/z0ksvccghh3DTTTexbt062tvbmTFjBgceeOAGl/nCCy/w3HPPcfTRR3PppZcyd+5cALbbbjtWrVrVMd3G1tp1foBf//rX7LPPPr3OK0nqmQE/gE444QRGjx7Nvvvuy6c+9SkmTpwIwNZbb820adP4whe+wPjx45kwYULH+fmvfe1rvOtd7+Lwww9n77337nUdRx11FDNmzOhoX3fddVx22WWMGzeOgw8+mKeeeooTTjiBcePGMX78eA477DC+8Y1v8Na3vnWDy1y1ahXHHnss48aNY+LEiR0XxJ100klcfPHF7LfffixdunSjax03bhxDhw5l/PjxHcu89957OeaYY3qdV5LUs+jpcOlg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\n",
|
|
"text/plain": [
|
|
"<Figure size 576x432 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {
|
|
"needs_background": "light"
|
|
},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"fig, ax = plt.subplots(figsize=(8,6))\n",
|
|
"\n",
|
|
"#ax.plot(nproc, speedup, label=\"Actual\")\n",
|
|
"\n",
|
|
"ax.plot(nproc, np.ones(len(nproc)), label=\"Ideal (constant)\", linestyle=\"dotted\")\n",
|
|
"\n",
|
|
"ax.set_xlabel(\"Number of cores/GPUs\")\n",
|
|
"ax.set_ylabel(\"Efficiency\")\n",
|
|
"ax.legend(loc=\"upper left\")\n",
|
|
"fig.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Strong scaling"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"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": 11,
|
|
"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": 12,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 576x432 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {
|
|
"needs_background": "light"
|
|
},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"fig, ax = plt.subplots(figsize=(8,6))\n",
|
|
"\n",
|
|
"ax.plot(profiling_data[\"n_processes\"].to_numpy(dtype=\"int\"), \n",
|
|
" speedup(profiling_data[\"t_total\"][0], profiling_data[\"t_total\"]), label=\"Total\")\n",
|
|
"\n",
|
|
"ax.plot(profiling_data[\"n_processes\"].to_numpy(dtype=\"int\"), \n",
|
|
" speedup(profiling_data[\"t_step_mpi_halo_exchange\"][0], profiling_data[\"t_step_mpi_halo_exchange\"]), label=\"MPI\")\n",
|
|
"\n",
|
|
"ax.plot(profiling_data[\"n_processes\"].to_numpy(dtype=\"int\"), \n",
|
|
" speedup(profiling_data[\"t_step_mpi\"][0], profiling_data[\"t_step_mpi\"]), label=\"Simulate\")\n",
|
|
"\n",
|
|
"#ax.plot(nproc, amdahls_speedup(0.9, nproc), label=\"Amdahls 90%\", linestyle=\"dashed\")\n",
|
|
"#ax.plot(nproc, amdahls_speedup(0.5, nproc), label=\"Amdahls 50%\", linestyle=\"dashed\")\n",
|
|
"#ax.plot(nproc, amdahls_speedup(0.1, nproc), label=\"Amdahls 10%\", linestyle=\"dashed\")\n",
|
|
"\n",
|
|
"#ax.plot(nproc, gustafsons_speedup(0.9, nproc), label=\"Gustafsons 90%\")\n",
|
|
"#ax.plot(nproc, gustafsons_speedup(0.5, nproc), label=\"Gustafsons 50%\")\n",
|
|
"#ax.plot(nproc, gustafsons_speedup(0.1, nproc), label=\"Gustafsons 10%\")\n",
|
|
"\n",
|
|
"ax.plot(nproc, nproc, label=\"Ideal (linear)\", linestyle=\"dotted\")\n",
|
|
"\n",
|
|
"ax.set_xlabel(\"Number of cores/GPUs\")\n",
|
|
"ax.set_ylabel(\"Speedup\")\n",
|
|
"ax.legend(loc=\"upper left\")\n",
|
|
"fig.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 13,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"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": 16,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"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": "code",
|
|
"execution_count": 17,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"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",
|
|
"\n",
|
|
"plt.bar(profiling_data[\"n_processes\"], \n",
|
|
" share_simulate, 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": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"1. Detaljert\n",
|
|
"2. Asynkron: up/download MPI/GPU-comm\n",
|
|
"3. Benchmark igjen på OSloMet\n",
|
|
"4. Sjekke reservasjon på Saga og DGX-2\n",
|
|
"5. Sjekke resultater for 3 subdomener"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"interpreter": {
|
|
"hash": "03b7d1ad70da1aa36a01b3a4151457300569898b0e94ac4fd185ad5685456ae1"
|
|
},
|
|
"kernelspec": {
|
|
"display_name": "ShallowWaterGPU_HPC",
|
|
"language": "python",
|
|
"name": "shallowwatergpu_hpc"
|
|
},
|
|
"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.7.10"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 4
|
|
}
|