mirror of
https://github.com/smyalygames/FiniteVolumeGPU.git
synced 2025-05-18 06:24:13 +02:00
548 lines
119 KiB
Plaintext
548 lines
119 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"#Lets have matplotlib \"inline\"\n",
|
|
"%matplotlib inline\n",
|
|
"\n",
|
|
"# Add line profiler\n",
|
|
"%load_ext line_profiler\n",
|
|
"\n",
|
|
"#Import packages we need\n",
|
|
"import numpy as np\n",
|
|
"from matplotlib import animation, rc\n",
|
|
"from matplotlib import pyplot as plt\n",
|
|
"from mpl_toolkits.axes_grid1 import make_axes_locatable\n",
|
|
"\n",
|
|
"import subprocess\n",
|
|
"import os\n",
|
|
"import gc\n",
|
|
"import datetime\n",
|
|
"import importlib\n",
|
|
"import logging\n",
|
|
"from socket import gethostname\n",
|
|
"\n",
|
|
"import pycuda.driver as cuda\n",
|
|
"import pycuda.compiler\n",
|
|
"\n",
|
|
"try:\n",
|
|
" from StringIO import StringIO\n",
|
|
"except ImportError:\n",
|
|
" from io import StringIO\n",
|
|
" \n",
|
|
"#Set large figure sizes\n",
|
|
"#Note, this prevents nice figures for articles...\n",
|
|
"rc('figure', figsize=(16.0, 12.0))\n",
|
|
"rc('animation', html='html5')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"#Get root logger\n",
|
|
"logger = logging.getLogger('')\n",
|
|
"logger.setLevel(logging.DEBUG)\n",
|
|
"\n",
|
|
"#Add log to file\n",
|
|
"fh = logging.FileHandler('output.log')\n",
|
|
"formatter = logging.Formatter('%(asctime)s:%(name)s:%(levelname)s: %(message)s')\n",
|
|
"fh.setFormatter(formatter)\n",
|
|
"fh.setLevel(logging.DEBUG)\n",
|
|
"logger.addHandler(fh)\n",
|
|
"\n",
|
|
"#Add log to screen\n",
|
|
"ch = logging.StreamHandler()\n",
|
|
"ch.setLevel(logging.INFO)\n",
|
|
"logger.addHandler(ch)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Registering automatic CUDA context handling\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"from SWESimulators import Common, IPythonMagic"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"CUDA version (9, 1, 0)\n",
|
|
"Driver version 9010\n",
|
|
"Using 'GeForce 840M' GPU\n",
|
|
"Created context handle <482293506944>\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"%cuda_context_handler cuda_context"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"#Finally, import our simulator\n",
|
|
"from SWESimulators import LxF, FORCE, HLL, HLL2, KP07, KP07_dimsplit, WAF"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAY0AAAB9CAYAAABeQj98AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAFZBJREFUeJztnX3wHHV9x1/vPJCfBFJ+MaIpYkMHbNWKWqOotdSWCtG26oxosTMWZpimTrXVQVuTdmx9mpY+iO2Mdsa0IPiEULAjVWwK8ak+YSIiECIlqKWxMSEkFgL+Hu/TP3bvbm9/d7/de9jb7+1+XjM7d7e3e9/vL6+9fHb3dr9vmRmO4ziOk4cVZXfAcRzHmRy8aDiO4zi58aLhOI7j5MaLhuM4jpMbLxqO4zhObrxoOI7jOLnxouF0RdIWSfdK2i9pW49lXivpHkl7JX0iMf9iSffF08Xj67WTRZZXSedKul3SgqQLU++510AZq1cz88mnjglYCdwP/CxwAvAd4OmpZc4Cvg1Mx69PjR/XA9+LH6fj59Nl/00+5fa6CTgb+AhwYWK+ew10GrfXoY408uyNOhPJHwJPAv4DuAz4JPDK1DK/B3zQzI4BmNnheP4FwC1mdjR+7xZgy1h67WTxfOAY8DngHuAgKa9m9gMzuxNopNZ1r+HyfGC/mX3PzObo8n0dpddVg/ZS0krgg8BLgQPAbkk3mdk9vdY5QWtsirWDNunkZIZHmbNZNV9f8Ktr7aGji633v3Xn7F5gJrHKDjPbAS2v24DPAK8HdgOfAE5PNfPUePmvruaEFzW9nsw0AOu0fmvi9dZ1Wv8JnKEYxmvM6UTenk30nd0PPNSrvdWc8C/rtB5wr0XzCMeOmNkTYKlXyHR7GvA/ifcOAOfkbLrbuqctt8LARYNEdQOQ1KxuPYvGFGs5R+cN0aSTh9tsV8frI0cXuW3nk1uvV2+8f8bMNvdY/fnAj4BHzGwu9vpc4FBquVVEp6heMsXaOfdaPEN6hcjXw4nv7DeAM3ot7N/X8XGr3fDfzedpr5DpVl3m5R0fqu91hzk9latCSdoqaY+kPfPMDtGcMyiGMWvzrSmD04AHaB9ZHIif/29quZOJ9li/7l7LoU+v0SpL6fhPo/l9BX7TvZZD2msOt83vaJMns/T7OrJ1hykauSqUme0ws81mtnk1a4ZozhmUBsaMLbamDAQ8CJwl6QyiH9nOBG5KLfdXwJfda3n06RWiH0vXSTpD0gnAC4h++GzR/L4Cn3Gv5ZD2msPtbuLva+z1IpZ+X3uxEzhf0rSkaeD8eF5Phikaw1Q3Z4wYMGuN1pTBASKXbyLaeN4H3G5meyW9W9Ir4uV2Ag9J6nk60imWPr1CdAR5H5G7ffF0d9KrpOdJOgC8pqBuOxmkvWa5NbMF2t/XfcD16e9ryuuHJO2N1z0KvIeo8OwG3h3P68kwv2m0qhvwQ6Lq9jtDfJ5TEGbGnOUeAn830bnvfcAvxK8viz/nzxOfafH8y9ZpvY+vXwJ9eoXI5TRwHtF3djdwk5ntTXzmbqKdBtxrOQzgFTO7Gbg5NS/5fW157bLuVcBVedsauGiY2YKkZnVbCVyV3PiccGggZq3b2cSluNfJoR+v4G4nhX69jpthjjS6VjcnPAyYsZX5l3evE0G/XsHdTgKDeB0nQxUNZzJoIGbMVVcN91pNQvcabs+ckRFthKvL7oYzYtxrNQndqxeNGmAW9p6LMxjutZqE7jXcnjkjwxBzAW+EzmC412oSutdwe+aMjNAPd53BcK/VJHSvXjRqQAMx0wh3I3QGw71Wk9C9etGoAWZiNuA9F2cw3Gs1Cd2rJ/fVgOaeS3PKQ44ksEskPSjpjpF32MlFQV7XSLpO0v6Rd9jJRdprHrf9eJV0m6RN8fzVkq6RdJekfZK2Z7XlRaMGWHyOtDllkchKeRnwdOB1kp7eZdHrzOzZo+2tk5eCvF4KHDOzM0feYScXaa9Zbgfw+n7gr+P5rwHWmNkziSIQfr9ZUHrhRaMGGDBvK1tTDjKTwJzyKcjrK4FrRttTpx/SXnO47dfrDcB5khQ3t1bSKuBxwBzw8HKNedGoAQ0Ts43VrSkHedO8Xi3pzlH00emfgryml3HGTNprDrd9eY1Hxf0/4PFEBeRRoujfB4C/K3KUW2dCsKVXY2yIg3aapGNB82Sl/BtwrZnN+mio5VCQ13BHyqsJXbzC8m4H9WpERymLwE8TjYD8n5JubaY7dsOLRg2I9lw6VB/JiAXNzEoxs57Z0s54KMJrYpkDI+mk0zddvMLybvvyGp+K+ingKFGcxb+b2TxwWNJXgc2kwrmS+OmpGmBEG2FzykFmEpikjQV01emDIrzGry8ecVedPkh7zeG2X68XAp+PM3EeAH5NEWuJ0hy/u1xjXjRqgCHmGqtaU+byOZLAgD+StFfSd4rrubMcBXm9Eni8X3JbHmmvWW4H8HoZ0Lws94PAScDdRMXnw2a27O+UfnqqBpjBfGP43IVUEth2YDt4wltZFOR1hjjq1b2WQ9FeU8sc7zZ/Obxo1IAGYq7PjdAJH/daTUL36kWjBpgp1+kLZ7Jwr9UkdK/h9swZGQbMLYa75+IMhnutJqF79aJRA6I9l3A3Qmcw3Gs1Cd2rF40a0EBB77k4g+Feq0noXr1o1IRF86urq4h7rSYhe83smaSrJB2WdHdi3npJt0i6L36cLrabzjCYifnFla0J3GsV6OYV3O2kk/Y6H9hRR54jjauBDwAfSczbBuwys8vjsdu3AW8ffffGw4qpqfbz6VPab0ytaT+fmW09bRz7cfv5zEyhfRsFZrCwuGT/4GrcaxW9QsXd1thrEGT2zMy+TDRGSZLkMLvXAK8acb+cEWKI+cbK1gTutQp08wrudtJJe+33Rr+iGbScPdHMDgLEj6f2WlDSVkl7JO2ZZ7bXYk6BmMHi4orWtAwtr8CzgDOXSQL7sKR5SY+513LowyvEbiVtAb5I5Lab1z+QdFTSjHsth7TXHG4HTu6L3ztb0tfjYYHukjSVXj9J4cdAZrbDzDab2ebVrMlewSmEhcUVrSmLRBLYcXongX0J+JCZnehey2NAry8jCtrplch4vZlNudfySHrNcjtMcl884u3HgDeY2TOAlwDzy7U36NVThyRtjPdcNgKHB/yc0li54fGt5/M/3x5V+OEzHteef1J7+dXH28/Xff8n7fnfbWefLB4Jc7RwQzQsV0zCodjnJqLRLxfMbE5SMwnsnuJ6ORrca08OEf2nsh/4CdF3tpvXVwLvHF0vR4N7XZZWch9Aj+9r0usNwAfi5L7zgTvN7DuQL/Jg0CON5DC7FwOfHvBznHFg0Fhc0ZqWoen1NGAtba+e3Bci+b1C5PYiovS25nfWk/tCJOU1h9thkvueCpiknZJul/QnWY1lHmlIupbokGWDpAPAXwCXA9dLupRoj7SvURKd8WLxRphgg6SHgJOBVZKOAW8j9gq8GWjEr1sfk/pYT+4rmR5e9wBnELldkfrOfhF4CrCH6Dv7G3hyX3B08QrFJfetAl4MPA94DNgl6VtmtqtX/zKLhpm9rsdb52WtGxLJy/Sg8xD3Ry86sfX8sWe2D2VPOeXR1vMjP17bXuau9vJPSgRmrdrTXh5CurxPNBY7tpkjZrapx8LnSXoh8M5EVnCwyX3udYnXnsl9krYSeb0gfh1scp97XfJ/fFHJfQeAL5nZEQBJNwO/CPQsGuFeDOyMDgNbVGvKgSf3TQIFeMWT+8on5TWH22GS+3YCZ0s6MS4mv0LGb5deNOpCQ+0pA0/umyBG79WT+0Ig6TXD7TDJfWZ2DLiCqPDcAdxuZp9drr3ajD3VceconVddJA9xL33W11rPX3zSva3nXzn+c63nV/Ki9uccbH/Ohvs722gc/NEQPR4hBpbjP5WOVSYkuc+9jtxrEMl97rU4r13W/RjRZbe5qE3RqDvKd/rCmTDcazUJ2asXjTpggoA3QmdA3Gs1CdxrfYrGVOfdrckbgZJXXSQPcc/tuICjPf/GU56V+JzEQlOB3kFrBL0RDoV7LbsXxeBey+5FT+pTNGqOGmX3wCkC91pNQvbqRaMOWNjnSJ0Bca/VJHCv9SkaM50jdibHpkneCJS86iJ5iJuc/+PE8hsSn5NuIyRC3nMZCvdaTdxrsNSnaNQYGWix7F44o8a9VpPQvXrRqAkhH+46g+Neq0nIXmtTNJKRj9A5XHJybJrkjUDJqy6Sh7gn3tW+QWjd9x/r2UYwBL7nMgzutexOFIN7LbsTvfFhRGqCGu0p1/LZSWCXSHpQ0h2j7quTnwK8thLeRt1XJz9Jr3ncDpPcF7//FEnHJb0tqy0vGnUg3nNpTlnkTAIDuM7Mnj3Svjr5KcZrMuHNKYOU1yy3wyT3JXg/8Lk83avP6anUsMfJBK/kcMnJsWmSNwJt6EgCax/idiSBBTO0ciei76sx8iSBBYF77WuVfhPeSsO99rXKwMl9ZmaSXgV8D+gcK74HfqRRB/rcIyVfEhh4cl+5FOPVk/vKps8jDYZI7pO0Fng78K683fOiURNSG+AGSXsS09b04l0+olty3yYzO7uA7jo5KcBruJft1IguRWM5t8Mk970LeL+ZHe/yfldqc3oqTTJUPpng1TFccnJsmsSNQMmrLkI9xO1g6dUYyya8kSMJLJTkvjTudTivBJLcl6bmXqG45L5zgAsl/Q1wCtCQNGNmH+jVPT/SqAP9n8bw5L5JoACveHJf+fR/emrg5D4z+2Uz2xTHP/898JfLFQzwolELBKxotKcsPLlvMijIqyf3lUzaa5bbYZL7BqG2p6dqR59j2UxKcl/tGb3XIJL7ak+BXpf5jHfmacuLBp2X9wUT+ThKDFYEfIdpUbjXauJeyyXz9JSk0yV9QdK++HTEm+P56yXdIum++HG6+O46A9Hl3Ld7rQDutZr0/5vGWMnzm8YC8FYzexrwAuCN8d2G24BdZnYWsIshzpE5xSK6boDudcJxr9Uk7XXiioaZHTSz2+PnjxD90HIa0R2G18SLXQO8qqhOOkNisGLRWhO410rgXqtJymvTbSj09ZtGPMjVc4DbgCea2UGINlRJp/ZYZyuwFWCKE7st4oyB5fZW3Ovk4l6rSWhHF0lyX3Ir6STgRuAtZvZw3vXMbIeZbTazzasJNMi96ljvETPd6wTjXqtJymtoKX65ioak1UQb4MfN7FPx7EPNG7zix8PFdNEZFrH0NAa410nHvVaTtNfQTk/luXpKRDeG7DOzKxJvJe8wvBj49Oi754wEAy20J3CvlcC9VpOU16bbUMjzm8YvAa8H7lI7cOdPgcuB6yVdCjxAxo0jTonEP6ylcK+TjnutJt29BkNm0TCzr9B75MvzRtsdpwhkhlIbYZZXSVuAfwC+Kemfzezyjs+ULgH+Fvjhyfgl/2VQkNc1wEeA57rXcujmNXOdtteVwLJegYeA3zazH0h6KdEOxQnAHPDHZvb55drysadqworF9pSFJ/dNDgV49eS+AEh6zXI7ZHLfEeC3zOyZRKctP5rZt37+EGdCMWDR2lM2rSQwM5sDmklgTkgU4zV5P4dTBmmv2W779XoD0VGnzOzbZtYcRn0vMBUflfTEi0ZN6PNKDE/umxAK8OrJfQHQ59VTAyf3pZZ5NfBtM5tlGXzAwhogAy10bHgbJO1JvN5hZjuSq3T5mG7Jfdea2ayPhloOBXn15L6S6eIVlnc7THJf9Kb0DKJTVudn9c+LRh0wQ4sddwhVNrmvVhTglUCT+2rFUq9QXHIfkp4M/Cvwu2Z2f1b3/PRUHTBYsWCtKQee3DcJFOAVT+4rn5TXHG4HTu6TdArwWWC7mX01T/e8aNQELTZaUxae3Dc5FODVk/sCIOk1y+2QyX1vAs4E3iHpjnjqOi5ZEz89VQeaV2P0s4on94VPMV49ua9sCvaaWua9wHv7acuLRg0QhhYDHjbTGQj3Wk1C9+pFow4YaCGwoTKd4XGv1SRwr1406oAZBLwROgPiXqtJ4F69aNQBAy2Ee7jrDIh7rSaBe/WiUQsMAj5H6gyKe60mYXv1olEHLOyN0BkQ91pNAvfqRaMOGBDw4a4zIO61mgTu1YtGHTCDhcDiv5zhca/VJHCvXjRqgQW95+IMinutJmF79aJRBwws4D0XZ0DcazUJ3KuPPVUHzLD5+daUB0lbJN0rab+kbV3ev0TSg4kcamfcFON1jaTrfOypEkl5zeO2H6+SbpO0KfHe9nj+vZIuyGrLi0YdMIPFRnvKwONeJ4RivHrca9mkvWa4HSbuNV7uIuAZwBbgH+PP64kXjRpgZtjCfGvKgce9TgAFefW415JJe83hduC413j+J81s1sy+D+yPP68nY/1N4xGOHbnVbniUKMy8LDaU2P642v6Z5ItHOLbzloXrNiRmTWUkvHWLjzynSzuvlnQuMHer3fBdomCXlUQ7IwfjZTYCDeDQQH9JftzraLy2lom/rycDDwJrgOPEwT1xXx4Gjg34t+SlDl4h4baLV1jebV9ezWxBUjPu9TTgG6l1u0U7txhr0TCzJ0jak5EuVihltl9W22a2pc9V+op7lfQG4LXAPHAdsCYechlJ7wAeM7P39dmH/jrsXvPQVyxo/H29n6g4fA34upl9DEDSlcDNZnZjn33oC/eai2HiXvOs24GfnnK6kSvuNRFA/0/Ac/Ou65RGP7GgJGJBF3Ou65TDoF6P5ly3Ay8aTjf6jXt9BVFiGETpYedLmpY0TRRUv3MMfXayGSgWNDH/ovgqnDOAs4BvjqHPTjYDx70ygNcy7tPYkb1IZdsv+2/PRXzOsxkfuRK4qhkfCewxs5uI4l5fASwQ7bFcApxrZkclvYdoQwZ4t5kdXdrKyHGvGeT0eiXw0fiS26NE/wH9erzc9cA9RM7faGbjuAPNvWYwhFcG8aqo2DiO4zhONn56ynEcx8mNFw3HcRwnN2MtGlm3uo+4raskHZZ0d2Leekm3SLovfpwuqO3TJX1B0j5JeyW9eZztj5txeo3bK8Wtey28Pfc6AYytaPQxNMWouJrotvgk24BdZnYWsCt+XQQLwFvN7GnAC4A3xn/ruNofGyV4hfLcutdiuRr3Gj5mNpYJeCGwM/F6O7C94DY3AXcnXt8LbIyfbwTuHdPf/mngpWW1XzWvobh1r+61jtM4T091u9V92dvVC+CJZnYQIH48tegGFY0m+RzgtjLaHwMheIUx/9u617HhXgNjnEWj79vVJx1JJwE3Am8xs4fL7k9BuNdq4l6droyzaIQwDMGh5p3M8ePhohqStJpoA/y4mX1q3O2PkRC8wpj+bd3r2HGvgTHOopHnVveiSd5KfzHRucuRI0lEd2DuM7Mrxt3+mAnBK4zh39a9utdRtz2RjPMHFODlwH8B9wN/VnBb1xINzz1PtNd0KdFQwLuA++LH9QW1/WKiQ/k7gTvi6eXjan/c0zi9lunWvbrXsp2EMPkwIo7jOE5u/I5wx3EcJzdeNBzHcZzceNFwHMdxcuNFw3Ecx8mNFw3HcRwnN140HMdxnNx40XAcx3Fy8/836fE9S1GJ6wAAAABJRU5ErkJggg==\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 6 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"def gen_test_data(nx, ny, g, num_ghost_cells):\n",
|
|
" width = 100.0\n",
|
|
" height = 100.0\n",
|
|
" dx = width / float(nx)\n",
|
|
" dy = height / float(ny)\n",
|
|
"\n",
|
|
" x_center = dx*nx/2.0\n",
|
|
" y_center = dy*ny/2.0\n",
|
|
"\n",
|
|
" #Create a gaussian \"dam break\" that will not form shocks\n",
|
|
" size = width / 5.0\n",
|
|
" dt = 10**10\n",
|
|
" \n",
|
|
" h = np.zeros((ny+2*num_ghost_cells, nx+2*num_ghost_cells), dtype=np.float32); \n",
|
|
" hu = np.zeros((ny+2*num_ghost_cells, nx+2*num_ghost_cells), dtype=np.float32);\n",
|
|
" hv = np.zeros((ny+2*num_ghost_cells, nx+2*num_ghost_cells), dtype=np.float32);\n",
|
|
" \n",
|
|
" x = dx*(np.arange(-num_ghost_cells, nx+num_ghost_cells, dtype=np.float32)+0.5) - x_center\n",
|
|
" y = dy*(np.arange(-num_ghost_cells, ny+num_ghost_cells, dtype=np.float32)+0.5) - y_center\n",
|
|
" xv, yv = np.meshgrid(x, y, sparse=False, indexing='xy')\n",
|
|
" r = np.sqrt(xv**2 + yv**2)\n",
|
|
" xv = None\n",
|
|
" yv = None\n",
|
|
" gc.collect()\n",
|
|
" \n",
|
|
" #Generate highres then downsample\n",
|
|
" h = 0.5 + 0.1*0.5*(1.0 + np.cos(np.pi*r/size)) * (r < size)\n",
|
|
" hu = 0.1*0.5*(1.0 + np.cos(np.pi*r/size)) * (r < size)\n",
|
|
" hv = 0.1*0.5*(1.0 + np.cos(np.pi*r/size)) * (r < size)\n",
|
|
" \n",
|
|
" scale = 0.7\n",
|
|
" max_h_estimate = 0.6\n",
|
|
" max_u_estimate = 0.1*np.sqrt(2.0)\n",
|
|
" dx = width/nx\n",
|
|
" dy = height/ny\n",
|
|
" dt = scale * min(dx, dy) / (max_u_estimate + np.sqrt(g*max_h_estimate))\n",
|
|
" \n",
|
|
" return h, hu, hv, dx, dy, dt\n",
|
|
"\n",
|
|
"h, hu, hv, dx, dy, dt = gen_test_data(nx=25, ny=25, g=9.81, num_ghost_cells=2)\n",
|
|
"\n",
|
|
"plt.figure()\n",
|
|
"ax=plt.subplot(1,3,1)\n",
|
|
"im=plt.imshow(h)\n",
|
|
"divider = make_axes_locatable(ax)\n",
|
|
"cax = divider.append_axes(\"right\", size=\"5%\", pad=0.05)\n",
|
|
"plt.colorbar(im, cax=cax)\n",
|
|
"\n",
|
|
"ax=plt.subplot(1,3,2)\n",
|
|
"im=plt.imshow(hu)\n",
|
|
"divider = make_axes_locatable(ax)\n",
|
|
"cax = divider.append_axes(\"right\", size=\"5%\", pad=0.05)\n",
|
|
"plt.colorbar(im, cax=cax)\n",
|
|
"\n",
|
|
"ax=plt.subplot(1,3,3)\n",
|
|
"im=plt.imshow(hv)\n",
|
|
"divider = make_axes_locatable(ax)\n",
|
|
"cax = divider.append_axes(\"right\", size=\"5%\", pad=0.05)\n",
|
|
"plt.colorbar(im, cax=cax)\n",
|
|
"\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def sanity_check(variable):\n",
|
|
" maxval = np.amax(variable)\n",
|
|
" minval = np.amin(variable)\n",
|
|
" if (np.isnan(maxval) \n",
|
|
" or np.isnan(minval)\n",
|
|
" or maxval > 10.0\n",
|
|
" or minval < -10.0):\n",
|
|
" return False\n",
|
|
" else:\n",
|
|
" return True\n",
|
|
"\n",
|
|
"def run_benchmark(simulator, \n",
|
|
" h0, hu0, hv0, dx, dy, dt, nx, ny, \n",
|
|
" block_width, block_height, \n",
|
|
" g=9.81, timesteps=10):\n",
|
|
" logger = logging.getLogger(__name__)\n",
|
|
" \n",
|
|
" #Initialize simulator\n",
|
|
" try:\n",
|
|
" sim = simulator(cuda_context, \n",
|
|
" h0, hu0, hv0, \n",
|
|
" nx, ny, \n",
|
|
" dx, dy, dt, \n",
|
|
" g, \n",
|
|
" block_width=block_width, block_height=block_height)\n",
|
|
" except:\n",
|
|
" #An exception raised - not possible to continue\n",
|
|
" return np.nan\n",
|
|
" \n",
|
|
" #Warmup\n",
|
|
" for i in range(5):\n",
|
|
" sim.stepEuler(dt)\n",
|
|
" sim.synchronize()\n",
|
|
"\n",
|
|
" #Run simulation with timer\n",
|
|
" \n",
|
|
" start = cuda.Event()\n",
|
|
" end = cuda.Event()\n",
|
|
" with Common.Timer(simulator.__name__ + \"_\" + str(block_width) + \"x\" + str(block_height)) as timer:\n",
|
|
" start.record(sim.stream)\n",
|
|
" for i in range(timesteps):\n",
|
|
" sim.stepEuler(dt)\n",
|
|
" end.record(sim.stream)\n",
|
|
" end.synchronize()\n",
|
|
" gpu_elapsed = end.time_since(start)*1.0e-3\n",
|
|
" megacells = (nx*ny*timesteps / (1000*1000)) / gpu_elapsed\n",
|
|
" logger.debug(\"Megacells %f, gpu elapsed %f, wall elapsed %f\", megacells, gpu_elapsed, timer.secs)\n",
|
|
"\n",
|
|
" #Sanity check solution\n",
|
|
" h, hu, hv = sim.download()\n",
|
|
" sane = True\n",
|
|
" sane = sane and sanity_check(h)\n",
|
|
" sane = sane and sanity_check(hu)\n",
|
|
" sane = sane and sanity_check(hv)\n",
|
|
" \n",
|
|
" if (sane):\n",
|
|
" return megacells\n",
|
|
" else:\n",
|
|
" return np.nan"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"metadata": {
|
|
"scrolled": false
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"===============================================================================================================================================>\n",
|
|
"Completed LxF in 96.28947472572327 seconds\n",
|
|
"===============================================================================================================================================>\n",
|
|
"Completed FORCE in 107.3589289188385 seconds\n",
|
|
"===============================================================================================================================================>\n",
|
|
"Completed HLL in 130.474853515625 seconds\n",
|
|
"===============================================================================================================================================>\n",
|
|
"Completed HLL2 in 185.12253713607788 seconds\n",
|
|
"===============================================================================================================================================>\n",
|
|
"Completed WAF in 212.6702971458435 seconds\n",
|
|
"===============================================================================================================================================>\n",
|
|
"Completed KP07 in 212.57526469230652 seconds\n",
|
|
"===============================================================================================================================================>\n",
|
|
"Completed KP07_dimsplit in 172.73859095573425 seconds\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"nx = 2048\n",
|
|
"ny = 2048\n",
|
|
"simulators = [LxF.LxF, FORCE.FORCE, HLL.HLL, HLL2.HLL2, WAF.WAF, KP07.KP07, KP07_dimsplit.KP07_dimsplit]\n",
|
|
"simulator_ghost_cells = [1, 1, 1, 2, 2, 2, 2]\n",
|
|
"simulator_courant_numbers = [0.9, 0.9, 0.9, 0.9, 0.9, 0.45, 0.9]\n",
|
|
"block_widths = range(8, 32, 2)\n",
|
|
"block_heights = range(8, 32, 2)\n",
|
|
"\n",
|
|
"filename = \"autotuning_data_\" + gethostname() + \".npz\"\n",
|
|
"\n",
|
|
"megacells = np.empty((len(simulators), len(block_heights), len(block_widths)))\n",
|
|
"megacells.fill(np.nan)\n",
|
|
"for i, simulator in enumerate(simulators):\n",
|
|
" #Generate initial conditions\n",
|
|
" h0, hu0, hv0, dx, dy, dt = gen_test_data(nx=nx, ny=ny, g=9.81, num_ghost_cells=simulator_ghost_cells[i])\n",
|
|
" dt = dt * simulator_courant_numbers[i]\n",
|
|
"\n",
|
|
" total_sims = len(block_heights)*len(block_widths)\n",
|
|
" with Common.Timer(simulator.__name__) as t:\n",
|
|
" for j, block_height in enumerate(block_heights):\n",
|
|
" for k, block_width in enumerate(block_widths):\n",
|
|
" sims_so_far = j*len(block_widths)+k+1\n",
|
|
" sims_remaining = total_sims - sims_so_far\n",
|
|
" print('='*(sims_so_far-1), end='')\n",
|
|
" print('>', end='')\n",
|
|
" print('-'*sims_remaining, end='\\r', flush=True)\n",
|
|
" megacells[i, j, k] = run_benchmark(simulator, \n",
|
|
" h0, hu0, hv0, dx, dy, dt, nx, ny, \n",
|
|
" block_width, block_height)\n",
|
|
" print(\"\")\n",
|
|
" print(\"Completed \" + simulator.__name__ + \" in \" + str(t.secs) + \" seconds\")\n",
|
|
" \n",
|
|
"\n",
|
|
"np.savez_compressed(filename, megacells=megacells)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"metadata": {
|
|
"scrolled": false
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 2 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 2 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 2 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 2 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 2 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 2 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAATgAAAEWCAYAAADy2YssAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3Xm4XFWZ7/HvjwyQABkgEAJEARUUEQIduYitMogCbeOENt0OUWwQWlHoq0LDc7Vt7NuoKGrbyk0DMogoIIPtwNDI0MokhEDAMCgGCIQkQIAwZTrv/WOvA0V5qs6uqlV1qur8Ps+zn1O1h3evs8lZrL33Wu9SRGBm1o/WG+kCmJm1iys4M+tbruDMrG+5gjOzvuUKzsz6lis4M+tbruAsK0lnSvpK+vwWSfd0+PzbSApJY9P3X0ma08kyWPdwBdeDJC2S9PaK74dIWiHpbemP+5m0LJJ0XMV+20i6WtJzku6uinFqxXHPSFolaWUr5YyI/4mIHVqJ0aqIOCAizgKQ9DFJvxnJ8lhnjR3pAlhrUuvkm8BfAY+k1VMiYq2kNwFXSZofEZcB5wE3AAem5UJJr4mI5RFxBHBERdwzgYEO/ipm2bkF18MkHQ58A3hnRFxfvT0ibgDuAnaStD2wG/CliHg+In4KLADeP0TcDdP6s0qUYVdJ8yStlPQTYIOKbXtJWlzxfZGkz0u6Q9Kzkk6XND3dRq6U9N+SpqZ9N5D0Q0mPS3pS0u8kTU/brpH0b5JulvSUpEslbVKjfNdI+ntJrwNOBd6UWqhPDve7We9zBde7jgROBPaNiFuqN6rwZuD1wG3p5/0RUXnbeXtaX+39wHLgunoFkDQeuAQ4B9gEuIAhKswhYu8HbA/8NfAr4HhgGsW/x8+k/eYAk4GZwKYUrcvnK+J8FDgU2BJYC3yn3kkjYmGKcUNEbBQRU4Ypp/UBV3C9az/gRopWWLXHgCeA04DjIuIqYCPgqar9ngI2HuL4OcDZMfxA5T2AccC3ImJNRFwI/G6YY/49IpZGxMPA/wA3RcRtEbEKuBjYNe23hqJie3VErIuIWyPi6Yo450TEnRHxLPB/gA9KGjPMuW2UcQXXu46gaAWdJklV26ZFxNSIeF1EDLZsngEmVe03CXjZiwRJM4G3AWeXKMOWwMNVFeEDwxyztOLz80N83yh9Pge4HPixpEckfU3SuIp9H6o65ziKVqDZi1zB9a5lwL7AW4Dvldj/LmA7SZUttl3S+kofBa6PiPtLxFwCbFVVwb6ixHHDSi3CL0fEjsCewLtS2QbNrDrnGoqWa92wOcpmvcMVXA+LiEeAfYD9JZ0yzL73AvOBL6UH+O8FdgZ+WrXrR4EzSxbhBornX5+RNFbS+4DdG/gVapK0t6Q3pNvOpykqsHUVu3xY0o6SJgL/AlwYEeuGilVhKbB1enZoo4AruB4XEQ9RVHIHA/82zO6HALOBFcBJwMERsXxwY+pWsjXFy4Iy514NvA/4WIr5N8BFjf0GNW0BXEhRuS0ErgV+WLH9HIqK+FGKN7efYXi/pmixPippuNae9QE54aX1GknXAD+MiNNGuizW3dyCM7O+5ZEMVpekVwC/r7F5x4h4sJPlMWuEb1HNrG/5FtXM+lZP3KJOnLp+TN5yYstxVrzQegwAKU+rd2B1xo73YzONix+o7jPcpEw3Bus/9PzwO5Wg8eOG36lUoEzXB1i3QZ7//rFe62Va9ewTrH3h2ZYCvXPvDePxJ4brqVO49Y5Vl0fE/q2cr4yeqOAmbzmROT/ap+U4F9696/A7lbDBhNVZ4jzzYPXAguZpap4yDTyf6Z/EujwVwQ6fmZ8lznqv3DpLHHJVlMAzr56cJc7qjVu/EbvrF99qOcbjT6zj5svL9fMeM+O+jow66YkKzsy6XwADXZZhyxWcmWURBGuGHUzSWa7gzCwbt+DMrC8Fwbou63bWtm4iaUD3zZJul3SXpC+n9dtKuknSfZJ+4oHPZv1jgCi1dEo7+8GtAvaJiF2AWRQZL/YAvgqcEhGvoRig/Yk2lsHMOiSAdUSppVPaVsFF4Zn0dVxagiLzxYVp/VnAe9pVBjPrrG5rwbX1GVzK5XUr8GrgP4A/Ak9GxNq0y2JgqxrHHg4cDjBpxoR2FtPMMghgzWh5BgeQcunPosgxtjvwuqF2q3Hs3IiYHRGzJ05dv53FNLMMouTtaSdvUTvyFjUinkw5vPYApkgam1pxW/PSXJ5m1ssC1nVXA66tb1E3kzQlfZ4AvJ0iM+vVFNlnoZi96dJ2lcHMOqcYyVBu6ZR23qLOAK6WdAfFVHJXRsTPgWOBf5T0B4pp4U5vYxnMrGPEupJLqWjSMamL2Z2SzktdzxrqZta2W9SIuIOX5risXH8/mSYmMbPuUbxkyJNkQdJWFPNs7BgRz0s6n2JOkQMpupn9WNKpFN3Mvl8rjvPBmVkWRT+4fC04igbYBEljgYkU01Q21M3MQ7XMLJuB8i24aZJuqfg+NyLmDn6JiIclnQw8SDEh+BUUXc5KdTMb5ArOzLIYbMGV9FhEzK61UdJU4N3AtsCTFFNZHlDjtDX1RAU3ecxzHDT5tpbjzJs+c/idSvjDbXni7L7HvVniADy0ckqWOEuW5omz3tg8/QUe+NEOWeK84gMLssRZb6fXZokDsP6Ta7LEWbNhd/QTDcS6fE+93g78aXDeXkkXAXvSYDczP4Mzs2wGQqWWEh4E9pA0UZKAfSlmd2uom1lPtODMrPsFYnVkmmci4iZJFwLzgLXAbcBc4BfAjyV9Ja2r283MFZyZZVF09M13UxgRXwK+VLW6oW5mruDMLJsGXjJ0hCs4M8siQqyL7nqs386xqDMlXS1pYRpu8dm0fpakGyXNl3SLJI9qMOsTA6jU0intbMGtBf53RMyTtDFwq6Qrga8BX46IX0k6MH3fq43lMLMOKF4ydNdNYTvHoi6hGFpBRKyUtJCi13EAgzMeT8bpksz6Qu6XDDl0pLqVtA3FwPubgKOBy9MwjPUoOu+ZWR9Yl2mwfS5tr24lbQT8FDg6Ip4GjgSOiYiZwDHU6Mci6fD0jO6WJx/vrslkzezPDY5kKLN0SlvPJGkcReV2bkRclFbPAQY/X0CNPi2VKcunbJqn86CZtddArFdq6ZR2vkUVRetsYUR8s2LTI8Db0ud9gPvaVQYz65xisH13teDa+QzuzcBHgAWS5qd1xwOHAd9OOZ5eIM2cZWa9LRBrMg3VyqWdb1F/AzU7vPxFu85rZiMjgq7r6NtdnVbMrId1thNvGa7gzCyLwC04M+tjnXyBUEZPVHDL12zM95bu3XKc+5dOy1Aa2H63B7PE2WGjpVniAHxk+vVZ4nz+t4dmibNqap7ZL8dv90KWOM9ctl2WOJPesyhLHIDYbMcsccY92/q11kDrGZiD0sksO6YnKjgz637FtIHdVaV0V2nMrIc1NCVgR7iCM7MsAjo6SqEMV3Bmlo1bcGbWlyLUdS24jmf0TduOknRPWv+1dpXBzDqneMkwptTSKSOR0Xc6xYzVO0fEKkmbt7EMZtYx3Tcnw0hk9D0MOCkiVqVty9pVBjPrnOIlQ3c9g+tIdVuV0Xd74C2SbpJ0raQ3dqIMZtZ+oyldEvDnGX1TmqSpwB7AG4HzJW0XEVF13OGkVEoTt9iw3cU0sxZ140iGkcjouxi4KAo3AwPAn42hqszou8GUDdpZTDPLZID1Si2d0rYWXJ2MvpdQZPK9RtL2wHjgsXaVw8w6IwLWDIySlwzUzuh7BnCGpDuB1cCc6ttTM+s9xS3qKKnghsno++F2ndfMRk6ukQySdgB+UrFqO+CLwBSKnhjL0/rjI+KXteJ4JIOZZZGzm0hE3APMApA0BngYuBj4OHBKRJxcJo4rODPLpG23qPsCf4yIB4pH++V11w2zmfW0gTQvw3ALMG1wYve01Jtd7xDgvIrvn5Z0h6QzJE2tVx634Mwsi+Itaulxpo9FxOzhdpI0HjgI+Ke06vvAiRR3xCcC3wBqpqHuiQpu0tgXeOcmd7Uc567HtshQGnj1xsuH36mEC+7bNUscgDfN+kOWOKsn50k1Pvb5PM9inlk0OUuc9bZ9MkscLtkyTxxg8ocWZYkTs7ZtOYbWZShHezr6HgDMi4ilAIM/AST9J/Dzegf7FtXMsmngFrWsv6Xi9lTSjIpt7wXurHdwT7TgzKz75R5sL2kisB/wyYrVX5M0K51uUdW2P+MKzsyyyfkWNSKeAzatWveRRmK4gjOzLCLE2tEyksHMRp9Rk02kXsrytP1zkkJSntmYzWxEDT6DK7N0SsdTlkfE7yXNpHh4mGeKeDPrCqOmBRcRSyJiXvq8EhhMWQ5wCvAFikrfzPrAYD+40dKCe1FlynJJBwEPR8Tt9caVVWb03XTL8R0opZm1qsE+bm3X0ZTlFLetJwDvGO64iJgLzAXY9g0buaVn1uUiYG2XJbzsdMryVwHbArdLWgRsDcyTlGcMlZmNqFFzizpUyvKIWABsXrHPImB2RDhluVmPG22TzgymLN9H0vy0HNjG85nZCItQqaVTRipl+eA+27Tr/GbWeaPuJYOZjQ4R3dcPzhWcmWUi1nXZW1RXcGaWTSefr5XRExXco89P4qsLh+06N6zXTluWoTRwxf2vzRLn3a9ZkCUOwI+W/68scTbYbmWWOM8t3ihLnBifpwvkU4umZIkz8MqnssQB2OrSTJXBx1e0HGK91WtbjpE7H1wOPVHBmVkPiOI5XDdxBWdm2fgtqpn1pfBLBjPrZ75FNbO+1W1vUYdtT0pav8y6IfYZMqOvpK9LujvNTH2xpDyvt8xsREV031CtMjfMN5RcV20wo+/rgD2AT0naEbgS2Ckidgbu5aUZq82sx/VMNpGUwmgrYIKkXXlpXOkkYOJwgSNiCbAkfV4paSGwVURcUbHbjcDBTZbdzLpMLz2DeyfwMYqcbd+sWL8SOL6Rk1Rm9K3adCjwkxrHvJjRd9xmkxs5nZmNgEAM9Mpb1Ig4CzhL0vsj4qfNnqAyo29EPF2x/gSK29hza5z/xYy+E169ZZf9f8HMhtJtf6hl3qL+XNLfAdtU7h8R/zLcgUNk9B1cPwd4F7BvRLc1as2sKdF9b1HLVHCXAk8BtwKrygYeKqNvWr8/cCzwtoh4rrHimllX67LmSpkKbuuI2L+J2IMZfRdImp/WHQ98B1gfuDLNqnVjRBzRRHwz6zK5WnCSduDlz+e3A74InJ3WbwMsAj4YETWzDZSp4K6X9IY0n0JpdTL6/rKROGbWGwIYGMhTwUXEPcAsAEljgIeBi4HjgKsi4iRJx6Xvx9aKU6+byIJU5rHAxyXdT3GLquL8sXOW38TM+kMA7XkGty/wx4h4QNK7gb3S+rOAa2imgqN4CWBmVloDrwynSbql4vvc1HNiKIcA56XP01MfWyJiiaTNaxwD1O8m8gCApE2G2JwnK6KZ9ZfyFdxjETF7uJ0kjQcOoskRT2Wewc0DZgIrKG5PpwBLJC0DDouIW5s5cSO2nfgYZ+9yZstxPnDDJ1svDDBp4zwvf7ddf3mWOADvn/K7LHGOWP7hLHHW37b1LLMAK/40NUuccSvz3Do9+4d8nc6XTXw+S5yJc19oPcjhOV5/tmWc6QHAvIhYmr4vlTQjtd5mAHXTdJfpdnwZcGBETIuITdMJzwf+AfheCwU3s34TJZfy/paXbk8BfgbMSZ/nUHRjq6lMBTc7Ii4f/JLGkr41Im6k6O5hZlZ09B1QqaUMSROB/YCLKlafBOwn6b607aR6Mcrcoj4h6Vjgx+n73wAr0qvbgVIlNbNRIt8tahoIsGnVuscp3qqWUqYF93cUA+4voWgOviKtGwN8sOyJzGwUyH+L2pJhW3AR8RhwVI3Nf8hbHDPrab0yVEvStyLiaEn/xRDFjoiD6gWWNJNiWMUWFLeycyPi26nbSemhFmbWI9rX0bdp9Vpw56SfJzcZezCj7zxJGwO3SrqSIsdc6aEWZtY7ui03UL2Ovremn9dKmgC8Io0PK6VWRl+goaEWZtZDMo1FzaXMpDN/Dcyn6A+HpFmSftbISaoy+r5sqAUw5FALSYdLukXSLSue8Mtas16gKLd0Spm3qP8M7A48CRAR8ymen5VSK6PvcCJibkTMjojZUzfprjTIZjaEsm9Qu6yCWxsRTzUTvEZG36VpiAVlhlqYWa9Q8ZKhzNIhZSq4O1PK8jGSXiPp34HrhzuoVkZfGhxqYWY9pAdbcEcBr6fIBXce8DRwdInjBjP67iNpfloOpMGhFmbWQwZKLh1SpqPvc8AJaSmtTkZfaGCohZn1iF7qB1erg++g4Tr6mtno08k3pGXUa8ENdvAV8J/A37e/OGbW03qlgouIawc/S3qm8ruZWS8oky4JRrhefmjVJvzvP36g5ThrV43JUBqYNj1PRt83TvhTljgAG6+3JkuclXcPlaG+cRvtkGd48QZbPpslzuo1G2WJM/7JfH0yt9iwdLfQup5cNaHlGLn+wHvmFrVqLoYxkqZS8dIgIp5oZ8HMrMcEXTdUq14L7laKIg+WeF7FtqCYiNXM7CW90oKLiG07WRAz6309c4tqZtYwV3Bm1re6rIJrW5oOSWdIWibpzop1syTdmIZt3SJp93ad38w6q2yqpK5KlyTpE0OsKzN+9Exg/6p1XwO+HBGzgC+m72bWLwZUbumQMreoB0t6ISLOBZD0PUrMhxoR16VEly9bDUxKnycDj5Qvqpl1u158yfA+4GeSBihmtX8iIv6hyfMdDVwu6WSK1uOetXaUdDhwOMD6m2/c5OnMrKO6rIKreYsqaZPU2XcCxTjUL1CkSvqXqk7AjTgSOCYiZgLHUOSLG1JlRt9xUyY2eToz65gufAZXtqPv4M+/SkuzHX3nAJ9Nny8ATmsihpl1qy5rwXW6o+8jwNsoZtLaB7ivDecwsxGiLpsfqsxb1E9JmlLxfaqkYZ/BSToPuAHYQdLi9Db2MOAbkm4H/i/pGZuZWTuUeclwWET8x+CXiFgh6TDge/UOioi/rbHpLxoon5n1koy3qKlhdRqwU4p8KPBOiobS8rTb8RHxy1oxylRw60lSRDFntaQxwPhWCm5mfSj/C4RvA5dFxMGSxgMTKSq4UyLi5PqHFspUcJcD50s6laIWPYI0CbSZ2ctkquAkTQLeCnwMICJWA6uLyfrKKzNU61jg1xRdPD4FXEXRZcTM7OXKTxs4LQ3XHFyqn8dvR3Eb+gNJt0k6TdKGadunJd2RhoNOrVecMrNqDUg6HfhNKto9EbGu5K+bxcz1n+CUV5/fcpyBV+UZInLvms2zxJk+ZnWWOABbj82TsfaSD35z+J1KeHRdnvKc8tA7ssT56M7/lSXOcwPDDuIp7cu/yTRvU4Z/1qtWjctSjAbeoj4WEbPrbB8L7AYcFRE3Sfo2cBzwXeBEirroROAbFM/mhlTmLepeFN05vkvxYuFeSW8t+UuY2WiRt6PvYmBxRNyUvl8I7BYRSyNiXUQMUEyGVTdhR5lncN8A3hER9wBI2p5iAmi/DTWzl8v0DC4iHpX0kKQdUt2zL/B7STMiYkna7b3AnbWjlKvgxg1WbunE90pqvT1rZv0n71vUo4Bz0xvU+4GPA9+RNCudaRHwyXoBylRwt6RncOek7x+iGMZlZvYyObuJRMR8oPo53UcaiVGmght8e/oZiueI1zFMJ18zG6V6ZSzqoIhYBXwzLaVJOgN4F7AsInaqWH8U8GlgLfCLiHCXE7N+EN03FrXevKgLqFMfR8TOw8Q+k+LN69kVMfcG3g3sHBGrJOXpb2Fm3aGHWnDvaiVwjYy+RwInpVYhEbGslXOYWXfpmYy+EfFA9TpJ04DHB8elNmF74C2S/hV4AfhcRPxuqB0rM/rO2GpMk6czs47qsgquXkbfPSRdI+kiSbum2bHuBJZKqp5MpqyxwFRgD+DzFGNch+yHXZnRd8ombZv8y8xyKTtMq0sy+n4XOJ5icphfAwdExI2SXkvR0beZAfeLgYtSC/DmNM/DNF5KfWJmPUp03y1qvabR2Ii4IiIuAB6NiBsBIuLuFs53CUUm38EREeOBx1qIZ2ZdpJfmZKh84ft81bZhi5gy+u5FkTVgMfAl4AzgjHS7uxqY08LzPDPrNl3211yvgttF0tMULc8J6TPp+wbDBa6T0ffDjRXRzHpGr1RwEeFXl2ZWXodvP8soM1TLzKwcV3Bm1q96ZqhWN/njM5vx3v85suU4YxYP++iwlHFP58kMvPFb8g3kOH3Hc4bfqYTvL98rS5z7nt4sS5yHn5qcJc6xC/8mS5wttnk8SxyA7bd9NEuce+/ZsvUgueZScAvOzPpShzvxluEKzszycQVnZv2oG0cyuIIzs2w00F01nCs4M8ujC5/BtS1NR5qUdVkallW97XOSIqVfMrM+0W1jUduZh+hM4M/SKkmaCewHPNjGc5vZSOiydEltq+Ai4jrgiSE2nQJ8ga5rzJpZq7qtBdfRZ3CSDgIejojba+S5rNz3xYy+YzbN09nTzNqsy5otHavgJE0ETgDeUWb/iJgLzAVYf7utuuyymdmf6cJZtTqZC/xVwLbA7ZIWAVsD8yRt0cEymFmbDPaDG5W3qBGxAHhxmsBUyc2OCGf0NesXXZa/tp3dRM4DbgB2kLRY0ifadS4z6w6jpgVXJ6Pv4PZt2nVuMxsBmbuASJoCnAbslCIfCtwD/ATYBlgEfDAiVtSK4fn4zCwbDZRbSvo2cFlEvBbYBVgIHAdcFRGvAa5K32tyBWdm2eSq4CRNAt4KnA4QEasj4kng3cBZabezgPfUi+MKzszyCIqXDGWWYra9WyqWw6uibUcxX/IPJN0m6TRJGwLTI2IJQPq5OXV4sL2ZZdPAC4THImJ2ne1jgd2AoyLiJknfZpjb0VpBut7mE1dy1G5Xtxzn37V3htLAmpXjssR57sFNssQBuPvV07PEWfhUnjgbjludJc6aNXkmdztg9h1Z4vx+Rb5um7nSsR+8x+9ajnHuhs9lKAk5XzIsBhZHxE3p+4UUFdxSSTMiYomkGUDdvP++RTWzLHJ29I2IR4GHJO2QVu0L/B74GTAnrZsDXFovTk+04MysB0TkTnh5FHCupPHA/cDHKRpl56d+tQ8CH6gXwBWcmeWTsX6LiPnAUM/p9i0bwxWcmWXTbXMydDSjr6SvS7pb0h2SLk49lc2sHwQwEOWWDul0Rt8rgZ0iYmfgXuCf2nh+M+u00ZzRNyKuiIi16euNFCmTzKxPjJrB9iUcSjFo1sz6hKcNBCSdAKwFzq2zz4spy6fO2KBDJTOzpnXhtIEdr+AkzQHeBewbUTs7XmXK8pk7Teqyy2Zm1YqOvt31p9rpSWf2B44F3hYRmcaGmFnXGC1zMtTI6PtdYGPgSknzJZ3arvObWecpotTSKZ3O6Ht6u85nZiPMz+DMrH9lH4vaMldwZpbPaH7JYGZ9rAsnfnYFZ2b5uAXXuOVPTGbujw5sOc7UpXku/oq9XsgSZ4etlmaJA/Ca8XUTm5Z2/5/yZPRdb8La4Xcq4fUzl2SJs+iZPNmTFy+fmiUOwFdmX5Ilzi+feEPLMdZEpg4V3VW/9UYFZ2a9QQPddY/qCs7M8gi6rqOvKzgzy0J0thNvGa7gzCyfLqvgOp3RdxNJV0q6L/3M98TWzEZe+YmfO6LTGX2PA66KiNcAV9HERK5m1qUGn8GVWTqkoxl9gXcDZ6XPZwHvadf5zazzNDBQaumUTj+Dmx4RSwDSzNSbd/j8ZtY2nb39LKNrXzJUZvQdO8mP6sy6XtB1FVw7n8ENZamkGQDpZ83u9xExNyJmR8TsMRtu2LECmlkLRsszuBp+BsxJn+cAl3b4/GbWRt2W8LLTGX1PAvaTdB+wX/puZv2iy7qJdDqjL8C+7TqnmY2gCFjXXWO1On2Lamb9LGMLTtIiSQvS/C23pHX/LOnhtG6+pLpphrr2LaqZ9aD8t597R8RjVetOiYiTyxzsCs7M8gigy+Zk8C2qmWUSEAPlFpgm6ZaK5fChA3KFpFurtn9a0h1pvHvdTrI90YKLMbB6ausPL9dbm6c+f9+O87PEufjuXbLEAXjuleOyxDlg1oIscf5qap5r9I+3fjBLnE++/jdZ4uy56f1Z4kCeTLwAu016sOUY145Z3XpBgkZeMjwWEbOH2efNEfFIGvF0paS7ge8DJ6aznQh8Azi0VgC34Mwsn4wvGSLikfRzGXAxsHtELI2IdRExAPwnsHu9GK7gzCyfTBWcpA0lbTz4GXgHcOfgSKjkvcCdQx0/qCduUc2sF2TtxDsduFgSFPXUjyLiMknnSJpVnIxFwCfrBXEFZ2Z5BJApFVJE3A/82UPqiPhII3FcwZlZPqM8mwgAko6RdJekOyWdJ2mDkSiHmeWUhmqVWTqk4xWcpK2AzwCzI2InYAxwSKfLYWaZBUQMlFo6ZaRuUccCEyStASYCj4xQOcwsp9E+kiEiHgZOBh4ElgBPRcQV1ftJOnywl/O6Z5/tdDHNrBldli5pJG5Rp1JMPrMtsCWwoaQPV+/njL5mPSaieItaZumQkXjJ8HbgTxGxPCLWABcBe45AOcwsty5rwY3EM7gHgT0kTQSep0iAecsIlMPMsgpi3bqRLsTLdLyCi4ibJF0IzAPWArcBcztdDjPLrAvTJY3IW9SI+BLwpZE4t5m1UQe7gJThkQxmlkUA4RacmfWlCLfgzKx/ddtLBkWXDY4diqTlwAPD7DYNqJ6cohmO07lYjtM9cV4ZEZu1chJJl6VzlfFYROzfyvnK6IkKrgxJt5RIgew4GXRbmRynM3F6kTP6mlnfcgVnZn2rnyq4XJ2FHadzsRynt+L0nL55BmdmVq2fWnBmZi/jCs7M+lZfVHDNzvEg6QxJyyTdWbFuE0lXSrov/ZzaZJyvS7pb0h2SLpY0pZk4Fds+JykkDdvPqFYcSUdJuiddq681+XvNknSjpPkpIWndiXfTMTMlXS1pYTr3Z9P6hq51nTgNXetacSq2l7rW9eI0ca1r/W4NXW9JG0i6WdLtKc6X0/ptJd2UrvVPJI0frkx9ISJ6egG2Av4ETEjfzwc+VvLYtwK7AXdWrPsacFz6fBzw1SbjvAMYmz5/tdk4af1M4HKKzs7TmizP3sB/A+uviXC1AAAGBUlEQVSn75s3GecK4ID0+UDgmhJxZgC7pc8bA/cCOzZ6revEaeha14rT6LWuU55mrnWtWA1db0DARunzOOAmYI/0d3FIWn8qcGQrf3e9svRFC46X5ngYSwNzPETEdcATVavfDZyVPp8FvKeZOBFxRUSsTV9vBLZusjwApwBfoBjPPKwacY4EToqIVWmfZU3GCWBS+jyZEtc6IpZExLz0eSWwkOJ/TA1d61pxGr3WdcoDDVzrOnGauda1YjV0vaPwTPo6Li0B7ANcmNaX+nfdD3q+gouSczw0YHpELEmxlwCbt15KDgV+1cyBkg4CHo6I21ssw/bAW9JtyrWS3thknKOBr0t6iOK6/1MjB0vaBtiVomXR9LWuilOpoWtdGaeVa11VnpaudVWshq+3pDGS5gPLgCuBPwJPVvxPYDEvVeh9recrOJWc42GkSDqBIrHnuU0cOxE4AfhihqKMBaZS3K58HjhfkpqIcyRwTETMBI4BTi97oKSNgJ8CR0fE002cu26cRq91ZZx0XFPXeojyNH2th4jV8PWOiHURMYuiJbs78LqhditTnl7X8xUc+ed4WCppBkD6OeztRS2S5gDvAj4U6eFHg15FUXHfLmkRxT/YeZK2aCLWYuCidAtzMzBA+YHRleZQXGOACyj+gIYlaRzFH+65ETF4fMPXukachq/1EHGautY1ytPUta4Rq6nrDRARTwLXUFS0U9IjHNLvNiqm6uyHCu7FOR7S/yX3pXh+0ayfUfyjIv28tJkgkvYHjgUOiojnmokREQsiYvOI2CYitqH4w9ktIh5tItwlFM9hkLQ9MJ7mMlU8Arwtfd4HuG+4A9J/l9OBhRHxzYpNDV3rWnEavdZDxWnmWtf5vRq+1nViNXS9JW02+BZZ0gSKBsBC4Grg4LRb0/+ue85Iv+XIsQBfBu4G7gTOIb29KnHceRTP7dZQ/IP+BLApcBXFP6SrgE2ajPMH4CFgflpObSZO1fZFlHuLOlR5xgM/TNdoHrBPk3H+ErgVuJ3iGdFflIjzlxS3RHdUXI8DG73WdeI0dK1rxWn0WtcpTzPXulashq43sDPFPCd3pPN/Ma3fDrg5XasLyv6N9PrioVpm1rf64RbVzGxIruDMrG+5gjOzvuUKzsz6lis4M+tbruBGAUnrUjaK2yXNk7RnWr+NhshcUjLmonrZNiR9VtK3Kr7/P0n/XfH9KEnfSZ+vrxHjTEkHp89Hp5Edg9ueGeoYs0qu4EaH5yNiVkTsQjGW8d86cM7refmIklnAZElj0vc9gd8CRESZkSdHUyRSMCvNFdzoMwlYUb0y5RH7gaQFkm6TtHdaP0bSyWn9HZKOqjpugqTLJB1WFfI2YPu0fTLwHEXn1Tek7XtSVIIvtsZU+K6k30v6BWnwvaTPUIwzvlrS1RXn/tfUKr1R0vSWr4z1Hc9sPzpMSNklNqDIO7bPEPt8CiAi3iDptcAVaZjRxynGaO4aEWslbVJxzEbAj4GzI+LsymBp3/nAG4EJFL3w7wP2lLSMYj6Qh6rK8F5gB4pKcDrwe+CMiPiOpH8E9o6IwSFPGwI3RsQJKhJKHgZ8pfFLY/3MLbjRYfAW9bXA/sDZQ2S3+EuKYW5ExN0UCR+3pxjLeGqkVDsRUZkf7lLgB9WVW4XfUrTU9gRuSMuewJtJrbcqbwXOiyIbxiPAr+v8TquBn6fPtwLb1NnXRilXcKNMRNxAkdlis6pNtdL5iNqpdX4LHFAnFdDgc7g3UVRuCymy1L74/G2oItZYX21NvDTOcB2+G7EhuIIbZdLt5xjg8apN1wEfSvtsD7wCuIciZfYRg6l2qm5Rv5jifK/G6a6nSNWzWUQsSxXScor8fUO14K4DDknP/WZQpP4etJIilbdZaa7gRocJqZvIfOAnwJyIWFe1z/eAMZIWpH0+FkXK7dMoUlLdIel24O+qjjsa2EBDTKwSESsoKrS7KlbfQPHyYKisuRdTPKdbAHwfuLZi21zgV5UvGcyG42wiZta33IIzs77lCs7M+pYrODPrW67gzKxvuYIzs77lCs7M+pYrODPrW/8fEoALYa1vxVwAAAAASUVORK5CYII=\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 2 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"with np.load(filename) as data:\n",
|
|
" megacells = data['megacells']\n",
|
|
"\n",
|
|
" maximum=np.nanmax(megacells)\n",
|
|
" minimum=np.nanmin(megacells)\n",
|
|
"\n",
|
|
" for i, simulator in enumerate(simulators):\n",
|
|
" plt.figure()\n",
|
|
" plt.imshow(megacells[i,:,:], origin='lower')#, vmax=maximum, vmin=minimum)\n",
|
|
" plt.xlabel('Block Width')\n",
|
|
" plt.xticks(range(len(block_widths)), block_widths)\n",
|
|
" plt.ylabel('Block Height')\n",
|
|
" plt.yticks(range(len(block_heights)), block_heights)\n",
|
|
" plt.colorbar()\n",
|
|
" plt.title(simulator.__name__)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 22,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"LxF\n",
|
|
"max: 215.62009325357653 (16x16)\n",
|
|
"min: 124.40000433737893 (26x20)\n",
|
|
"avg: 175.8778243221413\n",
|
|
"FORCE\n",
|
|
"max: 158.8510596685369 (8x16)\n",
|
|
"min: 101.53257697389986 (22x28)\n",
|
|
"avg: 137.92428870513444\n",
|
|
"HLL\n",
|
|
"max: 117.00954351202085 (16x16)\n",
|
|
"min: 74.8137282233455 (28x24)\n",
|
|
"avg: 101.54590369681614\n",
|
|
"HLL2\n",
|
|
"max: 73.32764243325421 (16x16)\n",
|
|
"min: 46.580753309787006 (24x28)\n",
|
|
"avg: 64.35969060495039\n",
|
|
"WAF\n",
|
|
"max: 61.4331160057729 (18x16)\n",
|
|
"min: 42.10309033399548 (24x28)\n",
|
|
"avg: 54.046555981587524\n",
|
|
"KP07\n",
|
|
"max: 113.90065429727966 (10x16)\n",
|
|
"min: 73.95281418966437 (18x26)\n",
|
|
"avg: nan\n",
|
|
"KP07_dimsplit\n",
|
|
"max: 82.20246966473113 (16x16)\n",
|
|
"min: 52.38926982737787 (28x24)\n",
|
|
"avg: 70.97011662268649\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAD9CAYAAACm2+DgAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAFNVJREFUeJzt3Xu0ZGV95vHvE2AALyiXRhHBVkM0eAmXHoIYDSw04eICmZEIKqLDpHXECxKcaQ0rkmS5QtSEWUQlwkiADCEoIwMKIRoG8AraKAONgnSwgx16oAkJyMUL8Js/9j5afXz7nGrofep09/ezVq2q/dbeu351Tp3z1PvuW6oKSZKm+6VJFyBJmp8MCElSkwEhSWoyICRJTQaEJKnJgJAkNRkQkqQmA0KS1GRASJKaNp90AU/EDjvsUAsXLpx0GZK0Qbn++uvvqaoFs823QQfEwoULWbp06aTLkKQNSpJ/Gmc+h5gkSU0GhCSpyYCQJDUZEJKkJgNCktRkQEiSmgwISVKTASFJajIgJElNG/SR1E/EwiWXTbqENaw49dBJlyBJa7AHIUlqMiAkSU0GhCSpyYCQJDUZEJKkJgNCktRkQEiSmgwISVKTASFJajIgJElNgwVEkl2SXJXku0luTvKevn27JF9Mclt/v23fniSnJ1me5MYkew1VmyRpdkP2IB4Bfq+qfhXYFzg+ye7AEuDKqtoNuLKfBjgY2K2/LQbOGLA2SdIsBguIqlpVVd/qH/8Q+C6wM3A4cG4/27nAa/vHhwPnVeda4OlJdhqqPknSzOZkG0SShcCewHXAM6pqFXQhAuzYz7Yz8IORxVb2bZKkCRg8IJI8BfhfwAlVdf9MszbaqrG+xUmWJlm6evXq9VWmJGmaQQMiyRZ04XB+VX22b75rauiov7+7b18J7DKy+LOBO6evs6rOrKpFVbVowYIFwxUvSZu4IfdiCvAp4LtV9ecjT10KHNs/Pha4ZKT9zf3eTPsC900NRUmS5t6QV5R7OXAMcFOSG/q2DwCnAp9OchxwB3Bk/9zlwCHAcuAh4K0D1iZJmsVgAVFVX6G9XQHgwMb8BRw/VD2SpHXjkdSSpCYDQpLUZEBIkpoMCElSkwEhSWoyICRJTQaEJKnJgJAkNRkQkqQmA0KS1GRASJKaDAhJUpMBIUlqMiAkSU0GhCSpyYCQJDUZEJKkJgNCktRkQEiSmgwISVKTASFJajIgJElNBoQkqcmAkCQ1GRCSpCYDQpLUZEBIkpoMCElSkwEhSWoyICRJTQaEJKnJgJAkNRkQkqQmA0KS1LT5pAvQ+BYuuWzSJaxhxamHTroESQOyByFJajIgJElNBoQkqcmAkCQ1DRYQSc5OcneSZSNtpyT55yQ39LdDRp57f5LlSW5N8ttD1SVJGs+QPYhzgIMa7adV1R797XKAJLsDRwEv6pf5RJLNBqxNkjSLwQKiqr4E3Dvm7IcDf1tVP66q7wPLgX2Gqk2SNLtJbIN4Z5Ib+yGobfu2nYEfjMyzsm+TJE3IXAfEGcDzgT2AVcCf9e1pzFutFSRZnGRpkqWrV68epkpJ0twGRFXdVVWPVtVjwFn8fBhpJbDLyKzPBu5cyzrOrKpFVbVowYIFwxYsSZuwOQ2IJDuNTB4BTO3hdClwVJItkzwX2A34xlzWJkla02DnYkpyAbA/sEOSlcAHgf2T7EE3fLQCeBtAVd2c5NPAd4BHgOOr6tGhapMkzW6wgKiqoxvNn5ph/g8BHxqqHknSuvFIaklSkwEhSWoyICRJTQaEJKlprIBI8uEk2yTZIsmVSe5J8qahi5MkTc64PYjfqqr7gdfQHdT2K8D7BqtKkjRx4wbEFv39IcAFVTXuSfgkSRuocY+D+FySW4CHgXckWQD8aLiyJEmTNmMPYurUGFW1BHgZsKiqfgo8RHeKbknSRmq2HsTUKbmvBq4AvgJQVQ8CDw5bmiRpkmYMiKo6OMlWdOdUOgL4aJI76MLiiqq6Y/gSJUmTMOs2iKr6EX0gAPRnWz0Y+FiSZ1aVV36TpI3QWBupkzwZeLi/jsMWdLu6/kfaF/qRJG0Ext3N9UvAVkl2Bq4E3gr8VVX9ZLDKJEkTNW5ApKoeAv4D8BdVdQTw4uHKkiRN2tgBkeRlwBuBy/q2zYYpSZI0H4wbECcA7wcu7q/+9jzgquHKkiRN2lgbqavqGuCakenbgXcPVZQkafJmDIgkn6O7fnRTVR223iuSJM0Ls/UgPjonVUiS5p3ZjqS+ZqbnJUkbr9mGmG6iPcQUoKrqpYNUJUmauNmGmF4zJ1VIkuad2YaY/mnqcZLnALtV1T8k2Xq2ZSVJG7Zxr0n9u8BFwCf7pmcD/3uooiRJkzfugXLHAy8H7geoqtuAHYcqSpI0eeMGxI9HT8yXZHNmOD5CkrThG3c7wjVJPgBsneTVwDuAzw1XljYWC5dcNvtMc2jFqYdOugRpgzFuD2IJsBq4CXgbcDlw8lBFSZImb9wexNbA2VV1FkCSzfq2h4YqTJI0WeMGxJXAq4AH+umtgS8A+w1RlKSNm0OPG4Zxh5i2qqqpcKB//KRhSpIkzQfjBsSDSfaamkiyN/DwMCVJkuaDcYeYTgA+k+TOfnon4PXDlCRJmg/GvWDQN5O8EHgB3Yn6bqmqnw5amSRpotblfEovAHYHtgL2TEJVnTdMWZKkSRsrIJJ8ENifLiAuBw4GvgIYEJK0kRp3I/XrgAOB/1dVbwV+DdhysKokSRM3bkA8XFWPAY8k2Qa4G3jecGVJkiZt3IBYmuTpwFnA9cC3gG/MtECSs5PcnWTZSNt2Sb6Y5Lb+ftu+PUlOT7I8yY2ju9RKkiZjrICoqndU1b9V1V8CrwaO7YeaZnIOcNC0tiXAlVW1G93R2Uv69oOB3frbYuCM8cqXJA1l3AsG7TV1A7YDNk/y/P60301V9SXg3mnNhwPn9o/PBV470n5eda4Fnp5kp3V5I5Kk9Wvc3Vw/AewF3Eh3HMSL+8fbJ3l7VX1hzPU8o6pWAVTVqiRTFx3aGfjByHwr+7ZVY65XkrSejbsNYgWwZ1Utqqq9gT2BZXQn8PvweqgjjbbmBYmSLE6yNMnS1atXr4eXliS1jBsQL6yqm6cmquo7dIFx+zq+3l1TQ0f9/d19+0pgl5H5ng3cSUNVndkH1aIFCxas48tLksY1bkDcmuSMJL/Z3z4BfC/JlsC6nHLjUuDY/vGxwCUj7W/u92baF7hvaihKkjQZ426DeAvdZUZPoBsO+gpwEl04HNBaIMkFdEdf75BkJfBB4FTg00mOA+4Ajuxnvxw4BFhOdxGi2faQkiQNbNyT9T3c9xo+X1W3Tnv6gbUsc/RaVndgY94Cjh+nFknS3Bh3N9fDgBuAK/rpPZJcOmRhkqTJGncbxAeBfYB/A6iqG4CFA9UkSZoHxg2IR6rqvkErkSTNK+NupF6W5A3AZkl2A94NfG24siRJkzZuD+JdwIuAHwMXAPfT7dEkSdpIjbsX00PA7/c3SdImYMaAmG1Ppao6bP2WI0maL2brQbyM7iR6FwDX0T5nkiRpIzRbQDyT7voPRwNvAC4DLhg9L5MkaeM040bqqnq0qq6oqmOBfelOhXF1knfNSXWSpImZdSN1f0K+Q+l6EQuB04HPDluWJGnSZttIfS7dxYH+DvjDqlo20/ySpI3HbD2IY4AHgV8B3p38bBt16M6xt82AtUnSvLFwyWWTLmENK049dPDXmDEgqmrcA+kkSRsZA0CS1GRASJKaDAhJUpMBIUlqMiAkSU0GhCSpadwLBkmbjE1xf3epxR6EJKnJgJAkNRkQkqQmA0KS1GRASJKaDAhJUpMBIUlqMiAkSU0GhCSpyYCQJDUZEJKkJs/FJG3gPHeUhmIPQpLUZEBIkpoMCElSkwEhSWoyICRJTQaEJKlpIru5JlkB/BB4FHikqhYl2Q64EFgIrAB+p6r+dRL1SZIm24M4oKr2qKpF/fQS4Mqq2g24sp+WJE3IfBpiOhw4t398LvDaCdYiSZu8SQVEAV9Icn2SxX3bM6pqFUB/v+OEapMkMblTbby8qu5MsiPwxSS3jLtgHyiLAXbdddeh6pOkTd5EehBVdWd/fzdwMbAPcFeSnQD6+7vXsuyZVbWoqhYtWLBgrkqWpE3OnAdEkicneerUY+C3gGXApcCx/WzHApfMdW2SpJ+bxBDTM4CLk0y9/t9U1RVJvgl8OslxwB3AkROoTZLUm/OAqKrbgV9rtP8LcOBc1yNJaptPu7lKkuYRA0KS1GRASJKaDAhJUpMBIUlqMiAkSU0GhCSpyYCQJDUZEJKkJgNCktRkQEiSmgwISVKTASFJajIgJElNBoQkqcmAkCQ1GRCSpCYDQpLUZEBIkpoMCElSkwEhSWoyICRJTQaEJKnJgJAkNRkQkqQmA0KS1GRASJKaDAhJUpMBIUlqMiAkSU0GhCSpyYCQJDUZEJKkJgNCktRkQEiSmgwISVKTASFJajIgJElNBoQkqWneBUSSg5LcmmR5kiWTrkeSNlXzKiCSbAZ8HDgY2B04Osnuk61KkjZN8yoggH2A5VV1e1X9BPhb4PAJ1yRJm6T5FhA7Az8YmV7Zt0mS5liqatI1/EySI4Hfrqr/3E8fA+xTVe8amWcxsLiffAFw65wXuqYdgHsmXMO6sua5saHVvKHVC9b8eD2nqhbMNtPmc1HJOlgJ7DIy/WzgztEZqupM4My5LGomSZZW1aJJ17EurHlubGg1b2j1gjUPbb4NMX0T2C3Jc5P8O+Ao4NIJ1yRJm6R51YOoqkeSvBP4e2Az4OyqunnCZUnSJmleBQRAVV0OXD7pOtbBvBnuWgfWPDc2tJo3tHrBmgc1rzZSS5Lmj/m2DUKSNE8YEGNI8sA6zHtOku8nuaG/vXuAeh4dWf8NSRb27b+R5BtJbulvi0eWOSXJP/fzfyfJ0dPWeVK/zLIk/zfJm/v2q/tTn0y91kXr+/30r/PAtOm3JPnYSO0nzbbM0NZXjUlO7H8HNya5MslzBqz5tCQnjEz/fZL/MTL9Z0lO7B+/N8mPkjxt5Pn9k9w38vv/h6FqHXnNB0YeH5LktiS7TvsML0tyWD/Plkku7E/Pc93I38Mbp/2dPJZkj6Hr35gYEMN4X1Xt0d9OH2D9D4+sf4+qWpHkmcDfAG+vqhcCvwG8LcmhI8udVlV70B2d/skkWwAkeTvwarpjTl4MvBLIyHJvHHmt1w3wfjY13wYWVdVLgYuADw/4Wl8D9gNI8kt0++C/aOT5/YCv9o+PptuT8Ihp6/jyyO//VQPWuoYkBwJ/ARxUVXf0zVOf4SOBs/v3dBzwr1X1y8BpwJ8CVNX5U3UDx/RtN/TrnkjwTPtS8fapL2JDGP3SkuSPkryqf3xCkieNsw4D4nFKcsnIt+y3JTl/wiUdD5xTVd8CqKp7gP8K/MIJD6vqNuAhYNu+6QPAO6rq/v75+6rq3DmpehNUVVdV1UP95LV0x/sM5av0AUEXDMuAHybZNsmWwK8C307yfOApwMl0QTFRSV4BnAUcWlX/OP35qvou8Ahd4B0OTH1eLwIOTJJpixzdzz9E8KyYCp51UVV/WVXnretyj0dV/UFVTfX+TgDGCoh5txfTBmQx8NUk3wd+D9h35LmPJDm5f3xMVd20nl976yRTH8jvV9URdH/80/+pL2XNb4sAJNkLuK2q7k7yVOCprT/CEecnebh//MWqet8TrL9l9D0BbMf8OwZmiBqPA/7uCa5jrarqziSPJNmVLii+Tnf6mpcB9wE3VtVP+iHHC4AvAy9IsmNV3d2v5hUj7/szVfWhoertbQlcAuxfVbe0Zkjy68BjwGpGTtHT7yp/H7A9ax6t/HrgkZHgOWRtwZNkNHhO6Z+6CPhYktSae/ZM/dzWKslbgfcDq4DvAT/u208BHqiqjya5mq5nuTewAHhzv8xLgAur6uQkTwY+TfeFYjPgj6vqwiQrgAuBA/qXfENVLZ9WwznA54Fn9berktxTVQcwAwPicaqqu5L8AXAVcERV3Tvy9PuqapCx+t7D/beXUQFau6SNtr03ye8CzwMOmmW5UW+sqqWPq9LxrfGekrwFmG9Hm67XGpO8qV/+N594aTOa6kXsB/w53T/U/egC4mv9PEfRfY4fS/JZum/SH++f+3JVvWbgGkf9tK/rOOA90557b/9z+yHw+qqqRm8BRj7TfZg8BGzBMMGz1hOKJtkJ+EO6f/z30f2/+PZaZv9JVb0yyXv6OvcG7gX+MclpwP7AnVV1aL/up40se39V7dOPavx3oPn7qqrT+21OB/SjDDNyiOmJeQnwL3SJPGk384v/rPYGvjMyfVpVvYDuQ31ekq36YaUHkzxvjuoU0I8H/z5wWFX9eOCXm9oO8RK6IaZr6XoQ+9H1gl8K7AZ8sf82ehSTHWZ6DPgd4N8n+cC0507rh3deUVVf7tt+doqeJJsDT6P7xzrlKLpv+aPBM917+17SR+mDhzW3w035heCpqmUzvJdfB66uqtX9GaovnGHeqd7oTcDNVbWq/2zc3r+/m4BXJfnTJK+oqvtGlr1g5P5lM7zGOjEgHqck+9Bdt2JP4KQkz51wSR8H3jK1sSzJ9nRjpr+wAbSqPks3/HRs3/QnwMeTbNMvu01G9oDS+pVkT+CTdOFw92zzrwdfpftGeW9VPdr3dp9O94/k63RhcEpVLexvzwJ2zoB7V82m30bzGuCNSVr/0Eddys8/y68D/s/UMFC/LeFIuksHDBU8s76dMeaBfuipr3P0S8NjwOZV9T26L303AX/Sj2C0XmO9HdxmQIznSUlWjtz+G9045n+qqjvptkGcvZau7pyoqlXAm4CzktxC903p7Kr63FoW+SPgxP4P6Ay6ru83kywDrqHrkk85P3O4m+NanDz6O+jbpv9eTpxQbVPGrfEjdBuEP9P/TIfe1nIT3Zj6tdPa7uuHGY4CLp62zMV9+8T0QXYQ3c91puvCfArYPsly4ETW3DHjlcDKqrq9X+cQwTOT64D9k2yfbq/BI2eZf62SPIuux/I/6Xo6e408/fqR+6/PsqofAk8d6zU9klrSpiDJA1X1lP7xLsCX6Pbo2ZN+Y/G0+bcC/rp//l7gqKmgSbI/cGpVje6csrbXHd1IfQOwWVW9s7GR+qSqWtqv+6Sp7T5Tz9Ft//gIXY/ip8B/6edfAfwVcAjdl/6jq2r5tPWfA3y+qi5K8i66vR5XzbaR2oCQpA1YHxCLxtnovK4cYpIkNdmDkKT1IMl1dMdwjBriOKg5Y0BIkpocYpIkNRkQkqQmA0KS1GRASJKaDAhJUtP/BwOUixtHsRXRAAAAAElFTkSuQmCC\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"def find_max_index(megacells):\n",
|
|
" max_index = np.nanargmax(megacells)\n",
|
|
" return np.unravel_index(max_index, megacells.shape)\n",
|
|
"\n",
|
|
"def find_min_index(megacells):\n",
|
|
" min_index = np.nanargmin(megacells)\n",
|
|
" return np.unravel_index(min_index, megacells.shape)\n",
|
|
"\n",
|
|
"\n",
|
|
"with np.load(filename) as data:\n",
|
|
" megacells = data['megacells']\n",
|
|
" for i, simulator in enumerate(simulators):\n",
|
|
" print(simulator.__name__)\n",
|
|
"\n",
|
|
" j, k = find_max_index(megacells[i,:,:])\n",
|
|
" print(\"max: {:} ({:}x{:})\".format(megacells[i, j, k], block_heights[j], block_widths[k]))\n",
|
|
"\n",
|
|
" j, k = find_min_index(megacells[i,:,:])\n",
|
|
" print(\"min: {:} ({:}x{:})\".format(megacells[i, j, k], block_heights[j], block_widths[k]))\n",
|
|
"\n",
|
|
" print(\"avg: {:}\".format(np.mean(megacells[i,:,:])))\n",
|
|
" \n",
|
|
" plt.figure()\n",
|
|
" plt.bar(range(len(simulators)), np.nanmax(megacells, axis=(1,2)))\n",
|
|
" plt.xticks(range(len(simulators)), [simulator.__name__ for simulator in simulators])\n",
|
|
" plt.ylabel('Megacells/s')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 19,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"[215.62009325 158.85105967 117.00954351 73.32764243 61.43311601\n",
|
|
" 113.9006543 82.20246966]\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3",
|
|
"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.6.5"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|