Skip to content

Instantly share code, notes, and snippets.

@thomasbrandon
Last active June 1, 2019 09:52
Show Gist options
  • Save thomasbrandon/a1e126de770c7e04f8d71a7dc971cfb7 to your computer and use it in GitHub Desktop.
Save thomasbrandon/a1e126de770c7e04f8d71a7dc971cfb7 to your computer and use it in GitHub Desktop.
Code to test CPU and PyTorch GPU code performance
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 648,
"metadata": {},
"outputs": [],
"source": [
"import librosa\n",
"import torch\n",
"import numpy as np\n",
"import pandas as pd\n",
"from math import ceil\n",
"from time import perf_counter\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 649,
"metadata": {},
"outputs": [],
"source": [
"def get_samples(num, length, dtype=np.float32):\n",
" return [np.random.random((ceil(length))).astype(dtype) for _ in range(num)]"
]
},
{
"cell_type": "code",
"execution_count": 650,
"metadata": {},
"outputs": [],
"source": [
"gpu=torch.device(\"cuda\")"
]
},
{
"cell_type": "code",
"execution_count": 692,
"metadata": {},
"outputs": [],
"source": [
"class CPUEvent():\n",
" def __init__(self, enable_timing=True):\n",
" self.time = None\n",
" def record(self, stream=None):\n",
" self.time = perf_counter()\n",
" def elapsed_time(self, end_event):\n",
" if self.time == None:\n",
" raise RuntimeError(\"This event was not recorded.\")\n",
" if end_event.time == None:\n",
" raise RuntimeError(\"The since event was not recorded.\")\n",
" return (end_event.time - self.time) * 1000\n",
" def wait(self, stream=None): pass # Dummy wait for CPU\n",
" \n",
"class CPUStream():\n",
" def record_event(self, event=None):\n",
" if event is None:\n",
" event = CPUEvent()\n",
" event.record()\n",
" return event\n",
" \n",
"class Profiler():\n",
" '''This class lets you profile PyTorch code on both CPU and GPU. Use it as a context manager.\n",
" You call `start` after initialisation code to exclude that from timing while still having it\n",
" run on the appropriate device.\n",
" You can use `record` to record intermediate times in a process. In this case `get_results` will return\n",
" a list of times which are the times taken between successive recorded times, not cumulative times.\n",
" Times are returned in milliseconds (with fractions) as with the GPU timer. GPU timing resolution is about\n",
" 1/2 a microsecond according to nvidia. CPU timing resolution is determined by pythons `time.perf_counter`\n",
" function which depends on available system clocks but should give nanosecond resolution.\n",
" '''\n",
" def __init__(self, device='cpu', wait=False):\n",
" if isinstance(device, str):\n",
" device = torch.device(device)\n",
" self.device = device\n",
" self.wait = wait\n",
" self.events = []\n",
" if self.device.type == 'cuda':\n",
" self.stream = torch.cuda.Stream(device=self.device)\n",
" self.event_cls = torch.cuda.Event\n",
" else:\n",
" self.stream = CPUStream()\n",
" self.event_cls = CPUEvent\n",
" #self.cur_event_id = None\n",
" #self._event_cls = CPUEvent if device.type == 'cpu' else partial(torch.cuda.Event, enable_timing=True)\n",
"\n",
" def __enter__(self):\n",
" if self.device.type == 'cuda':\n",
" self.stream_cm = torch.cuda.stream(self.stream)\n",
" self.stream_cm.__enter__()\n",
" else:\n",
" self.stream_cm = None\n",
" self.start()\n",
" return self\n",
" \n",
" def __exit__(self, exc_type, exc_val, tb):\n",
" # Record final event\n",
" self.record()\n",
" if self.stream_cm:\n",
" self.stream.synchronize()\n",
" #self.times = [self.events[i].elapsed_time(self.events[i+1]) for i in range(len(self.events) - 1)]\n",
" self.stream_cm.__exit__(exc_type, exc_val, tb)\n",
" self.stream_cm = None\n",
" \n",
" def start(self):\n",
" self.events.clear()\n",
" self.record()\n",
"\n",
" def record(self, event=None):\n",
" if event is None:\n",
" event = self.event_cls(enable_timing=True)\n",
" self.stream.record_event(event)\n",
" self.events.append(event)\n",
" if self.wait: event.wait(self.stream)\n",
" \n",
" def get_results(self, total=False, reset=False):\n",
" #if self.times: return self.times\n",
" times = [self.events[i].elapsed_time(self.events[i+1]) for i in range(len(self.events)-1)]\n",
" if total and len(times) > 1:\n",
" times.insert(0, self.events[0].elapsed_time(self.events[-1]))\n",
" if reset: self.events = []\n",
" return times\n",
" \n",
"def profile(func, *funcargs, device='cpu', wait=False, n_repeats=100, total=False, warmup=10, **func_kwargs):\n",
" '''Profile `func` on `device` across `n_repeats` runs after `warmup` runs.\n",
" As well as `func_args` and `func_kwargs`additional `prof` and `device` keyword arguments wll be passed.\n",
" You can call `prof.start` after any initial processing that should not be included in timing. Call `prof.record`\n",
" to record timing for intermediate events. If you pass `wait==True` and are running on GPU then at each call to `prof.record`\n",
" all previous work will be completed before moving on, otherwise processing from previous PyTorch calls may still be in progress.\n",
" Returns an numpy array of timings for each run. If `prof.record` is called then multiple sets of timing data are recorded indicating the\n",
" time between each recorded event. If `total==True` then also returns total time.'''\n",
" prof = Profiler(device=device, wait=wait)\n",
" times = []\n",
" for i in range(n_repeats + warmup):\n",
" with prof:\n",
" func(*funcargs, prof=prof, device=device,**func_kwargs)\n",
" if i >= warmup: times.append(prof.get_results(total=total, reset=True))\n",
" res = np.stack([np.array(t) for t in times], axis=1)\n",
" return res\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## System"
]
},
{
"cell_type": "code",
"execution_count": 684,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'GeForce RTX 2070'"
]
},
"execution_count": 684,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"torch.cuda.get_device_name(0)"
]
},
{
"cell_type": "code",
"execution_count": 685,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"model name\t: AMD Ryzen 5 2600 Six-Core Processor\n"
]
}
],
"source": [
"!cat /proc/cpuinfo | grep 'model name' | uniq"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# STFT"
]
},
{
"cell_type": "code",
"execution_count": 702,
"metadata": {},
"outputs": [],
"source": [
"def torch_stft_split(bs=64, sample_len=50*1024, n_fft=2048, win_length=512, device='cpu', prof=None):\n",
" samples = get_samples(bs, sample_len)\n",
" window = torch.hann_window(n_fft, device=device)\n",
" batch = torch.tensor(np.stack(samples), device='cpu')\n",
" if prof: prof.start()\n",
" batch_gpu = batch.to(gpu)\n",
" if prof: prof.record()\n",
" res = torch.stft(batch_gpu, n_fft, hop_length=hop_length)\n",
" if prof: prof.record()\n",
" res_cpu = res[...,0:1].to(\"cpu\")\n"
]
},
{
"cell_type": "code",
"execution_count": 703,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([6.2200461 , 1.6806416 , 1.14792064, 3.39148384])"
]
},
"execution_count": 703,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gpu_split_times = profile(torch_stft_split, device=gpu, wait=True, total=True)\n",
"gpu_split_times.mean(axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 653,
"metadata": {},
"outputs": [],
"source": [
"def torch_stft(bs=64, sample_len=50*1024, n_fft=2048, win_length=512, copyto=False, copyfrom=False, device='cpu', prof=None):\n",
" if isinstance(device, str): device = torch.device(device)\n",
" samples = get_samples(bs, sample_len)\n",
" window = torch.hann_window(n_fft, device=device)\n",
" batch = torch.tensor(np.stack(samples), device=(device if not copyto else 'cpu'))\n",
" if prof: prof.start()\n",
" if copyto and device.type != 'cpu':\n",
" batch = batch.to(device)\n",
" res = torch.stft(batch, n_fft, hop_length=hop_length, window=window)\n",
" if copyfrom and device.type != 'cpu':\n",
" res = res[...,-1].to('cpu')"
]
},
{
"cell_type": "code",
"execution_count": 654,
"metadata": {},
"outputs": [],
"source": [
"def librosa_stft(bs=64, sample_len=50*1024, n_fft=2048, win_length=512, device='cpu', prof=None):\n",
" samples = get_samples(bs, sample_len)\n",
" window = librosa.filters.get_window('hann', n_fft)\n",
" if prof: prof.start()\n",
" for s in samples:\n",
" stft = librosa.core.stft(s, n_fft=n_fft, hop_length=hop_length, window=window)"
]
},
{
"cell_type": "code",
"execution_count": 693,
"metadata": {},
"outputs": [],
"source": [
"def_params = {'bs': 32, 'sample_len': 50*1024, 'n_fft': 2048, 'win_length': 512}\n",
"cols = ['group','impl'] + list(def_params.keys()) + ['mean','sd','min','max']\n",
"results = pd.DataFrame(columns=cols)\n",
"def add_result(results, group, impl, params, times):\n",
" row = {'group': group, 'impl': impl, 'mean': times.mean(), 'sd': times.std(), 'min': times.min(), 'max': times.max()}\n",
" row.update(params)\n",
" results.loc[len(results)] = row"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Batch Size"
]
},
{
"cell_type": "code",
"execution_count": 694,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Doing bs=1\n",
"Doing bs=4\n",
"Doing bs=8\n",
"Doing bs=16\n",
"Doing bs=32\n",
"Doing bs=64\n",
"Done\n"
]
}
],
"source": [
"for bs in [1,4,8,16,32,64]:\n",
" print(f'Doing bs={bs}')\n",
" params = def_params.copy()\n",
" params['bs'] = bs\n",
" add_result(results, 'bs', 'GPU', params, profile(torch_stft, **params, device=gpu))\n",
" add_result(results, 'bs', 'GPU+copy1', params, profile(torch_stft, **params, device=gpu, copyto=True))\n",
" add_result(results, 'bs', 'GPU+copy2', params, profile(torch_stft, **params, device=gpu, copyto=True, copyfrom=True))\n",
" add_result(results, 'bs', 'CPU', params, profile(torch_stft, **params, device='cpu'))\n",
" add_result(results, 'bs', 'librosa', params, profile(librosa_stft, **params, device='cpu'))\n",
"print('Done')"
]
},
{
"cell_type": "code",
"execution_count": 695,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Doing bs=1\n",
"Doing bs=4\n",
"Doing bs=8\n",
"Doing bs=16\n",
"Doing bs=32\n",
"Doing bs=64\n",
"Done\n"
]
}
],
"source": [
"nt=torch.get_num_threads()\n",
"torch.set_num_threads(1)\n",
"for bs in [1,4,8,16,32,64]:\n",
" print(f'Doing bs={bs}')\n",
" params = def_params.copy()\n",
" params['bs'] = bs\n",
" add_result(results, 'bs', 'CPU-1Core', params, profile(torch_stft, **params, device='cpu'))\n",
"torch.set_num_threads(nt)\n",
"print('Done')"
]
},
{
"cell_type": "code",
"execution_count": 696,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAlYAAAFNCAYAAADCXCHaAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xlc1lXe//HXYVdwQXDNXVERFFDcd01FxVxapmkZtcWs1Gqmu7yb+jU1M/fUrDX3VDNTTTZLVtPcOiMa4L6klhCguIui4oIiboDs5/fHdYloLqjIxfJ+Ph495Ppe53u+H64r4e35nuscY61FRERERG6dm6sLEBEREaktFKxEREREKomClYiIiEglUbASERERqSQKViIiIiKVRMFKREREpJIoWInUEsaYdGPMnbdw/h+NMa9UZk3XuJa3MWa7MaZFJfc71xjzxnXaWGNM50q41nRjzPpb7aeC17rlmo0xbY0xOcYY98qqS0S+S8FK5DZyhp3zzl9op4wxS4wxbSp4bnvnL1SP21DXd0KBtXaWtfanlX2tq5gJrLXWHqvkfv8MPGSMaVbJ/VYqY8xwY0xGVV7TWnvQWutnrS2pyuuK1DUKViK330RrrR/QEsgE/tfF9VQHTwB/q+xOrbX5wJfADyq7bxGRilCwEqkizl/6XwDdLxwzxkwwxiQZY84aYw4ZY35S7pS1zj9PO0e8BjjPedwYs8MYc855O61XuXPCjTFbjDFnjDGfGWN8Lq/DGBMM/BEY4Oz3tPP4fGPMz5xfDzfGZBhjXjDGHDfGHDXGTDbGjDfG7DbGZBtjXirXp5sxZp4xJs0Yc9IY87kxpsmVXgdjTFugE/B1uWPzjTHvGmO+dNb0lTGmhTHmLedI305jTES59i8aYw47X4NdxphR5S6xGphwjbcCYLwxZp8xJssY8ytn/d7O76tHues0c444Nr1KP8YY87/O13tn+TqMMTPKvU/7jDFPOI/74gh/rZzfa44xppUxxt0Y85LzNTxnjEm8bHTzTmPMHufr8Y4xxlyloL7GmATn/1OZxpjfOo+XjYAaYwaUu3aOMSbfGJPubFfh91JEvkvBSqSKGGPqA98DNpU7nItjdKUxjjDwpDFmsvO5oc4/Gztv4Ww0xtwL/MR5TkPgLuBkuf7uA6KADkBPYPrldVhrdwCzgI3OfhtfpeQWgA9wB/D/gPeBh4DewBDg/xljOjrbzgUmA8OAVsAp4J2r9NsD2GetLb7s+H3Ay0AgUABsBL51Pv4CuBAQugKzgT7W2gbAWCC9XD87gLCrXPuCKUAk0AuYBDxirS0APnV+jxd8H1hurT1xlX76AfucNb4K/F+5EHIciMbxPs0AfmeM6WWtzQXGAUecr7+ftfYI8EPn9cY7z3kEyCt3rWigj/N7u8/5fV/J28Db1tqGOALs55c3sNZeeO/9AH8c/08ucD59I++liFxGwUrk9lvkHBU6C4wGfnXhCWvtamvtVmttqbV2C45fbsOu0ddjwC+ttZutw15r7YFyz//eWnvEWpsNLAbCb6HuIuDn1toiHIEjEMcv7HPW2m3ANhzhDRy39n5src1wBpSfAPdcZX5YY+DcFY4vtNYmOkf2FgL51tq/OucEfQZcGLEqAbyB7sYYT2tturU2rVw/54BG1/ne3rTWZltrDwJv4Qg0AB8DDxhjLvxsfJhr37I8DrxlrS2y1n4G7MI5WmatXWKtTXO+T2uAeByB9GoeA1621u5ynpNirS0fmt+w1p521ryKq7+3RUBnY0ygtTbHWrvpKu0u+D2OgP9j5+MbeS9F5DIKViK332TnqJA3jpGWNcb5aThjTD9jzCpjzAljzBkcI0mB1+irDZB2jefLTwbPA/xuoe6T5SY6n3f+mVnu+fPl+m8HLDTGnHaGyB04AlDzK/R7CmhwheOX933Fa1lr9wLP4viFf9wY86kxplW5tg2AM9f+1jhU7usDOEZmsNZ+jSNkDDPGdAM6A/+5Rj+H7aU72Zf1ZYwZZ4zZ5Ly9eBrHSFRVvLePAl2AncaYzcaY6Kt16Lw9ORx4wFpb6jx8I++liFxGwUqkilhrS6y1/4fjl9Rg5+FPcPzibmOtbYRj7tOFuTP2u71wCMftnVsupxL6KO8QMM5a27jcfz7W2sNXaLsF6HgrIyDW2k+stYNxhAALvFnu6WAg5TpdlJ+71BY4Uu7xxzhuBz4MfOEcQbuaOy6b69QWOGKM8Qb+BfwaaO4M1kupgvfWWrvHWvt9oBmO1+UL57yuSxhjhgA/BSZZa8sH0Rt5L0XkMgpWIlXEOEzCMadlh/NwAyDbWptvjOkLPFDulBNAKdCx3LEPgOeNMb2d/XU2xrS7iXIygdbGGK+bOPdK/gj8/EItxpimzu/1O6y1GcAeoO/NXMgY09UYM9IZXvJxjGaVX0JgGI7J4dfyX8YYf+fk8Gdw3Gq84G845mA9BPz1Ov00A+YaYzyd89+CcQQoLxwjlCeAYmPMOGBMufMygQBjTPlblh8APzXGBDnf257GmIDrXP87jDEPGWOaOkegTjsPl1zWpg2O7/kH1trdl3VR4fdSRL5L98xFbr/FxpgSHKMUB4BpzjlKAE8BvzHG/AFYg2OicWMAa22eMebnwFfGGE8gylr7T+cv209wTCpPxzGyUn6eVUWsxDFH6pgxptRae61bVBXxNo7RmHjnbbnjOH5x//sq7f+Eo+4NN3Etb+ANHCGmyNnHTADj+BTkeBwT7K/l30AijrlY84EPLzxhrc0wxnyL4zbguuv08zUQBGThCEv3XJgXZYyZi+P99MYx363slqK1dqcxZgGwzzgW7OyOY3K+N465WIHAThwB70ZFAb91fljiAHC/M7iXbzMKx4cTvih3/IC1NoQbfy9FpBxz6fQAEZHbzznalASMstYercR+5+C4rfrCLfbzFxyf2nu5cioTkbpCwUpEpBxjTHsgGYiw1u53bTUiUtNojpWIiJMx5qdAKvArhSoRuRkasRIRERGpJBqxEhEREakkClYiIiIilaRKl1sIDAy07du3r8pLioiIiNyUxMTELGvt1TZhv6IqDVbt27cnISGhKi8pIiIiclOMMTe6RqBuBYqIiIhUFgUrERERkUqiYCUiIiJSSVy+V2BRUREZGRnk519rA3mpbD4+PrRu3RpPT09XlyIiIlJruDxYZWRk0KBBA9q3b89lm4TKbWKt5eTJk2RkZNChQwdXlyMiIlJruPxWYH5+PgEBAQpVVcgYQ0BAgEYJRUREKpnLgxWgUOUCes1FREQqX7UIVtXRwIEDK6Wf1atXEx0dXSl9iYiISPWmYHUVGzZscHUJIiIiUsMoWF2Fn58f4BhxGjZsGPfddx9dunRh3rx5/OMf/6Bv37706NGDtLQ0AKZPn86sWbMYMmQIXbp0ISYmxpXli4iIiAu4/FOBNUFKSgo7duygSZMmdOzYkccee4xvvvmGt99+m//93//lrbfeAiA9PZ01a9aQlpbGiBEj2Lt3r4srFxERkYra8M9/sPGLBWWPW/s36n2jfWjEqgL69OlDy5Yt8fb2plOnTowZMwaAHj16kJ6eXtbuvvvuw83NjaCgIDp27MjOnTtdVLGIiIjcqIH3PsiPPovhR5/F0Lp7KBmnziTeaB8KVhXg7e1d9rWbm1vZYzc3N4qLi8ueu/yTdvrknYiISN2iYFWJ/vnPf1JaWkpaWhr79u2ja9euri5JREREbkJJUdFNnac5VpWoa9euDBs2jMzMTP74xz/i4+Pj6pJERESkgqy1HNm1g6TYxRzds+um+lCwuoqcnBwAhg8fzvDhw8uOr169uuzry58bNGgQv/vd7y7p5/I2IiIiUr0UFRaw66u1JMXGcDw9De/6vvg1CbipvhSsREREpE46m3Wc5PilbF0ZT/65swS0bsudjz1N9yEj+L83f3JTfSpYVZL58+e7ugQRERG5Dmsth7ZtJSl2MWkJXwPQuU9/wsdG0yakxy1/8EzBSkRERGq9ovx8tq9bRXJcDFmHDuDToCF97ppK2JjxNAxsVmnXUbASERGRWuv0saMkx8eQumo5BXm5NGvfibGznqHroKF4enlf0rYyFghVsBIREZFaxZaWcmBLEklxMexLSnAs3t1vEBFRE2nVpdtVb/cNvPdBBt77YNnj54254QVCFaxERESkVijIy2PbmuUkxy3h1NHD1G/UmP5T7yfszqib/pTfjdICocCxY8e4//776dSpE927d2f8+PHs3r2bevXqER4eTvfu3Zk1axalpaWsXr2a6OjoS86fPn06X3zxhYuqFxERqdtOHj7Eir+8x5+enMaq+X/Gx8+P8bN/xMx3P2LQfQ9WWagCjVhhrWXKlClMmzaNTz/9FIDk5GQyMzPp1KkTycnJFBcXM3LkSBYtWkSTJk1cXLGIiIiUlpawPymBpNgYDmxJwt3Dg64DhxIRNZEWnYJcVledD1arVq3C09OTWbNmlR0LDw+/ZHNlDw8PBg4cyN69e+nbt68LqhQRERGA/Jwctq6KJyV+CWeOZ+LXJIBB33uYnqPGUr9RY1eXp2CVmppK797XnvSfl5fHihUreP3116uoKhERESnvxMF0kmIXs2PdaooLC2gdHMqQB2bQuU9/3D2qT5ypPpUAry3exvYjZyu1z+6tGvLqxJCbOjctLY3w8HCMMUyaNIlx48axZs2aK7a91QXFRERE5FKlJSXsTdhEUuxiMran4uHlTfDgYYSPjaZZ+46uLu+KKhSsjDHPAY8BFtgKzABaAp8CTYBvgYettYW3qc7bJiQk5KoTzy/MsSovICCAU6dOXXIsOzubwMDA21ajiIhIXZJ39gxbV8SRvGwpOSezaNi0OUMfnEHoyDHU82vg6vKu6brByhhzBzAX6G6tPW+M+Ry4HxgP/M5a+6kx5o/Ao8B7t1LMzY4s3YqRI0fy0ksv8f777/P4448DsHnzZvLy8q7YPigoiCNHjrBjxw6Cg4M5cOAAKSkphIeHV2XZIiIitU7mvr0kxS5m54a1lBQV0bZHOKMeeZKOvSJxc3N3dXkVUtFbgR5APWNMEVAfOAqMBB5wPv8x8BNuMVi5gjGGhQsX8uyzz/LGG2/g4+ND+/bteeutt67Y3tvbm7///e/MmDGD/Px8PD09+eCDD2jUqFEVVy4iIlLzlRQXsXvTVyTFLubonl14evsQOmIMEWOjCWjdxtXl3bDrBitr7WFjzK+Bg8B5IB5IBE5ba4udzTKAO650vjFmJjAToG3btpVRc6Vr1aoVn3/++XeOp6amXrH9oEGD2LRp0+0uS0REpNbKOZXNluVfsmV5LLmnT+HfshUjps8kZNgovOv7urq8m1aRW4H+wCSgA3Aa+Ccw7gpN7ZXOt9b+GfgzQGRk5BXbiIiISO1nreXonp0kxcawe9N6SktK6BARSUTURNr3jMC41fx1yytyK/BOYL+19gSAMeb/gIFAY2OMh3PUqjVw5PaVKSIiIjVVcWEhOzesJSl2Mcf3p+FVrz7hY6MJHzsB/xatXF1epapIsDoI9DfG1MdxK3AUkACsAu7B8cnAacC/b1eRIiIiUvOczTpByrKlbF0Rx/lzZwlo3ZZRjz5F96Ej8PKp5+rybouKzLH62hjzBY4lFYqBJBy39pYAnxpjfuY89uHtLFRERESqP2stGTtSSYpdzN7Nm8BCp8i+RERNpE1Iz1q/7mOFPhVorX0VePWyw/sA7e8iIiIiFOXns2P9apLiYsg6mI6PXwMio6cQNno8jZo1d3V5VaZarbwuIiIiNcvpzGMkxy8hdVU8Bbm5NG3fkTGz5tJt0DA8vbxdXV6Vq/nT7yvBsWPHuP/+++nUqRPdu3dn/Pjx7N69m3r16hEeHk737t2ZNWsWpaWlrF69mujo6EvOnz59+lVXb4+KiqJx48bfOaeoqIh58+YRFBREaGgoffv25csvv7xt36OIiEhlsdaSnvItC998jQ+feZxvl/6bdj178b3X3uThN96mx4gxdTJUgUassNYyZcoUpk2bxqeffgpAcnIymZmZZVvaFBcXM3LkSBYtWkSTJk1uqP//+q//Ii8vjz/96U+XHH/llVc4evQoqampeHt7k5mZedV9CK+kpKQEd/easQqtiIjUDoXn89i2ZgVJcUs4dSSD+o0a03/q9+h5ZxQNmmhrN1CwYtWqVXh6ejJr1qyyY+Hh4aSnp5c99vDwYODAgezdu5e+fW9sWtmoUaNYvXr1Jcfy8vJ4//332b9/P97ejkTfvHlz7rvvPgAWLFjA//zP/2CtZcKECbz55psA+Pn58cMf/pC4uDh+85vfUK9ePX74wx+Sk5NDYGAg8+fPp2XLljfxKoiIiFxd9pEMkuOWsG3NcgrPn6dF5y6Mm/0juvQfjIenp6vLq1bqfLBKTU2ld+/e12yTl5fHihUreP311yvlmnv37qVt27Y0bNjwO88dOXKEF198kcTERPz9/RkzZgyLFi1i8uTJ5ObmEhoayuuvv05RURHDhg3j3//+N02bNuWzzz7jxz/+MX/5y18qpUYREanbbGkp+5ISSIpdzIEtSbi5e9B14BAioqJp2bmrq8urtqpXsPpyHhzbWrl9tugB4964qVPT0tIIDw/HGMOkSZMYN27cVW/XVdbHRzdv3szw4cNp2rQpAA8++CBr165l8uTJuLu7c/fddwOwa9cuUlNTGT16NOC4NajRKhERuVX5uTmkrlpGcvwSzmQew8+/CQPve5Ceo6Lwbezv6vKqveoVrFwgJCTkqhPPL8yxKi8gIIBTp05dciw7O5vAwEC+/vprnnjiCQBef/117rrrriv227lzZw4ePMi5c+do0KDBJc9Ze/Vdf3x8fMrmVVlrCQkJYePGjdf+BkVERCog62A6SXExbF+3iuKCAu7o1p0h359G5z4DcPeo83GhwqrXK3WTI0u3YuTIkbz00ku8//77PP7444Bj1CgvL++K7YOCgjhy5Ag7duwgODiYAwcOkJKSQnh4OI0aNfpOELuS+vXr8+ijjzJ37lz+9Kc/4eXlxdGjR1mxYgWjRo3imWeeISsrC39/fxYsWMCcOXO+00fXrl05ceIEGzduZMCAARQVFbF7925CQkJu7QUREZE6o7SkhLSEr0mKXcyh7Vvx8PSi2+DhhI+dQPMOnVxdXo1UvYKVCxhjWLhwIc8++yxvvPEGPj4+tG/fnrfeeuuK7b29vfn73//OjBkzyM/Px9PTkw8++IBGjRpdsf2QIUPYuXMnOTk5tG7dmg8//JCxY8fys5/9jJdffpnu3bvj4+ODr68vr7/+Oi1btuQXv/gFI0aMwFrL+PHjmTRp0nf69fLy4osvvmDu3LmcOXOG4uJinn32WQUrERG5rryzZ9i6Mp6U+KWcO3mChk2bMeSB6fQYOYZ6Db47/1cqzlzr1lNli4yMtAkJCZccuzDyI1VPr72ISN2SuW8vSbEx7NywhpKiItqG9iQ8aiKdevfFzU1L+FzOGJNorY28kXPq/IiViIhIbVZSXMyer78iKTaGI7t34OntQ+jw0YSPnUBgm3auLq/WUbASERGphXJPn2LL8lhSln9J7qlsGjdvyfAfPE7I8FH4+Pq5urxaS8FKRESklrDWcnTPLpJiF7N701eUlhTTPrw3Y56YQ4ew3hg37WR3uylYiYiI1HDFRUXs2rCWpNgYMvftwatePcLGjCN8TDRNWt3h6vLqFAUrERGRGurcySxSln3JlhWxnD97hiZ3tGHUI0/SfegIvOrVd3V5dZKClYiISA1ireXwjm0kxS5mz+aNWGvp1LsfEWOjadsjrNJ2ApGbo2AFZGZm8txzz7Fp0yb8/f3x8vLihRdewN/fn0mTJtGxY0fy8/O5//77efXVV5k/fz4JCQn84Q9/KOtj+PDh/PrXvyYy8oY+lSkiIlIhRQX57Fi/huTYxZw4mI6Prx+9J0wmfMwEGjVr7uryxKnOBytrLZMnT2batGl88sknABw4cID//Oc/+Pv7M2TIEGJiYsjNzSU8PJzo6GgXVywiInXJmePHSI5fSurKePJzc2jatj2jZ84hePAwPL19XF2eXKbOB6uVK1fi5eXFrFmzyo61a9eOOXPmsHr16rJjvr6+9O7dm7S0NBdUKSIidYm1loNbU0iKW0xa4jcYYwjqO5CIsdHcERyi233VWJ0PVtu2baNXr17XbXfy5Ek2bdrEK6+8wubNm6ugMhERqWsKz+exfe0qkuJiyD58iHoNG9Fv8n2EjR5Hg4BAV5cnFVCtgtWb37zJzuydldpntybdeLHvixVu//TTT7N+/Xq8vLz41a9+xbp164iIiMDNzY158+YREhLC5dvyXKB/QYiIyM04dfQwSXExbFu9gsLzeTTvGETUU8/RdcAQPLy8XF2e3IBqFaxcISQkhH/9619lj9955x2ysrLKJqFfmGNVXkBAAKdOnbrkWHZ2NoGB+teEiIhUjC0tZX9KIkmxMaQnJ+Lm7kGX/oOIiJpIy6Cu+sd6DVWtgtWNjCxVlpEjR/LSSy/x3nvv8eSTTwKQl5d3zXP69OnD7NmzOXbsGC1atCAhIYGCggLatGlTFSWLiEgNlp+bw7bVK0iOj+H0saP4+jdh4L0P0vPOKHwb+7u6PLlF1SpYuYIxhkWLFvHcc8/xy1/+kqZNm+Lr68ubb7551XOaN2/O22+/zfjx4yktLcXPz48FCxbgpq0CRETkKrIOHSA5Lobta1dRVJBPq67dGXTfQwT1G4i7h6ery5NKYqy1VXaxyMhIe/n8pB07dhAcHFxlNchFeu1FRG6v0tIS0hK/ITl2MQdTt+Du6Um3QcOIGBtN846dXV2eXIcxJtFae0MLVNb5ESsREZHKdv7cWbaujCc5fgnnsk7QIKApg78/jR4jx1C/YSNXlye3kYKViIhIJTmevo+k2MXsXL+G4qJC2oT0ZMQPHqdTZD/c3N1dXZ5UAQUrERGRW1BSXMzezRtJil3M4Z3b8fD2pvuwkUSMjSawbXtXlydVTMFKRETkJuSePsWWFbFsWfYlOaeyadS8BcMefpTQ4aPx8fNzdXniIgpWIiIiN+Do3l0kxcawe+M6SoqLaR/Wizsfn02HiN64uel2X12nYCUiInIdxUVF7N64jqS4GI7t3Y1XvXr0vHMc4WMn0KRVa1eXJ9WIFl4CMjMzeeCBB+jYsSO9e/dmwIABLFy4kNWrV9OoUSMiIiIIDg7mtddeA2D+/PnMnj37kj6GDx9+1a1uqtqPf/xj2rRpg5+GokVEbsm57Cy++uxvvP/0DL5857cU5OUxcsYTzHz3Y0bOeEKhSr6jzo9YWWuZPHky06ZN45NPPgHgwIED/Oc//8Hf379sS5vc3FzCw8OJjo6ucN/p6elMnz6d1atX36bqr2zixInMnj2boKCgKr2uiEhtYK3l8K7tJMXGsPebDZSWltKxVx8ioibSrke4tpqRa6rzI1YrV67Ey8uLWbNmlR1r164dc+bMuaSdr68vvXv3Ji0t7ZavmZmZyZQpUwgLCyMsLIwNGzYA8Nvf/pbQ0FBCQ0N56623AEc469atG9OmTaNnz57cc8895OXlsWLFCqZMmVLW57Jly5g6dSoA/fv3p2XLlrdcp4hIXVJUWMDWlfH8bd4zfPbqixzY8i0R4+7i0bffZ8oL/4/2PSMUquS66vyI1bZt2+jVq9d12508eZJNmzbxyiuvsHnz5lu65ty5cxk2bBgLFy6kpKSEnJwcEhMT+eijj/j666+x1tKvXz+GDRuGv78/u3bt4sMPP2TQoEE88sgjvPvuu/zoRz/i6aef5sSJEzRt2pSPPvqIGTNm3FJdIiJ10dkTx0mOX8LWlfHk55wjsE07Rj8+m+DBw/H08XF1eVLDVKtgdex//oeCHTsrtU/v4G60eOmlCrd/+umnWb9+PV5eXvzqV79i3bp1RERE4Obmxrx58wgJCbnqXKoL/5KZMmUK+/fvp7CwkIMHDxIeHg7AM888w4wZM1i5ciV//etfAXB3d6dRo0asX7+eKVOm4OvrC8DUqVNZt24dd911F23atGHQoEEAPPTQQ/z+97/n+eef5+GHH+bvf/87M2bMYOPGjWV9iojItVlrObRtC0mxi0lL+AYMdO7Tn4ioibQODtXIlNy0ahWsXCEkJIR//etfZY/feecdsrKyiIx0bA10YY5VeQEBAZw6deqSY9nZ2QQGBgKwcOFC4MbmWF1rz8bL/4JfeDxjxgwmTpyIj48P9957Lx4edf7tFBG5psL882xfu4rkuBhOZhykXoOG9Jl0N2Gjx9MwsKmry5NaoFr9Jr6RkaXKMnLkSF566SXee+89nnzySQDy8vKueU6fPn2YPXs2x44do0WLFiQkJFBQUECbNm0qdM1Ro0bx3nvv8eyzz1JSUkJubi5Dhw5l+vTpzJs3D2stCxcu5G9/+xsABw8eZOPGjQwYMIAFCxYwePBgAFq1akWrVq342c9+xrJly27hVRARqd1OHTtCctwStq1eTkFeLs06dGLsk8/SbeBQPLy8XF2e1CLVKli5gjGGRYsW8dxzz/HLX/6Spk2b4uvry5tvvnnVc5o3b87bb7/N+PHjKS0txc/PjwULFuDmVrHPArz99tvMnDmTDz/8EHd3d9577z0GDBjA9OnT6du3LwCPPfYYERERpKenExwczMcff8wTTzxBUFBQWQAEePDBBzlx4gTdu3cvO/bCCy/wySefkJeXR+vWrXnsscf4yU9+cnMvkIhIDWVLS0lP+Zak2MXsT07Ezd2dLv0HExEVTcugbrrdJ7eFudYtqMoWGRlpL5+ftGPHDoKDg6ushpomPT2d6OhoUlNTr/j87NmziYiI4NFHH73hvvXai0htVJCXy7bVy0mOX8Kpo0fwbexPzzuj6HnnOPz8m7i6PKlBjDGJ1trIGzmnzo9Y1WS9e/fG19eX3/zmN64uRUTE5U5mHCIpLobta1ZQVJBPyy7dGH/vg3TpNxB3D09Xlyd1hIJVNde+ffurjlYlJiZWcTUiItVLaWkJ+xI3kxS7mIOpKbh7etJt4FAioibSvGNnV5cndZCClYiI1Djnc86RujKe5PilnD2RiV9AIIPv/wE9Ro2lfsNGri5P6jAFKxERqTFOHNhPUuxidqxfQ3FhAa23UED4AAAgAElEQVS7hzLs4UfoHNkfN3d3V5cnomAlIiLVW0lxMXs3byIpdjGHd27Dw8ub4CHDiRgbTdN2HVxdnsglFKxERKRayjtzmi0r4khZtpSc7JM0bNqcoQ89QuiI0dTza+Dq8kSuSMEKx6bIzz33HJs2bcLf3x8vLy9eeOEF/P39mTRpEh07diQ/P5/777+fV199lfnz55OQkMAf/vCHsj6GDx/Or3/967IV210lLy+Pe++9l7S0NNzd3Zk4cSJvvPGGS2sSEbkRx/buJil2Mbs2rqOkuJh2PSO487Gn6BARiZubbvdJ9VahYGWMaQx8AIQCFngE2AV8BrQH0oH7rLWnrtJFtWWtZfLkyUybNo1PPvkEgAMHDvCf//wHf3//si1tcnNzCQ8PJzo6usJ938iWNpXp+eefZ8SIERQWFjJq1Ci+/PJLxo0bV6U1iIjciJLiInZvXE9SbAxH9+7C06cePUaNJXxsNAF3VGxXC5HqoGJLhcPbQKy1thsQBuwA5gErrLVBwArn4xpn5cqVeHl5MWvWrLJj7dq1Y86cOZe08/X1pXfv3qSlpd3yNTMzM5kyZQphYWGEhYWxYcMGAH77298SGhpKaGgob731FuAIZ926dWPatGn07NmTe+65h7y8PFasWMGUKVPK+ly2bBlTp06lfv36jBgxAgAvLy969epFRkbGLdcsInI75GSf5KvP/8Gfn5rB0j/8hvzcHEZMf4In3vuYUY88qVAlNc51R6yMMQ2BocB0AGttIVBojJkEDHc2+xhYDbx4O4q8nbZt20avXr2u2+7kyZNs2rSJV155hc2bN9/SNefOncuwYcNYuHAhJSUl5OTkkJiYyEcffcTXX3+NtZZ+/foxbNgw/P392bVrFx9++CGDBg3ikUce4d133+VHP/oRTz/9NCdOnKBp06Z89NFHzJgx45LrnD59msWLF/PMM8/cUr0iIpXJWsuRXTtIil3Mnm82UFpaSseISCLGRtOuZwSmgtuDiVRHFbkV2BE4AXxkjAkDEoFngObW2qMA1tqjxphmt1rMus93k3Uo51a7uURgGz+G3Nelwu2ffvpp1q9fj5eXF7/61a9Yt24dERERuLm5MW/ePEJCQrh8W54LLuw7NWXKFPbv309hYSEHDx4kPDwcgGeeeYYZM2awcuVK/vrXvwLg7u5Oo0aNWL9+PVOmTMHX1xeAqVOnsm7dOu666y7atGnDoEGDAHjooYf4/e9/z/PPP8/DDz/M3//+d2bMmMHGjRvL+gQoLi7m+9//PnPnzqVjx443/sKJiFSyosICdn21lqTYGI6np+Fd35eIqGjCx0TTuEVLV5cnUikqEqw8gF7AHGvt18aYt7mB237GmJnATIC2bdveVJG3U0hICP/617/KHr/zzjtkZWWVTUK/MMeqvICAAE6dunQ6WXZ2NoGBgQAsXLgQuLE5Vtfas/HyjUIvPJ4xYwYTJ07Ex8eHe++9Fw+Pi2/nzJkzCQoK4tlnn73utUVEbqezWcdJiV/KlpXx5J87S0Drttz52NN0HzICTx8fV5cnUqkqEqwygAxr7dfOx1/gCFaZxpiWztGqlsDxK51srf0z8GdwbMJ8rQvdyMhSZRk5ciQvvfQS7733Hk8++STg+GTdtfTp04fZs2dz7NgxWrRoQUJCAgUFBbRpU7G5AKNGjeK9997j2WefpaSkhNzcXIYOHcr06dOZN28e1loWLlzI3/72NwAOHjzIxo0bGTBgAAsWLGDw4MEAtGrVilatWvGzn/2MZcuWlfX/8ssvc+bMGT744IObeUlERG6ZtZZD27aSFLuYtATHr49Okf2IiJpIm5Ae3/kHo0htcd1gZa09Zow5ZIzpaq3dBYwCtjv/mwa84fzz37e10tvEGMOiRYt47rnn+OUvf0nTpk3x9fXlzTffvOo5zZs35+2332b8+PGUlpbi5+fHggULcKvgvIC3336bmTNn8uGHH+Lu7s57773HgAEDmD59On379gXgscceIyIigvT0dIKDg/n444954oknCAoKKguAAA8++CAnTpyge/fuAGRkZPDzn/+cbt26lc0dmz17No899tjNvkQiIhVWlJ/P9nWrSI6LIevQAXz8GhB511TCR4+nYdNbnjEiUu2Za92CKmtkTDiO5Ra8gH3ADByfKPwcaAscBO611mZfq5/IyEh7+fykHTt2EBwcfFPF1wXp6elER0dfdSPm2bNnExERwaOPPnrDfeu1F5HKcvrYUZLjY0hdtZyCvFyate9ERFQ0XQcNxdPL29XlidwUY0yitfaGFqis0DpW1tpk4Eodj7qRi0nl6t27N76+vvzmN79xdSkiUgfZ0lIObEkiKS6GfUkJuLm5EdR3IBFRE2nVNVi3+6RO0srr1Vz79u2vOlqVmJhYxdWIiEBBXh7b1qwgOS6GU0cPU79RY/pPvZ+wO6PwaxLg6vJEXErBSkREKuTk4UMkx8Wwbc1KivLP07JzV8bP/hFB/Qfj4enp6vJEqgUFKxERuarS0hL2JyWQFBvDgS1JuHt40HXAECKiJtKic9V/klukulOwEhGR78jPySF1VTzJ8Us4czwTvyYBDPrew/QcNZb6jRq7ujyRakvBSkREypw4mE5S7GJ2rFtNcWEBd3QLYcgDM+jcpz/uHvqVIXI9+lsC+Pn5kZOTw5EjR5g7dy5ffPEF8+fPJyEhgT/84Q+uLk9E5LYqLSlhb8ImkmIXk7E9FQ9PL7oNHk5EVDTN2mtLLJEboWBVTqtWrfjiiy8q3N5ai7W2wguDiohUJ3lnz7B1RRzJy5aSczKLhk2bMfTBGYSOHEM9vwauLk+kRlIiKCc9PZ3Q0NCyx4cOHSIqKoquXbvy2muvlbUJDg7mqaeeolevXhw6dIgFCxbQo0cPQkNDefHFFwEoKSlh+vTphIaG0qNHD373u98B8P7779OnTx/CwsK4++67r7t9johIZcvct5fYd3/Hn5+azvpP/0qTVq2Z9PzLPPr79+lz190KVSK3QCNW1/DNN9+QmppK/fr16dOnDxMmTCAwMJBdu3bx0Ucf8e6773LkyBFefPFFEhMT8ff3Z8yYMSxatIg2bdpw+PDhsjWoTp8+DcDUqVN5/PHHAceefh9++CFz5sxx2fcoInVDSXERu7/eQFLsYo7u3omntw+hI8YQMTaagNYV2+dURK6vWgWrVfP/zPED+yq1z2btOjJi+sybOnf06NEEBDgWu5s6dSrr169n8uTJtGvXjv79+wOwefNmhg8fTtOmTQHH3n1r167llVdeYd++fcyZM4cJEyYwZswYAFJTU3n55Zc5ffo0OTk5jB07thK+SxGRK8s5lc2W5V+yZXksuadP0bhFS0ZMe5yQ4XfiXd/X1eWJ1DrVKlhVN5dvx3Dhsa/vxR9GV9tr0d/fn5SUFOLi4njnnXf4/PPP+ctf/sL06dNZtGgRYWFhzJ8/n9WrV9+2+kWkbrLWcnTPTpJiY9i96StKS4rpEN6biKiJtA/rhdG8UJHbploFq5sdWbpdli1bRnZ2NvXq1WPRokX85S9/+U6bfv368cwzz5CVlYW/vz8LFixgzpw5ZGVl4eXlxd13302nTp2YPn06AOfOnaNly5YUFRXxj3/8gzvuuKOKvysRqa2KCwvZuWEtyXExZO7bi1e9+oSPnUD42An4t2jl6vJE6oRqFayqm8GDB/Pwww+zd+9eHnjgASIjI0lPT7+kTcuWLfnFL37BiBEjsNYyfvx4Jk2aREpKCjNmzKC0tBSAX/ziFwD89Kc/pV+/frRr144ePXpw7ty5qv62RKSWOZt1gpRlS9m6Io7z584S0Lotox59iu5DR+DlU8/V5YnUKeZqt7Juh8jISJuQkHDJsR07dhAcHFxlNchFeu1Fai5rLRk7UkmKXczezZvAQsfefYmIiqZtaNh3pjKIyI0zxiRaayNv5ByNWImI1CBF+fnsWL+apLgYsg6m4+PXgMjoKYSNHk+jZs1dXZ5InadgJSJSA5zOPEZy/BJSV8VTkJtL03YdGPPEXLoNGoqnt4+ryxMRJwUrEZFqylrLga3JJMUuZt+3mzHGENRvEBFR0dzRtbtu94lUQ9UiWFlr9QOiilXl3DoRuTGF5/PYtmYFSXFLOHUkg/qNGtN/yn30HD2OBk0CXV2eiFyDy4OVj48PJ0+eJCAgQOGqilhrOXnyJD4+un0gUp1kHzlMclwM29Ysp/D8eVp0CmLc0z+ky4AheHh6uro8EakAlwer1q1bk5GRwYkTJ1xdSp3i4+ND69atXV2GSJ1nS0vZl5RAclwM6Snf4ubuQdeBQ4iIiqZl566uLk9EbpDLg5WnpycdOnRwdRkiIlUqPzeH1FXLSI5fwpnMY/j5N2HgfQ/Sc1QUvo39XV2eiNwklwcrEZG6JOtgOklxMWxft4riggJade3O4Pt/QFDfgbh76EeySE2nv8UiIrdZaUkJaQlfkxS7mEPbt+Lh6UW3wcMIHxtN8w6dXF2eiFQiBSsRkdsk7+wZtq6MJ2XZUs5lnaBBYFOGPDCdHiPHUK9BQ1eXJyK3gYKViEgly9yfRlLsYnZ+tYaSoiLahvZkxPSZdOrdFzc3d1eXJyK3kYKViEglKCkuZs/XX5EUG8OR3Tvw8PYmdPidhI+NJrBNO1eXJyJVRMFKROQW5J4+xZblsaQs/5LcU9k0bt6S4T94jJDhd+Lj6+fq8kSkiilYiYjcIGstR/fsIil2Mbs3fUVpSTHtw3sz5ok5dAjrjXFzc3WJIuIiClYiIhVUXFTErg1rSYqNIXPfHrzq1SNszDjCx0TTpNUdri5PRKoBBSsRkes4dzKLlGVfsmVFLOfPnqFJq9aMfGQWIUNH4lWvvqvLE5FqRMFKROQKrLUc3rGNpNjF7Nm8EWstnXr3JWLsRNr2CNPepiJyRQpWIiLlFBXks2P9GpLjYjhxYD8+vn70njCZ8DHjadSshavLE5FqTsFKRAQ4czyT5PglpK6MJz83h6Zt2zN65hyCBw/D09vH1eWJSA2hYCUidZa1loNbU0iKW0xa4jcYYwjqM4CIqIncERyi230icsMUrESkzinMP8/2NStJiosh+/Ah6jVoSL/J99LzznE0DGzq6vJEpAZTsBKROuPU0cMkxcWwbfUKCs/n0bxjEFFPPUfXAUPw8PJydXkiUgsoWIlIrWZLS9mfkkhSbAzpyYm4uXvQpf8gIqIm0jKoq273iUilUrASkVqpIC+X1FXLSY6P4fSxo/g29mfAPQ8QNnocvo39XV2eiNRSClYiUquczDhIUuxitq9dRVFBPq26BDPovocI6jcQdw9PV5cnIrWcgpWIVGsb/vkPNn6x4KrPD7jn+/S/+37SEr8hOXYxB1O34O7pSbeBw4iIiqZ5x85VWK2I1HXGWltlF4uMjLQJCQlVdj0RqV0+e20eAN979Q0Azp87y9aV8aQsW8rZE8dpENCUsDHj6TFyDPUbNnJlqSJSCxhjEq21kTdyjkasRKTGOZ6+j6TYxexcv4biokLadO/B8Icfo1NkP9zc3V1dnojUYQpWIlIjlBQXkXfmDDnZJ/nbi3Px8Pam+9CRhEdF07Rte1eXJyICKFiJSDWXk32SlOWxbF0RS+7pU7h7ejLs4UcJHT4aHz8/V5cnInIJBSsRqXastWTsSCU5bgl7N2+ktLSUDuG9OZt1Ah8/PyKjp7i6RBGRK1KwEpFqozD/PNvXriIlfglZhw7g4+tHxLi7CB89nsYtWpZNXhcRqa4UrETE5U4ePkRK/FK2rVlO4fnzNOvQiTGz5tJt4FA8vX1cXZ6ISIUpWImIS5SWlJD27Tckx8ZwMDUFdw8PuvQfTPjY6Eu2mrnSOla/+V502dcD7vk+A+99sEprFxG5mgqvY2WMcQcSgMPW2mhjTAfgU6AJ8C3wsLW28Fp9aB0rEck7c9q59tSXnDt5wrH21OhxjrWnGjV2dXkiImVu9zpWzwA7gIbOx28Cv7PWfmqM+SPwKPDejVxcROoGay1H9+wiOX4Juzeuo6S4mLahYYyY/jidemvtKRGpPSoUrIwxrYEJwM+BHxrHGP1I4AFnk4+Bn6BgJSLlFBUWsPOrNSTHLeH4/jS86tWjx6gowsdMIKB1G1eXJyJS6So6YvUW8ALQwPk4ADhtrS12Ps4A7qjk2kSkhjp97CjJy5aybdUy8nNzCGjdllGPPkX3IcPxqlff1eWJiNw21w1Wxpho4Li1NtEYM/zC4Ss0veJkLWPMTGAmQNu2bW+yTBGp7mxpKftTEkmOW8L+5ESMMQT1HUj42Am0Dg4tm4wuIlKbVWTEahBwlzFmPOCDY47VW0BjY4yHc9SqNXDkSidba/8M/Bkck9crpWoRqTbO55xj26plJC9bypnMY/g29qf/1PvpeedYGjQJdHV5IiJV6rrBylr738B/AzhHrJ631j5ojPkncA+OTwZOA/59G+sUkWomc99ekuOXlG2EfEe37gy+/wcE9R2Au4enq8sTEXGJW1nH6kXgU2PMz4Ak4MPKKUlEqqvioiL2bFpPUvwSju7eWbYRctiY8TRr39HV5YmIuNwNBStr7WpgtfPrfUDfyi9JRKqbs1kn2LL8S7asiOP82TP4t2zF8B88TsjwUfj4aiNkEZELtPK6iFyRtZaDqSkkxy0hLeFrADr27kP4mAm06xGOcXNzcYUiItWPgpWIXKIgL49ta1aQEr+E7CMZ+DRoSORdUwm7cxyNmjV3dXkiItWagpWIAJB16ADJcUvYvm4VRfnnadG5C1FPPUfXAUPw8PJydXkiIjWCgpVIHVZSXExawiaS4mLI2J6Ku6cn3QYOJXzMBFp07uLq8kREahwFK5E6KOdUNltXxLFl+ZfknMqmYdPmDHlgOqEjRlO/YSNXlyciUmMpWInUEdZaDu/aTnJsDHu+2UBpSQntw3px5+NP0yEiEjc3bYQsInKrFKxEarmi/Hx2rF9NclwMJw6m413fl4ioaMJGj8e/pbb4FBGpTApWIrXUqaOHSY5fyrbVyynIy6Vpuw6Mnjmb4EHD8fTxcXV5IiK1koKVSC1SWlrCvm8TSI6L4cCWJNzc3QnqN4iIsdG06hqsjZBFRG4zBSuRWiDv7BlSVy0jZdlSzp44jl+TAAbe9yA9R0Xh29jf1eWJiNQZClYiNdjRvbtIjlvCro3rKCkqok33Hgx7+FE69e6Hu4f+eouIVDX95BWpYYoLC9m1cR3JcTEcS9uDp089QkeMIXzMeALbtHN1eSIidZqClUgNceZ4JinLlrJ11TLyz52lSavWjJzxBN2HjsK7fn1XlyciIihYiVRrtrSUA1uSSIpfwr5vN2MwdO7Tn/CxE2gT0lOT0UVEqhkFK5FqKD8nh21rlpOybCmnjh6hfqPG9Jt8Hz3vjKJhYFNXlyciIlehYCVSjRxP30dy/BJ2rF9NcUEBrboEM+CeBwjqNwgPT09XlyciItehYCXiYiXFRez5egNJcUs4sms7Hl7edBs0jPCxE2jeoZOryxMRkRugYCXiIueys9iyPJYty2PJO3Oaxs1bMuzhRwkdPhofPz9XlyciIjdBwUqkCllrydi+leS4JezZvBFrLR0jIgkfM4H2Yb0wbm6uLlFEpO7KPwsn90DWXsjafVNdKFiJVIHC83lsX7uK5PglnMw4iI9fA3pPmEzY6PE0bt7C1eWJiNQdpaVwNsMRnC4EqKzdcHIvnDt6SdPeLd1632j3ClYit9HJjEMkx8ewfe1KCs+fp3nHzoyd9QxdBw3F08vb1eWJiNRehbmOsJS1xxme9jj+O7kXis9fbOfTCAK7QKeRcOYw7F99S5dVsBKpZKUlJaQlfE1yfAwHU7fg7uFB1wFDCB8bTYvOXbT2lIhIZbEWzh5x3r67LECdzbjYzrhB43aOANVxGAQGQUCQ47FvIFzl53LiaybxRktSsBKpJLmnT7F1ZTwpy78k52QWDQKbMvj+H9Bj5BjqN2rs6vJERGquovNwMu3iLbuy23dpUJhzsZ1XA0doaj8YAjs7glNgF2jSETyq5i6BgpXILbDWcnTPTpJiY9i96StKS4pp2yOcUTNm0bFXH9zc3V1doohIzWAt5GReHHkqH6BOHwKss6GBxm0cI05tB14aoPyaX3X0qaooWInchKKCfHZ+tZbkuCUcT0/Dq159wsaMI3zMBJq0au3q8kREqq/iAsjed+mtuwu38grOXmznWd8x+tS6L4Q/5Pg6MAiadAKv6rs/qoKVyA04dewIKfFL2bZ6Ofm5OQS2acedjz1N8JDhePnUc3V5IiLVg7WQd7LcnKdyAepUOtjSi20b3uEITD2/5xx5cgaoBq2gBi5Bo2Alch2lpSWkJ39LclwM+5MTcXN3p3PfgUSMmcAdwSGajC4idVdJkSMoXbhld2H5gpN74Pypi+08fCCgM7QMgx73OieOBzmOedeuBZEVrESu4vy5s6SuWkbKsqWcOZ6Jr38TBtzzfXqOisKvSYCryxMRqTp52ZfOeboQoE7th9Lii+38WjgCU8gUx+jThQDVqE2NHH26GQpWIpfJ3LeXpLgYdn21luKiQloHhzLkgel07jMAdw/9lRGRWqqkGE4fKDfnqdzSBXlZF9u5eznmOTULhu53Xbx9F9DZsSZUHaffEiJAcVERuzetJzkuhqN7duHp7UP3YSMJHxtN07btXV2eiEjlyT9z6S27CwEqex+UFF5sVz/QEZq6TXDOe3IGqMbtwE2feL4aBSup085mHSdl2ZdsXRnP+bNn8G95ByOmzyRk2Ci86/u6ujwRkZtTWgpnDn53y5as3Y4lDS5w83Cs8RQQBF2iLh19qt/EdfXXYApWUudYazm4NYWkuBj2JX4DQMfefQkfO4F2oWHaCFlEao6CnEs3Db4QoE7uheL8i+3q+TtCU+fRl44++bcHd0+XlV8bKVhJnVGQl8u2NStIjl/KqSMZ1GvQkD6T7ibsznE0bNrM1eWJiFxZaSmcO3LpnKcLX587crGdcXMEpcAu0GnExS1bAruArz5wU1UUrKTWyzqYTnL8EravXUVRQT4tO3dl3NM/pEv/wXh4ebm6PBERh8I8yE77boA6uReK8i62827kWG388j3vmnSosm1b5OoUrKRWKikuZu/mjSTHLSFjRyoenl50HTSUiLHRNO/Y2dXliUhdZS2cO1Zu4viei8sXnDlYrqGBxm0dgan94Iu37wKCwK+Zy7dtkatTsJJaJedUNluWx7J1RSw5p7Jp1Kw5Qx+cQeiI0dRr0NDV5YlIXVGU79y25QoBqvDcxXaevo7Q1LY/BD58MUA16Qie2s2hJlKwkhrPWsvhHdtIil/C3m82UFpSQvvw3oyeOYf24b1w08eCReR2sBZyT1xhz7vdcPrgpdu2NGrj+KRd+AMXt2wJ7AINWmr0qZZRsJIaqzD/PDvWrSY5fglZB9Px9vUlImoiYWPG49+ilavLE5HaorjQscL4lQJU/pmL7TzqOeY+teoFPe+/GKACOoOXlm+pKxSspMbJPpJBcvwStq1eQeH5PJq278jomXMIHjwMT28fV5cnIjVVXna5LVv2XAxQ2fvBllxs16ClIzCV3/MusItjM2Et11LnKVhJjVBaWsK+xM0kxy/hwJYk3Nw96NJ/EOFjo2nVpZs2QhaRiinbtmX3dz99dz77Yjt3bwjoBM1DHPveld802EfzNeXqFKykWss7e4atK+JIWf4l57JO4BcQyKDvPUyPkWPwbezv6vJEpLo6f/rKe95l74PSoovtfJs5Rpsu7Hl3IUA1bqttW+SmKFhJldrwz3+w8YsFV31+wD3fZ8A9D3Bs726S42LYtXEdJcXFtA3tyYgfPE6nyH64ueuHnYgApSWOSeJXClC5xy+2c/N0fMouMAi6jb+4aGZAZ6jX2HX1S61krLVVdrHIyEibkJBQZdeT6u2z1+YB8L1X3wCgqLCAXRvWkRwXQ+a+vXj61CNk2EjCx0wgoHVbV5YqIq5UcO6yBTMvzH9Kg5KCi+3qB1w65+nCn43bgbvGEeTGGWMSrbWRN3KO/k8Tlztz/BjJ8UtJXbWM/JxzNLmjDaMeeZLuQ0fgVa++q8sTkapQWgpnM64coM4dvdjOuDtWGA8Igs53lts0OEjbtki1oGAlLmFLS8nPOUdOdjYfzH0cYwyd+/QnfEw0bUJ6aDK6SG1VmOvYouU7AWovFJ+/2M6nkSM0dRxx2abBHcBDW1FJ9aVgJVWqqCCf7WtX8u3S/5B9JAM3dw/6T/0ePUdF0SAg0NXliUhlsNYxynSlTYPPZlxsZ9wubtvSYZhjzlPZpsGBWjhTaiQFK6kS505mkRwXw5blseTn5tC8Y2f8W7WmfqOGDLrvIVeXJyI3o+i8Y57TycvC08m9UJhzsZ1XA8doU/tBl20a3BE8tfac1C4KVnJbHd27i2+X/ofdm9ZjSy2d+/an1/hJ3NG1O5+//t+uLk9ErsdayPn/7Z15cBzXfec/r3suAAMQN2+KpEiIkimKpKjTknVZEiVRsnzGZ6zYiXM5h51kk92tzbFVqfWmvLtx7damVmV7k604zuHYkkxSomgpkmxZlsRTJy9RF0VSJEASNzDT3W//eN0zPYMeYEAOMAPg95Gm3sw7un8zGPb7zu/9+vdORex5d9jckUfoBqh5y0L73oU2DW5cIN4nYc4wobBSSi0F/h+wAPCAB7XW31JKtQL/BCwH3gI+pbU+O3WmCjMFz3U5/MJz7N7+ECcOHSBRV8+GzfeyYfO9zOucX23zBEGIwhk1GcajNg0eDW3bEq83S3ZLrgrte9cFrRdDQm42EYRyPFYO8Ada6z1KqUZgt1JqJ/AA8ITW+htKqT8B/gT446kzVah1RgYHePmJHex9bCv9Padpnr+QWx74ddbefJvc3ScItYDWMNQTEk2H/EDyQ3D2rcJNg5sWGwG17lN+3JMf/9S4SLZtEYRxmHQeK6XUw8D/8h83a61PKKUWAmiAKboAACAASURBVE9prS8Zb6zksZqdnD3xHnsefYRXn3qC7OgISy+7nI333M/KjZuwijIXl5Mg9PpPfm6qTRaE2Y2bNUKpOHi85zAMhxYWYikjnsJB4+3+62Rj1cwXhFrhfPJYTUpYKaWWA88Aa4F3tNbNobazWutx9xgRYTV70Frzziv72bP9YY7u3YVt26z54M1svPs+OpevrLZ5gjA3GDqT9ziFBdTZN8Fz8v3S8wvzPQUCat5S2bZFEMZhShOEKqXSwL8Cv6+17is3z5BS6ivAVwCWLZPs2TMdJ5Ph9WefYs/2R+h+5y3qmuZx3cc/zRW33y179wnCVBBsGhwloIa68/3shIlz6lxj9r0LC6jUvOrZLwhzjLKElVIqjhFV39Na/9Cvfl8ptTC0FHgqaqzW+kHgQTAeqwrYLFSBwXNn2ff4dvbv3M5wXy8dy5Zz52/8Hms+eBOxhCTrE4QLZqTXBIr3hOKfuo/AmTfAzeT71bcbwVS8551s2yIINUE5dwUq4DvA61rr/x5qegT4IvANv3x4SiwUqsqpt46ye9tDHHj2GTzPZeXGq7jy7vslO7ognA+eB73vjt2ypfswDJzM97NiJsN4exd03VEooOpbq2e/IAgTUs7Pmw8CXwBeVkrt8+v+A0ZQ/bNS6svAO8Anp8ZEYbrxPJc3dr/Anu0Pc+y1V4gnU1xx+11s2LyFloWLq22eINQ+owOhbVvCmwYfAWck3y/VbATTqg/7aQv85buW5WDHq2a+IAjnz4TCSmv9M6CUa+K2ypojVJPRoSFefWonex77Mb3vn6SxvYObPv8l1t56B6mGdLXNE4TaQmvoey+/ZBcWUH3v5fspywilttWw8uZ8EHl7F9S3SeJMQZhlyIK8QO+pk+x97Me8/OROMsNDLLrkMj702QdYddV1WLbcMSTMcTJDJs4pLKC6D5mtXLKD+X7JJiOYVnyoMH1B6wqIJatnvyAI04oIqzmK1pr3DrzKnu2PcOTFX6AsRde1N7Dx7vtYuGrcdGSCMPvQGvpPhgLHQ3fg9b5LftsWBc1LjWBafkOhgEp3ivdJEAQRVnMN18ly8LmfsWf7w7x/9AipdCNXfeTjrL/zHhpb26ttniBMLdkROHM0JKBCweOZ/ny/eIO/59010P6FfP6ntoshXlc9+wVBqHlEWM0Rhvp6eWnno+x7fBuD587Sungpt//aV7n0xpuJJ2V3eWEWoTUMdpfYNPjtom1blhjRtP4zhQk0mxaJ90kQhPNChNUsp/vdt9mz/WFe/+lTONkMy9dfyea77uOidRtQst+XMJNxs/lNg8N73nUfMjmhAmJ1Zslu0QZY90v5u+/aVkGioXr2C4IwKxFhNQvRnseb+3ezZ/sjvP3SXmKJJJfddCsb77qPtiWS/V6YYQydicj7dMiIKu3m+zUuNGJp7ScKNw1uWiKbBguCMG2IsJpFZEdGePWZJ9nz6COcPX6MdEsrN3z6l1n34c3UNTZV2zxBKI3nmmW67uLYp6JtW6JYsA4e2AYp+Y4LglB9RFjNAvq6T7Pv8W28/JPHGBkcYP7K1dz9O39I17U3YMfkTyzUEKP9edEUDiDveQPc0Xy/3LYt9+Tvumv3t22RTYMFQahhZNadwZw4fJDd2x7i0PPPgobVV1/HxnvuZ1HXGtluRqgeUYkzAwHVfzzfT9kmx1N7F6y+PbRp8GrZtkUQhBmLCKsZhue6HH7h5+ze9hAnDh8kWd/Alffcz4Y7t9DU0Vlt84S5RHbYeJoK7rzzxVRB4sx5RiytvLlo25YVEJMNvAVBmF2IsJohjAwM8NITj7Fvxzb6e07TvGAht/7Kr/OBm24jUVdfbfOE2YrWMHi6KPbJF1Dn3iEyceZFH5TEmYIgzGg8TzOQcc5rrAirGufM8WPsefTHvPr0T3BGR1m2dh23ffk3WLnhKkmXIFQONwtn3ypctotKXRCvN6JpyVWw/rN571PrxZAQgS8IQvVxPc3AiEPfSJb+EYf+oBwNXofbQu0jWY6fG2FgNC+oEgtWXTnZ84uwqkG01rzz8n72PPowR/e8iB2LseaGm7ny7o/QcdGKapsnzGSGz46Ne+o+BGffBC/066xxoRFNudQFvoBqWiypCwRBmDIc14sQP8UCyTzvixBG/SMOQxl3wvMkYhZNqRiNqTiNqRiNqRgd6TQxy+K1E30X9B5EWNUQ2cwoB372NHu2P0z3u29TP6+Z6z7xWa64/S4amluqbZ4wU/Bcs79dQdyT/3zwdL6fFTfep841cNl9hZnHJXWBIAiTJON4IZETFj8R3iHfexS0D/jtw9mJRVEqboUEUZymVIyF81I0Jk1dOiSYCsVTXkQlY+XdXaz+65bdk/0cRFjVAANnz7B/53b2P76d4f4+Oi5awebf+hqXXP8hYvF4tc0TapXRAT/beJGA6jlSlLqgzYilrs2h1AWrTeoCWy4BgiDASNYt8v7kn0ctmw2MhtvN81HHm/A89Qm7QOTMq4uzpKWOxmSsSPzkRVBTqC6djJGI1bbXXK6qVeT9o0fYs/1hDvz8p3iey8VXXsOVd9/Hkssul3QJgkFr6D8xNu6p+7BJaRCgLGhZbkTTqlvzAqptNTS0Vc18QRCmFq01I1lvfO9QaNlsYDSq3SHjTiyK0r74Ccrm+gRLW+tzXqOJhFE6GSNm17YoqgQirKaAn//L93juB98v2d513Q0MnTvHsddfIZ6q44o77mLD5ntpWbBoGq0UaorsCJw5OlZA9RyBzEC+X6LReJuW35iPe2rvMvmgYsnq2S8IwqTRWjOUcRlv2cx4hqLijfLPHU+Pex6lIJ0oFD7t6QQr2hsK6kotmwWeItuSH/zloLQe/w9SSTZt2qR37do1beerBf7pL/4EgPv/6E955d92svexR+g99T5NHZ1s2Hwvl996B8l62Qh2TqA1DPVE3Hl32GznokO/GOctDQmnkIBKz5fUBYJQA3ieZjDjjBE5fSExFB1vVLic5k4giiwVeIriRctiEy+bBXUNiRiWiKLzQim1W2u9aTJjxGM1xTiZDANnenjwt75IZniYxWsu46bPf5mLN12DZcvWHLMS1xmbuiDYvmX4bL5fLGWW6hZtgHW/lBdQbRdDQsS2IEwVnqdzd5b1Fy2R9RUtoUUtmwXiaSK/hG2pvAjyA6sXN9fRlGosKYyCZbUgALshYUtoyAxDhNUUoD2Pt1/ay94dWzl55BAAl954Cxvvuo8FF6+usnVCxRg+5wePhz1Qh82SnpfN90vPN4LpAx8tvPNu3lJJXSAIk8RxvYLlseBusnJyFOVF1MSJH+O2KhQ8yTjL/HiiqGWzdM5jlK+vi4somouIsKogI4MDvPb0E+x7fBtnTxynfl4zje0dpFtaufurf1Bt84TzwfMKUxeEt28ZeD/fz4qZJJntq0MbB6826QzqmqtnvyDUEFnXywmhauQoCougiYKtkzFLRJFwXoiwqgCn33mLfTu28vpPnyI7OsKirku57pOfo+ua6/nBX/6napsnlENmsCh1weF86gJnON8v1Qwdl5hNg4O77tq7oOUisCU1hjB7uZAcRUHbSHbiO89K5SgKxxlVKkeRIEwFIqzOE9dxeGPXL9i7YyvHXnuFWDzBmhtuYv0d9zB/5apqmydEoTX0nyy84y4QUb3v5vspy+R4au+ClTcVBo/Xt0nwuDDjmGyOov6IW/Inm6MonTTCZ0lzXdnB1jMhR5EgTIQIq0kyeO4sLz+xg/0/eZSBMz00dcznQ5//Emtv/jB1jSZbdVS6hf/2S1tyz6/7xGe4/pOfm1a75xTOqJ+6oHjj4MOQ6c/3S6SNaLroet/zFOx7txLiqerZLwg+k81RFBZGudijSeQoSueSNMZoqU/kYookR5EglI+kWygDrTUnDh9g345tHHzuZ3iuw/IrNrL+zi2s2HAlliVu56ow2BOKewrve/dWYeqCpiW+aCpKX9C4ULxPwpRRTo6iQs9RdPLG88lRFCWCJEeRIEweSbdQYbKZUQ4++wx7d2zl1JtvkKirZ/0dd3PFHffQumhxtc2bG7iOyfEUte/d8Jl8PztpBNOCdYUbB7etgmS6evYLM5LxchSV2tqjUjmKFjSlWN1ZxrKZX5eWHEWCUFOIsIqg99T77N+5nZeffJyRgX7al17Eh3/1t7n0xptJpOqqbd7sZKSv8I67XP6nNwpTFzR0GsGU2zTYF1DzloJ4DgWicxQVL5sNlGyfuhxF6QivkeQoEoTZhwgrH+15vP3Kfvbt2Mobu19AKcXqq65j/eYtLLl0rVz8KkGw793pg0Y4BWX3YRg4me9nxaBlhRFNBRsHr4K6lurZL0wrI1mXM4MZegYy9AyO5svBzLTlKEoXLatJjiJBECZizgur0aFBXn36CfY9vp2zx49RP6+Zaz/6KdZ9+C4a29qrbd7MxHNNnNPpg9B9EE4fMmX3YRjtG3/sog3w5Z2SumAW4rgeZ4eyvlgapdsvA8HUPZDJtfUMZOgvQyABNKViXH9xe4EIkhxFgiBUizkrrLrffZt9O7bx2jNPkh0dYWHXGu7+6h+w+tobiMVlUi+L7IifsiAknk77aQzc0Xy/9ALo6DLbtnRcYh7tl0C6U4LHZzBaa/pGHCOEArE0YDxMZwaLhVOGs0OZyOU1S0FrQ5L2dIK2dIJ1S5ppSydoTydpbUjQ1pCgLR20J2X5TBCEmmZOCSvPdXlj1/Ps3bGVd199CTseZ80Hb2LDnVsk99R4jPSGhFNoGa9g42AFLcuNaFp1W148ta+WzOMziOGMS3dIKAWiKBBP3SEP05nBDFk3OhBpXl3ciKOGJKs601wdFkcNSV84mefz6uISfC0IwqxhTgirod5zvPzk4+zbuZ2Bnm6aOjq58bMPcPmtd+RyT815tIaBU2PFU/chExcVYCfMnXYLr4B1nzKxTx2XmLq4BPbXGlnX44wviIJ4pWLh1D1oPEw9A5mS24XUJ2zafCG0cF6KtYubaEsnaWswnqW2dIJW/3lLfUKSPAqCMGeZtcJKa83JI4fYu2Mrh577Ka7jcNG6Ddz2pd9k5cZNczf3lOdB7zvGA3X6QOEy3khvvl+i0SzfrbzFlO3+El7zRWDP2q9NzeN5mnPDWbPUNpApiE/qCYsnXyj1DmcjjxO3lb/MZkTRyvaG3JKbEVCJnHBqSyeoT8jfXBAEoRxmxdUyKtN5mAWrurjrt79O66Il02hVlXEycOaNIu/TQegu2vuuocOIprUf98WTL6KaFkn80zSgtWYw44bik0YLlt7Cd8R1D5g4pajcSEpBS30iJ4QuXdhEuy+OjCcpLJSSNKViEqckCMKcQnsa1/Vwsx6uo3GyLp6jcbIerhPU50unjL0to5gVwur6T36ODXfdx0s7H+Xn//IPeK5D25JlrL9zC5fdeDOJuvpqmzh1jA7k8z6dPpgXUGfeBB1a1pm3zHicVtyUX75r74L61urZPksJpwkIPEdnQuIolzrAF0+l9mBrTMaM9yidZFlrPRuWteSEU1s6mRNObekELfUJyZwtCEJNoj1tBIsvVvLiRUeKmaCvG3ruZMcKn7xAGtt/zFjHw3Mmv9PM0vauKyc7ZsYLq95TJ9m97WFe/rfHcUZHSaXTpFvb+eW/+p+z6xf5YPfY9AWnD0HfsXwfKwatF0PnpXDZ/Xnx1L4aEg3Vs32GE6QJ6Bkc5Ywfk1ScJiC8DFcqTUAiZtERLLWlE3TNb8zdCZcP6DYeptaGBKn4HF2uFgShIgSCJlp4aFzHxc1qnBKipJQnx80GbfljhEWMVzTWK3GTy2SxYxZ23MKOKb+0iPmlHbeIJSySDTHzOqgLPS8eZxWND5dB/Vf/z6Hdk7Vzxu4VeOLIQXb9+Eccfv7nAGhd2mU3YzY91hp6jxWJJ/8R3r4lXu/vd3dJYfqC1hWS/6kMtNb0DTu5ZJPhNAEFiSgnSBNgWyqUDqBQHLVFLMNJmgBBmBt4gYcmQtAUCo9xPDbjLE/lBU0Jj03goZkmQRMWMaXFiiIWtwuOUUrMRB9XVeX6Oev3CtSex9G9L/LiIz/kvQOvkqxv4Kr7PsaGzfeSbm2rtnnl42bNUt2YO/AOQ3Yw36+u1YimS+/Ni6eOLrOpsCV3XYWJShPQ7XuYLiRNwDUhwSRpAgShtiklaKKFh8bNuuMKE8fx8LJeCY9O0biwh2aCPSLLpaQwyXlobJINRYKmlFgpEkYFHp0IQROMq5agmcnMCGHlZDK89tMn2bX1Ic4eP0ZTRye3fPHXWHvL7bUdP+VmjWA69XqhiCre/65psVmy2/iFfPxTxxpomLuZ38NpAnr8jNxRaQKCJbhy0gQsak5x+eJ5tPp3vbWn84KpPZ2gpSFB3BbBKgiTZVxBE1EX6bEJlpiKY2RKeWx8UVRxQaMoXCoqEB4qJ2hSDdFel9IeHUUsZmPF1ITLT3bcwrJF0MxUalpYDfX1sn/ndvbt2MZQ7zk6V1zMPb/7R3RdewOWXWPxJ65j0hec2AcvfgeO7yndd+m1cOUD/h14XZBsnDYzq0nW9fgv21/nu8++VbJPS30cTzNumoCcBymdHJMmoL3Iw1SXqLHviSBUEM8rfylpbL2/nDSOx2Yij0/g0amUoCnlPQm8LfGkTaohPsmlpBKCpoQAEkEjXCg1KazOnTzBrm0P8epTP8HJjLJy41Vs2vJRllx2eW184V3HeJ6O7zVC6vheOPlKPo2BnRh//MqbYf1nptrKaSPrenQPjHKqb5T3+0Z4v3+UU30j5nX/CO/3mdc9g5nI8UGMUmvD2LvdAm9Sq6QJEGoIzy30tkwoZsrx2ES2RwQNO/lxeioFTUh4JFI2djxRGGMTs7DKWErKL0EVxtcUixzLEkEjzA5qSlgdP3SAXVt/yOEXnsO2bS698RY2bfkobUuWVc8oz82LqOOBiHo5L6ISaZOFfNOXzAbCi9abO/NmQQyU43r0DGZCgikvkk71+3V9o/QMjo4J7rYUdDQm6WxMsbg5xYZlzcxvTPHSsXM8ceBUQd+ewUxOdP3ebav52u1d0/UWhRmG5wbCo/Qt1uPd4TRG0BTH2JR1d5SeGkET4X0pFjSxSE/OeMtP+fpSS1AiaAShslRdWGnP48ju59n14x9x/OBrpBrSXHP/J1l/5xbSLdOcY8lzTQB54IU6vg9OvgTZIdMeb4CF62DTr8DC9UZItV0MMyyLu+tpegaNh+mUL5YCkRQWTd0DoxTPH0pBezpJZ2OS+U0p1i2ZR2djivlNqVzd/KYkbemk5FWaBWitc8tNXrEAKRHQWzqHjJe/tbtUzpkSxwieV+ImZqWKg4LH3nqdqAvfsq3GFTQTxsv4x7Bjtl+KoBGE2UzVhFU2M8prTz/J7m0/4uyJ4zR1zOeWB75iAtJT07DnnOdCzxEjngIhdeKl/F158XpYsA42ftF4oRauNykOalhEeZ7mzFCG9/1luGLRdNp/fXpgNDJ7d3s6QUejEUaXLWxiflOSzgLBlKI9nSAmAd5TyrhiJvL5+GLGmUCsTIeYAYzHpFQMje+RiSfjRfUWb7/czehQdG4wgJYFdVx7/6oJ73AKPDaWfH8FYUrRWoProj0PHMeUrot23cLS89COA54XavPAdUzpuWjHNaXrod3ivqExRX2DY2jXAddDey44rindomOEjx86lvaib4qaiGkXVkN9vezbsY19O7Yy3N/H/JWr2fL7f8zqq6+fuoB0zzPbuxQs570EmQHTHqsznqgNn88v57V31YyI0lpzdijrCyTjUTrVFxJN/aOc9uudCMHU2pCgs9GIpK75jTmvUiCijGBKzumNc89LzAR3JRXFw5QvZopibKZAzIRFy1gxYzwpY8RMqD3mx8dYsSgvTFgUhW4Dr6EcNIJQCSYUChH1ZU/6xULB8/J9I8YUTPpRQsErIUwi+wbHiLA/19cZe/wSn0HwHO/8toKZFiwLZdtg2/nSsiAWQ1kW7rlz6Ew+HvgDydSkM69Pa4LQruXL9G/fsAknmzEB6fd+jCWXrq3sBddzTY6o8HLeif2Q6TftsZTxRC3yl/IW+iKqChsLa63pHc6GvEpFoqnfeJ5O94+Sccd+UZvr48xvTNHZlPSX45JjRFNHY5JkrDYEYjFhMZO/S6lIiJQpZkr1GU/MOLnlKfOcaRQzdiwfyBsEAQcBwblg3/DS0QSenly95J8RyqBAKJQSCFFCoZxJv9gzER5TSmw4ERN5eNIfz4NRSiiMmfSdcY5fwpsy04RCSCAUCAfbBttCWTYqZhungW2h7FiJMaYvMbtgjLItsGOmtIqFiV0wJnf8oG9wjJg9VtxYpm/JMXbItvAxot5rwfuJFY21Jn1NrPkEocN9fThZowSP7nmR+StXsfSyy8/vYENnzFJe92HoOeyXR+DMUXB9tRlLwfy1cMWn80Kq/ZIpFVGup+kfyXJuKEvvsHmc7h/NxS2Fl+dO9Y+Sccb+g21KxUzMUlOSa1a00tmUF03BslxHY7JiW57kxE3Ww8m6udwzTqiu8HVhvet4OJl80LCTCercfEBx1LhshT0zOUEy1utixSziyRh2KIA3d0dTpPApJWTyy0pjPDgiZqqG1jp6iWCcpYiyJ/3cuMktRZQ1kZ/PskWRUBjrwZjYm1LrQiGYCEsKhfBEbhdNyuHxicTkJv2Jjj9GIIwz6edsCrXZUZN9odgYz5sypt6W3RxqkaoHr4+Lm4WzbxnR1H3IF1BHTDnUE+qoiHQ3OCPw3i6IJeGeb5Z9Wq01/aMOvSFx1DtcKJbMIzOmrX+kdCxIwJKWOjZd1OKLJ9+zlE7SUZ+gNZUgrigUKGExcsZh6P0+jmaL6sPCxfFwM0UCyQkfr1AoXei2B3bM7NEULk1Qr40dt0ikYrmMwMcOnGF0sPRn1Dy/jqvvXRkZBFxwV9MMzDsTTP4FnoKo0vMKfv3nJvJQWThG5yfoccaYsrhvqdKf0LWXn7zHK8O2B2KgqIzuW/xeosdqz7d9NgiFUpNmqYk8NNGOEQolvBFjPAzF3ogooVDGpF/sYRjjwYgQG+V5U0QoCLOHC1oKVEptBr4F2MC3tdbfGK9/5F6BWpsNhnNep5B4OvsWeKFJuKHTBJC3rfLL1aZsvmiMF0przVDGHSOI+oaznAsLosEM/YNZBoayDA5nGRh2GB5xsDTYGmyUX0LMf51UinTcpiFuU29b1Mds6myLlG2RUBY9fSOc6h3B1hDzx8f88TEUnfUJ5iVjBcLJzV7YxGBZQUbgscImFty5FCrtuD2mLhYakxNJOa+OwlYa29ZYFsSUh2VpLO2i0OaXuusUegRydV6urcD1H/7FXVZZxqRdRt8JJ+1xy+B8UaKgROkvu9T05F8KpQonvQlKLJUXB5Y98RjLCvWNLgd+9jPc7u6SJsYWLqT5ox+N9kZMtKwQJRQm9EqUWIIoJSBqWChordFoPO2h0Zj//f+0qQdyr8NtY15HlGWdAy9fN94x/bHBcYK2sH25c4TOG5y7+LzjngNvTF3Y3uLzljpWqc8J/PcR8Tnl7A3XlTr2OO8h/JlH2TvmHBP8HcPHijpH2fZGfC4T2TuZ70gwtuSxJvkdeebTz0x6KfC8hZVSygYOAbcDx4AXgc9orV8rNWbT+rV61z/8JXQfRncfwT19FKf7HdyRYVwdxyVBVjUwXL+MwdRS+hOL6Y/PpzfWwTlaGXYTZDIu2Ux4qwSzs7bnemhHg2se2vWMOAoJo5zQgVydReUuev41F9cxk7vSGqU9wJTBI5GEjkX12MrDUh628rDxsJRrSlxsXCztYGkHW5vntuf4dVksN4vlZbHdLMpzsLysL1bCSwZO4RKBmxcz2nVydQVLI+H4itByQsXW7CqNUuBPhmZytHIegnxbfqLGCj1Cr7WlIuoVulSdUmjbvDbjw/39tlwfC61Ah9tzpSqqV2gVKu2iOluBsvAU+TZA21aunxecy/ZfW4xts8BTptSWhac0nt8Xyz++BVox6Ys8FE5+xRfEyMl6nAtk7oI7icm61DEZZ9KcrLhgnEl+zEX9PN57lL0X8t6jJkthZqNQWMpCoTD/+/8pUx/0USrXAorcmKCt5LH8cZHHKi7Dx1IKCyvXFtSNZ+94xwyX4XGTfe9KRdub+zyU4pljz9A9nP8hd+TPjzD85vCkhMKFLAVeDRzRWh/1P7R/BD4ClBRWp98b4W/+2kary9Fq4yRPN4hikCSQDKp8oRGUysv6pYPliw1Lm+cx3Hydmy9tLxApTtFYJzdWFbzO5tqVdkLP3QpKtEJcW+FZCtcypWfnJ0bPbwsmT88i1NfUuX6dZ4GnwI2BlzCvTZs5lmubydWMjeNacVylzfGUNn2VGWMeGleZ8U6uXefaHIU/3rQ7lsZTfr2lzRi/3VP+wypRKn+SL6on5w3w/McsRQOu/6hRchc1rLIvmkG/8IUtfCyF4tzoObJe9BZHAEk7yYKGBQUX8OCiHrwOX4iL66IutsGxLGVhW/YYe3PHGu99VuC9l7Q3asKhcIKIOkfBsSZpb9QkVPx3j/rML8TeqM886nMq9XeMPEfRdyTy71rmewjGjitULvDvmjtHyN5a9oLONtQDavdkx1yIsFoMvBt6fQy4ZrwBtjNES/cvUNoBnUXpLPjPwUHpLNp/HtRBFo15rnHQZP3SQSttPAGhiVYrMwdlA9EQnoxj0RO3EQcq91r7rwMvg+c/gl/3QbvxMMTwrJhfb/oNekNkcXPHzIsX89yOx2muazPeB9s2x/Y9HJ5tGU+D/1rZ9ph/ZMEFvfgfWvgCV6o9rPAnbPefh9V/cKEwzxX2OO1Rx3z06KOcHDoZ+lYUXiAWNSziY6s/NuYCUurCNdlfJ8GFNWwnREy+URNmiYtfsX25sefxay/qbzNp+yYxGRbYJxd5QRCEC+ZChFXU1XSMf1kp9RXgKwDLli3j4//yZ35HXVgWuboLD1roZi8el+sX6hOeLCYSIOHJXyaJfIIdlwAABhVJREFUqeXrV3692iYIgiAIwpRxIcLqGLA09HoJcLy4k9b6QeBBMMHrcTt+AacUBEEQBEGoXawLGPsisFoptUIplQA+DTxSGbMEQRAEQRBmHuftsdJaO0qprwI7MDfYfVdr/WrFLBMEQRAEQZhhXFCCUK31dmB7hWwRBEEQBEGY0VzIUqAgCIIgCIIQQoSVIAiCIAhChRBhJQiCIAiCUCFEWAmCIAiCIFQIEVaCIAiCIAgVQoSVIAiCIAhChRBhJQiCIAiCUCFU8b58U3oypfqBg9NwqnagexrOUy61Zk8tIZ+NMFnkOyMIwnRxida6cTIDLihB6HlwUGu9aapPopTaNR3nKZdas6eWkM9GmCzynREEYbpQSu2a7BhZChQEQRAEQagQIqwEQRAEQRAqxHQLqwdn2XnKpdbsqSXksxEmi3xnBEGYLiZ9vZnW4HVBEARBEITZjCwFCoIgCIIgVIhpEVZKqe8qpU4ppV6ZpvPZSqm9Sqmt03G+cez4mlLqVaXUK0qp7yulUtW0p5qU+g4opX5HKXXQ/5z+qlr2CbWJUiqllHpBKbXf/478hV//Pf9784r/3YpX21ZBEGY2SqlmpdQPlFIHlFKvK6WuC7X9oVJKK6XaJzrOdHms/hbYPE3nAvg94PVpPN8YlFKLgd8FNmmt1wI28Olq2lRl/pai74BS6hbgI8A6rfUHgG9WwS6hthkFbtVaXwGsBzYrpa4FvgesAS4H6oBfrZ6JgiDMEr4FPKa1XgNcga8jlFJLgduBd8o5yLQIK631M8CZ6TiXUmoJcA/w7ek43wTEgDqlVAyoB45X2Z6qUeI78JvAN7TWo36fU9NumFDTaMOA/zLuP7TWervfpoEXgCVVM1IQhBmPUqoJ+BDwHQCtdUZrfc5v/h/AvwPKCkqfjTFWf435ALxqGqG1fg/jgXkHOAH0aq0fr6ZNNUgXcKNS6nml1NNKqauqbZBQe/hL+/uAU8BOrfXzobY48AXgsWrZJwjCrGAlcBr4v34o0beVUg1KqfuA97TW+8s90KwSVkqpLcAprfXuGrClBbPMtQJYBDQopT5fXatqjhjQAlwL/BHwz0opVV2ThFpDa+1qrddjvFJXK6XWhpr/N/CM1vqn1bFOEIRZQgzYCPyN1noDMAj8OfAfgT+dzIFmlbACPgjcp5R6C/hH4Fal1N9XyZYPA29qrU9rrbPAD4Hrq2RLrXIM+KG/ovMCxss4YWCgMDfx3fJP4cfqKaX+DOgAvl5FswRBmB0cA46FPOI/wAitFcB+X1csAfYopRaMd6BZJay01v9ea71Ea70cEyj+pNa6Wl6id4BrlVL1vhfmNqocUF+DPATcCqCU6gISyOa6QgilVIdSqtl/Xof5wXJAKfWrwJ3AZ7TWVV32FwRh5qO1Pgm8q5S6xK+6Ddijte7UWi/3dcUxYKPftyTTsgmzUur7wM1Au1LqGPBnWuvvTMe5q4XW+nml1A+APYAD7GUOZ4yO+g4A3wW+66dgyABf1JKxVihkIfB3Sikb80Pwn7XWW5VSDvA28Jy/evxDrfV/rqKdgiDMfH4H+J5SKgEcBX7lfA4imdcFQRAEQRAqxKxaChQEQRAEQagmIqwEQRAEQRAqhAgrQRAEQRCECiHCShAEQRAEoUKIsBIEQRAEQagQIqwEQZhRKKWW+yk6BEEQag4RVoIgCIIgCBVChJUgCDORmFLq75RSLymlfuDvcPANpdRrft03q22gIAhzE0kQKgjCjEIptRx4E7hBa/2sUuq7wAHgy8AarbVWSjX7ewsKgiBMK+KxEgRhJvKu1vpZ//nfAx8CRoBvK6U+BgxVzTJBEOY0IqwEQZiJFLvas8DVwL8C9wOPTbtFgiAITNMmzIIgCBVmmVLqOq31c8BngH3APK31dqXUL4Aj1TVPEIS5inisBEGYibwOfFEp9RLQCnwb2Oq/fhr4WjWNEwRh7iLB64IgCIIgCBVCPFaCIAiCIAgVQoSVIAiCIAhChRBhJQiCIAiCUCFEWAmCIAiCIFQIEVaCIAiCIAgVQoSVIAiCIAhChRBhJQiCIAiCUCFEWAmCIAiCIFSI/w/rVG1UYGpEbAAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 720x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"res = results[results.group=='bs'].pivot(index='bs', columns='impl', values=['mean','sd'])\n",
"res.plot.line(y='mean', yerr='sd', figsize=(10,5), capsize=4, xticks=res.index, title=\"Batch time (ms) by batch size\");"
]
},
{
"cell_type": "code",
"execution_count": 697,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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uwKYiIiInLDzzjsvKv0sX76cqVOnRqWvlkwBTERERE7YO++803AjCVIAExERkROWnp4OBEawxo8fzzXXXMOZZ57J/Pnzefrppxk1ahTDhg1j8+bNAMyaNYu5c+cyduxYzjzzTF588cV4lh9zehekiIiIRNXatWvZsGEDXbt2pX///txyyy28//77PPDAA/zud7/j/vvvB2Dr1q2sWLGCzZs3c8EFF7Bp06Y4Vx47GgETERGRqBo5ciQ9e/YkJSWFAQMGMGnSJACGDRvG1q1bg+2uueYafD4fAwcOpH///mzcuDFOFceeApiIiIhEVUpKSnDb5/MFH/t8PioqKoLHar6rsD29u1MBTEREROLiL3/5C36/n82bN7NlyxYGDRoU75JiRmvAREREJC4GDRrE+PHj2bNnD7///e9JTU2Nd0kxY865eNdQS25ursvLy4t3GSIiIi3Ohg0byMrKincZJ2zWrFlMnTqVq666Kt6lNEq419/M8p1zuY3pR1OQIiIiIjGmKUgRERGJuYULF8a7hLjSCJiIiIhIjCmAiYiIiMSYApiIiIhIjCmAiYiIiMSYApiIiIg02u7du7n22msZMGAAgwcPZsqUKXz22Wd06NCB7OxsBg8ezNy5c/H7/SxfvpypU6dWO3/WrFk8++yzcao+/vQuSBEREWkU5xzTp09n5syZLFmyBIA1a9awZ88eBgwYwJo1a6ioqGDixIksW7aMrl27xrnilkcjYCIiItIob7zxBklJScydOze4Lzs7m8zMzODjxMREzjvvPDZt2hSPEls8jYCJiIi0Une/sJ5Pdh6Oap+De3XiJ5cNqbfNunXryMnJqbdNUVERr732GgsWLIhmeW2GRsBEREQkajZv3kx2djZjxozh0ksvZfLkyZhZ2LZ17W8PNAImIiLSSjU0UtVchgwZUucC+qo1YKG6devGgQMHqu0rLCyke/fuzVZjS6cRMBEREWmUiRMnUlpayqOPPhrct3r1arZt2xa2/cCBA9m5cycbNmwAYNu2baxdu5bs7OyY1NsSaQRMREREGsXMWLp0KXfccQf33nsvqamp9OvXj/vvvz9s+5SUFBYtWsTs2bMpKSkhKSmJxx57jM6dO8e48pZDAUxEREQarVevXjzzzDO19q9bty5s+zFjxvDuu+82d1mthqYgRURERGJMAUxEREQkxhTARERERGJMAUxEREQkxhTARERERGIsogBmZk+Y2RdmFvatDRbw/8xsk5l9ZGbnhBybaWb/633NjFbhIiIiIq1VpCNgC4FL6jk+GRjofc0BHgYws67AT4DRwCjgJ2bWpanFioiISMuwe/durr32WgYMGMDgwYOZMmUKn332GR06dCA7O5vBgwczd+5c/H4/y5cvZ+rUqdXOnzVrVp1307/kkks4+eSTa51TXl7O/PnzGThwIEOHDmXUqFG8/PLLzfYcm1NE9wFzzr1pZv3qaTIN+B/nnAPeNbOTzawnMAF41TlXCGBmrxIIcotPpGgRERGJH+cc06dPZ+bMmSxZsgSANWvWsGfPnuBHEVVUVDBx4kSWLVtG165dG9X/d7/7XYqKivjDH/5Qbf9dd93Frl27WLduHSkpKezZs4cVK1ZE3G9lZSUJCQmNqqW5RGsN2GnAjpDHBd6+uvaLiIhIK/XGG2+QlJTE3Llzg/uys7PJzMwMPk5MTOS8885j06ZNje7/wgsv5KSTTqq2r6ioiEcffZTf/e53pKSkANCjRw+uueYaABYvXsywYcMYOnQod955Z/C89PR0fvzjHzN69GhWrVpFfn4+48ePJycnh4svvphdu3Y1ur5oiNad8MN9nLmrZ3/tDszmEJi+pE+fPlEqS0REpA17eT7s/ji6fZ46DCbfW2+TdevWkZOTU2+boqIiXnvtNRYsWBCVsjZt2kSfPn3o1KlTrWM7d+7kzjvvJD8/ny5dujBp0iSWLVvGFVdcwbFjxxg6dCgLFiygvLyc8ePH87e//Y2MjAz+/Oc/88Mf/pAnnngiKjU2RrQCWAGQGfK4N7DT2z+hxv7l4Tpwzj0CPAKQm5sbNqSJiIhIy7Z582ays7MxM6ZNm8bkyZPrnCY0CzdO03irV69mwoQJZGRkAHDDDTfw5ptvcsUVV5CQkMCVV14JwKeffsq6deu46KKLgMCUZM+ePaNSQ2NFK4A9D8wzsyUEFtwfcs7tMrNXgP8KWXg/Cfh+lK4pIiLSvjUwUtVchgwZUucC+qo1YKG6devGgQMHqu0rLCyke/fuvPfee3zjG98AYMGCBVx++eVh+z3jjDPYvn07R44cqTU9GViCHl5qampw3ZdzjiFDhrBq1ar6n2AMRHobisXAKmCQmRWY2c1mNtfMqiZ//w5sATYBjwLfAvAW3/8MWO19LahakC8iIiKt08SJEyktLeXRRx8N7lu9ejXbtm0L237gwIHs3LmTDRs2ALBt2zbWrl1LdnY2o0ePZs2aNaxZs6bO8AXQsWNHbr75Zm6//XbKysoA2LVrF4sWLWL06NGsWLGCffv2UVlZyeLFixk/fnytPgYNGsTevXuDAay8vJz169c3+XU4EZG+C/K6Bo474NY6jj0BxH5yVURERJqFmbF06VLuuOMO7r33XlJTU+nXrx/3339/2PYpKSksWrSI2bNnU1JSQlJSEo899hidO3cO237s2LFs3LiRo0eP0rt3bx5//HEuvvhifv7zn/OjH/2IwYMHk5qdkBoLAAAgAElEQVSaSlpaGgsWLKBnz57cc889XHDBBTjnmDJlCtOmTavVb3JyMs8++yy33347hw4doqKigjvuuIMhQ4ZE9fWJhNU3bBcvubm5Li8vL95liIiItDgbNmwgKysr3mW0W+FefzPLd87lNqYffRSRiIiISIwpgImIiIjEmAKYiIiISIwpgImIiIjEmAKYiIiISIwpgImIiIjEmAKYiIiINNqePXu4/vrr6d+/Pzk5OZx77rksXbqU5cuX07lzZ0aMGEFWVhZ33303AAsXLmTevHnV+pgwYQLt9bZTCmAiIiLSKM45rrjiCsaNG8eWLVvIz89nyZIlFBQUAIEbqX744Yfk5eWxaNEi8vPz41xxy6MAJiIiIo3y+uuvk5yczNy5c4P7+vbty2233VatXVpaGjk5OWzevDnWJbZ40fowbhEREYmx+96/j42FG6Pa51ldz+LOUXfW22b9+vWcc845Dfa1f/9+3n33Xe666y5Wr14drRLbBI2AiYiIyAm59dZbGT58OCNHjgRg5cqVjBgxgkmTJjF//nyGDBmCmYU9t679bZ1GwERERFqphkaqmsuQIUN47rnngo8ffPBB9u3bR25u4OMQx44dy4svvljtnG7dunHgwIFq+woLC+nevXvzF9wCaQRMREREGmXixImUlJTw8MMPB/cVFRXVe87IkSN5++232b17NwB5eXmUlpaSmZnZrLW2VBoBExERkUYxM5YtW8a3v/1tfvnLX5KRkUFaWhr33Xdfnef06NGDBx54gClTpuD3+0lPT2fx4sX4fO1zLMicc/GuoZbc3FzXXu8LIiIiUp8NGzaQlZUV7zLarXCvv5nlO+dyG9NP+4ydIiIiInGkACYiIiISYwpgIiIiIjGmACYiIiISYwpgIiIiIjGmACYiIiISYwpgIiIi0mh79uzh+uuvp3///uTk5HDuueeydOlSli9fTufOnRkxYgRZWVncfffdACxcuJB58+ZV62PChAm0lNtO/fCHPyQzM5P09PSYXE8BTERERBrFOccVV1zBuHHj2LJlC/n5+SxZsoSCggIg8FFEH374IXl5eSxatIj8/PyI+966dSsTJkxopsrrdtlll/H+++/H7HoKYCIiItIor7/+OsnJycydOze4r2/fvtx2223V2qWlpZGTk8PmzZtP+Jp79uxh+vTpDB8+nOHDh/POO+8A8Jvf/IahQ4cydOhQ7r//fiAQ4s466yxmzpzJ2WefzVVXXUVRURGvvfYa06dPD/b56quvMmPGDAC+9KUv0bNnzxOuM1L6KCIREZFWavd//RelGzZGtc+UrLM49Qc/qLfN+vXrOeeccxrsa//+/bz77rvcddddrF69+oTquv322xk/fjxLly6lsrKSo0ePkp+fz5NPPsl7772Hc47Ro0czfvx4unTpwqeffsrjjz/OmDFj+NrXvsZDDz3Ed77zHW699Vb27t1LRkYGTz75JLNnzz6huppKI2AiIiJyQm699VaGDx/OyJEjAVi5ciUjRoxg0qRJzJ8/nyFDhmBmYc+t2j99+nSys7OZMmUKeXl5ZGdnk52dzZNPPgkERt2++c1vApCQkEDnzp156623mD59OmlpaaSnpzNjxgxWrlwJQGZmJmPGjAHgxhtv5K233sLMuOmmm1i0aBEHDx5k1apVTJ48uVlfm7poBExERKSVamikqrkMGTKE5557Lvj4wQcfZN++feTmBj4OcezYsbz44ovVzunWrRsHDhyotq+wsJDu3bsDsHTpUiAwfThr1iyWL1/eYB31fZ51zcBX9Xj27NlcdtllpKamcvXVV5OYGJ8opBEwERERaZSJEydSUlLCww8/HNxXVFRU7zkjR47k7bffZvfu3QDk5eVRWlpKZmZmRNe88MILg9errKzk8OHDjBs3jmXLllFUVMSxY8dYunQpY8eOBWD79u2sWrUKgMWLF3P++ecD0KtXL3r16sXPf/5zZs2a1ajnHU0KYCIiItIoZsayZctYsWIFp59+OqNGjWLmzJncd999dZ7To0cPHnjgAaZMmUJ2djZ33HEHixcvxueLLIo88MADvPHGGwwbNoycnJzgOrRZs2YxatQoRo8ezS233MKIESMAyMrK4qmnnuLss8+msLAwOH0JcMMNN5CZmcngwYOD+773ve/Ru3dvioqK6N27Nz/96U+b9uJEyOobvouX3Nxc11LuCyIiItKSbNiwgaysrHiX0aJt3bqVqVOnsm7durDH582bx4gRI7j55psb3Xe419/M8p1zuY3pR2vAREREpN3IyckhLS2NX//613GtQwFMRERE2pR+/frVOfrVmJvCNqeIJl7N7BIz+9TMNpnZ/DDHf2tma7yvz8zsYMixypBjz0ezeBEREZHWqMERMDNLAB4ELgIKgNVm9rxz7pOqNs65b4e0vw0YEdJFsXMuO3oli4iIiLRukYyAjQI2Oee2OOfKgCXAtHraXwcsjkZxIiIiIm1RJAHsNGBHyOMCb18tZtYXOB14PWR3qpnlmdm7ZnZFkysVERERaSMiCWDhPjugrntXXAs865yrDNnXx3tr5vXA/WY2IOxFzOZ4QS1v7969EZQlIiIi8bJnzx6uv/56+vfvT05ODueeey5Lly5l+fLldO7cmREjRpCVlcXdd98NwMKFC5k3b161PiZMmEBLuO1UUVERl156KWeddRZDhgxh/vxay92jLpIAVgCE3qa2N7CzjrbXUmP60Tm30/u+BVhO9fVhoe0ecc7lOudyMzIyIihLRERE4sE5xxVXXMG4cePYsmUL+fn5LFmyhIKCAiDwUUQffvgheXl5LFq0qFHvPNy6dSsTJkxopsrr9p//+Z9s3LiRDz/8kLfffpuXX365Wa8XSQBbDQw0s9PNLJlAyKr1bkYzGwR0AVaF7OtiZinedndgDPBJzXNFRESk9Xj99ddJTk5m7ty5wX19+/bltttuq9YuLS2NnJwcNm/efMLX3LNnD9OnT2f48OEMHz6cd955B4Df/OY3DB06lKFDh3L//fcDgRB31llnMXPmTM4++2yuuuoqioqKeO2115g+fXqwz1dffZUZM2bQsWNHLrjgAgCSk5M555xzgmGyuTT4LkjnXIWZzQNeARKAJ5xz681sAZDnnKsKY9cBS1z1W+tnAX8wMz+BsHdv6LsnRUREpOlWPvMZ+3YcjWqf3TPTGXvNmfW2qfoYoIbs37+fd999l7vuuovVq1efUF23334748ePZ+nSpVRWVnL06FHy8/N58sknee+993DOMXr0aMaPH0+XLl349NNPefzxxxkzZgxf+9rXeOihh/jOd77Drbfeyt69e8nIyODJJ59k9uzZ1a5z8OBBXnjhBf7jP/7jhOptSET3AXPO/d05d6ZzboBz7hfevh+HhC+ccz91zs2vcd47zrlhzrnh3vfHo1u+iIiIxNutt97K8OHDGTlyJAArV65kxIgRTJo0ifnz5zNkyBDMwi0pJ7h/+vTpZGdnM2XKFPLy8sjOziY7O5snn3wSCIy6VX2eY0JCAp07d+att95i+vTppKWlkZ6ezowZM1i5ciUAmZmZjBkzBoAbb7yRt956CzPjpptuYtGiRRw8eJBVq1YxefLkYC0VFRVcd9113H777fTv3795XiyP7oQvIiLSSjU0UtVchgwZwnPPPRd8/OCDD7Jv3z5ycwMfhzh27FhefPHFaud069aNAwcOVNtXWFhI9+7dAVi6dCkQmD6cNWsWy5cvb7CO+j7Pumbgq3o8e/ZsLrvsMlJTU7n66qtJTDwehebMmcPAgQO54447Grz2iYrsI8hFREREPBMnTqSkpISHH344uK+oqKjec0aOHMnbb7/N7t27AcjLy6O0tJTMzMx6z6ty4YUXBq9XWVnJ4cOHGTduHMuWLaOoqIhjx46xdOlSxo4dC8D27dtZtSqwLH3x4sWcf/75APTq1YtevXrx85//nFmzZgX7/9GPfsShQ4eC68iamwKYiIiINIqZsWzZMlasWMHpp5/OqFGjmDlzJvfdd1+d5/To0YMHHniAKVOmkJ2dzR133MHixYvx+SKLIg888ABvvPEGw4YNIycnJ7gObdasWYwaNYrRo0dzyy23MGJE4GYLWVlZPPXUU5x99tkUFhYGpy8BbrjhBjIzMxk8eDAABQUF/OIXv+CTTz7hnHPOITs7m8cee+wEXqGGWX3Dd/GSm5vrWsJ9QURERFqaDRs2kJWVFe8yWrStW7cyderUOj+Qe968eYwYMYKbb7650X2He/3NLN+752nEtAZMRERE2o2cnBzS0tL49a9/Hdc6FMBERESkTenXr1+do1+NuSlsc9IaMBEREZEYUwATERERiTEFMBEREZEYUwATERERiTEFMBEREWmU9PR0AHbu3MlVV10FwMKFC5k3b148y2pVFMBERESkSXr16sWzzz4bcXvnHH6/vxkraj0UwERERKRJtm7dytChQ4OPd+zYwSWXXMKgQYO4++67g22ysrL41re+xTnnnMOOHTtYvHgxw4YNY+jQodx5551A4OOFZs2axdChQxk2bBi//e1vAXj00UcZOXIkw4cP58orr2zwI49aC90HTEREpJV6Y+EjfLFtS1T7PKVvfy6YNadJ577//vusW7eOjh07MnLkSC699FK6d+/Op59+ypNPPslDDz3Ezp07ufPOO8nPz6dLly5MmjSJZcuWkZmZyeeffx68f9fBgwcBmDFjBl//+teBwOc1Pv7449x2223RebJxpBEwERERiYqLLrqIbt260aFDB2bMmMFbb70FQN++ffnSl74EwOrVq5kwYQIZGRkkJiZyww038Oabb9K/f3+2bNnCbbfdxj/+8Q86deoEwLp16xg7dizDhg3j6aefZv369XF7ftGkETAREZFWqqkjVc3FzMI+TktLC+6r6zOou3Tpwtq1a3nllVd48MEHeeaZZ3jiiSeYNWsWy5YtY/jw4SxcuJDly5c3W/2xpBEwERERiYpXX32VwsJCiouLWbZsGWPGjKnVZvTo0axYsYJ9+/ZRWVnJ4sWLGT9+PPv27cPv93PllVfys5/9jA8++ACAI0eO0LNnT8rLy3n66adj/ZSajUbAREREJCrOP/98brrpJjZt2sT1119Pbm4uW7durdamZ8+e3HPPPVxwwQU455gyZQrTpk1j7dq1zJ49O/guyXvuuQeAn/3sZ4wePZq+ffsybNgwjhw5Euun1SysrqHAeMrNzXV5eXnxLkNERKTF2bBhA1lZWfEuo90K9/qbWb5zLrcx/WgKUkRERCTGFMBEREREYkwBTERERCTGFMBERERamZa4frs9iObrrgAmIiLSiqSmprJ//36FsBhzzrF//35SU1Oj0p9uQyEiItKK9O7dm4KCAvbu3RvvUtqd1NRUevfuHZW+FMBERERakaSkJE4//fR4lyEnSFOQIiIiIjGmACYiIiISYwpgIiIiIjGmACYiIiISY1qE3xIc/QLWLwN/BSSlQlJHSOoAiR0C36u+EquOed8TksEs3tWLiIhIIymAxdMXG2DVf8NHz0BlWePPN1/DIa1akPP2NaVNQlL0n7+IiEg7pQAWa87BluWB4LXpX4Hgc85XYfRcSMuA8mKoKA58Ly+B8qIa+4rDP665r6wIivaHb9MUvsQIg1yNfU1p40uI6ksuIiLS0kQUwMzsEuABIAF4zDl3b43js4Bf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\n",
"text/plain": [
"<Figure size 720x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"res=results[results.group=='bs'][['impl','bs','mean']]\n",
"res['mean'] = res['mean']/res['bs']\n",
"res = res.pivot(index='bs', columns='impl', values='mean')\n",
"res.plot(figsize=(10,6), xticks=res.index, title=\"Item time (ms) by batch size\");"
]
},
{
"cell_type": "code",
"execution_count": 698,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 720x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"res=results[(results.group=='bs') & (~results.impl.isin(('librosa','CPU-1Core')))][['impl','bs','mean']]\n",
"res['mean'] = res['mean']/res['bs']\n",
"res = res.pivot(index='bs', columns='impl', values='mean')\n",
"res.plot(figsize=(10,6), xticks=res.index, title=\"Item time (ms) by batch size (PyTorch)\");"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## GPU Larger Batches"
]
},
{
"cell_type": "code",
"execution_count": 699,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Doing bs=64\n",
"Doing bs=128\n",
"Doing bs=256\n",
"Doing bs=512\n",
"Doing bs=1024\n",
"Done\n"
]
}
],
"source": [
"for bs in [64,128,256,512,1024]:\n",
" print(f'Doing bs={bs}')\n",
" params = def_params.copy()\n",
" params['bs'] = bs\n",
" add_result(results, 'bs-gpu', 'GPU', params, profile(torch_stft, **params, device=gpu))\n",
" add_result(results, 'bs-gpu', 'GPU+copy1', params, profile(torch_stft, **params, device=gpu, copyto=True))\n",
" add_result(results, 'bs-gpu', 'GPU+copy2', params, profile(torch_stft, **params, device=gpu, copyto=True, copyfrom=True))\n",
"print('Done')"
]
},
{
"cell_type": "code",
"execution_count": 691,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 720x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"res=results[results.group=='bs-gpu'][['impl','bs','mean']]\n",
"res['mean'] = res['mean']/res['bs']\n",
"res = res.pivot(index='bs', columns='impl', values='mean')\n",
"res.plot(figsize=(10,6), xticks=res.index, title=\"Item time (ms) by batch size (GPU)\");"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Sample length"
]
},
{
"cell_type": "code",
"execution_count": 700,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Doing sl=50K\n",
"Doing sl=100K\n",
"Doing sl=200K\n",
"Doing sl=500K\n",
"Doing sl=1000K\n",
"Done\n"
]
}
],
"source": [
"for sl in [50, 100, 200, 500, 1000]:\n",
" print(f'Doing sl={sl}K')\n",
" params = def_params.copy()\n",
" params['sample_len'] = sl*1024\n",
" repeats = 100 if sl <= 100 else 50\n",
" add_result(results, 'sl', 'GPU', params, profile(torch_stft, **params, device=gpu))\n",
" add_result(results, 'sl', 'GPU+copy1', params, profile(torch_stft, **params, device=gpu, copyto=True))\n",
" add_result(results, 'sl', 'GPU+copy2', params, profile(torch_stft, **params, device=gpu, copyto=True, copyfrom=True))\n",
" add_result(results, 'sl', 'CPU', params, profile(torch_stft, **params, device='cpu'))\n",
" add_result(results, 'sl', 'librosa', params, profile(librosa_stft, **params, device='cpu'))\n",
"print('Done')"
]
},
{
"cell_type": "code",
"execution_count": 674,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Doing sl=50K\n",
"Doing sl=100K\n",
"Doing sl=200K\n",
"Doing sl=500K\n",
"Doing sl=1000K\n",
"Done\n"
]
}
],
"source": [
"nt=torch.get_num_threads()\n",
"torch.set_num_threads(1)\n",
"for sl in [50, 100, 200, 500, 1000]:\n",
" print(f'Doing sl={sl}K')\n",
" params = def_params.copy()\n",
" params['sample_len'] = sl*1024\n",
" repeats = 100 if sl <= 100 else 50\n",
" add_result(results, 'sl', 'CPU-1Core', params, profile(torch_stft, **params, device='cpu'))\n",
"torch.set_num_threads(nt)\n",
"print('Done')"
]
},
{
"cell_type": "code",
"execution_count": 675,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 720x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"res=results[results.group=='sl'][['impl','sample_len','mean']]\n",
"res = res.pivot(index='sample_len', columns='impl', values='mean')\n",
"res.plot(figsize=(10,6), xticks=res.index, title=\"Time (ms) by sample length\");"
]
},
{
"cell_type": "code",
"execution_count": 676,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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igiFwxR27ZqoG87LI7+wiMKuxS3a99ZW0KUrw2bNznU3Ol5IizMzSoaPomT4qMT0HX97/g+4qMty1CGc5he7V5ZXUFBv1CQeQFIDQl3wSDcCEkoOIg21k7ZtXwDxtx2uCyDp9qvREhERORqbNm2itLQUM2P27NnMnDmTF198MW1d/c5pvg4b0vzi03fMuvmL+mYREZF2p6ERr9YyYsQIHn/88bTrTjrpJN58882kst69e7N3796ksj179tCnT59W62NH16mu9SigiYiIZGf69OlUV1fz4IMPJspWrVrFu+++m7b+0KFD2bZtG+vXrwfg3XffZc2aNZSWlrZJfzuiTjGSJiIiIk1jZixdupRbb72Vb3/72xQVFTF48GDuu+++tPULCwtZtGgR1157LVVVVeTn5/PQQw/Rs2fPNu55x6GQJiIiImkNGDCAxx57rF752rVr09afPHkyr776amt3q9PoVJc7RURERNoLhTQRERGRAFJIExEREQkghTQRERGRAFJIExEREQkghTQRERGRAFJIExERkbS2b9/O5ZdfzkknncTw4cOZNWsW77zzDl26dKG0tJThw4czf/58otEoy5cv5/zzz0/aft68eRk/teC8887jmGOOqbdNTU0NCxYsYOjQoYwcOZKJEyfyzDPPtNoxBpnmSRMREZF6nHPMmTOHa665hiVLlgDw5ptvsmPHjsTHQtXW1jJ9+nSWLVvGscce26T2v/SlL1FZWclPfvKTpPI77riDDz74gLVr11JYWMiOHTsyfi5oOpFIhHA43KS+BJVG0kRERKSeF154gfz8fObPn58oKy0tpaSkJLGcl5fHxz/+cTZu3Njk9s855xy6d++eVFZZWcmDDz7ID3/4QwoLCwHo168fl112GQCLFy9m1KhRjBw5kttvvz2xXbdu3fja177GpEmTeOWVV1i9ejVTp05l/PjxfPKTn+SDDz5ocv+CIKuRNDM7D1gIhIGHnHPfTll/AvBz4JhYnQXOuadbuK8iIiKd0zMLYPvfWrbNj42Cmd/OuHrt2rWMHz++wSYqKyt5/vnnufvuu1ukSxs3buSEE06gR48e9dZt27aN22+/ndWrV9OrVy9mzJjBsmXLuOiiizh06BAjR47k7rvvpqamhqlTp/Lb3/6Wvn378utf/5qvfOUr/OxnP2uRPralRkOamYWB+4FzgQpglZk96Zx7y1ftq8Bjzrkfm9lw4GlgcCv0V0RERHJs06ZNlJaWYmbMnj2bmTNnZrwkaWYtss9Vq1Yxbdo0+vbtC8CVV17Jn//8Zy666CLC4TAXX3wxABs2bGDt2rWce+65gHf5s3///i3Sh7aWzUjaRGCjc24zgJktAWYD/pDmgHjs7Qlsa8lOioiIdGoNjHi1lhEjRmS86T9+T5pf79692bt3b1LZnj176NOnD6+99hqf//znAbj77ru58MIL07Z78skn895773HgwIF6l0Kdcxn7WlRUlLgPzTnHiBEjeOWVVxo+wHYgm3vSjge2+pYrYmV+dwJXmVkF3ijazekaMrMbzKzczMp37tzZjO6KiIhIW5g+fTrV1dU8+OCDibJVq1bx7rvvpq0/dOhQtm3bxvr16wF49913WbNmDaWlpUyaNIk333yTN998M2NAA+jatSvXXXcdt9xyC0eOHAHggw8+YNGiRUyaNIkXX3yRXbt2EYlEWLx4MVOnTq3XxqmnnsrOnTsTIa2mpoZ169Y1+zzkUjYhLd04ZWqc/QzwqHNuIDAL+IWZ1WvbOfdT51yZc64sPlwpIiIiwWNmLF26lOeee46TTjqJESNGcOeddzJgwIC09QsLC1m0aBHXXnstpaWlXHLJJTz00EP07Nkzbf0pU6Zw6aWX8vzzzzNw4ECeffZZAL7xjW/Qt29fhg8fzsiRI7nooovo27cv/fv355577uHss89mzJgxjBs3jtmzZ9drt6CggMcff5zbb7+dMWPGUFpayssvv9xyJ6YNWUPDhwBmdgZwp3Puk7HlfwNwzt3jq7MOOM85tzW2vBk43Tn3YaZ2y8rKXHl5+dEfgYiISAe0fv16hg0blutudErpzr2ZrXbOlbVlP7IZSVsFDDWzE82sALgceDKlznvAOQBmNgwoAnQ9U0RERKSZGg1pzrla4CbgWWA93rs415nZ3WYWv7B8G/A5M1sDLAbmucaG6EREREQko6zmSYvNefZ0StnXfM/fAia3bNdEREREOi994oCIiIhIACmkiYiIiASQQpqIiIhIACmkiYiISFo7duzgiiuuYMiQIYwfP54zzjiDpUuXsnz5cnr27MnYsWMZNmwYd911FwCPPvooN910U1Ib06ZNQ1NuNY9CmoiIiNTjnOOiiy7irLPOYvPmzaxevZolS5ZQUVEBeJPRvvHGG5SXl7No0SJWr16d4x53PAppIiIiUs+f/vQnCgoKmD9/fqJs0KBB3Hxz8ic/FhcXM378eDZt2tTWXezwspqCQ0RERHLn3tfv5e09b7dom6cdexq3T7w94/p169Yxbty4RtvZvXs3r776KnfccQerVq1qyS52ehpJExERkUbdeOONjBkzhgkTJgCwYsUKxo4dy4wZM1iwYAEjRozALN3HfZOxXBqmkTQREZGAa2jEq7WMGDGCJ554IrF8//33s2vXLsrKvI+vnDJlCk899VTSNr1792bv3r1JZXv27KFPnz6t3+EOSCNpIiIiUs/06dOpqqrixz/+caKssrKywW0mTJjASy+9xPbt2wEoLy+nurqakpKSVu1rR6WRNBEREanHzFi2bBn/8i//wne+8x369u1LcXEx9957b8Zt+vXrx8KFC5k1axbRaJRu3bqxePFiQiGNCTWH5epz0MvKypzmTREREUlv/fr1DBs2LNfd6JTSnXszW+2cK2vLfijaioiIiASQQpqIiIhIACmkiYiIiASQQpqIiIhIACmkiYiIiASQQpqIiIhIACmkiYiISFo7duzgiiuuYMiQIYwfP54zzjiDpUuXsnz5cnr27MnYsWMZNmwYd911FwCPPvooN910U1Ib06ZNIyhTbn3lK1+hpKSEbt265borWVFIExERkXqcc1x00UWcddZZbN68mdWrV7NkyRIqKioA72Oh3njjDcrLy1m0aBGrV6/Ouu0tW7Ywbdq0Vup5ZhdccAGvv/56m++3uRTSREREpJ4//elPFBQUMH/+/ETZoEGDuPnmm5PqFRcXM378eDZt2nTU+9yxYwdz5sxhzJgxjBkzhpdffhmA733ve4wcOZKRI0dy3333AV7QO+2007jmmmsYPXo0l1xyCZWVlTz//PPMmTMn0eZzzz3H3LlzATj99NPp37//UfezrehjoURERAJu+7e+RfX6t1u0zcJhp/Gxf//3jOvXrVvHuHHjGm1n9+7dvPrqq9xxxx2sWrXqqPp0yy23MHXqVJYuXUokEuHgwYOsXr2aRx55hNdeew3nHJMmTWLq1Kn06tWLDRs28PDDDzN58mQ++9nP8sADD3Dbbbdx4403snPnTvr27csjjzzCtddee1T9yhWNpImIiEijbrzxRsaMGcOECRMAWLFiBWPHjmXGjBksWLCAESNGYGZpt42Xz5kzh9LSUmbNmkV5eTmlpaWUlpbyyCOPAN7o3T/90z8BEA6H6dmzJytXrmTOnDkUFxfTrVs35s6dy4oVKwAoKSlh8uTJAFx11VWsXLkSM+Pqq69m0aJF7Nu3j1deeYWZM2e26rlpLRpJExERCbiGRrxay4gRI3jiiScSy/fffz+7du2irMz7+MopU6bw1FNPJW3Tu3dv9u7dm1S2Z88e+vTpA8DSpUsB71LlvHnzWL58eaP9aOgzxlNDYXz52muv5YILLqCoqIhLL72UvLz2GXc0kiYiIiL1TJ8+naqqKn784x8nyiorKxvcZsKECbz00kts374dgPLycqqrqykpKclqn+ecc05if5FIhP3793PWWWexbNkyKisrOXToEEuXLmXKlCkAvPfee7zyyisALF68mDPPPBOAAQMGMGDAAL7xjW8wb968Jh13kCikiYiISD1mxrJly3jxxRc58cQTmThxItdccw333ntvxm369evHwoULmTVrFqWlpdx6660sXryYUCi7uLFw4UJeeOEFRo0axfjx4xP3xc2bN4+JEycyadIkrr/+esaOHQvAsGHD+PnPf87o0aPZs2dP4lIpwJVXXklJSQnDhw9PlH35y19m4MCBVFZWMnDgQO68887mnZw2Yg0NI7amsrIyF5R5U0RERIJm/fr1DBs2LNfdCKwtW7Zw/vnns3bt2rTrb7rpJsaOHct1113X5LbTnXszW+2cK2tWZ5upfV6kFREREclg/PjxFBcX893vfjfXXTkqCmkiIiLS7gwePDjjKFpTJtYNMt2TJiIiIhJACmkiIiIiAaSQJiIiIhJACmkiIiIiAaSQJiIiImnt2LGDK664giFDhjB+/HjOOOMMli5dyvLly+nZsydjx45l2LBh3HXXXQA8+uij3HTTTUltTJs2jSBMuVVZWcmnPvUpTjvtNEaMGMGCBQty3aVGKaSJiIhIPc45LrroIs466yw2b97M6tWrWbJkCRUVFYD3sVBvvPEG5eXlLFq0qEnvqNyyZQvTpk1rpZ5n9sUvfpG3336bN954g5deeolnnnmmzfvQFAppIiIiUs+f/vQnCgoKmD9/fqJs0KBB3HzzzUn1iouLGT9+PJs2bTrqfe7YsYM5c+YwZswYxowZw8svvwzA9773PUaOHMnIkSO57777AC/onXbaaVxzzTWMHj2aSy65hMrKSp5//nnmzJmTaPO5555j7ty5dO3albPPPhuAgoICxo0blwicQaV50kRERAJuxWPvsGvrwRZts09JN6ZcdkrG9fGPZGrM7t27efXVV7njjjtYtWrVUfXplltuYerUqSxdupRIJMLBgwdZvXo1jzzyCK+99hrOOSZNmsTUqVPp1asXGzZs4OGHH2by5Ml89rOf5YEHHuC2227jxhtvZOfOnfTt25dHHnmEa6+9Nmk/+/bt43e/+x3//M//fFT9bW0aSRMREZFG3XjjjYwZM4YJEyYAsGLFCsaOHcuMGTNYsGABI0aMwMzSbhsvnzNnDqWlpcyaNYvy8nJKS0tkg8I6AAAgAElEQVQpLS3lkUceAbzRu/jnb4bDYXr27MnKlSuZM2cOxcXFdOvWjblz57JixQoASkpKmDx5MgBXXXUVK1euxMy4+uqrWbRoEfv27eOVV15h5syZib7U1tbymc98hltuuYUhQ4a0zslqIRpJExERCbiGRrxay4gRI3jiiScSy/fffz+7du2irMz7+MopU6bw1FNPJW3Tu3dv9u7dm1S2Z88e+vTpA8DSpUsB71LlvHnzWL58eaP9aOgzxlNDYXz52muv5YILLqCoqIhLL72UvLy6uHPDDTcwdOhQbr311kb3nWsaSRMREZF6pk+fTlVVFT/+8Y8TZZWVlQ1uM2HCBF566SW2b98OQHl5OdXV1ZSUlGS1z3POOSexv0gkwv79+znrrLNYtmwZlZWVHDp0iKVLlzJlyhQA3nvvPV555RUAFi9ezJlnngnAgAEDGDBgAN/4xjeYN29eov2vfvWrfPTRR4n72oJOIU1ERETqMTOWLVvGiy++yIknnsjEiRO55ppruPfeezNu069fPxYuXMisWbMoLS3l1ltvZfHixYRC2cWNhQsX8sILLzBq1CjGjx+fuC9u3rx5TJw4kUmTJnH99dczduxYAIYNG8bPf/5zRo8ezZ49exKXSgGuvPJKSkpKGD58OAAVFRV885vf5K233mLcuHGUlpby0EMPHcUZan3W0DBiayorK3NBmDdFREQkiNavX8+wYcNy3Y3A2rJlC+eff37GD1m/6aabGDt2LNddd12T20537s1stXOurFmdbSbdkyYiIiIdyvjx4ykuLua73/1urrtyVBTSREREpN0ZPHhwxlG0pkysG2S6J01EREQkgBTSRERERAJIIU1EREQkgBTSRERERAJIIU1ERETS6tatGwDbtm3jkksuAeDRRx/lpptuymW3Og2FNBEREWnQgAEDePzxx7Ou75wjGo22Yo86B4U0ERERadCWLVsYOXJkYnnr1q2cd955nHrqqdx1112JOsOGDeMLX/gC48aNY+vWrSxevJhRo0YxcuRIbr/9dsD7uKd58+YxcuRIRo0axfe//30AHnzwQSZMmMCYMWO4+OKLG/0Iqs5A86SJiIgE3AuP/pQP393com0eN2gIZ8+7oVnbvv7666xdu5auXbsyYcIEPvWpT9GnTx82bNjAI488wgMPPMC2bdu4/fbbWb16Nb169WLGjBksW7aMkpIS3n///cQcZ/v27QNg7ty5fO5znwO8z9h8+OGHufnmm1vmYNspjaSJiIhIk5x77rn07t2bLl26MHfuXFauXAnAoEGDOP300wFYtWoV06ZNo2/fvuTl5XHllVfy5z//mSFDhrB582Zuvvlm/vCHP9CjRw8A1q5dy5QpUxg1ahS//OUvWbduXc6OLyg0kiYiIhJwzR3xai1mlna5uLg4UZbps8F79erFmjVrePbZZ7n//vt57LHH+NnPfsa8efNYtmwZY8aM4dFHH2X58uWt1v/2QiNpIiIi0iTPPfcce/bs4fDhwyxbtozJkyfXqzNp0iRefPFFdu3aRSQSYfHixUydOpVdu3YRjUa5+OKL+frXv85f/vIXAA4cOED//v2pqanhl7/8ZVsfUiBpJE1ERESa5Mwzz+Tqq69m48aNXHHFFZSVlbFly5akOv379+eee+7h7LPPxjnHrFmzmD17NmvWrOHaa69NvPvznnvuAeDrX/86kyZNYtCgQYwaNYoDBw609WEFjmUajmxtZWVlrry8PCf7FhERCbr169czbNiwXHejU0p37s1stXOurC37ocudIiIiIgGUVUgzs/PMbIOZbTSzBRnqXGZmb5nZOjP7Vct2U0RERKRzafSeNDMLA/cD5wIVwCoze9I595avzlDg34DJzrm9ZnZca3VYREREpDPIZiRtIrDRObfZOXcEWALMTqnzOeB+59xeAOfchy3bTRERkc4nV/eNd2ZBOufZhLTjga2+5YpYmd8pwClm9pKZvWpm57VUB0VERDqjoqIidu/eHajQ0NE559i9ezdFRUW57gqQ3RQclqYs9TsmDxgKTAMGAivMbKRzbl9SQ2Y3ADcAnHDCCU3urIiISGcxcOBAKioq2LlzZ6670qkUFRUxcODAXHcDyC6kVQAlvuWBwLY0dV51ztUA/zCzDXihbZW/knPup8BPwZuCo7mdFhER6ejy8/M58cQTc90NyaFsLneuAoaa2YlmVgBcDjyZUmcZcDaAmfXBu/zZsp8EKyIiItKJNBrSnHO1wE3As8B64DHn3Dozu9vMLoxVexbYbWZvAS8AX3LO7W6tTouIiIh0dPrEAREREZFG6BMHRERERARQSBMREREJJIU0ERERkQBSSBMREREJIIU0ERERkQBSSBMREREJIIU0ERERkQBSSBMREREJIIU0ERERkQBSSBMREREJIIU0ERERkQBSSBMREREJIIU0ERERkQBSSBMREREJIIU0ERERkQBSSBMREREJIIU0ERERkQBSSBMREREJIIU0ERERkQBSSBMREREJIIU0ERERkQBSSBMREREJIIU0ERERkQBSSBMREREJIIU0ERERkQBSSBMREREJoLxcd0BEJME5+GAN/ONFcFHAwEJglvl5YjlWlrFeyFevofZCadqjCW03sJ+09eLtkUV7Td0m0/kSkfZAIU1Ecm//B/DXX8OaJbBzfa570wlkEeYSz2liAGxKYG5K27ELPy0VxhvtTzZhnKML7S0e9I9ym6N6nVv6e6M5r1/H+yNEIU1EcuPIIXj797BmMWxe7o2cDZwIn/oeDJ8NBcVemXOAq3vuot72iecu5Xm222SqF2/PZVmvhbdp9JjStXE026Trq8uuXuI5rf9auGgjffBvQ9Pabq3XGXfU/0ykOVopCOeAQpqItJ1oFN59yRsxe2sZHDkIPU+AKbfBmM9A75Ny3UORluWaEgDj9ciy3tFsQxODdWr4bY0wHk0+jqD9YcTaFv/2aIxCmoi0vl0bvRGzv/4aPtoKBd1hxEVeMDvh4xDSe5ikgzIDC+e6F9Ii/rvN96iQJiKto3IPrPtfb9SsYpV3uWDI2XDOf8Bpn4KCrrnuoYhIoCmkiUjLidTA35/zRs3e+QNEjkDfYXDu3TDqMujRP9c9FBFpNxTSROToOAcfvOmNmP3tN1C5G7r2gQnXw5jL4WOjO9w7rkRE2oJCmog0z0fvw98ei02b8TaEC+DUWd59ZiefA+H8XPdQRKRdU0gTkewdOQTrn6qbNgMHJZPg/O/DiDnQpVeueygi0mEopIlIw6JReHdlbNqM33rTZhxzAkz9Moz+tKbNEBFpJQppIpLerr97I2Zrfg37K2LTZsyJTZtxhqbNEBFpZQppIlKncg+sfcIbNXu/3Js246TpcO5d3v1mmjZDRKTNKKSJdHa1R2BjbNqMDX+AaA0cNwJmfANGXQrdP5brHoqIdEoKaSKdkXOw7Q0vmP3tcTi8B4r7wsQbYtNmjNK0GSIiOaaQJtKZfPS+99FMa5bArg0QLoTTYtNmnDRd02aIiASIQppIR1d9EN6OT5vxIt60GafDBQth+EXQ5Zhc91BERNJQSBPpiKJR2LLCC2ZvPQk1h+CYQTD1dhjzaTh2SK57KCIijVBIE+lIdr7jBbO/PuZNm1HYA0ZdXDdthu4zExFpNxTSRNq7xLQZi+H91bFpM86BGXd702bkd8l1D0VEpBkU0kTao9oj8Pc/esHsnWe9aTP6jYQZ34xNm9Ev1z0UEZGjpJAm0l44B+//xQtmax+Hw3uh+DiY9Pm6aTNERKTDUEgTCbqPKnzTZrwTmzbjU1B6BQw5G8L6Zywi0hHpp7tIEFUfhPW/gzW/gn+sAJx34/8FP4DhszVthohIJ6CQJhIU0Qj848/eiNn6J6GmEnoNhmkLYPRlmjZDRKSTUUgTybWdG3zTZrwPhT29m/9Lr4CSSZo2Q0Skk1JIE8mFQ7tj02b8yvsMTQvDyed4H2p+6kxNmyEiIgppIm2mttqbNuPNxfD3ZyFa670j85PfgpGXaNoMERFJopAm0pqc8yaYXbPYGzk7vBe69YNJ871PAfjYyFz3UEREAkohTaQ17NtaN23G7r9DXpE3bcaYK2DINE2bISIijdJvCpGWUn3AmzbjzV/BlpWAg0GTYfIt3rQZRT1z3UMREWlHFNJEjkY0Av94MTZtxu9i02acCNP+DcZ82ptCQ0REpBmyCmlmdh6wEAgDDznnvp2h3iXAb4AJzrnyFuulSNB8+HbdtBkHtnmjZKM/7d1nVjJR02aIiMhRazSkmVkYuB84F6gAVpnZk865t1LqdQduAV5rjY6K5NyhXd7N/2/+Cj5405s2Y+i5cN634JSZkF+U6x6KiEgHks1I2kRgo3NuM4CZLQFmA2+l1Ps68B3giy3aQ5Fcqq2Gd/7gXc78+x9j02aMhk/e4004261vrnsoIiIdVDYh7Xhgq2+5Apjkr2BmY4ES59xTZqaQJu2bc1BRXjdtRtU+6PYxOP0LMOZy6Dci1z0UEZFOIJuQlu7mGpdYaRYCvg/Ma7QhsxuAGwBOOOGE7Hoo0lb2veebNmMj5HWBYed7wWzI2RAK57qHIiLSiWQT0iqAEt/yQGCbb7k7MBJYbt7N0h8DnjSzC1PfPOCc+ynwU4CysjKHSK5VH4C3fusFsy0rvLJBZ8LkW2PTZvTIbf9ERKTTyiakrQKGmtmJwPvA5cAV8ZXOuY+APvFlM1sOfFHv7pTAikZg8/K6aTNqD8OxJ8HZX4XRl0GvQbnuoYiISOMhzTlXa2Y3Ac/iTcHxM+fcOjO7Gyh3zj3Z2p0UaREfrvdNm/GBN21G6We8aTMGTtC0GSIiEihZzZPmnHsaeDql7GsZ6k47+m6JtJCDO2Ht4144+2ANhPLg5HPhvG/DKedp2gwREQksfeKAdDw1VXXTZmx8zps2o38pnHcvjLxY02aIiEi7oJAmHYNzULHKN23GR9C9P5xxI4y+HPoNz3UPRUREmkQhTdq3ve9695itWQx7NsWmzbggNm3GNE2bISIi7ZZCmrQ/Vfvrps14d6VXNngKTLkNhl8Ihd1z2z8REZEWoJAm7UM0AptfiE2b8VTdtBnTv+p9sPkxmhxZREQ6FoU0CbYdb9VNm3FwOxQdA6VXxKbNKNO0GSIi0mEppEnwHNwJf/uNF862/9WbNmPoDC+YnfJJyCvMdQ9FRERanUKaBENNFbzzjHc58+/PgYvAgLEw8zvetBnFfRpvQ0REpANRSJPccQ62vu6NmK3739i0GQPg4zd77848bliueygiIpIzCmnS9vZugTW/9sLZ3n9AftfYtBmfgRPP0rQZIiIiKKRJW6n6yDdtxkuAwYlTYOqXvYCmaTNERESSKKRJ64nUwubl3ojZ209BbRX0Phmm3xGbNqMk1z0UEREJLIU0aXk71sGbv/LeoXlwB3TpBWOvgjFXwPHjNG2GiIhIFhTSpGUc/NA3bcbfvGkzTjnPewPA0BmaNkNERKSJFNKk+WqqYMPT3n1mG/8vNm3GOJj5n7FpM3rnuociIiLtlkKaNI1zsPU173LmumVQ/RH0OB4m3+K9O7PvqbnuoYiISIegkCbZ2fMP+OuvvVGzvf+A/GLvw8zHXO59uLmmzRAREWlRCmmSWdVH3mjZmiXw3st402acBVNvj02b0S3XPRQREemwFNIkWaQWNr/gXc7c8LQ3bUafU+Cc/4DRl0HPgbnuoYiISKegkCae7X/zRsz++hgc+hC6HAvj/p93OXOAps0QERFpa7kLaXs2wROf8+bQauirqCeElSVbxYEdsWkzlsCOv0EoH075pPcGgKEzIK8g1z0UERHptHKXfiK13rsED+/z3iHYkMKe0OWYxgNd0tcxmpsrnZrD3mXMNxfDpj9502YcPx5m/Zc3bUbXY3PdQxERESGXIa3vqXBrufc8UuvdpH54b91X1b7kZf/XR1vrnrto5n3kFyeHtqKe3od55xdBXhfvMb8r5BVBfpemPeYVQSjUNufqaDkH770Ka+LTZuyHHgPhzFth9OXQ95Rc91BERERSBOM6YjjPm/i0qZOfRqNw5EDmMHc4Jejt3gQ1ld7N8DVVUHsYIkeOot+FXmhrNNj5QmHSYzbb+h6bOs3Fns2w5tfw1yWwd0ts2ozZvmkz2knIFBER6YSCEdKaKxTyRseKekKvwc1rIxpJDm3+x0SgO9zExypvJPDA9lhbh+vW1VYdxfHmJ4e2hgLdns3w3iuAwZCpMO3fYdj5UFDc/P2LiIhIm2nfIa0lhMJecGmr8OJc5mCXGhKbEhqPHIRDu+rqdjkGPnEnjLoMeh7fNscmIiIiLUYhra2Z1Y2CiYiIiGSgm5JEREREAkghTURERCSAFNJEREREAkghTURERCSAFNJEREREAkghTURERCSAFNJEREREAkghTURERCSAFNJEREREAkghTURERCSAFNJEREREAkghTURERCSAFNJEREREAkghTURERCSAFNJEREREAkghTURERCSAFNJEREREAkghTURERCSAFNJEREREAkghTURERCSAFNJEREREAkghTURERCSAFNJEREREAkghTURERCSAFNJEREREAkghTURERCSAFNJEREREAkghTURERCSAFNJEREREAkghTURERCSAFNJEREREAiirkGZm55nZBjPbaGYL0qz/VzN7y8z+ambPm9mglu+qiIiISOfRaEgzszBwPzATGA58xsyGp1R7Ayhzzo0GHge+09IdFREREelMshlJmwhsdM5tds4dAZYAs/0VnHMvOOcqY4uvAgNbtpsiIiIinUs2Ie14YKtvuSJWlsl1wDNH0ykRERGRzi4vizqWpsylrWh2FVAGTM2w/gbgBoATTjghyy6KiIiIdD7ZhLQKoMS3PBDYllrJzD4B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\n",
"text/plain": [
"<Figure size 720x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"res=results[results.group=='sl'][['impl','sample_len','mean']]\n",
"res['mean'] = res['mean'] / (res['sample_len']/1024)\n",
"res = res.pivot(index='sample_len', columns='impl', values='mean')\n",
"res.plot(figsize=(10,6), xticks=res.index, title=\"Time per 1Ks (ms) by sample length\");"
]
},
{
"cell_type": "code",
"execution_count": 682,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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1FNPZf36YJLwkiVLuPXWWznvvPOYNm0av/71rwez+SIiIjIM9arHTvrn7bffZvXq1RQUFDBlyhRuvvlmXn/9dR544AG++93vcv/99wNQXV3NH/7wB9avX8/5559PVVXVILdcREREhhP12A2AuXPnMm7cONLT05k6dSoXXXQRAKeeeirV1dXR/a655hqSkpIoLy9nypQpvPvuu4PUYhERERmOFOwGQHp6evT7pKSk6OOkpCRaW1ujz8XPNNXMUxEREekLBbsh5Be/+AWRSIT169ezYcMGpk+fPthNEhERkWFE99gNIdOnT2fBggXs2LGDH/zgB2RkZAx2k0RERGQYMfc+rQ42qCoqKryysrLTttWrVzNjxoxBatGxs2TJEhYtWsRVV1012E3ptUR570VERI4HM1vp7hUDeU0NxYqIiIgkCA3FDhGPPvroYDdBREREhjn12ImIiIgkCAU7ERERkQShYCciIiKSIBTsRERERBKEgt0xsH37dq699lqmTp3KySefzKWXXsratWvJzMxk1qxZnHzyydx6661EIhGWL1/OokWLOh2/ZMkSfvnLXw5S60VERCRRaFZsP7k7ixcv5oYbbuCpp54C4K233mLHjh1MnTqVt956i9bWVi644AKeeeYZCgoKBrnFIiIikqjUY9dPL774Iqmpqdx6663RbbNmzWLChAnRxykpKZx99tlUVVUNRhNFRETkBJFQPXZf/9Uq/rq1/pie8+TikXz1spndPv/OO+8wZ86cI56joaGB3//+99xzzz3HtG0iIiIisdRjdxytX7+eWbNmcc455/A3f/M3XHLJJZhZl/t2t11ERESktxKqx+5IPWvHy8yZM7ud+NB+j12sUaNGUVdX12lbbW0thYWFx62NIiIicmJQj10/XXDBBTQ1NfGjH/0oum3FihVs3Lixy/3Ly8vZunUrq1evBmDjxo28/fbbzJo1a0DaKyIiIokroXrsBoOZsWzZMu68807uvfdeMjIyKC0t5f777+9y//T0dJ544gluvPFGGhsbSU1N5aGHHiI3N3eAWy4iIiKJRsHuGCguLubnP//5YdvfeeedLvc/55xzeO211453s0REROQEo6FYERERkQShYCciIiKSIBTsRERERBKEgp2IiIhIglCwExEREUkQCnYiIiIiCULB7hjYsWMH1113HVOmTGHOnDmcddZZLFu2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\n",
"text/plain": [
"<Figure size 720x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"res=results[(results.group=='sl') & (~results.impl.isin(('librosa','CPU-1Core')))][['impl','sample_len','mean']]\n",
"res['mean'] = res['mean'] / (res['sample_len']/1024)\n",
"res = res.pivot(index='sample_len', columns='impl', values='mean')\n",
"res.plot(figsize=(10,6), xticks=res.index, title=\"Time per 1Ks (ms) by sample length (PyTorch)\");"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python [conda env:fastai_audio-dev]",
"language": "python",
"name": "conda-env-fastai_audio-dev-py"
},
"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.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment