mirror of
https://github.com/smyalygames/FiniteVolumeGPU.git
synced 2025-09-14 11:12:17 +02:00
286 lines
56 KiB
Plaintext
286 lines
56 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"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": 41,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"nproc = range(1, 11)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 32,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def speedup(t_serial, t):\n",
|
|
" return t_serial/t"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 97,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
" t_init t_total outfile \\\n",
|
|
"0 3.391605 195.295240 /work/martinls/216868/ShallowWaterGPU/mpi_out_... \n",
|
|
"1 3.187037 179.881221 /work/martinls/216869/ShallowWaterGPU/mpi_out_... \n",
|
|
"3 2.478722 148.845790 /work/martinls/216870/ShallowWaterGPU/mpi_out_... \n",
|
|
"4 3.220587 89.258778 /work/martinls/216871/ShallowWaterGPU/mpi_out_... \n",
|
|
"2 3.995742 81.342442 /work/martinls/216872/ShallowWaterGPU/mpi_out_... \n",
|
|
"5 4.426121 76.431902 /work/martinls/216873/ShallowWaterGPU/mpi_out_... \n",
|
|
"\n",
|
|
" t_sim_init t_nc_write t_step t_step_mpi_halo_exchange t_step_mpi \\\n",
|
|
"0 24.366352 4.218516 162.692996 31.031250 131.203125 \n",
|
|
"1 13.079974 2.645470 160.504349 30.175781 129.562500 \n",
|
|
"3 9.327793 1.417720 135.224608 23.125000 111.355469 \n",
|
|
"4 7.693858 1.044866 76.910678 42.898438 33.703125 \n",
|
|
"2 6.430108 0.975855 69.577638 42.601562 26.730469 \n",
|
|
"5 5.593224 0.692737 65.368168 42.433594 22.496094 \n",
|
|
"\n",
|
|
" t_sim_mpi_init nx ny dt n_time_steps slurm_job_id \\\n",
|
|
"0 0.000957 4096.0 4096.0 0.00001 20002.0 216868.0 \n",
|
|
"1 0.000757 4096.0 2048.0 0.00001 20002.0 216869.0 \n",
|
|
"3 0.000739 4096.0 1365.0 0.00001 20002.0 216870.0 \n",
|
|
"4 0.000778 4096.0 1024.0 0.00001 20002.0 216871.0 \n",
|
|
"2 0.001344 4096.0 819.0 0.00001 20002.0 216872.0 \n",
|
|
"5 0.000755 4096.0 683.0 0.00001 20002.0 216873.0 \n",
|
|
"\n",
|
|
" n_cuda_devices n_processes \n",
|
|
"0 1 1 \n",
|
|
"1 2 2 \n",
|
|
"3 3 3 \n",
|
|
"4 4 4 \n",
|
|
"2 5 5 \n",
|
|
"5 6 6 \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": 34,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAfgAAAFzCAYAAADSXxtkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAe20lEQVR4nO3df5iXdZ3v8edbwPDn2iYZiddiHo5CCKgTmZ3E4+b6M023PWi2ZeVxbdWsPVrquqd299o9pm25XrU5/iDTVExWWGu9rPUHIjoGg4ICSoKZTmBMuiqGKOD7/PG9nZ1wmBlgvnz9fng+rmuu+X7uz33fn/fcjL7m/h2ZiSRJKst2jS5AkiQNPANekqQCGfCSJBXIgJckqUAGvCRJBTLgJUkq0OBGFzCQdt999xw5cmSjy5AkaauYN2/ebzNzWE99RQX8yJEjaW9vb3QZkiRtFRHxq431eYhekqQCGfCSJBXIgJckqUBFnYPvydq1a+no6GDNmjWNLkWbaejQoYwYMYIhQ4Y0uhRJahrFB3xHRwe77LILI0eOJCIaXY42UWby/PPP09HRwd57793ociSpaRR/iH7NmjW8613vMtybVETwrne9yyMwkrSJig94wHBvcv77SdKm2yYCXpKkbY0BvxXsvPPOPU4/7bTTmDZt2mat8+tf/zrf/OY3e+y7/PLLuf766zdrvZtixowZLF68eLOXf/rpp7npppu62o899hinnXbaAFQmSTLgC7Nu3TqmTJnCJz/5ybqPNdABv//++9PR0cEzzzwzEOVJ0jZtmwv4ya1t3Nr+LABr17/B5NY2pj/SAcCrr69ncmsbP16wHICX16xlcmsbdy5cAcALv3udya1t3LX4NwCsXLVpF35lJmeffTZjxozh2GOPZeXKlV198+bNY9KkSRx00EEceeSRrFhRG/Pqq6/mAx/4AOPHj+dP//RPWb16da9j3HPPPRx44IEMHly7QWLp0qV89KMfZfz48Rx44IEsW7aMzOT8889n7Nix7L///txyyy0AzJw5k8MOO4xPfOIT7Lfffpx66qlkJgAXXHABY8aMYdy4cZx33nk8+OCD3H777Zx//vlMmDCBZcuWbbTW0047jS9+8YsccsghvO997+s6anHBBRdw//33M2HCBL797W8D8LGPfYypU6du0naVJL3VNhfwjTR9+nSWLFnCY489xtVXX82DDz4I1O7VP+ecc5g2bRrz5s3jc5/7HH/9138NwEknncTcuXNZsGABo0eP5tprr+11jAceeICDDjqoq33qqady1llnsWDBAh588EGGDx/Obbfdxvz581mwYAF33XUX559/ftcfFI888giXX345ixcv5qmnnuKBBx7ghRdeYPr06SxatIhHH32Uiy++mEMOOYTjjz+eyy67jPnz57PPPvv0WuuKFSuYPXs2P/nJT7jgggsAuOSSS/jIRz7C/Pnz+fKXvwxAS0sL999//8BtdEnaRhV/H/yGbvmLD3V9HjJou99r77D9oN9r7zp0yO+1/3Cn7X+v/e5dhm7S2LNmzeKUU05h0KBBvPe97+Xwww8HYMmSJSxcuJAjjjgCgPXr1zN8+HAAFi5cyMUXX8yLL77IK6+8wpFHHtnrGCtWrGD06NEArFq1il//+teceOKJQO2BMQCzZ8/uqmOPPfZg0qRJzJ07l1133ZWJEycyYsQIACZMmMDTTz/NwQcfzNChQzn99NM59thjOe6443ocu7daP/7xj7PddtsxZswYfvOb32y0/ne/+90sX768z20pSerdNhfwjdbTLV+Zyfvf/37a2tre0nfaaacxY8YMxo8fz3XXXcfMmTN7Xf8OO+zQdc/4m4fXexpvY97xjnd0fR40aBDr1q1j8ODBzJkzh7vvvpupU6fyne98h3vuuWeTau2+3t7GX7NmDTvssMNG+yVJ/eMh+q3o0EMPZerUqaxfv54VK1Zw7733ArDvvvvS2dnZFfBr165l0aJFQG0vfPjw4axdu5Ybb7yxzzFGjx7N0qVLAdh1110ZMWIEM2bMAOC1115j9erVHHroodxyyy2sX7+ezs5OZs2axcSJEze6zldeeYWXXnqJY445hssvv5z58+cDsMsuu7Bq1aqu+Ta11g2XB/jFL37B2LFj+1xWktQ7A34rOvHEExk1ahT7778/X/jCF5g0aRIA22+/PdOmTeOrX/0q48ePZ8KECV3n5//+7/+eD37wgxxxxBHst99+fY5x9NFHM2vWrK72DTfcwBVXXMG4ceM45JBDeO655zjxxBMZN24c48eP5/DDD+fSSy/lPe95z0bXuWrVKo477jjGjRvHpEmTui6IO/nkk7nssss44IADWLZs2SbXOm7cOAYPHsz48eO71nnvvfdy7LHH9rmsJKl30dvh0mbT0tKS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",
|
|
"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": 35,
|
|
"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": 36,
|
|
"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": 101,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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9TZVOTk0PfMPjeris4PROe4jsGrVKlavXr1redGiRbRv3/6Q95OamsqiRYvw+Xxs3LiRH3/88TfbFBQUkJCQQHR0ND///DPff//9rnUej4eqqioAhg0bxptvvsnWwIw427dvJysr65AziYg4oXzlSqoDd9Kk3HE77V96UUV7LyrcR6C4uJgJEybQtWtXevbsyYoVK7jlllsOeT+DBg2iQ4cO9OjRg6uuuopjjz32N9uccsopVFdX07NnT2666Sb69++/a93kyZPp2bMn5557Ll27duW2225jxIgR9OzZk+HDh5OdnX0kP6aISL3wFhWRdf54tt7/AADuuDhc4eEOp2p4NK2n1Ar9PkTkcHmLS3DH+i84K549m8gePQgLsRm9DtWBpvVUi1tERBxTtnQZa08+mZK5cwGIHTy40Rftg1HhFhERx0Qc1ZGY448nrGVLp6MEDRVuERGpV2WLF/Pr//0dW1WFKyqK1vfdS0SHDk7HChoq3CIiUq+qNm+mbNEiqnJynI4SlELiPm4REWnYKjdupDJrA7HHD6LJqFHEnngirshIp2MFJRVuERGpczm3/JPKdevo+OknGI9HRfsIqHCLiEid8BYU+It0dDQt//lPjAHj8TgdK+jpHPcRiI2N3efzEydO5M033zysfd5yyy3cd999+1w3bdo0nn/++d8cozbn/96f3NzcXWOui4gcjK+khHXjTmfLvfcCEN6mNZ7WrR1OFRrU4g4S1dXVPPPMMyxYsOA36+p6/u/q6mqSk5NJSUnh22+/ZdCgQXV6PBEJXtZajDG4YmJInDCeqGP7OB0p5IRMizvr/PHkv+2fOctWVZF1/ngKAvNd+8rKyDp/PIUffQT8b1i9ws8+A6B6xw6yzh9P0Vez/Mu5uYd0bGstl112GV27duXUU0/dNU44wPz58xkyZAh9+vRh5MiRu4YfffLJJ+nbty+9evXijDPOoLS09IDH+Oqrrzj22GMJC/vtZ6295/++4YYb6NWrF/3792fLli2Av8V8xhln0LdvX/r27cu3334LwI8//sjAgQPp3bs3AwcOZNWqVYB/jvAzzzyTMWPGMGLECMA/H/hLL710SO+NiDQelRs3kvWncylf9QsAiRMmENWju8OpQk/IFG4nvfPOO6xatYqlS5fy5JNP8t133wFQVVXF5Zdfzptvvsn8+fOZNGkSN9xwAwCnn346P/30E4sXL6ZLly48/fTTBzzGt99+S58+B//kWlJSQv/+/Vm8eDGDBw/mySefBGDKlCn87W9/46effuKtt97iwgsvBOCYY45h9uzZLFy4kFtvvZXrr79+177mzp3Lc889x1dffQVARkYGc+bMOfQ3SEQaBVd0NL7iIqq3HVrjRw5NyHSVt3/h+V3fG49nj2VXVNQey+64uD2WwxIS9lxOTj6kY8+ePZtzzjkHt9tNq1atOOmkkwD/7GHLli1j+PDhAHi9XlJSUgBYtmwZN954I/n5+RQXFzNy5MgDHiM7O7tGY4GHh4czevRoAPr06cPnn38OwBdffLHHefDCwkKKioooKChgwoQJrF69GmPMrlnGAIYPH05iYuKu5ebNm7N58+aavCUi0khUb99O/ltv0ezCCwlr1owO772HcalNWJdCpnA7beec27uz1tKtWzfmBsbg3d3EiRN599136dWrFzNnzuTrr78+4P6joqL2Of/23naf/9vtdu+a89vn8zF37lyioqL22P7yyy/nxBNP5J133mH9+vUMHTp017qYmJg9ti0vL//N60WkcSv86GO2PfQwsUOGENm5s4p2PdA7XAsGDx7Mq6++itfrJTs7m1mz/OfKjz76aHJzc3cV7qqqKpYvXw5AUVERKSkpVFVV1ei8cZcuXVizZs1hZxwxYgTTp0/ftbxo0SLAP89368CVnjNnzjzgPn755Re6d9f5KpHGzldeTkVmJgAJfzqHtA/eJ7JzZ4dTNR4q3LVg3LhxdOrUiR49enDJJZcwZMgQwN9t/eabb3LNNdfQq1cv0tPTd53//te//kW/fv0YPnw4xxxzzEGPMWrUKGbPnn3YGR966CHmzZtHz5496dq1K48//jgAV199Nddddx2DBg3C6/UecB+zZs3i1FNPPewMIhIafr3qKjZeeBG+ykqMy0V4aqrTkRoVzccdRMaNG8c999xDp06dHDn+4MGDee+990jYx5R7jfH3IdKYWJ8PrMW43ZQtXYY3fwexJ5zgdKyQpfm4Q8Rdd92163ay+pabm8v//d//7bNoi0ho85WXs/HCi9j2xBMARPXorqLtIF2cFkSOPvpojj76aEeOnZyczGmnnebIsUXEWa7ISDytWx3yHTdSN4K6xR0M3fyNgX4PIqHHV1JCzu13UBUYxCnlX/8i4cwzHU4lEMSFOzIykry8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",
|
|
"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": 108,
|
|
"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": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"interpreter": {
|
|
"hash": "03b7d1ad70da1aa36a01b3a4151457300569898b0e94ac4fd185ad5685456ae1"
|
|
},
|
|
"kernelspec": {
|
|
"display_name": "Python 3.7.12 ('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.7.12"
|
|
},
|
|
"orig_nbformat": 4
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|