From 3b547e4a29cbb2c3125d5366efd6a5f8b6c2bf57 Mon Sep 17 00:00:00 2001 From: Francesc Alted Date: Mon, 22 Jan 2024 14:28:19 +0100 Subject: [PATCH] First bench with truncate_int16 --- bench/encode-itrunc.ipynb | 392 ++++++++++++++++++++++++++++++++++++++ blosc2/c-blosc2 | 2 +- 2 files changed, 393 insertions(+), 1 deletion(-) create mode 100644 bench/encode-itrunc.ipynb diff --git a/bench/encode-itrunc.ipynb b/bench/encode-itrunc.ipynb new file mode 100644 index 00000000..116e463b --- /dev/null +++ b/bench/encode-itrunc.ipynb @@ -0,0 +1,392 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "8421af3afa8cffac", + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-22T13:22:31.006363Z", + "start_time": "2024-01-22T13:22:30.991829Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": "'\\nBenchmark for compressing blocked images with grok codec.\\n\\nData can be downloaded from: http://www.silx.org/pub/nabu/data/compression/lung_raw_2000-2100.h5\\n'" + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "##############################################################################\n", + "# blosc2_grok: Grok (JPEG2000 codec) plugin for Blosc2\n", + "#\n", + "# Copyright (c) 2023 The Blosc Development Team \n", + "# https://blosc.org\n", + "# License: GNU Affero General Public License v3.0 (see LICENSE.txt)\n", + "##############################################################################\n", + "\n", + "\"\"\"\n", + "Benchmark for compressing blocked images with grok codec.\n", + "\n", + "Data can be downloaded from: http://www.silx.org/pub/nabu/data/compression/lung_raw_2000-2100.h5\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "32b99b422b688870", + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-22T13:22:33.287099Z", + "start_time": "2024-01-22T13:22:31.000482Z" + } + }, + "outputs": [], + "source": [ + "import h5py\n", + "import blosc2\n", + "import blosc2_grok\n", + "import numpy as np\n", + "import hdf5plugin\n", + "from skimage.metrics import structural_similarity as ssim\n", + "from tqdm import tqdm\n", + "import matplotlib.pyplot as plt\n", + "from time import time\n", + "import itertools\n", + "from PIL import Image\n", + "import io" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "61a2ee3655e7c08b", + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-22T13:22:33.294610Z", + "start_time": "2024-01-22T13:22:33.290009Z" + } + }, + "outputs": [], + "source": [ + "# Params for the frame iterator\n", + "verbose = False\n", + "all_frames = False\n", + "meas = {} # dictionary for storing the measurements" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "ecf05d785411c2f9", + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-22T13:22:33.305445Z", + "start_time": "2024-01-22T13:22:33.297208Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Compressing dataset of (100, 1024, 2048) images ...\n" + ] + } + ], + "source": [ + "# Open the dataset\n", + "data_dir = '/Users/faltet/Downloads/'\n", + "f = h5py.File(f'{data_dir}/lung_raw_2000-2100.h5', 'r')\n", + "dset = f['/data']\n", + "if all_frames:\n", + " nframes = dset.shape[0]\n", + "else:\n", + " nframes = 1\n", + "#images_per_chunk = 16\n", + "images_per_chunk = 4\n", + "blocks = (1, dset.shape[1], dset.shape[2])\n", + "print(f\"Compressing dataset of {dset.shape} images ...\")" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "bdc2562ffeb12a75", + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-22T13:22:33.311491Z", + "start_time": "2024-01-22T13:22:33.304093Z" + } + }, + "outputs": [], + "source": [ + "# Define the compression and decompression parameters for Blosc2.\n", + "# Disable the filters and the splitmode, because these don't work with grok.\n", + "cparams = {\n", + " 'codec': blosc2.Codec.GROK,\n", + " #'nthreads': 16, # when commented out, this is automatically set to the number of cores\n", + " 'filters': [],\n", + " 'splitmode': blosc2.SplitMode.NEVER_SPLIT,\n", + "}\n", + "dparams = {\n", + " 'nthreads': 4,\n", + "}\n", + "\n", + "# Set the default parameters that will be used by grok\n", + "grok_params = {\n", + " 'cod_format': blosc2_grok.GrkFileFmt.GRK_FMT_JP2,\n", + " 'num_threads': 0,\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "outputs": [], + "source": [ + "def iter_images(verbose=False):\n", + " ret = itertools.chain([1], range(4, images_per_chunk + 1, 4))\n", + " if verbose:\n", + " ret = tqdm(ret)\n", + " return ret" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-01-22T13:22:33.323274Z", + "start_time": "2024-01-22T13:22:33.308486Z" + } + }, + "id": "35481eab1f45e4b5" + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "4dbe1b1ad467f468", + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-22T13:22:43.270788Z", + "start_time": "2024-01-22T13:22:33.316136Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Quality mode: rates-1\n", + "Quality mode: rates-4\n" + ] + } + ], + "source": [ + "for nimages in iter_images(verbose):\n", + " # Compress the dataset with different compression ratios\n", + " quality_mode = f\"rates-{nimages}\"\n", + " print(f\"Quality mode: {quality_mode}\")\n", + " ssims = []\n", + " cratios = []\n", + " times = []\n", + " range_vals = list(range(1, 11))\n", + " range_vals_str = \"range(1, 11)\"\n", + " for cratio in range_vals:\n", + " if verbose:\n", + " print(f\"Compressing with cratio={cratio}x ...\")\n", + " blosc2_grok.set_params_defaults(\n", + " quality_mode=quality_mode.split(\"-\")[0],\n", + " quality_layers=np.array([cratio], dtype=np.float64),\n", + " **grok_params)\n", + " \n", + " # Iterate over the frames\n", + " iter_frames = tqdm(range(0, nframes, nimages)) if verbose else range(0, nframes, nimages)\n", + " for i in iter_frames:\n", + " im = dset[i:i+nimages, ...]\n", + " # Transform the numpy array into a blosc2 array. This is where compression happens.\n", + " t0 = time()\n", + " chunks = (nimages, dset.shape[1], dset.shape[2])\n", + " b2im = blosc2.asarray(im, chunks=chunks, blocks=blocks, cparams=cparams)\n", + " if i == 0:\n", + " times.append(time() - t0)\n", + " cratios.append(b2im.schunk.cratio)\n", + " # Compare with the original image\n", + " im2 = b2im[:]\n", + " ssim_ = ssim(im[0], im2[0], data_range=im[0].max() - im[0].min())\n", + " ssims.append(ssim_)\n", + " if verbose:\n", + " print(f\"SSIM: {ssim_}\")\n", + " meas[quality_mode] = {'ssims': ssims, 'cratios': cratios, 'times': times}" + ] + }, + { + "cell_type": "code", + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Quality mode: itrunc16-1\n", + "Quality mode: itrunc16-4\n" + ] + } + ], + "source": [ + "for nimages in iter_images(verbose):\n", + " # Compress the dataset with different compression ratios\n", + " quality_mode = f\"itrunc16-{nimages}\"\n", + " print(f\"Quality mode: {quality_mode}\")\n", + " ssims = []\n", + " cratios = []\n", + " times = []\n", + " range_vals = list(range(15, 5, -1))\n", + " range_vals_str = \"range(15, 5, -1)\"\n", + " for nbits in range_vals:\n", + " if verbose:\n", + " print(f\"Compressing with itrunc={nbits}x ...\")\n", + " cparams2 = blosc2.cparams_dflts.copy()\n", + " cparams2['codec'] = blosc2.Codec.ZSTD\n", + " cparams2['clevel'] = 3\n", + " cparams2['filters'] = [blosc2.Filter.TRUNC_PREC, blosc2.Filter.SHUFFLE]\n", + " cparams2['filters_meta'] = [nbits, 1]\n", + " \n", + " # Iterate over the frames\n", + " iter_frames = tqdm(range(0, nframes, nimages)) if verbose else range(0, nframes, nimages)\n", + " for i in iter_frames:\n", + " im = dset[i:i+nimages, ...]\n", + " # Transform the numpy array into a blosc2 array. This is where compression happens.\n", + " t0 = time()\n", + " chunks = (nimages, dset.shape[1], dset.shape[2])\n", + " b2im = blosc2.asarray(im, chunks=chunks, blocks=blocks, cparams=cparams2)\n", + " if i == 0:\n", + " times.append(time() - t0)\n", + " cratios.append(b2im.schunk.cratio)\n", + " # Compare with the original image\n", + " im2 = b2im[:]\n", + " ssim_ = ssim(im[0], im2[0], data_range=im[0].max() - im[0].min())\n", + " ssims.append(ssim_)\n", + " if verbose:\n", + " print(f\"SSIM: {ssim_}\")\n", + " meas[quality_mode] = {'ssims': ssims, 'cratios': cratios, 'times': times}" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-01-22T13:22:48.659351Z", + "start_time": "2024-01-22T13:22:43.271377Z" + } + }, + "id": "ddd9f879ad4a479b", + "execution_count": 8 + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "9d72d5b5fd273ce7", + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-22T13:22:48.888437Z", + "start_time": "2024-01-22T13:22:48.661088Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": "" + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "text/plain": "
", + "image/png": "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" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "for nimages in iter_images():\n", + " for mode in [\"rates\", \"itrunc16\"]:\n", + " quality_mode = f\"{mode}-{nimages}\"\n", + " marker = 'x-' if mode == \"rates\" else 'o-'\n", + " plt.plot(meas[quality_mode]['cratios'], meas[quality_mode]['ssims'], marker, label=quality_mode)\n", + "plt.title(f'SSIM vs cratio ({quality_mode.split(\"-\")[0]}: {range_vals_str})')\n", + "plt.xlabel('Compression ratio')\n", + "plt.ylabel('SSIM index')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "34909ee7500458c", + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-22T13:22:49.116687Z", + "start_time": "2024-01-22T13:22:48.899287Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": "" + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "text/plain": "
", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAACN/0lEQVR4nOzdd3xT1f/H8VeSNuluaemgUCh7L0H5AiogyBBBfuIAUUAQZcpSEb+KuCioIKIMccBXBTcqioMNgogMi0BljwLSUig0tKVpxv39kSY03S1tM/p58siD5ubm5pOmTd4959xzVIqiKAghhBBCeCi1swsQQgghhKhIEnaEEEII4dEk7AghhBDCo0nYEUIIIYRHk7AjhBBCCI8mYUcIIYQQHk3CjhBCCCE8moQdIYQQQng0CTtCCCGE8GgSdkSFGj58OLGxsc4uo0rp2rUrXbt2LddjWiwWWrRowWuvvWbftnz5clQqFadOnSrXxxLuJT09nYiICFasWOHsUlxaQkICXl5eHDhwIN9tgwYN4oEHHnBCVVWHhB1RaiqVqkSXzZs3O7tUj5WQkMDMmTMrLWh89tlnnDlzhvHjxxe536JFi1i+fHml1FQeXnvtNfr3709kZCQqlYqZM2cWuf8XX3xBx44d8ff3JyQkhE6dOrFx48bKKdZFvf322wQGBjJo0CD7tvPnz/Pss8/SrVs3AgMDi3w/6Nq1a4HvH7179y5zTcOHDy/wmE2aNCnzMQvz559/MnbsWNq1a4e3tzcqlarA/Zo1a0bfvn2ZMWNGvtumTZvGN998w759+8q9PmHl5ewChPv55JNPHK5//PHHrFu3Lt/2pk2b8v7772OxWCqzvCohISGBl156ia5du+ZrOVu7dm25P94bb7zBoEGDCA4Otm975JFHGDRoEDqdzr5t0aJFVK9eneHDh5d7DRXh+eefJyoqirZt2/Lrr78Wue/MmTN5+eWXue+++xg+fDhGo5EDBw5w7ty5SqrW9RiNRt5++20mT56MRqOxbz98+DBz5syhYcOGtGzZkh07dhR5nFq1ahEXF+ewLTo6+oZq0+l0fPDBBw7bcv/8lpeffvqJDz74gFatWlGvXj2OHDlS6L6jR4/mrrvu4vjx49SvX9++vW3btrRv3565c+fy8ccfl3uNAlCEuEHjxo1T5EfpxqSnp5dq/6+++koBlE2bNlVMQbns3btXAZT169cXu2/z5s2VLl26lOi4pX3OFeHkyZOKoihKSkqKAigvvvhigfvt2LFDUalUyrx58yq0nmvXrilms7lCH6M8rVq1SgGUY8eOOWzX6/XKpUuXFEUp/me1S5cuSvPmzcu1rmHDhin+/v7leszCJCUlKZmZmYqiFP9emJ2drVSrVk154YUX8t325ptvKv7+/srVq1crrNaqTLqxRIXKO2bn1KlTqFQq3nzzTRYuXEi9evXw8/OjZ8+enDlzBkVReOWVV6hVqxa+vr7cc889pKam5jvuzz//zG233Ya/vz+BgYH07duXgwcPFlnL7t27UalU/O9//8t326+//opKpeLHH38E4OrVq0yaNInY2Fh0Oh0RERHceeed7N27t9jnfO7cOUaOHEl0dDQ6nY66desyZswYsrOzgetjXbZs2cLYsWOJiIigVq1aAJw+fZqxY8fSuHFjfH19CQsL4/7773forlq+fDn3338/AN26dcvXbVjQmJ0LFy4wcuRIIiMj8fHxoXXr1gV+Hwry3XffodVquf322x225x2zExsby8GDB9myZYu9JlsdRT3nwsZ1zZw5M1+XgEqlYvz48Xz33Xe0aNECnU5H8+bN+eWXX/Ldv7jXwVZzScyfP5+oqCgmTpyIoiikp6cXum9iYiKHDh0q9pibN29GpVLx+eef8/zzz1OzZk38/PzQ6/Wkpqby1FNP0bJlSwICAggKCqJPnz75ujlsx/jyyy957bXXqFWrFj4+PnTv3p1jx47le0zb75yvry+33HILv/32W4E/LwaDgRdffJEGDRqg0+mIiYnhmWeewWAwOOz33XffERsb69BKARAYGEhoaGix34PcTCZTkd/XsjCbzej1+nI9Zl6RkZH4+vqWaF9vb2+6du3K999/n++2O++8k4yMDNatW1feJQqkG0s4yYoVK8jOzmbChAmkpqby+uuv88ADD3DHHXewefNmpk2bxrFjx3jnnXd46qmn+Oijj+z3/eSTTxg2bBi9evVizpw5ZGZmsnjxYm699Vb++uuvQj/A2rdvT7169fjyyy8ZNmyYw21ffPEF1apVo1evXoC1ufnrr79m/PjxNGvWjEuXLrFt2zb++ecfbrrppkKf17///sstt9zClStXePzxx2nSpAnnzp3j66+/JjMzE61Wa9937NixhIeHM2PGDDIyMgDYtWsXv//+O4MGDaJWrVqcOnWKxYsX07VrVxISEvDz8+P222/nySefZMGCBTz33HM0bdoUwP5/XteuXaNr164cO3aM8ePHU7duXb766iuGDx/OlStXmDhxYpGv1e+//06LFi3w9vYucr/58+czYcIEAgIC+O9//wtYPwhyK+g5l9a2bdtYtWoVY8eOJTAwkAULFjBw4EASExMJCwsDSvc6lMSGDRvo1KkTCxYs4NVXX+XSpUtERUXx3//+N984pqFDh7JlyxYURSnRsV955RW0Wi1PPfUUBoMBrVZLQkIC3333Hffffz9169YlOTmZ9957jy5dupCQkJCvi2f27Nmo1Wqeeuop0tLSeP311xkyZAg7d+6077N48WLGjx/PbbfdxuTJkzl16hQDBgygWrVq9uAJ1sHo/fv3Z9u2bTz++OM0bdqU/fv389Zbb3HkyBG+++47+76///57kb8PJXXkyBH8/f3Jzs4mMjKSUaNGMWPGjGJ/5oqSmZlJUFAQmZmZVKtWjcGDBzNnzhwCAgJuuN4b0a5dO77//nv0ej1BQUH27c2aNcPX15ft27fzf//3f06s0EM5uWVJeICimm6HDRum1KlTx3795MmTCqCEh4crV65csW+fPn26AiitW7dWjEajffvgwYMVrVarZGVlKYqiKFevXlVCQkKUUaNGOTxOUlKSEhwcnG97XtOnT1e8vb2V1NRU+zaDwaCEhIQoI0aMsG8LDg5Wxo0bV/yTz2Po0KGKWq1Wdu3ale82i8WiKIqiLFu2TAGUW2+9VTGZTA772JrDc9uxY4cCKB9//LF9W1FdA126dHHoSpo/f74CKJ9++ql9W3Z2ttKxY0clICBA0ev1RT6nWrVqKQMHDsy33fY8bF1BilJ4N1ZRzznvz4jNiy++mO/nClC0Wq1Dt8m+ffsUQHnnnXfs20ryOuRWVDdWamqqAihhYWFKQECA8sYbbyhffPGF0rt3bwVQlixZ4rB/ly5dStStu2nTJgVQ6tWrl+91z8rKyteddfLkSUWn0ykvv/xyvmM0bdpUMRgM9u1vv/22Aij79+9XFMX6Mx4WFqbcfPPNDr9fy5cvVwCH1+yTTz5R1Gq18ttvvzk8/pIlSxRA2b59u6IoimI0GhWVSqVMnTq1yOdZXDfWiBEjlJkzZyrffPON8vHHHyv9+/dXAOWBBx4o8rhFefbZZ5Vp06YpX3zxhfLZZ58pw4YNUwClc+fODs+/vJWkS3/lypUKoOzcuTPfbY0aNVL69OlTUeVVadKNJZzi/vvvdxgs2KFDBwAefvhhvLy8HLZnZ2fbB4GuW7eOK1euMHjwYC5evGi/aDQaOnTowKZNm4p83AcffBCj0ciqVavs29auXcuVK1d48MEH7dtCQkLYuXMn//77b4mfk8Vi4bvvvqNfv360b98+3+15u2RGjRrlMKgTcGgONxqNXLp0iQYNGhASElKiLrSC/PTTT0RFRTF48GD7Nm9vb5588knS09PZsmVLkfe/dOkS1apVK9Nj51XQcy6tHj16OHSbtGrViqCgIE6cOAGU/nUojq1r5dKlS3zwwQc89dRTPPDAA6xZs4ZmzZrx6quvOuy/efPmErfqAAwbNixfN4hOp0Ottr49m81mLl26REBAAI0bNy7w5+DRRx91aK267bbbAOzfk927d3Pp0iVGjRrl8Ps1ZMiQfK/tV199RdOmTWnSpInD79gdd9wBYP8dS01NRVGUG/7Z+PDDD3nxxRe59957eeSRR/j+++8ZNWoUX375JX/88UeZjhkXF8fs2bN54IEHGDRoEMuXL+e1115j+/btfP311zdU742yfb8uXrxY4G0FbRc3TsKOcIratWs7XLcFn5iYmAK3X758GYCjR48CcMcddxAeHu5wWbt2LRcuXCjycVu3bk2TJk344osv7Nu++OILqlevbn8zB3j99dc5cOAAMTEx3HLLLcycOdP+wVGYlJQU9Ho9LVq0KHI/m7p16+bbdu3aNWbMmEFMTAw6nY7q1asTHh7OlStXSEtLK9Fx8zp9+jQNGza0f3ja2Lq9Tp8+XewxSvPhXZSCnnNp5f3ZAeuHhO1npLSvQ3FsQcTb25v77rvPvl2tVvPggw9y9uxZEhMTy3z8gr4nFouFt956i4YNGzr8HPz9998F/hzk/Z7YPlBt3xPba9ygQQOH/by8vPJ1+x49epSDBw/m+/1q1KgRQL7fsfL62cht6tSpAKxfv77cjjl58mTUanWZjpmenk5SUpL9kpKSUuY6bN+vgkK3oiilDuOiZGTMjnCKwv66L2y77Q3Cdhr7J598QlRUVL79cv/VWpgHH3yQ1157jYsXLxIYGMjq1asZPHiww30feOABbrvtNr799lvWrl3LG2+8wZw5c1i1ahV9+vQp9jFKoqBBjRMmTGDZsmVMmjSJjh07EhwcjEqlYtCgQU47hT8sLMz+oXmjCnrOhb25m83mArcX9zNS3kJDQ/Hx8SEkJCTfY0dERADWUFFQCCuJgr4ns2bN4oUXXmDEiBG88sorhIaGolarmTRpUoE/B+X5PbFYLLRs2ZJ58+YVeLvtD5LQ0FBUKlW5/WwU9BgFnZxQVrYB/2U55ptvvslLL71kv16nTp0yz3Fl+35Vr169wNsaNmxYpuOKoknYEW7F1n0RERFBjx49ynSMBx98kJdeeolvvvmGyMhI9Hq9w4RoNjVq1GDs2LGMHTuWCxcucNNNN/Haa68VGnbCw8MJCgoqcIbUkvr6668ZNmwYc+fOtW/LysriypUrDvuV5q+/OnXq8Pfff2OxWBxad2xnDNWpU6fI+zdp0oSTJ0+W6LHK8ldptWrV8j0/KFmLU0HK43XITa1W06ZNG3bt2kV2drZDd5GtmzM8PLxcHsvm66+/plu3bnz44YcO269cuVLgh2RxbK/xsWPH6Natm327yWTi1KlTtGrVyr6tfv367Nu3j+7duxf5enp5eVG/fv0S/2yUhq0VtTy/r1evXuXixYtlOubQoUO59dZb7ddLevZVQU6ePIlarba3lNmYTCbOnDlD//79y3xsUTjpxhJupVevXgQFBTFr1iyMRmO+20vSvNy0aVNatmzJF198wRdffEGNGjUcTqs2m835ugoiIiKIjo7Od+ptbmq1mgEDBvDDDz+we/fufLeX5K9sjUaTb7933nknXyuHv78/QIEhIa+77rqLpKQkh647k8nEO++8Q0BAAF26dCny/h07duTAgQNFPvfcdZWkptzq169PWloaf//9t33b+fPn+fbbb0t1HJvyeB3yevDBBzGbzQ6n62dlZbFixQqaNWvmcHZUSU89L0pBPwdfffVVmScwbN++PWFhYbz//vuYTCb79hUrVuRrmXnggQc4d+4c77//fr7jXLt2zeEsuo4dOxb4PS4pvV6f7+dKURT7OCjb2ZGlkZWVxdWrV/Ntf+WVV1AUpUwzM9erV48ePXrYL507dy71MWz27NlD8+bN801wmJCQQFZWFp06dSrzsUXhpGVHuJWgoCAWL17MI488wk033cSgQYMIDw8nMTGRNWvW0LlzZ959991ij/Pggw8yY8YMfHx8GDlypEOLx9WrV6lVqxb33XcfrVu3JiAggPXr17Nr1y6HFpeCzJo1i7Vr19KlSxf7abvnz5/nq6++Ytu2bYSEhBR5/7vvvptPPvmE4OBgmjVrxo4dO1i/fr39lGqbNm3aoNFomDNnDmlpaeh0Ou644w57t0pujz/+OO+99x7Dhw9nz549xMbG8vXXX7N9+3bmz59PYGBgkTXdc889vPLKK2zZsoWePXsWuW+7du1YvHgxr776Kg0aNCAiIsJhLFRBBg0axLRp0/i///s/nnzySftUAo0aNSrzoOySvg6ffPIJp0+fJjMzE4CtW7faP2gfeeQRe4vIE088wQcffMC4ceM4cuQItWvXtt/3hx9+cHjs0p56XpC7776bl19+mUcffZROnTqxf/9+VqxYQb169cp0PK1Wy8yZM5kwYQJ33HEHDzzwAKdOnWL58uXUr1/foQXnkUce4csvv2T06NFs2rSJzp07YzabOXToEF9++SW//vqrfeD3PffcwyeffMKRI0fytVTYvo+2+a8++eQTtm3bBlhnrgbYu3cvgwcPZvDgwTRo0IBr167x7bffsn37dh5//PF8p7WrVCq6dOlS5FI0SUlJtG3blsGDB9uXh/j111/56aef6N27N/fcc4/D/rYxS2Xtljp9+rR99nhb8LM99zp16vDII4/Y9zUajfa5pvJat24dfn5+3HnnnWWqQxSj8k8AE56mLKeev/HGGw772U6h/eqrrxy2205ZznsK8aZNm5RevXopwcHBio+Pj1K/fn1l+PDhyu7du0tU89GjRxVAAZRt27Y53GYwGJSnn35aad26tRIYGKj4+/srrVu3VhYtWlSiY58+fVoZOnSoEh4eruh0OqVevXrKuHHj7KcGF/acFEVRLl++rDz66KNK9erVlYCAAKVXr17KoUOHlDp16ijDhg1z2Pf9999X6tWrp2g0GodTe/Oeeq4oipKcnGw/rlarVVq2bKksW7asRM9HURSlVatWysiRIx22FXTqeVJSktK3b18lMDDQ4ZTmop6zoijK2rVrlRYtWiharVZp3Lix8umnnxZ66nlBUwIU9P0p7nVQlOuniRd0yXuqdHJysjJs2DAlNDRU0el0SocOHZRffvklXy2lPfU878+8olhPPZ86dapSo0YNxdfXV+ncubOyY8eOfK9tYcew/Z7lfY0XLFig1KlTR9HpdMott9yibN++XWnXrp3Su3dvh/2ys7OVOXPmKM2b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" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "for nimages in iter_images():\n", + " chunks = (nimages, dset.shape[1], dset.shape[2])\n", + " sizeMB = np.prod(chunks) / 2**20\n", + " for mode in [\"rates\", \"itrunc16\"]:\n", + " quality_mode = f\"{mode}-{nimages}\"\n", + " marker = 'x-' if mode == \"rates\" else 'o-'\n", + " plt.plot(meas[quality_mode]['cratios'], sizeMB / meas[quality_mode]['times'], marker, label=quality_mode)\n", + "\n", + "plt.title(f'Time vs cratio ({quality_mode.split(\"-\")[0]}: {range_vals_str})')\n", + "plt.xlabel('cratio')\n", + "plt.ylabel('MB/s')\n", + "plt.ylim(0)\n", + "plt.legend()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.12.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/blosc2/c-blosc2 b/blosc2/c-blosc2 index e512ce0a..4e58362b 160000 --- a/blosc2/c-blosc2 +++ b/blosc2/c-blosc2 @@ -1 +1 @@ -Subproject commit e512ce0acbc66ccd69c11fd1aff3f39f9a25b79e +Subproject commit 4e58362b65eb45635c9b8d72afaf04cca5e118c6