Skip to content

Instantly share code, notes, and snippets.

@pentschev
Created July 2, 2019 12:18
Show Gist options
  • Save pentschev/dcba33fe0f2e4482b1eb5656b5ebef4a to your computer and use it in GitHub Desktop.
Save pentschev/dcba33fe0f2e4482b1eb5656b5ebef4a to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import json\n",
"import pandas as pd\n",
"import numpy as np\n",
"from pybench.utils import (\n",
" benchmark_json_to_pandas,\n",
" compute_speedup,\n",
" filter_by_string_in_column,\n",
" filter_by_value_in_column,\n",
" significant_round,\n",
" split_params_list,\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"df = benchmark_json_to_pandas('benchmark_array.json')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"df = split_params_list(df, 'params.shape', ['params.shape.0', 'params.shape.1'])"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"cupy_df = filter_by_string_in_column(df, 'name', 'cupy')"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"numpy_df = filter_by_string_in_column(df, 'name', 'numpy')"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>fullname</th>\n",
" <th>group</th>\n",
" <th>name</th>\n",
" <th>options.disable_gc</th>\n",
" <th>options.max_time</th>\n",
" <th>options.min_rounds</th>\n",
" <th>options.min_time</th>\n",
" <th>options.timer</th>\n",
" <th>options.warmup</th>\n",
" <th>param</th>\n",
" <th>...</th>\n",
" <th>stats.ops</th>\n",
" <th>stats.outliers</th>\n",
" <th>stats.q1</th>\n",
" <th>stats.q3</th>\n",
" <th>stats.rounds</th>\n",
" <th>stats.stddev</th>\n",
" <th>stats.stddev_outliers</th>\n",
" <th>stats.total</th>\n",
" <th>params.shape.0</th>\n",
" <th>params.shape.1</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>pybench/benchmarks/benchmark_array.py::test_FF...</td>\n",
" <td>None</td>\n",
" <td>test_FFT[shape0-numpy]</td>\n",
" <td>False</td>\n",
" <td>1.0</td>\n",
" <td>5</td>\n",
" <td>0.000005</td>\n",
" <td>perf_counter</td>\n",
" <td>False</td>\n",
" <td>shape0-numpy</td>\n",
" <td>...</td>\n",
" <td>55.982082</td>\n",
" <td>1;1</td>\n",
" <td>0.016357</td>\n",
" <td>0.018566</td>\n",
" <td>5</td>\n",
" <td>0.003005</td>\n",
" <td>1</td>\n",
" <td>0.089314</td>\n",
" <td>1000</td>\n",
" <td>1000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>pybench/benchmarks/benchmark_array.py::test_FF...</td>\n",
" <td>None</td>\n",
" <td>test_FFT[shape1-numpy]</td>\n",
" <td>False</td>\n",
" <td>1.0</td>\n",
" <td>5</td>\n",
" <td>0.000005</td>\n",
" <td>perf_counter</td>\n",
" <td>False</td>\n",
" <td>shape1-numpy</td>\n",
" <td>...</td>\n",
" <td>0.396244</td>\n",
" <td>1;0</td>\n",
" <td>2.487194</td>\n",
" <td>2.558154</td>\n",
" <td>5</td>\n",
" <td>0.047411</td>\n",
" <td>1</td>\n",
" <td>12.618496</td>\n",
" <td>10000</td>\n",
" <td>10000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>pybench/benchmarks/benchmark_array.py::test_FF...</td>\n",
" <td>None</td>\n",
" <td>test_FFT[shape2-numpy]</td>\n",
" <td>False</td>\n",
" <td>1.0</td>\n",
" <td>5</td>\n",
" <td>0.000005</td>\n",
" <td>perf_counter</td>\n",
" <td>False</td>\n",
" <td>shape2-numpy</td>\n",
" <td>...</td>\n",
" <td>0.087780</td>\n",
" <td>2;0</td>\n",
" <td>11.236303</td>\n",
" <td>11.509395</td>\n",
" <td>5</td>\n",
" <td>0.187650</td>\n",
" <td>2</td>\n",
" <td>56.960521</td>\n",
" <td>20000</td>\n",
" <td>20000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>pybench/benchmarks/benchmark_array.py::test_Su...</td>\n",
" <td>None</td>\n",
" <td>test_Sum[shape0-numpy]</td>\n",
" <td>False</td>\n",
" <td>1.0</td>\n",
" <td>5</td>\n",
" <td>0.000005</td>\n",
" <td>perf_counter</td>\n",
" <td>False</td>\n",
" <td>shape0-numpy</td>\n",
" <td>...</td>\n",
" <td>2993.666132</td>\n",
" <td>1;0</td>\n",
" <td>0.000333</td>\n",
" <td>0.000335</td>\n",
" <td>5</td>\n",
" <td>0.000002</td>\n",
" <td>1</td>\n",
" <td>0.001670</td>\n",
" <td>1000</td>\n",
" <td>1000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>pybench/benchmarks/benchmark_array.py::test_Su...</td>\n",
" <td>None</td>\n",
" <td>test_Sum[shape1-numpy]</td>\n",
" <td>False</td>\n",
" <td>1.0</td>\n",
" <td>5</td>\n",
" <td>0.000005</td>\n",
" <td>perf_counter</td>\n",
" <td>False</td>\n",
" <td>shape1-numpy</td>\n",
" <td>...</td>\n",
" <td>15.728330</td>\n",
" <td>1;0</td>\n",
" <td>0.063408</td>\n",
" <td>0.063785</td>\n",
" <td>5</td>\n",
" <td>0.000215</td>\n",
" <td>1</td>\n",
" <td>0.317898</td>\n",
" <td>10000</td>\n",
" <td>10000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>pybench/benchmarks/benchmark_array.py::test_Su...</td>\n",
" <td>None</td>\n",
" <td>test_Sum[shape2-numpy]</td>\n",
" <td>False</td>\n",
" <td>1.0</td>\n",
" <td>5</td>\n",
" <td>0.000005</td>\n",
" <td>perf_counter</td>\n",
" <td>False</td>\n",
" <td>shape2-numpy</td>\n",
" <td>...</td>\n",
" <td>3.775666</td>\n",
" <td>1;1</td>\n",
" <td>0.254629</td>\n",
" <td>0.269749</td>\n",
" <td>5</td>\n",
" <td>0.018232</td>\n",
" <td>1</td>\n",
" <td>1.324270</td>\n",
" <td>20000</td>\n",
" <td>20000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>pybench/benchmarks/benchmark_array.py::test_St...</td>\n",
" <td>None</td>\n",
" <td>test_Standard_Deviation[shape0-numpy]</td>\n",
" <td>False</td>\n",
" <td>1.0</td>\n",
" <td>5</td>\n",
" <td>0.000005</td>\n",
" <td>perf_counter</td>\n",
" <td>False</td>\n",
" <td>shape0-numpy</td>\n",
" <td>...</td>\n",
" <td>578.606617</td>\n",
" <td>1;0</td>\n",
" <td>0.001694</td>\n",
" <td>0.001755</td>\n",
" <td>5</td>\n",
" <td>0.000038</td>\n",
" <td>1</td>\n",
" <td>0.008641</td>\n",
" <td>1000</td>\n",
" <td>1000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>pybench/benchmarks/benchmark_array.py::test_St...</td>\n",
" <td>None</td>\n",
" <td>test_Standard_Deviation[shape1-numpy]</td>\n",
" <td>False</td>\n",
" <td>1.0</td>\n",
" <td>5</td>\n",
" <td>0.000005</td>\n",
" <td>perf_counter</td>\n",
" <td>False</td>\n",
" <td>shape1-numpy</td>\n",
" <td>...</td>\n",
" <td>1.672443</td>\n",
" <td>1;0</td>\n",
" <td>0.581637</td>\n",
" <td>0.621958</td>\n",
" <td>5</td>\n",
" <td>0.023297</td>\n",
" <td>1</td>\n",
" <td>2.989638</td>\n",
" <td>10000</td>\n",
" <td>10000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>pybench/benchmarks/benchmark_array.py::test_St...</td>\n",
" <td>None</td>\n",
" <td>test_Standard_Deviation[shape2-numpy]</td>\n",
" <td>False</td>\n",
" <td>1.0</td>\n",
" <td>5</td>\n",
" <td>0.000005</td>\n",
" <td>perf_counter</td>\n",
" <td>False</td>\n",
" <td>shape2-numpy</td>\n",
" <td>...</td>\n",
" <td>0.426598</td>\n",
" <td>2;0</td>\n",
" <td>2.328234</td>\n",
" <td>2.356486</td>\n",
" <td>5</td>\n",
" <td>0.019133</td>\n",
" <td>2</td>\n",
" <td>11.720640</td>\n",
" <td>20000</td>\n",
" <td>20000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>pybench/benchmarks/benchmark_array.py::test_El...</td>\n",
" <td>None</td>\n",
" <td>test_Elementwise[shape0-numpy]</td>\n",
" <td>False</td>\n",
" <td>1.0</td>\n",
" <td>5</td>\n",
" <td>0.000005</td>\n",
" <td>perf_counter</td>\n",
" <td>False</td>\n",
" <td>shape0-numpy</td>\n",
" <td>...</td>\n",
" <td>36.469401</td>\n",
" <td>1;1</td>\n",
" <td>0.026863</td>\n",
" <td>0.027667</td>\n",
" <td>5</td>\n",
" <td>0.001161</td>\n",
" <td>1</td>\n",
" <td>0.137101</td>\n",
" <td>1000</td>\n",
" <td>1000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>pybench/benchmarks/benchmark_array.py::test_El...</td>\n",
" <td>None</td>\n",
" <td>test_Elementwise[shape1-numpy]</td>\n",
" <td>False</td>\n",
" <td>1.0</td>\n",
" <td>5</td>\n",
" <td>0.000005</td>\n",
" <td>perf_counter</td>\n",
" <td>False</td>\n",
" <td>shape1-numpy</td>\n",
" <td>...</td>\n",
" <td>0.285577</td>\n",
" <td>2;0</td>\n",
" <td>3.486965</td>\n",
" <td>3.522032</td>\n",
" <td>5</td>\n",
" <td>0.024751</td>\n",
" <td>2</td>\n",
" <td>17.508391</td>\n",
" <td>10000</td>\n",
" <td>10000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>pybench/benchmarks/benchmark_array.py::test_El...</td>\n",
" <td>None</td>\n",
" <td>test_Elementwise[shape2-numpy]</td>\n",
" <td>False</td>\n",
" <td>1.0</td>\n",
" <td>5</td>\n",
" <td>0.000005</td>\n",
" <td>perf_counter</td>\n",
" <td>False</td>\n",
" <td>shape2-numpy</td>\n",
" <td>...</td>\n",
" <td>0.071214</td>\n",
" <td>1;0</td>\n",
" <td>13.920397</td>\n",
" <td>14.140934</td>\n",
" <td>5</td>\n",
" <td>0.187442</td>\n",
" <td>1</td>\n",
" <td>70.211068</td>\n",
" <td>20000</td>\n",
" <td>20000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>pybench/benchmarks/benchmark_array.py::test_Ma...</td>\n",
" <td>None</td>\n",
" <td>test_Matrix_Multiplication[shape0-numpy]</td>\n",
" <td>False</td>\n",
" <td>1.0</td>\n",
" <td>5</td>\n",
" <td>0.000005</td>\n",
" <td>perf_counter</td>\n",
" <td>False</td>\n",
" <td>shape0-numpy</td>\n",
" <td>...</td>\n",
" <td>126.684055</td>\n",
" <td>1;1</td>\n",
" <td>0.007456</td>\n",
" <td>0.008072</td>\n",
" <td>5</td>\n",
" <td>0.000897</td>\n",
" <td>1</td>\n",
" <td>0.039468</td>\n",
" <td>1000</td>\n",
" <td>1000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>pybench/benchmarks/benchmark_array.py::test_Ma...</td>\n",
" <td>None</td>\n",
" <td>test_Matrix_Multiplication[shape1-numpy]</td>\n",
" <td>False</td>\n",
" <td>1.0</td>\n",
" <td>5</td>\n",
" <td>0.000005</td>\n",
" <td>perf_counter</td>\n",
" <td>False</td>\n",
" <td>shape1-numpy</td>\n",
" <td>...</td>\n",
" <td>0.306723</td>\n",
" <td>2;0</td>\n",
" <td>3.222101</td>\n",
" <td>3.300049</td>\n",
" <td>5</td>\n",
" <td>0.043322</td>\n",
" <td>2</td>\n",
" <td>16.301370</td>\n",
" <td>10000</td>\n",
" <td>10000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>pybench/benchmarks/benchmark_array.py::test_Ma...</td>\n",
" <td>None</td>\n",
" <td>test_Matrix_Multiplication[shape2-numpy]</td>\n",
" <td>False</td>\n",
" <td>1.0</td>\n",
" <td>5</td>\n",
" <td>0.000005</td>\n",
" <td>perf_counter</td>\n",
" <td>False</td>\n",
" <td>shape2-numpy</td>\n",
" <td>...</td>\n",
" <td>0.043946</td>\n",
" <td>1;0</td>\n",
" <td>22.721544</td>\n",
" <td>22.797102</td>\n",
" <td>5</td>\n",
" <td>0.059265</td>\n",
" <td>1</td>\n",
" <td>113.775839</td>\n",
" <td>20000</td>\n",
" <td>20000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td>pybench/benchmarks/benchmark_array.py::test_Ar...</td>\n",
" <td>None</td>\n",
" <td>test_Array_Slicing[shape0-numpy]</td>\n",
" <td>False</td>\n",
" <td>1.0</td>\n",
" <td>5</td>\n",
" <td>0.000005</td>\n",
" <td>perf_counter</td>\n",
" <td>False</td>\n",
" <td>shape0-numpy</td>\n",
" <td>...</td>\n",
" <td>1931.480748</td>\n",
" <td>1;0</td>\n",
" <td>0.000195</td>\n",
" <td>0.000883</td>\n",
" <td>5</td>\n",
" <td>0.000472</td>\n",
" <td>1</td>\n",
" <td>0.002589</td>\n",
" <td>1000</td>\n",
" <td>1000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td>pybench/benchmarks/benchmark_array.py::test_Ar...</td>\n",
" <td>None</td>\n",
" <td>test_Array_Slicing[shape1-numpy]</td>\n",
" <td>False</td>\n",
" <td>1.0</td>\n",
" <td>5</td>\n",
" <td>0.000005</td>\n",
" <td>perf_counter</td>\n",
" <td>False</td>\n",
" <td>shape1-numpy</td>\n",
" <td>...</td>\n",
" <td>7.320091</td>\n",
" <td>2;0</td>\n",
" <td>0.129142</td>\n",
" <td>0.143152</td>\n",
" <td>5</td>\n",
" <td>0.007223</td>\n",
" <td>2</td>\n",
" <td>0.683052</td>\n",
" <td>10000</td>\n",
" <td>10000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34</th>\n",
" <td>pybench/benchmarks/benchmark_array.py::test_Ar...</td>\n",
" <td>None</td>\n",
" <td>test_Array_Slicing[shape2-numpy]</td>\n",
" <td>False</td>\n",
" <td>1.0</td>\n",
" <td>5</td>\n",
" <td>0.000005</td>\n",
" <td>perf_counter</td>\n",
" <td>False</td>\n",
" <td>shape2-numpy</td>\n",
" <td>...</td>\n",
" <td>1.572750</td>\n",
" <td>1;1</td>\n",
" <td>0.511375</td>\n",
" <td>0.679104</td>\n",
" <td>5</td>\n",
" <td>0.247003</td>\n",
" <td>1</td>\n",
" <td>3.179145</td>\n",
" <td>20000</td>\n",
" <td>20000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36</th>\n",
" <td>pybench/benchmarks/benchmark_array.py::test_SV...</td>\n",
" <td>None</td>\n",
" <td>test_SVD[shape0-numpy]</td>\n",
" <td>False</td>\n",
" <td>1.0</td>\n",
" <td>5</td>\n",
" <td>0.000005</td>\n",
" <td>perf_counter</td>\n",
" <td>False</td>\n",
" <td>shape0-numpy</td>\n",
" <td>...</td>\n",
" <td>1.832977</td>\n",
" <td>2;0</td>\n",
" <td>0.521671</td>\n",
" <td>0.574809</td>\n",
" <td>5</td>\n",
" <td>0.031359</td>\n",
" <td>2</td>\n",
" <td>2.727803</td>\n",
" <td>1000</td>\n",
" <td>1000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38</th>\n",
" <td>pybench/benchmarks/benchmark_array.py::test_SV...</td>\n",
" <td>None</td>\n",
" <td>test_SVD[shape1-numpy]</td>\n",
" <td>False</td>\n",
" <td>1.0</td>\n",
" <td>5</td>\n",
" <td>0.000005</td>\n",
" <td>perf_counter</td>\n",
" <td>False</td>\n",
" <td>shape1-numpy</td>\n",
" <td>...</td>\n",
" <td>0.103195</td>\n",
" <td>1;0</td>\n",
" <td>9.529022</td>\n",
" <td>9.817653</td>\n",
" <td>5</td>\n",
" <td>0.184939</td>\n",
" <td>1</td>\n",
" <td>48.452085</td>\n",
" <td>10000</td>\n",
" <td>1000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td>pybench/benchmarks/benchmark_array.py::test_SV...</td>\n",
" <td>None</td>\n",
" <td>test_SVD[shape2-numpy]</td>\n",
" <td>False</td>\n",
" <td>1.0</td>\n",
" <td>5</td>\n",
" <td>0.000005</td>\n",
" <td>perf_counter</td>\n",
" <td>False</td>\n",
" <td>shape2-numpy</td>\n",
" <td>...</td>\n",
" <td>0.027928</td>\n",
" <td>2;0</td>\n",
" <td>32.191616</td>\n",
" <td>39.850554</td>\n",
" <td>5</td>\n",
" <td>4.417399</td>\n",
" <td>2</td>\n",
" <td>179.032636</td>\n",
" <td>20000</td>\n",
" <td>1000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>pybench/benchmarks/benchmark_array.py::test_St...</td>\n",
" <td>None</td>\n",
" <td>test_Stencil[shape0-numpy]</td>\n",
" <td>False</td>\n",
" <td>1.0</td>\n",
" <td>5</td>\n",
" <td>0.000005</td>\n",
" <td>perf_counter</td>\n",
" <td>False</td>\n",
" <td>shape0-numpy</td>\n",
" <td>...</td>\n",
" <td>356.499920</td>\n",
" <td>2;0</td>\n",
" <td>0.002740</td>\n",
" <td>0.002863</td>\n",
" <td>5</td>\n",
" <td>0.000107</td>\n",
" <td>2</td>\n",
" <td>0.014025</td>\n",
" <td>1000</td>\n",
" <td>1000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44</th>\n",
" <td>pybench/benchmarks/benchmark_array.py::test_St...</td>\n",
" <td>None</td>\n",
" <td>test_Stencil[shape1-numpy]</td>\n",
" <td>False</td>\n",
" <td>1.0</td>\n",
" <td>5</td>\n",
" <td>0.000005</td>\n",
" <td>perf_counter</td>\n",
" <td>False</td>\n",
" <td>shape1-numpy</td>\n",
" <td>...</td>\n",
" <td>1.649492</td>\n",
" <td>2;0</td>\n",
" <td>0.603097</td>\n",
" <td>0.609449</td>\n",
" <td>5</td>\n",
" <td>0.004122</td>\n",
" <td>2</td>\n",
" <td>3.031236</td>\n",
" <td>10000</td>\n",
" <td>10000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46</th>\n",
" <td>pybench/benchmarks/benchmark_array.py::test_St...</td>\n",
" <td>None</td>\n",
" <td>test_Stencil[shape2-numpy]</td>\n",
" <td>False</td>\n",
" <td>1.0</td>\n",
" <td>5</td>\n",
" <td>0.000005</td>\n",
" <td>perf_counter</td>\n",
" <td>False</td>\n",
" <td>shape2-numpy</td>\n",
" <td>...</td>\n",
" <td>0.405284</td>\n",
" <td>1;0</td>\n",
" <td>2.445619</td>\n",
" <td>2.493052</td>\n",
" <td>5</td>\n",
" <td>0.033832</td>\n",
" <td>1</td>\n",
" <td>12.337025</td>\n",
" <td>20000</td>\n",
" <td>20000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>24 rows × 31 columns</p>\n",
"</div>"
],
"text/plain": [
" fullname group \\\n",
"0 pybench/benchmarks/benchmark_array.py::test_FF... None \n",
"2 pybench/benchmarks/benchmark_array.py::test_FF... None \n",
"4 pybench/benchmarks/benchmark_array.py::test_FF... None \n",
"6 pybench/benchmarks/benchmark_array.py::test_Su... None \n",
"8 pybench/benchmarks/benchmark_array.py::test_Su... None \n",
"10 pybench/benchmarks/benchmark_array.py::test_Su... None \n",
"12 pybench/benchmarks/benchmark_array.py::test_St... None \n",
"14 pybench/benchmarks/benchmark_array.py::test_St... None \n",
"16 pybench/benchmarks/benchmark_array.py::test_St... None \n",
"18 pybench/benchmarks/benchmark_array.py::test_El... None \n",
"20 pybench/benchmarks/benchmark_array.py::test_El... None \n",
"22 pybench/benchmarks/benchmark_array.py::test_El... None \n",
"24 pybench/benchmarks/benchmark_array.py::test_Ma... None \n",
"26 pybench/benchmarks/benchmark_array.py::test_Ma... None \n",
"28 pybench/benchmarks/benchmark_array.py::test_Ma... None \n",
"30 pybench/benchmarks/benchmark_array.py::test_Ar... None \n",
"32 pybench/benchmarks/benchmark_array.py::test_Ar... None \n",
"34 pybench/benchmarks/benchmark_array.py::test_Ar... None \n",
"36 pybench/benchmarks/benchmark_array.py::test_SV... None \n",
"38 pybench/benchmarks/benchmark_array.py::test_SV... None \n",
"40 pybench/benchmarks/benchmark_array.py::test_SV... None \n",
"42 pybench/benchmarks/benchmark_array.py::test_St... None \n",
"44 pybench/benchmarks/benchmark_array.py::test_St... None \n",
"46 pybench/benchmarks/benchmark_array.py::test_St... None \n",
"\n",
" name options.disable_gc \\\n",
"0 test_FFT[shape0-numpy] False \n",
"2 test_FFT[shape1-numpy] False \n",
"4 test_FFT[shape2-numpy] False \n",
"6 test_Sum[shape0-numpy] False \n",
"8 test_Sum[shape1-numpy] False \n",
"10 test_Sum[shape2-numpy] False \n",
"12 test_Standard_Deviation[shape0-numpy] False \n",
"14 test_Standard_Deviation[shape1-numpy] False \n",
"16 test_Standard_Deviation[shape2-numpy] False \n",
"18 test_Elementwise[shape0-numpy] False \n",
"20 test_Elementwise[shape1-numpy] False \n",
"22 test_Elementwise[shape2-numpy] False \n",
"24 test_Matrix_Multiplication[shape0-numpy] False \n",
"26 test_Matrix_Multiplication[shape1-numpy] False \n",
"28 test_Matrix_Multiplication[shape2-numpy] False \n",
"30 test_Array_Slicing[shape0-numpy] False \n",
"32 test_Array_Slicing[shape1-numpy] False \n",
"34 test_Array_Slicing[shape2-numpy] False \n",
"36 test_SVD[shape0-numpy] False \n",
"38 test_SVD[shape1-numpy] False \n",
"40 test_SVD[shape2-numpy] False \n",
"42 test_Stencil[shape0-numpy] False \n",
"44 test_Stencil[shape1-numpy] False \n",
"46 test_Stencil[shape2-numpy] False \n",
"\n",
" options.max_time options.min_rounds options.min_time options.timer \\\n",
"0 1.0 5 0.000005 perf_counter \n",
"2 1.0 5 0.000005 perf_counter \n",
"4 1.0 5 0.000005 perf_counter \n",
"6 1.0 5 0.000005 perf_counter \n",
"8 1.0 5 0.000005 perf_counter \n",
"10 1.0 5 0.000005 perf_counter \n",
"12 1.0 5 0.000005 perf_counter \n",
"14 1.0 5 0.000005 perf_counter \n",
"16 1.0 5 0.000005 perf_counter \n",
"18 1.0 5 0.000005 perf_counter \n",
"20 1.0 5 0.000005 perf_counter \n",
"22 1.0 5 0.000005 perf_counter \n",
"24 1.0 5 0.000005 perf_counter \n",
"26 1.0 5 0.000005 perf_counter \n",
"28 1.0 5 0.000005 perf_counter \n",
"30 1.0 5 0.000005 perf_counter \n",
"32 1.0 5 0.000005 perf_counter \n",
"34 1.0 5 0.000005 perf_counter \n",
"36 1.0 5 0.000005 perf_counter \n",
"38 1.0 5 0.000005 perf_counter \n",
"40 1.0 5 0.000005 perf_counter \n",
"42 1.0 5 0.000005 perf_counter \n",
"44 1.0 5 0.000005 perf_counter \n",
"46 1.0 5 0.000005 perf_counter \n",
"\n",
" options.warmup param ... stats.ops stats.outliers stats.q1 \\\n",
"0 False shape0-numpy ... 55.982082 1;1 0.016357 \n",
"2 False shape1-numpy ... 0.396244 1;0 2.487194 \n",
"4 False shape2-numpy ... 0.087780 2;0 11.236303 \n",
"6 False shape0-numpy ... 2993.666132 1;0 0.000333 \n",
"8 False shape1-numpy ... 15.728330 1;0 0.063408 \n",
"10 False shape2-numpy ... 3.775666 1;1 0.254629 \n",
"12 False shape0-numpy ... 578.606617 1;0 0.001694 \n",
"14 False shape1-numpy ... 1.672443 1;0 0.581637 \n",
"16 False shape2-numpy ... 0.426598 2;0 2.328234 \n",
"18 False shape0-numpy ... 36.469401 1;1 0.026863 \n",
"20 False shape1-numpy ... 0.285577 2;0 3.486965 \n",
"22 False shape2-numpy ... 0.071214 1;0 13.920397 \n",
"24 False shape0-numpy ... 126.684055 1;1 0.007456 \n",
"26 False shape1-numpy ... 0.306723 2;0 3.222101 \n",
"28 False shape2-numpy ... 0.043946 1;0 22.721544 \n",
"30 False shape0-numpy ... 1931.480748 1;0 0.000195 \n",
"32 False shape1-numpy ... 7.320091 2;0 0.129142 \n",
"34 False shape2-numpy ... 1.572750 1;1 0.511375 \n",
"36 False shape0-numpy ... 1.832977 2;0 0.521671 \n",
"38 False shape1-numpy ... 0.103195 1;0 9.529022 \n",
"40 False shape2-numpy ... 0.027928 2;0 32.191616 \n",
"42 False shape0-numpy ... 356.499920 2;0 0.002740 \n",
"44 False shape1-numpy ... 1.649492 2;0 0.603097 \n",
"46 False shape2-numpy ... 0.405284 1;0 2.445619 \n",
"\n",
" stats.q3 stats.rounds stats.stddev stats.stddev_outliers stats.total \\\n",
"0 0.018566 5 0.003005 1 0.089314 \n",
"2 2.558154 5 0.047411 1 12.618496 \n",
"4 11.509395 5 0.187650 2 56.960521 \n",
"6 0.000335 5 0.000002 1 0.001670 \n",
"8 0.063785 5 0.000215 1 0.317898 \n",
"10 0.269749 5 0.018232 1 1.324270 \n",
"12 0.001755 5 0.000038 1 0.008641 \n",
"14 0.621958 5 0.023297 1 2.989638 \n",
"16 2.356486 5 0.019133 2 11.720640 \n",
"18 0.027667 5 0.001161 1 0.137101 \n",
"20 3.522032 5 0.024751 2 17.508391 \n",
"22 14.140934 5 0.187442 1 70.211068 \n",
"24 0.008072 5 0.000897 1 0.039468 \n",
"26 3.300049 5 0.043322 2 16.301370 \n",
"28 22.797102 5 0.059265 1 113.775839 \n",
"30 0.000883 5 0.000472 1 0.002589 \n",
"32 0.143152 5 0.007223 2 0.683052 \n",
"34 0.679104 5 0.247003 1 3.179145 \n",
"36 0.574809 5 0.031359 2 2.727803 \n",
"38 9.817653 5 0.184939 1 48.452085 \n",
"40 39.850554 5 4.417399 2 179.032636 \n",
"42 0.002863 5 0.000107 2 0.014025 \n",
"44 0.609449 5 0.004122 2 3.031236 \n",
"46 2.493052 5 0.033832 1 12.337025 \n",
"\n",
" params.shape.0 params.shape.1 \n",
"0 1000 1000 \n",
"2 10000 10000 \n",
"4 20000 20000 \n",
"6 1000 1000 \n",
"8 10000 10000 \n",
"10 20000 20000 \n",
"12 1000 1000 \n",
"14 10000 10000 \n",
"16 20000 20000 \n",
"18 1000 1000 \n",
"20 10000 10000 \n",
"22 20000 20000 \n",
"24 1000 1000 \n",
"26 10000 10000 \n",
"28 20000 20000 \n",
"30 1000 1000 \n",
"32 10000 10000 \n",
"34 20000 20000 \n",
"36 1000 1000 \n",
"38 10000 1000 \n",
"40 20000 1000 \n",
"42 1000 1000 \n",
"44 10000 10000 \n",
"46 20000 20000 \n",
"\n",
"[24 rows x 31 columns]"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"numpy_df"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"operation_list = ['FFT', 'Sum', 'Standard_Deviation', 'Elementwise', 'Matrix_Multiplication', 'Array_Slicing', 'SVD', 'Stencil']"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"numpy_dict_df = {o: filter_by_string_in_column(numpy_df, 'name', o) for o in operation_list}\n",
"cupy_dict_df = {o: filter_by_string_in_column(cupy_df, 'name', o) for o in operation_list}"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"speedups_df = compute_speedup(numpy_dict_df, cupy_dict_df, ['params.shape.0', 'params.shape.1'], 'stats.median')"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>operation</th>\n",
" <th>speedup</th>\n",
" <th>params.shape.0</th>\n",
" <th>params.shape.1</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>FFT</td>\n",
" <td>5.298226</td>\n",
" <td>1000</td>\n",
" <td>1000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>FFT</td>\n",
" <td>207.288559</td>\n",
" <td>10000</td>\n",
" <td>10000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>FFT</td>\n",
" <td>263.460941</td>\n",
" <td>20000</td>\n",
" <td>20000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Sum</td>\n",
" <td>0.438050</td>\n",
" <td>1000</td>\n",
" <td>1000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Sum</td>\n",
" <td>0.770300</td>\n",
" <td>10000</td>\n",
" <td>10000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>Sum</td>\n",
" <td>0.777896</td>\n",
" <td>20000</td>\n",
" <td>20000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>Standard_Deviation</td>\n",
" <td>1.139616</td>\n",
" <td>1000</td>\n",
" <td>1000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>Standard_Deviation</td>\n",
" <td>3.493579</td>\n",
" <td>10000</td>\n",
" <td>10000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>Standard_Deviation</td>\n",
" <td>3.480939</td>\n",
" <td>20000</td>\n",
" <td>20000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>Elementwise</td>\n",
" <td>151.076508</td>\n",
" <td>1000</td>\n",
" <td>1000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>Elementwise</td>\n",
" <td>267.870391</td>\n",
" <td>10000</td>\n",
" <td>10000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>Elementwise</td>\n",
" <td>279.728574</td>\n",
" <td>20000</td>\n",
" <td>20000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>Matrix_Multiplication</td>\n",
" <td>18.291424</td>\n",
" <td>1000</td>\n",
" <td>1000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>Matrix_Multiplication</td>\n",
" <td>11.388307</td>\n",
" <td>10000</td>\n",
" <td>10000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>Matrix_Multiplication</td>\n",
" <td>9.948615</td>\n",
" <td>20000</td>\n",
" <td>20000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>Array_Slicing</td>\n",
" <td>3.616147</td>\n",
" <td>1000</td>\n",
" <td>1000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>Array_Slicing</td>\n",
" <td>190.317978</td>\n",
" <td>10000</td>\n",
" <td>10000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>Array_Slicing</td>\n",
" <td>195.739683</td>\n",
" <td>20000</td>\n",
" <td>20000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>SVD</td>\n",
" <td>1.523569</td>\n",
" <td>1000</td>\n",
" <td>1000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>SVD</td>\n",
" <td>16.687594</td>\n",
" <td>10000</td>\n",
" <td>1000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>SVD</td>\n",
" <td>37.437210</td>\n",
" <td>20000</td>\n",
" <td>1000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>Stencil</td>\n",
" <td>5.138235</td>\n",
" <td>1000</td>\n",
" <td>1000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>Stencil</td>\n",
" <td>152.764097</td>\n",
" <td>10000</td>\n",
" <td>10000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>Stencil</td>\n",
" <td>151.173126</td>\n",
" <td>20000</td>\n",
" <td>20000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" operation speedup params.shape.0 params.shape.1\n",
"0 FFT 5.298226 1000 1000\n",
"1 FFT 207.288559 10000 10000\n",
"2 FFT 263.460941 20000 20000\n",
"3 Sum 0.438050 1000 1000\n",
"4 Sum 0.770300 10000 10000\n",
"5 Sum 0.777896 20000 20000\n",
"6 Standard_Deviation 1.139616 1000 1000\n",
"7 Standard_Deviation 3.493579 10000 10000\n",
"8 Standard_Deviation 3.480939 20000 20000\n",
"9 Elementwise 151.076508 1000 1000\n",
"10 Elementwise 267.870391 10000 10000\n",
"11 Elementwise 279.728574 20000 20000\n",
"12 Matrix_Multiplication 18.291424 1000 1000\n",
"13 Matrix_Multiplication 11.388307 10000 10000\n",
"14 Matrix_Multiplication 9.948615 20000 20000\n",
"15 Array_Slicing 3.616147 1000 1000\n",
"16 Array_Slicing 190.317978 10000 10000\n",
"17 Array_Slicing 195.739683 20000 20000\n",
"18 SVD 1.523569 1000 1000\n",
"19 SVD 16.687594 10000 1000\n",
"20 SVD 37.437210 20000 1000\n",
"21 Stencil 5.138235 1000 1000\n",
"22 Stencil 152.764097 10000 10000\n",
"23 Stencil 151.173126 20000 20000"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"speedups_df"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>operation</th>\n",
" <th>speedup</th>\n",
" <th>shape0</th>\n",
" <th>shape1</th>\n",
" <th>shape</th>\n",
" <th>size</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>FFT</td>\n",
" <td>5.3</td>\n",
" <td>1000</td>\n",
" <td>1000</td>\n",
" <td>1000x1000</td>\n",
" <td>8MB</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>FFT</td>\n",
" <td>210.0</td>\n",
" <td>10000</td>\n",
" <td>10000</td>\n",
" <td>10000x10000</td>\n",
" <td>800MB</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Sum</td>\n",
" <td>-2.3</td>\n",
" <td>1000</td>\n",
" <td>1000</td>\n",
" <td>1000x1000</td>\n",
" <td>8MB</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Sum</td>\n",
" <td>-1.3</td>\n",
" <td>10000</td>\n",
" <td>10000</td>\n",
" <td>10000x10000</td>\n",
" <td>800MB</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>Standard Deviation</td>\n",
" <td>1.1</td>\n",
" <td>1000</td>\n",
" <td>1000</td>\n",
" <td>1000x1000</td>\n",
" <td>8MB</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>Standard Deviation</td>\n",
" <td>3.5</td>\n",
" <td>10000</td>\n",
" <td>10000</td>\n",
" <td>10000x10000</td>\n",
" <td>800MB</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>Elementwise</td>\n",
" <td>150.0</td>\n",
" <td>1000</td>\n",
" <td>1000</td>\n",
" <td>1000x1000</td>\n",
" <td>8MB</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>Elementwise</td>\n",
" <td>270.0</td>\n",
" <td>10000</td>\n",
" <td>10000</td>\n",
" <td>10000x10000</td>\n",
" <td>800MB</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>Matrix Multiplication</td>\n",
" <td>18.0</td>\n",
" <td>1000</td>\n",
" <td>1000</td>\n",
" <td>1000x1000</td>\n",
" <td>8MB</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>Matrix Multiplication</td>\n",
" <td>11.0</td>\n",
" <td>10000</td>\n",
" <td>10000</td>\n",
" <td>10000x10000</td>\n",
" <td>800MB</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>Array Slicing</td>\n",
" <td>3.6</td>\n",
" <td>1000</td>\n",
" <td>1000</td>\n",
" <td>1000x1000</td>\n",
" <td>8MB</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>Array Slicing</td>\n",
" <td>190.0</td>\n",
" <td>10000</td>\n",
" <td>10000</td>\n",
" <td>10000x10000</td>\n",
" <td>800MB</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>SVD</td>\n",
" <td>1.5</td>\n",
" <td>1000</td>\n",
" <td>1000</td>\n",
" <td>1000x1000</td>\n",
" <td>8MB</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>SVD</td>\n",
" <td>17.0</td>\n",
" <td>10000</td>\n",
" <td>1000</td>\n",
" <td>10000x1000</td>\n",
" <td>800MB</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>Stencil</td>\n",
" <td>5.1</td>\n",
" <td>1000</td>\n",
" <td>1000</td>\n",
" <td>1000x1000</td>\n",
" <td>8MB</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>Stencil</td>\n",
" <td>150.0</td>\n",
" <td>10000</td>\n",
" <td>10000</td>\n",
" <td>10000x10000</td>\n",
" <td>800MB</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" operation speedup shape0 shape1 shape size\n",
"0 FFT 5.3 1000 1000 1000x1000 8MB\n",
"1 FFT 210.0 10000 10000 10000x10000 800MB\n",
"3 Sum -2.3 1000 1000 1000x1000 8MB\n",
"4 Sum -1.3 10000 10000 10000x10000 800MB\n",
"6 Standard Deviation 1.1 1000 1000 1000x1000 8MB\n",
"7 Standard Deviation 3.5 10000 10000 10000x10000 800MB\n",
"9 Elementwise 150.0 1000 1000 1000x1000 8MB\n",
"10 Elementwise 270.0 10000 10000 10000x10000 800MB\n",
"12 Matrix Multiplication 18.0 1000 1000 1000x1000 8MB\n",
"13 Matrix Multiplication 11.0 10000 10000 10000x10000 800MB\n",
"15 Array Slicing 3.6 1000 1000 1000x1000 8MB\n",
"16 Array Slicing 190.0 10000 10000 10000x10000 800MB\n",
"18 SVD 1.5 1000 1000 1000x1000 8MB\n",
"19 SVD 17.0 10000 1000 10000x1000 800MB\n",
"21 Stencil 5.1 1000 1000 1000x1000 8MB\n",
"22 Stencil 150.0 10000 10000 10000x10000 800MB"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Remove dots from column names, altair doesn't seem to work with those.\n",
"speedups_df = speedups_df.rename(columns={'params.shape.0': 'shape0'})\n",
"speedups_df = speedups_df.rename(columns={'params.shape.1': 'shape1'})\n",
"\n",
"speedups_df.drop( speedups_df[ speedups_df['shape0'] == 20000 ].index , inplace=True)\n",
"\n",
"speedups_df['operation'] = speedups_df['operation'].apply(lambda n: n.replace('_', ' '))\n",
"speedups_df['shape'] = speedups_df['shape0'].astype('str') + 'x' + speedups_df['shape1'].astype('str')\n",
"speedups_df['size'] = speedups_df['shape0'].apply(lambda row: '800MB' if row == 10000 else '8MB')\n",
"speedups_df['speedup'] = speedups_df['speedup'].apply(lambda r: 1.0/-r if r<1 else r)\n",
"speedups_df['speedup'] = speedups_df['speedup'].apply(significant_round, precision=2)\n",
"speedups_df"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3.6"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"significant_round(3.616147, precision=2)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.vegalite.v3+json": {
"$schema": "https://vega.github.io/schema/vega-lite/v3.3.0.json",
"config": {
"axis": {
"labelColor": "#666666",
"labelFontSize": 20,
"titleColor": "#666666",
"titleFontSize": 20
},
"axisX": {
"labelAngle": -30
},
"legend": {
"fillColor": "#fefefe",
"labelColor": "#666666",
"labelFontSize": 18,
"orient": "top-right",
"padding": 10,
"strokeColor": "gray",
"titleColor": "#666666",
"titleFontSize": 18
},
"mark": {
"tooltip": null
},
"text": {
"fontSize": 18
},
"view": {
"height": 300,
"width": 400
}
},
"data": {
"name": "data-6c7e591ed15f79936c47b771854fb363"
},
"datasets": {
"data-6c7e591ed15f79936c47b771854fb363": [
{
"operation": "FFT",
"shape": "1000x1000",
"shape0": 1000,
"shape1": 1000,
"size": "8MB",
"speedup": 5.3
},
{
"operation": "FFT",
"shape": "10000x10000",
"shape0": 10000,
"shape1": 10000,
"size": "800MB",
"speedup": 210
},
{
"operation": "Sum",
"shape": "1000x1000",
"shape0": 1000,
"shape1": 1000,
"size": "8MB",
"speedup": -2.3
},
{
"operation": "Sum",
"shape": "10000x10000",
"shape0": 10000,
"shape1": 10000,
"size": "800MB",
"speedup": -1.3
},
{
"operation": "Standard Deviation",
"shape": "1000x1000",
"shape0": 1000,
"shape1": 1000,
"size": "8MB",
"speedup": 1.1
},
{
"operation": "Standard Deviation",
"shape": "10000x10000",
"shape0": 10000,
"shape1": 10000,
"size": "800MB",
"speedup": 3.5
},
{
"operation": "Elementwise",
"shape": "1000x1000",
"shape0": 1000,
"shape1": 1000,
"size": "8MB",
"speedup": 150
},
{
"operation": "Elementwise",
"shape": "10000x10000",
"shape0": 10000,
"shape1": 10000,
"size": "800MB",
"speedup": 270
},
{
"operation": "Matrix Multiplication",
"shape": "1000x1000",
"shape0": 1000,
"shape1": 1000,
"size": "8MB",
"speedup": 18
},
{
"operation": "Matrix Multiplication",
"shape": "10000x10000",
"shape0": 10000,
"shape1": 10000,
"size": "800MB",
"speedup": 11
},
{
"operation": "Array Slicing",
"shape": "1000x1000",
"shape0": 1000,
"shape1": 1000,
"size": "8MB",
"speedup": 3.6
},
{
"operation": "Array Slicing",
"shape": "10000x10000",
"shape0": 10000,
"shape1": 10000,
"size": "800MB",
"speedup": 190
},
{
"operation": "SVD",
"shape": "1000x1000",
"shape0": 1000,
"shape1": 1000,
"size": "8MB",
"speedup": 1.5
},
{
"operation": "SVD",
"shape": "10000x1000",
"shape0": 10000,
"shape1": 1000,
"size": "800MB",
"speedup": 17
},
{
"operation": "Stencil",
"shape": "1000x1000",
"shape0": 1000,
"shape1": 1000,
"size": "8MB",
"speedup": 5.1
},
{
"operation": "Stencil",
"shape": "10000x10000",
"shape0": 10000,
"shape1": 10000,
"size": "800MB",
"speedup": 150
}
]
},
"height": 500,
"layer": [
{
"encoding": {
"color": {
"field": "size",
"scale": {
"domain": [
"800MB",
"8MB"
],
"range": [
"#7306ff",
"#36c9dd"
]
},
"type": "nominal"
},
"x": {
"field": "operation",
"sort": {
"field": "speedup",
"op": "sum",
"order": "descending"
},
"type": "nominal"
},
"y": {
"field": "speedup",
"scale": {
"type": "symlog"
},
"stack": null,
"type": "quantitative"
}
},
"mark": {
"fontSize": 18,
"opacity": 0.7,
"type": "bar"
}
},
{
"encoding": {
"color": {
"field": "size",
"scale": {
"domain": [
"800MB",
"8MB"
],
"range": [
"#7306ff",
"#36c9dd"
]
},
"type": "nominal"
},
"text": {
"field": "speedup",
"type": "quantitative"
},
"x": {
"field": "operation",
"sort": {
"field": "speedup",
"op": "sum",
"order": "descending"
},
"type": "nominal"
},
"y": {
"field": "speedup",
"scale": {
"type": "symlog"
},
"stack": null,
"type": "quantitative"
}
},
"mark": {
"dy": -5,
"type": "text"
}
}
],
"width": 500
},
"image/png": "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CIsAhJCtpnsF0yolSpQ6VEQdoaxNRewd1srds2nfz08++ptZ/dtvv90eeeSRLvfZI38d94/ZXGg+16UQms+jy76RAAmQAAksFAIUQjlHmkIoJzhWIwESIAESIIGACFAI5RwMCqGc4FiNBEiABEiABAIiQCGUczAohHKCYzUSIAESIAESCIgAhVDOwaAQygmO1UiABEiABEggIAIUQjkHg0IoJzhWIwESIAESIIGACFAI5RwMCqGc4FiNBEiABEiABAIiQCGUczAohHKCYzUSIAESIAESCIgAhVDOwaAQygmO1UiABEiABEggIAIUQjkHg0IoJzhWIwESIAESIIGACFAI5RwMCqGc4FiNBEiABEiABAIiQCGUczAohHKCYzUSIAESIAESCIgAhVDOwaAQygmO1UiABEiABEggIAIUQjkHg0IoJzhWIwESIAESIIGACFAI5RwMCqGc4FiNBEiABEiABAIiQCGUczAohHKCYzUSIAESIAESCIgAhVDOwaAQygmO1UiABEiABEggIAIUQjkHg0IoJzhWIwESIAESIIGACFAI5RwMCqGc4FiNBEiABEiABAIiQCGUczAohHKCYzUSIAESIAESCIgAhVDOwaAQygmO1UiABEiABEggIAIUQjkHg0IoJzhWIwESIAESIIGACFAI5RwMCqGc4FiNBEiABEiABAIiQCGUczAohHKCYzUSIAESIAESCIgAhVDOwaAQygmO1UiABEiABEggIAIUQjkHg0IoJzhWIwESIAESIIGACFAI5RwMCqGc4FiNBEiABEiABAIiQCGUczAohHKCYzUSIAESIAESCIgAhVDOwaAQygmO1UiABEiABEggIAIUQjkHg0IoJzhWIwESIAESIIGACFAI5RwMCqGc4FiNBEiABEiABAIiQCGUczAohHKCYzUSIAESIAESCIgAhVDOwaAQygmO1UiABEiABEggIAIUQjkHg0IoJzhWIwESIAESIIGACFAI5RwMCqGc4FiNBEiABEiABAIiQCGUczAohHKCYzUSIAESIAESCIgAhVDOwaAQygmO1UiABEiABEggIAIUQjkHg0IoJzhWIwESIAESIIGACFAI5RwMCqGc4FiNBEiABEiABAIiQCGUczAohHKCYzUSIAESIAESCIgAhVDOwaAQygmO1UiABEiABEggIAIUQjkHg0IoJzhWIwESIAESIIGACFAI5RwMCqGc4FiNBEiABEiABAIiQCGUczAohHKCYzUSIAESIAESCIgAhVDOwaAQygmO1UiABEiABEggIAIUQjkHg0IoJzhWIwESIAESIIGACFAI5RwMCqGc4FiNBEiABEiABAIiQCGUczAohHKCYzUSIAESIAESCIgAhVDOwaAQygmO1UiABEiABEggIAIUQjkHg0IoJzhWIwESIAESIIGACFAI5RwMCqGc4FiNBEiABEiABAIiQCGUczAohHKCYzUSIAESIAESCIgAhVDOwaAQygmO1UiABEiABEggIAIUQjkHg0IoJzhWIwESIAESIIGACFAI5RwMCqGc4FiNBEiABEiABAIiQCGUczAohHKCYzUSIAESIAESCIgAhVDOwaAQygmO1UiABEiABEggIAIUQjkHg0IoJzhWIwESIAESIIGACFAI5RwMCqGc4FiNBEiABEiABAIiQCGUczAohHKCYzUSIAESIAESCIgAhVDOwaAQygmO1UiABEiABEggIAIUQjkHg0IoJzhWIwESIAESIIGACFAI5RwMCqGc4FiNBEiABEiABAIiQCGUczAohHKCYzUSIAESIAESCIgAhVDOwaAQygmO1UiABEiABEggIAIUQjkHg0IoJzhWIwESIAESIIGACFAI5RwMCqGc4FiNBEiABEiABAIiQCGUczAohHKCYzUSIAESIAESCIgAhVDOwaAQygmO1UiABEiABEggIAIUQjkHg0IoJzhWIwESIAESIIGACFAI5RwMCqGc4FiNBEiABEiABAIiQCGUczAohHKCYzUSIAESIAESCIgAhVDOwaAQygmO1UiABEiABEggIAIUQjkHg0IoJzhWIwESIAESIIGACFAI5RwMCqGc4FiNBEiABEiABAIiQCGUczAohHKCYzUSIAESIAESCIgAhVDOwaAQygmO1UiABEiABEggIAIUQjkHg0IoJzhWIwESIAESIIGACFAI5RwMCqGc4FiNBEiABEiABAIiQCGUczAohHKCYzUSIAESIAESCIgAhVDOwaAQygmO1UiABEiABEggIAIUQjkHg0IoJzhWIwESIAESIIGACFAI5RwMCqGc4FiNBEiABEiABAIiQCGUczAohHKCYzUSIAESIAESCIgAhVDOwaAQygmO1UiABEiABEggIAIUQjkHg0IoJzhWIwESIAESIIGACFAI5RwM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",
"text/plain": [
"<VegaLite 3 object>\n",
"\n",
"If you see this message, it means the renderer has not been properly enabled\n",
"for the frontend that you are using. For more information, see\n",
"https://altair-viz.github.io/user_guide/troubleshooting.html\n"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import altair as alt\n",
"\n",
"rapids_color = {\n",
" 'text': '#666666',\n",
" 'fg_1': '#7306ff',\n",
" 'fg_2': '#36c9dd',\n",
" 'bg_1': '#fefefe',\n",
"}\n",
"\n",
"#domain=['large', 'small']\n",
"domain=['800MB', '8MB']\n",
"range_=[rapids_color['fg_1'], rapids_color['fg_2']]\n",
"\n",
"bars = alt.Chart(speedups_df).mark_bar(opacity=0.7, fontSize=18).encode(\n",
" x=alt.X(\n",
" 'operation',\n",
" sort=alt.EncodingSortField(\n",
" field='speedup',\n",
" op='sum',\n",
" order='descending'\n",
" )\n",
" ),\n",
" y=alt.Y(\n",
" 'speedup',\n",
" scale=alt.Scale(\n",
" type='symlog'\n",
" ),\n",
" stack=None,\n",
" ),\n",
" color=alt.Color(\n",
" 'size:N',\n",
" scale=alt.Scale(\n",
" domain=domain,\n",
" range=range_\n",
" )\n",
" )\n",
")\n",
"\n",
"text = bars.mark_text(dy = -5).encode(\n",
" text='speedup'\n",
")\n",
"\n",
"(bars + text).configure(\n",
" text=alt.TextConfig(fontSize=18),\n",
").configure_axis(\n",
" labelFontSize=20,\n",
" labelColor=rapids_color['text'],\n",
" titleFontSize=20,\n",
" titleColor=rapids_color['text'],\n",
").configure_axisX(\n",
" labelAngle=-30,\n",
").configure_legend(\n",
" titleFontSize=18,\n",
" titleColor=rapids_color['text'],\n",
" labelFontSize=18,\n",
" labelColor=rapids_color['text'],\n",
" strokeColor='gray',\n",
" fillColor=rapids_color['bg_1'],\n",
" padding=10,\n",
" orient='top-right'\n",
").properties(height=500, width=500)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.vegalite.v3+json": {
"$schema": "https://vega.github.io/schema/vega-lite/v3.3.0.json",
"config": {
"axis": {
"grid": false,
"labelColor": "#666666",
"labelFontSize": 20,
"titleColor": "#666666",
"titleFontSize": 20
},
"axisX": {
"labelAngle": -30,
"labelColor": "#666666",
"labelFontSize": 0,
"titleColor": "#666666",
"titleFontSize": 0
},
"header": {
"labelAngle": -20,
"labelColor": "#666666",
"labelFontSize": 20,
"titleColor": "#666666",
"titleFontSize": 20
},
"legend": {
"fillColor": "#fefefe",
"labelColor": "#666666",
"labelFontSize": 18,
"padding": 10,
"strokeColor": "gray",
"titleColor": "#666666",
"titleFontSize": 18
},
"mark": {
"tooltip": null
},
"view": {
"height": 300,
"width": 400
}
},
"data": {
"name": "data-6c7e591ed15f79936c47b771854fb363"
},
"datasets": {
"data-6c7e591ed15f79936c47b771854fb363": [
{
"operation": "FFT",
"shape": "1000x1000",
"shape0": 1000,
"shape1": 1000,
"size": "8MB",
"speedup": 5.3
},
{
"operation": "FFT",
"shape": "10000x10000",
"shape0": 10000,
"shape1": 10000,
"size": "800MB",
"speedup": 210
},
{
"operation": "Sum",
"shape": "1000x1000",
"shape0": 1000,
"shape1": 1000,
"size": "8MB",
"speedup": -2.3
},
{
"operation": "Sum",
"shape": "10000x10000",
"shape0": 10000,
"shape1": 10000,
"size": "800MB",
"speedup": -1.3
},
{
"operation": "Standard Deviation",
"shape": "1000x1000",
"shape0": 1000,
"shape1": 1000,
"size": "8MB",
"speedup": 1.1
},
{
"operation": "Standard Deviation",
"shape": "10000x10000",
"shape0": 10000,
"shape1": 10000,
"size": "800MB",
"speedup": 3.5
},
{
"operation": "Elementwise",
"shape": "1000x1000",
"shape0": 1000,
"shape1": 1000,
"size": "8MB",
"speedup": 150
},
{
"operation": "Elementwise",
"shape": "10000x10000",
"shape0": 10000,
"shape1": 10000,
"size": "800MB",
"speedup": 270
},
{
"operation": "Matrix Multiplication",
"shape": "1000x1000",
"shape0": 1000,
"shape1": 1000,
"size": "8MB",
"speedup": 18
},
{
"operation": "Matrix Multiplication",
"shape": "10000x10000",
"shape0": 10000,
"shape1": 10000,
"size": "800MB",
"speedup": 11
},
{
"operation": "Array Slicing",
"shape": "1000x1000",
"shape0": 1000,
"shape1": 1000,
"size": "8MB",
"speedup": 3.6
},
{
"operation": "Array Slicing",
"shape": "10000x10000",
"shape0": 10000,
"shape1": 10000,
"size": "800MB",
"speedup": 190
},
{
"operation": "SVD",
"shape": "1000x1000",
"shape0": 1000,
"shape1": 1000,
"size": "8MB",
"speedup": 1.5
},
{
"operation": "SVD",
"shape": "10000x1000",
"shape0": 10000,
"shape1": 1000,
"size": "800MB",
"speedup": 17
},
{
"operation": "Stencil",
"shape": "1000x1000",
"shape0": 1000,
"shape1": 1000,
"size": "8MB",
"speedup": 5.1
},
{
"operation": "Stencil",
"shape": "10000x10000",
"shape0": 10000,
"shape1": 10000,
"size": "800MB",
"speedup": 150
}
]
},
"facet": {
"column": {
"field": "operation",
"sort": {
"field": "speedup",
"op": "sum",
"order": "descending"
},
"title": "Operation",
"type": "nominal"
}
},
"spec": {
"layer": [
{
"encoding": {
"color": {
"field": "size",
"scale": {
"domain": [
"800MB",
"8MB"
],
"range": [
"#7306ff",
"#36c9dd"
]
},
"title": "Array Size",
"type": "nominal"
},
"x": {
"field": "size",
"type": "nominal"
},
"y": {
"axis": {
"tickCount": 23,
"title": "GPU Speedup Over CPU"
},
"field": "speedup",
"scale": {
"type": "symlog"
},
"stack": null,
"type": "quantitative"
}
},
"height": 500,
"mark": {
"fontSize": 18,
"opacity": 1,
"type": "bar"
},
"width": 80
},
{
"layer": [
{
"encoding": {
"color": {
"field": "size",
"scale": {
"domain": [
"800MB",
"8MB"
],
"range": [
"#7306ff",
"#36c9dd"
]
},
"title": "Array Size",
"type": "nominal"
},
"text": {
"field": "speedup",
"type": "quantitative"
},
"x": {
"field": "size",
"type": "nominal"
},
"y": {
"axis": {
"tickCount": 23,
"title": "GPU Speedup Over CPU"
},
"field": "speedup",
"scale": {
"type": "symlog"
},
"stack": null,
"type": "quantitative"
}
},
"height": 500,
"mark": {
"dy": -5,
"type": "text"
},
"width": 80
},
{
"encoding": {
"color": {
"field": "size",
"scale": {
"domain": [
"800MB",
"8MB"
],
"range": [
"#7306ff",
"#36c9dd"
]
},
"title": "Array Size",
"type": "nominal"
},
"text": {
"field": "speedup",
"type": "quantitative"
},
"x": {
"field": "size",
"type": "nominal"
},
"y": {
"axis": {
"tickCount": 23,
"title": "GPU Speedup Over CPU"
},
"field": "speedup",
"scale": {
"type": "symlog"
},
"stack": null,
"type": "quantitative"
}
},
"height": 500,
"mark": {
"dy": 7,
"type": "text"
},
"width": 80
}
]
}
]
}
},
"image/png": "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Onlft3d/qgtFwKeu93707o+qqvd1e/enulAEfOp670fv/qiqel+3d39UXaTbTAJNCfih3W4fLn8VnpndbWbzx8C9pyiKi8p/a7fbf2FmP1mODSH8pZkdiTH+58V5ryiK4g8GWTLvB4N3f1StvK/buz/VhSLgU9d7P3r3R1XV+7q9+1NdKAI+db33o3d/VFW9r9u7P6ou0m0mgUYE/E6n84QY481rIY4x/uHMzMxLFwP+OjN7r5k9c9m8+Rjj1TMzM69cS6vufy8/GI74wLm6fHr3V9c6V+p4X7d3f6oLRcCnrvd+9O6Pqqr3dXv3p7pQBHzqeu9H7/6oqnpft3d/VF2k20wCjQj4VdBecMEFDxkfHz93YWHhm61W6++KojhSRU9zRUAEREAEREAEREAEREAEREAERMAjgaEP+B6hy5MIiIAIiIAIiIAIiIAIiIAIiIAI1E1AAb9uotITAREQAREQAREQAREQAREQAREQgeNAQAH/OEDXS4qACIiACIiACIiACIiACIiACIhA3QQU8OsmKj0REAEREAEREAEREAEREAEREAEROA4EFPCPA3S9pAiIgAiIgAiIgAiIgAiIgAiIgAjUTUABv26i0hMBERABERABERABERABERABERCB40BAAf84QNdLioAIiIAIiIAIiIAIiIAIiIAIiEDdBBTw6yYqPREQAREQAREQAREQAREQAREQARE4DgQU8I8DdL2kCIiACIiACIiACIiACIiACIiACNRN4P8HXSZ2Sy35+asAAAAASUVORK5CYII=",
"text/plain": [
"<VegaLite 3 object>\n",
"\n",
"If you see this message, it means the renderer has not been properly enabled\n",
"for the frontend that you are using. For more information, see\n",
"https://altair-viz.github.io/user_guide/troubleshooting.html\n"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import altair as alt\n",
"\n",
"rapids_color = {\n",
" 'text': '#666666',\n",
" 'fg_1': '#7306ff',\n",
" 'fg_2': '#36c9dd',\n",
" 'bg_1': '#fefefe',\n",
"}\n",
"\n",
"domain=['800MB', '8MB']\n",
"range_=[rapids_color['fg_1'], rapids_color['fg_2']]\n",
"\n",
"bars = alt.Chart(speedups_df).mark_bar(opacity=1.0, fontSize=18).encode(\n",
" x=alt.X(\n",
" 'size',\n",
" ),\n",
" y=alt.Y(\n",
" 'speedup',\n",
" scale=alt.Scale(\n",
" type='symlog',\n",
" #domain=(-100, 1000),\n",
" #domain=(-100, 300),\n",
" #rangeStep=100\n",
" ),\n",
" axis=alt.Axis(\n",
" title='GPU Speedup Over CPU',\n",
" tickCount=23\n",
" ),\n",
" stack=None,\n",
" ),\n",
" color=alt.Color(\n",
" 'size:N',\n",
" title='Array Size',\n",
" scale=alt.Scale(\n",
" domain=domain,\n",
" range=range_\n",
" )\n",
" ),\n",
").properties(height=500, width=80)\n",
"\n",
"text = bars.mark_text(\n",
" dy=-5,\n",
").encode(\n",
" text='speedup'\n",
")\n",
"\n",
"text_neg = bars.mark_text(\n",
" dy=7,\n",
").encode(\n",
" text='speedup'\n",
")\n",
"\n",
"text = text + text_neg\n",
"\n",
"chart = alt.layer(\n",
" bars,\n",
" text,\n",
" data=speedups_df\n",
").facet(\n",
" column=alt.Column(\n",
" 'operation',\n",
" title='Operation',\n",
" sort=alt.EncodingSortField(\n",
" field='speedup',\n",
" op='sum',\n",
" order='descending'\n",
" )\n",
" )\n",
").configure_header(\n",
" labelFontSize=20,\n",
" labelColor=rapids_color['text'],\n",
" titleFontSize=20,\n",
" titleColor=rapids_color['text'],\n",
" labelAngle=-20,\n",
").configure_axis(\n",
" labelFontSize=20,\n",
" labelColor=rapids_color['text'],\n",
" titleFontSize=20,\n",
" titleColor=rapids_color['text'],\n",
" grid=False,\n",
").configure_axisX(\n",
" labelAngle=-30,\n",
" labelFontSize=0,\n",
" labelColor=rapids_color['text'],\n",
" titleFontSize=0,\n",
" titleColor=rapids_color['text'],\n",
").configure_legend(\n",
" titleFontSize=18,\n",
" titleColor=rapids_color['text'],\n",
" labelFontSize=18,\n",
" labelColor=rapids_color['text'],\n",
" strokeColor='gray',\n",
" fillColor=rapids_color['bg_1'],\n",
" padding=10,\n",
")\n",
"\n",
"chart"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"chart.save('speedup.html')"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"# speedups_df.to_csv(\"array_speedup.csv\")"
]
}
],
"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.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment