From 91291ac19d637b3c6742c056fb4494abea0af084 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Lilleeng=20S=C3=A6tra?= Date: Fri, 8 Apr 2022 17:33:39 +0200 Subject: [PATCH] Updated graphs. --- Figures.ipynb | 146 ++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 113 insertions(+), 33 deletions(-) diff --git a/Figures.ipynb b/Figures.ipynb index 171d8c3..341656a 100644 --- a/Figures.ipynb +++ b/Figures.ipynb @@ -2,17 +2,9 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 3, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Matplotlib is building the font cache; this may take a moment.\n" - ] - } - ], + "outputs": [], "source": [ "%matplotlib inline\n", "\n", @@ -25,7 +17,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 41, "metadata": {}, "outputs": [], "source": [ @@ -34,7 +26,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 32, "metadata": {}, "outputs": [], "source": [ @@ -44,23 +36,63 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 97, "metadata": {}, - "outputs": [], + "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(columns=['country', 'city', 'long/lat'])\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 index, json_filename in enumerate(json_filenames):\n", + " for json_filename in json_filenames:\n", " with open(os.path.join(profile_dir_path, json_filename)) as json_file:\n", - " profiling_data.append(json.load(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", - "print(read_profiling_files())" + "profiling_data = read_profiling_files()\n", + "print(profiling_data)" ] }, { @@ -72,12 +104,12 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 34, "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "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": [ "
" ] @@ -95,7 +127,7 @@ "\n", "ax.plot(nproc, np.ones(len(nproc)), label=\"Ideal (constant)\", linestyle=\"dotted\")\n", "\n", - "ax.set_xlabel(\"Number of cores\")\n", + "ax.set_xlabel(\"Number of cores/GPUs\")\n", "ax.set_ylabel(\"Efficiency\")\n", "ax.legend(loc=\"upper left\")\n", "fig.show()" @@ -110,7 +142,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 35, "metadata": {}, "outputs": [], "source": [ @@ -121,7 +153,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 36, "metadata": {}, "outputs": [], "source": [ @@ -132,12 +164,12 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 101, "metadata": {}, "outputs": [ { "data": { - "image/png": "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BXU0owHNZCD2jF6Yk1p/qmN7091uyh59jMrXXsOU6iTjhReIGjsm3M3arc4xNtFFlZSUcN5555Gbm8vQoUMZPXo0H3zwwX7d65VXXmHr1q17fd6KFSsYNGgQgwcPbk5W0hEee+wx+vfvT79+/Xj00UebH6+srGT8+PH06tWL8ePHU1UVOpLwl19+YcCAAQwfPpzVq1cDUF1dzbHHHrvLo1WFEN1XoNpDyWPzcC8NHaZiL4jHFG8Lc6tCGmbPZu2pp1H56qvEnnM2uf/9b6cO2iCBe78ppTjttNMYN24ca9euZe7cubz99tts3rx5v+7X2sD94YcfcuqppzJ//nx69uy5X3XtqyVLlvD8888ze/ZsFi5cyCeffMKqVasAeOCBBzjqqKNYtWoVRx11VHMO73/84x+899573H///TzzzDMA3HvvvUyePLlDDyoQQoSfMcqCKd6O1olyZgfrG3Ddcw8bL7oYlCLz1VdJvfNOjFFR4W7aXkng3k/ffvstFouFP//5z82PZWVlcd111wGhQHzttdc2l5100kl8//33BINBJk2aRP/+/SksLOSRRx7h3XffZc6cOZx//vkMGjQIt9vNPffcw/Dhw+nfvz9XXHEFSik+++wzHn30UV544QWOOOIIGhoaOPHEExk4cCD9+/fnnXfeAeCbb75h8ODBFBYWcumll+L1egHIzs7mzjvvbE4XumLFCgB++OEHBg0a1NyTr6ura/G9Ll++nFGjRhEREYHJZOKwww5rHln46KOPuPjiiwG4+OKL+fDDDwEwm8243W4aGxsxm82sWbOGLVu2cNhhh7XDb0MI0dnojX6qP12L8utoJgOJk/phy+scq7Lrf/mFdaecQtWMt4m/+CJyP/qQyJEjwt2sVusWc9yu++/Hu3xFm97T2qc3zsmTd1u+dOnS5hSe+2LBggVs2bKFJUuWAKHh49jYWJ588kkefvhhhg0LHZRz7bXXNqfNvPDCC/nkk084+eST+fOf/0xUVBQ333wz7733HmlpaXz66adA6Ixzj8fDpEmT+Oabb8jPz+eiiy7imWee4f/+7/8ASExMZN68eTz99NM8/PDDvPDCCzz88MM89dRTjBkzhvr6emy2lkNY/fv3Z8qUKVRUVGC32/nss8+a21lSUkJqaioAqamplJaWAnD77bdzxRVXYLfbef3117n55pu599579/nnJYTomnyb66n/dSu2grhOE7CDtbWUPPggNe++hyUnh6w33yRiyOBwN2ufSY+7jVxzzTUMHDiQ4cOH7/F5ubm5rF27luuuu44vvvgCx25WLH733XeMHDmSwsJCvv32W5YuXbrTcwoLC/n666+59dZb+emnn4iJiaGoqIicnBzy8/OBUC/4xx9/bL7mjDPOAFqmBB0zZgw33ngjjz/+ONXV1ZhMLd/P9enTh1tvvZXx48dz3HHHMXDgwJ2e80eDBg1i5syZfPfdd6xdu5a0tDSUUpx99tlccMEFzWlKhRDdh9IVvi31QOis8dRbhneaoF33/fesPfkUat7/gIQ/XU7Ohx90yaAN3aTHvaeecXvp168f7733XvPXTz31FOXl5c09UZPJhK7rzeXb0nLGxcWxcOFC/ve///HUU0/x73//m5deeqnFvT0eD1dffTVz5swhIyODu+66q/n6HeXn5zN37lw+++wzbr/9do455pidsnn90ba0oEajsTm96G233caJJ57IZ599xqhRo/j66693Smxy2WWXcdlllwEwefJk0tPTAUhJSaG4uJjU1FSKi4tJTk5ucZ1SiunTp/POO+9w7bXXcvfdd7N+/Xoef/xx7rvvvj22VQjRtdT+bz31v24l5eZhmGKsGGOse7+onQWqqij529+o/e/HWHv1Iv3JJ7AXFoa7WQdEetz76cgjj8Tj8TQvvAJapLbMzs5mwYIF6LrOpk2bmD17NgDl5eXous6ECRO49957mTdvHgDR0dHNc8vbgnRiYiL19fW8++67u2zD1q1biYiI4IILLuDmm29m3rx59O7dm/Xr1zev5H799df3Oq+8Zs0aCgsLufXWWxk2bFjz3PeOtg2Bb9y4kffff59zzz0XgFNOOYVXX30VgFdffZVTTz21xXWvvvoqJ554InFxcTQ2NmIwGCQNqBDdjNJDO0WixqQRe0YvjA5LmFsUUvvll6w9+RRqP/ucxKuvJvu9d7t80IZu0uMOB03T+PDDD/nLX/7Cgw8+SFJSEpGRkfz9738HQsPPOTk5FBYW0r9//+b58C1btnDJJZc098b/9re/ATBp0iT+/Oc/Y7fb+e233/jTn/5EYWEh2dnZux1+X7x4MX/9618xGAyYzWaeeeYZbDYbL7/8MmeddRaBQIDhw4e3WEC3K48++ijfffcdRqORvn37cvzxx+/0nAkT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", + "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": [ "
" ] @@ -151,24 +183,72 @@ "source": [ "fig, ax = plt.subplots(figsize=(8,6))\n", "\n", - "#ax.plot(nproc, speedup, label=\"Actual\")\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(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", + "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(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", + "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\")\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": [ + "
" + ] + }, + "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,