{ "cells": [ { "cell_type": "markdown", "id": "60736944-f728-4729-9275-0c55fa2b29ea", "metadata": {}, "source": [ "# Multiprocessing on GPU\n", "\n", "In this tutorial, the idea is to parallelized the reading of several HDF5 files in different processes and to perform the azimuthal integration on the GPU together with the Bitshuffle-LZ decompression.\n", "\n", "The size of the problem is 1000 files containing 1000 frames each of 4Mpix. That's one million frames. Reduced data are 1000x1000x1000 in single precision float.\n", "\n", "This is an extreme case where we will try how to use all resources of the computer, so the first thing to do is to determine the topology of the computer:\n", "* AC922 computer from IBM with power9 processors.\n", "* 2 processors, 2x16 cores. Two cores share the L3-cache\n", "* 2 GPUs which can be accessed either via POCL or via the nvidia driver (the later is broken).\n", "\n", "**Disclaimer:**\n", "* We use `multiprocess` instead of the `multiprocessing` library to be able to demonstrate the precedure with the jupuyter notebook.\n", "* We use `SharedArray` to provide a natural way of sharing the result array in memory between processes." ] }, { "cell_type": "code", "execution_count": 1, "id": "64ae7c41-c094-4b79-96ec-020bff748f40", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Failed to open /tmp/topo.png for writing (File exists)\n" ] }, { "data": { "image/png": "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ixfvv//+YcOGFRcXX7169a233vrxxx8nTpx46623VlRU1NfXv/zyy+3atUtNTf3222+db/Ljjz/+6le/qqysrKure+yxx3r27NmxY8eYmBghxLhx4zZv3pyZmXnu3LkZM2bcf//9ffv2dfls//79NYsfgI6Vl5e7rEh/+MMfevbsOWnSJCHEq6++2r59+7Fjx06aNCk5OTkvLy8mJmbSpEnPP//8+fPnly1bdssttwjJKldYWChdgjZt2vTGG28IIcLDw//4xz8ePXrU5TVhYWEuI2nTpo3LSgjIyOXGOnLkyDVr1nz88cfdu3fv1q1bQkKCEKKurm7u3LmFhYU9evR45ZVX2rVrp9uh/s///E9FRcXVq1dnzpz5s5/9TJNxAgBgaNfcuQcG/v9vjPj5+d166607duwQQpw/f37Dhg3z5s1btmyZEMJutwshampq6uvra2pqunfvXl5ezn4fAAAAANA8fibeS8XFxe+///5f/vKXL7/8slevXn/+85+FEGfOnJk6deqKFSt69+799ddfCyG+++67adOmvfHGG8nJyatWrZK+T1ZWVkxMTGZm5qZNm2699dZz586FhIQ4PtWjR49z584tWbKkU6dOH3/88ZgxY6SfVStcAMbjsiLdfffdGzZscHxq06ZNjt/O/c9//vPBBx/csmXLhQsXPvzww7Vr17766quvvfaacLfKSZeg77777vnnn3/vvfc2bdr07LPPCiHcLlPStRFQjsuN9dSpUx999NEXX3zx9ttvHzp0yPGawsLCSZMmZWZmhoeHu70762eor7322pdffvnFF1+89957ly9f1mqoAAAYlIc7d4fa2tpvvvkmKipKCPHMM8/MnTvX3///f8+kU6dO8+fPHz58eFpaWl1dnaOXZr8PAAAAAGgePxPvpdzc3OLi4ilTpgghqqurHT8/Gh4ebrPZhBB9+/YtKSkRQoSFhfXp00cIMXz48Keeekr6PgkJCa+99lqrVq1GjBjRv39/xz+0d2j8sfSI9LMA0JjLijR69Ojz58+fO3fuwoULHTt27NGjR3l5eXh4eGxsrBAiNjY2Ojra398/Pj6+uLhYuFvlevbs6XxzxxK0Z8+e9PT04OBgIUSnTp1EE8uUdG0ElONyY923b9/w4cMdP/Xu/KOtYWFhN910kxAiIyPD8Y9IdDvUP/3pT9u3bw8MDDx79ux3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ziORkZGPPPLIlClTHnzwwfj4+MDAQMdP6Do0/tjlyDPPPDNixIj/x96dhldZnwkD/2fFggUqILuAkEBUyhYWDyooAaq2KGituAyWuhBXXFpHWyEVLGrRsVaL26WjleIoFYuDKxQYNKRCeRFboNDiyCIgsiTUVMj2fkgH0ySEEE44Sfj9Png9uf/bfY4nH27uPM8ZNmxY6Y9JSUnz589fsmTJs88+O3HixKKiolp+KVCV/Pz8V155Zf78+Tk5OUlJSTNnzqz4Ua/461DWUfuo16NUAQAAAAA4XDrxAMeEFStWvP/++2eeeeaECRM++uija665JoRwySWXvP766//1X/913HHHde7cuU2bNlu3bi2dv3Xr1tatWx9YnpKSsnr16uLi4hDCj3/847lz5+7Zs6fcEenp6bt3796+ffvRek1QiQ8++KBp06Zt2rRJSEgYMWJE6aMdyn3UK/11KHU0P+r1KFUAAAAAAA6XTjzAMeGGG25YunTpkiVLnnjiiZ49ez799NMhhE2bNoUQVq9e/dZbb40ePTotLS03N3ft2rWFhYWvvfbaiBEjDizv2bNnu3btpk+fXlBQEELIy8ureMSf/vSnwsLCVq1aHa3XBJVo37796tWrd+/eXVJSsmTJkpNPPjlU+KhX+utQ6mh+1OtRqgAAAAAAHC7fE38IK5et/3D5ulhnUYle6am9+6fEOgug7srMzFyxYsWuXbsikcjEiRMvueSSinP+/d///a9//evxxx//wAMPnHDCCSGEadOmZWZm7tu378ILLyz3QOzHHnts6tSpkUjk61//+gknnDB16tTS+P79+88888wQwnHHHffwww8nJSXV/ouDg0pJSbnqqqtGjx4dFxd3yimnXHXVVaGyj3oVjtpHvR6lCgB1nModAACAOkgn/hA+XL5u7YqdgwYNinUi/yInJyeEdep5oAozZsyoNN6nT59XXnml9HrmzJnlRiORyMKFCytd+I1vfOOhhx4qF0xISNiwYcORZQpRNmHChAkTJpSNVPyolyr763DA0fyo16NUAaAuU7kDAABQB+nEH9qgQYNuueWWWGdR3p7962OdAgAAANQJKncAAADqGt8TDwAAAAAAAADRpBMPAAAAAAAAANGkEw8AAAAAAAAA0aQTDwAAAAAAAADRlBjrBAA4Ijk5ObFOIfpycnJ69G0R6yyo6+rgh/9g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RUVFRV27dh06dOiQIUOuvfba3NzcEEK/fv0ikUgkEhk2bNjBFt566639+vUbOXLkwSYsXbp02LBhZ5111vTp00sjTz755IgRIyZNmlSd5QAAAAAAAADUHp342pWUlLRo0aJFixY1adLk2WefDSEkJCRkZ2dnZ2cvWLDgYKsuvfTS55577mCjJSUld911169+9auFCxe+9957K1asCCG8+OKLc+bMuffeew+5HAAAAAAAAIBalRjrBOqxN99888knnywqKkpJSbn//vtzc3PHjh07dOjQzZs379+/f8aMGYmJ/3x74+LiBg8evGTJkoqb7Nix43vf+97gwYN3795dVFT00EMPNW7ceODAgZ988smBOXl5eTfeeOOePXsKCwsnTpzYvn37Zs2ade/ePYQwevTot956a+7cudu3b7/66qvHjh07atSocssBAAAAAAAAOJrcE19DmzdvfuGFF15++eXXX3/9pJNOeumll0IImzZtuuqqq5544olOnTq98847ByYXFBQsWLAgJSUlhFBUVHT22WePHDnyN7/5Tenoxo0bx48f/9hjj/Xq1euZZ56peNa7777bvXv3uXPnvvHGG4MHD96+fXubNm1Kh9q2bbt9+/asrKzmzZvPmjVr1KhRtf7KAQAAAAAAAKiSe+JrKCcnZ/PmzePGjQshfPnll6effnoIoXPnzh06dAghdO3adcuWLSGE/fv3n3nmmfHx8enp6ePHjw8h/O53v+vQocOmTZvGjRuXmpraqVOnjh07dunSJYRwzjnnTJkypeJZp5122qOPPpqUlJSRkdG3b9+SkpIDQ2WvAQAAAAAAAKgLdOJrbsiQIVOnTj3w444dO8o+jr6wsDCEkJycXO6h9KWt+o4dO2ZkZKxatapTp06lM0MIBQUFlR7UvXv31157beHChdOmTcvIyDjjjDO2bt1aOrR169bWrVtH+5UBAAAAAAAAUHOeTl9DAwcOnD9//saNG0MIeXl5pReHlJubu3PnzhDCzp07Fy9e3KNHjxDCli1bli9fHkKYM2fOgAEDKq7atm1bkyZNxowZc80116xevTotLS03N3ft2rWFhYWvvfbaiBEjovnCAACA/9/e3UZXVV0LA14JISiIoDXyYdCEr4jAoAMjSATJ4FsFBWwVLFbaoSK2CmivvVSLQaCABYoWAcWvalFUuCAVQU0FhQGI3NTbenm1VkQIBUklAd4qCUnO++O0eTOSEIgcgcDz/NpZe6615p7HP47J2hsAAAAAjo0z8d9QixYtJk2adMcddxQXFyckJEyYMKFVq1ZHnLVnz5477rjjq6++qlu37k033ZSRkZGXl9e2bdslS5ZMmDAhOTl59uzZIYTRo0fn5OTs3bs3IyNj7NixjRs3njVrVp06derVqzdlypT4+PipU6eOHj26sLBw8ODB6enpFXapMP2GG274VkoAAAAAAAAAQFV04r+5vn379u3bt/zIihUrohc/+MEPohcfffRR+YA2bdr88Y9/rLBOnTp1pk6dWn5k3rx5FWIqHHzPyMhYvXp1+ZFNmzZVMx0AAAAAAACA48bb6QEAAAAAAAAglnTiT7CkpKSyk/QAAAAAAAAAnAJ04gEAAAAAAAAglnTiAQAAAAAAACCWdOIBAAAAAAAAIJYSTnQCtcDGjRtPdAoxtnHjxos7f+dEZwEAAAAAAABwatKJP4JO6W1D+GtB0ScnOpFYurjzdzqltz3RWQAAAAAAAACcmnTij+C7l7X57mVtTnQWAAAAAAAAANQavhMPAAAAAAAAALGkEw8AAAAAAAAAsaQTDwAAAAAAAACxpBMPAAAAAAAAALGUcKITOLl88P4nIaw40VmcpD54/5OMnh1PdBYAAAAAAAAAJzud+P8vPaPdiU7hpJbRs6MSAQAAAAAAAByRTvz/d1lGu8t0mgEAAAAAAAA4Nr4TDwAAAAAAAACxpBMPAAAAAAAAALGkEw8AAAAAAAAAsaQTDwAAAAAAAACxlFDl6Pvr/0+Y8V/HORUAAACggvfX/59r+nU80VkAAAAANVNFJz4zM/O4pwEAAABU4Zp+Hf1/OgAAANQ6VXfi/U8+AAAAAAAAAHwzvhMPAAAAAAAAALGkEw8AAAAAAAAAsaQTDwAAAAAAAACxpBMPAAAAAAAAALGUUHlozZo1a9asOe6Z1FaZmZmZmZnlRxSwRioXEAAAAAAAAKBWq7oTv2rVqssvv/z4Z1PrbNy4MYRQuROvgEepygICAAAAAAAA1GpVdOJDCJdffvmYMWOOcyqnEgUEAAAAAAAAOG35TjwAAAAAAAAAxJJOPAAAAAAAAADEkk48AAAAAAAAAMSSTjwAAAAAAAAAxJJOPAAAAAAAAADEkk48AAAAAAAAAMSSTjwAAAAAAAAAxNJJ0Ynfv39/nz59otcbNmzo3bv3lVdeOWPGjAphCxYsePrpp0MI48aNu/TSS/v373+8Ez1Z1aiAu3btGjFiREZGRmZm5nPPPXfckwUAAAAAAAA4xZ0UnfgykUhk/Pjxc+fOXb169bp163JycqoMGzZs2DPPPHOcc6sVjrKAd9999/r165csWTJ//vxPPvnkOCcJAAAAAAAAcGpLqFH0okWLnn322UgkcvXVV48ZMyYvL+/GG2+84oor8vPzS0pKZs6cWb9+/ZUrVz7++OMlJSVt2rSZNm3avn37hg8fnpmZmZubW1RUNG/evHr16r3++utz5swJIaSkpMydO7ds/S1btjRq1CgtLS2EMGTIkFWrVnXu3Pnpp59+8cUXmzRpcv7553fo0CGE0LVr188//zymdThOToYCNmvWrFmzZiGE73znO6mpqXv27GnTps2JKggAAAAAAADAqacGnfitW7c+8cQTr776ar169YYPH56ent62bdvt27c/9dRTqamp8+fPf/LJJ4cOHfrcc8+9/PLLiYmJs2fPXrRo0VVXXbVjx46RI0cmJydPnDjxzTff7NSp0/Tp0xcvXpyUlFRQUFB+iy+++KJp06bR62bNmuXk5Hz66acvvPDC8uXLQwjXXXddtBNfS51sBfzss88+++yz7373u8ezCAAAAAAAAACnvBp04jdv3tyrV6+GDRuGEAYOHLhp06a2bdu2aNEiNTU1hNCrV69JkyY1b948Nzf3lltuCSEcPHiwW7duIYSUlJTk5OQQQqtWrXbu3FlYWNi7d++kpKQQQuPGjctvEYlEKlxHN61fv34IobZ/GP6kKuD+/ft/8pOf/OpXv2rQoMG3/+gAAAAAAAAAp5GavZ2+suLi4ujFoUOHohc9e/acPHlyWUBeXl5Cwr92iYuLKy4ujkQicXFxVa7WtGnTXbt2Ra937drVpEmTEELZ9Lp16x5jtiehE1LAwsLC22+//Uc/+lFmZmZsHwcAAAAAAACA+KMPTU9PX7169YEDB4qKil577bWuXbuGEHbu3Ll58+YQwtKlS7t06dK1a9fs7Ozt27eHEPbv3x+9qCAas2fPnhDC3r17y99q167dvn37Pvroo+Li4mXLlvXr1y89PX3Dhg0lJSWlpaVr1649lkc94U6SApaUlNx11109e/b8/ve/fxyeGgAAAAAAAOB0U4Mz8S1btrz11luvv/76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AAAAIJbiLrroopSUlBOdBgAAAAAAAACcCrZt25aQkpKSmZl5ojMBAAAAAAAAgFPBmjVrEjIzM7Oysk50JgAAAAAAAABwKsjKyvKdeAAAAAAAAACIJZ14AAAAAAAAAIglnXgAAAAAAAAAiCWdeAAAAAAAAACIJZ14AAAAAAAAAIglnXgAAAAAAAAAiCWdeAAAAAAAAACIpao78cXFxWeccUbZnzNmzPjP//zPo1nuq6++mjt37jfOpqCg4OKLLz7K4IcffviSSy75yU9+UmHTESNGJCUldejQoWwkKSkpOTk5OTk5LS3tG+cGAAAAAAAAAEcjxmfij7ET37BhwxdeeOEog+fOnfvee+899thjFTa97bbbXn/99fKRderUyc3Nzc3N/fjjj79xbgAAAAAAAABwNGrciV+wYEHHjh07dOgwceLEEEJBQUG/fv0uvfTSTp06LVu27KGHHvrss88yMzMfeOCBEMKBAwdKSkrK5lYIDiG88sornTp16tSp0/e+971o/E033VRlZIV977rrrr///e+DBg164YUXKmzas2fPc845JybVAQAAAAAAAICaSjjcjcLCwpSUlOj1/v37b7/99hDCxx9//Otf//r9998/44wzMjMzr7jiip07d3bs2HHmzJkhhAMHDnTv3v3tt99es2ZNdGK3bt2effbZ9PT06J+vvvpq+eCtW7f+/Oc/X79+fdOmTffu3Vt+9wqRlff97W9/+8orr0Q36tevX/lNKyspKWnTpk1iYuLdd989atSob1gqAAAAAAAAADgKhz0TX69evW3/9otf/CI6uG7duoEDBzZq1KhevXrDhg179913O3fuvHTp0vHjx69fv75hw4YVFnnmmWfKf5q9QvA777wzaNCgpk2bhhDOPffc8hMrRFbet0YP+f7773/yySevvfbazJkz161bV6O5AAAAAAAAAFAjx/qd+I4dO27atKldu3b33Xffww8/XOHuZZddVr49XyE4EonExcV9g2VrKnq4PzU19dprr928efMxrgYAAAAAAAAA1ahZJ7579+4rVqzYt29fYWHhokWLevbsmZub27Bhwx/+8Ic/+9nP/vSnP5111lkHDhwoi3/rrbfy8/PL/qwQnJmZuXz58l27doUQ8vLyym9UIbLyvuWDK2xaQX5+/p49e0IIe/bsWblyZceOHWv0yAAAAAAAAABQI4f9TnyV0tLS7r333m7dukUikWHDhvXu3XvZsmW//OUv69Spc8YZZzz++ONnnHFGv379OnTo0Ldv39/85jfjxo0r/534zZs3lw9u2bLltGnT+vbtG0Jo167dK6+8UrZRhcjK+5bPqsKmQ4cO3bBhwz/+8Y/k5OSJEyd269ZtyJAh//f//t/ExMRRo0ZVmAsAAAAAAAAAsRX34IMPZmVlneg0AAAAAAAAAOBUkJWVdazfiQcAAAAAAAAAytOJBwAAAAAAAIBY0okHAAAAAAAAgFjSiQcAAAAAAACAWNKJBwAAAAAAAIBYqroTX1xcHB8f37p164suuqhjx46zZ88uLS2tMvKrr76aO3fu0e9XXFwcFxf3ox/9KPrn119/3bBhw2HDhtU07xDCiBEjkpKSOnToUH6wtLT08ssv7969e+VN77333uifM2bMyMrKqtFeO3bs6NOnT3JycqtWrebMmRMdXL16dVpaWmpq6v33319lTJWzylSYXlpa2qVLl5SUlIsuuuhnP/tZJBKp/mGrfPzD1SEpKSk5OTk5OTktLa1CZaI/dMuWLa+77rr8/Pyj/IH27t17yy23NG/evGXLllddddWWLVuiE5P/7Z577oleNG7cuGHDhtHrbdu2HX3NAQAAAAAAAGqpw56JT0xM/Nvf/vb555//4Q9/ePHFF6dMmVJlWE078SGEs88+Oycnp6ioKITw2muvtWzZskbTy9x2222vv/56hcHHH3+8ygXPPPPMxYsX/+Mf//hme4UQJkyYkJubu2HDhmnTpm3ZsiUSidx6662LFy/+5JNP3nrrrfXr11eOqXIkqvL0+Pj45cuXb9u27eOPP16/fv0bb7xR/cNW+fiHq0OdOnVyc3Nzc3M//vjjCpHRH/rTTz9t2LDhb37zm3B0P9BNN93UvHnz7du3b9269Ze//OXWrVtDCPXq1cv9t1mzZkUvsrKyRo0aFb1OSUk5ymoDAAAAAAAA1F5Hfjt9SkrKvHnzfvvb30b/7NevX+fOnTt06PDss8+GEB566KHPPvssMzPzgQceCCEsXry4S5cunTt3vvnmmwsLC0MIBw4cKCkpKb9gXFxcv379op3ml1566cYbbyy7tWDBgo4dO3bo0GHixIkhhN27d1988cXjxo0bMmTINddcc/DgwfLr9OzZ85xzzik/smfPnpdeeuknP/lJ5adITEy89dZbo53mw23385//vOxfFWRlZc2cObMsskWLFldeeWUI4fzzz09LS/v73//+wQcfnHvuuR07dkxISLj55pv/67/+q3JM5ZGyBStPDyE0bdo0hFBaWlr2BoKy6lV+2MojZcHV1OFw4uLievfu/be//S1U+wNF5eTk/O1vf5syZUpCQkIIISMjY+DAgUe/FwAAAAAAAMCp7ai+E9+pU6f8/Pwvv/wyhLBo0aKcnJz333//0Ucf3b9//4QJE1JTU9esWTN58uRt27bNmTNn7dq1OTk5LVu2XLBgQQihW7duf/rTnyosOGzYsEWLFh04cGDHjh2XXHJJdPDjjz/+9a9/vW7duv/+7/9etWpVdnZ2COGzzz4bM2bM0qVLW7VqtWzZsurzvPfeeydPnlynTp0q7951113PP//8vn37DrfdsGHDXnrppejdV1555YYbbqi8yF//+te//vWvXbt23blz5wUXXBAdbNGixc6dOyvHVDNyuOnt27f/zne+07Fjx/79+x+ueodTFly5DiUlJW3atGnfvv3jjz9e5dyioqI//OEPZb9FlT9QmQ8//LBz587x8RX/4yksLEz5t6effvoo0wYAAAAAAAA4xSQcTVAkEin7bPljjz22atWqhISEHTt2bN26NTk5uSxszZo127Zti7aQv/766169eoUQnnnmmQrfJg8hXHrppVu2bHnxxRevvfbassF169YNHDiwUaNGIYRhw4a9++67HTp0aN26dfSV5hdffHH1XxlfvXp1fHx89+7dN27cWGVA48aNR4wY8eijj5555plVbvfQQw/t2bPn73//e15e3rnnntuiRYsKKxQUFHz/+99/4oknGjZsWP477mVH2CvEHG4kWtIqp//v//5vQUHB0KFD33vvvcsvv7zK6h1ONLjKOrz//vspKSmfffZZ//7927dvX/b9+PDv9nl0ytixY6ODVf5A5VX4jH1UvXr1fAkeAAAAAAAA4Kg68f/zP/9z7rnnfuc733nzzTfXr1+/evXqxMTEAQMGVHhdfCQSGTBgwPz588sPXnbZZVWuefXVV48fP/6999778MMPq9m6bt260Yv4+Pji4uJqItevX5+dnZ2SklJYWJifn3/ttdcuX768Qsw999xz6aWX/vjHPz7cIt/73vcWL168e/fuYcOGVbh18ODB6667bsyYMVdddVUIITk5OTc3N3orNzc3esC9QkyVI1FVTo9q3Lhx//79X3vttcsvv/xw1atSNLjKOkT/NUNqauq11167efPm8p34Cu3zsiJX8wO1b99+4sSJpaWllY/FAwAAAAAAAHDkTuqnn35655133nXXXSGE/Pz81NTUxMTEL774Yv369SGEs84668CBA9HIzMzM5cuXb926NYRQUFDw6aefhhDeeuut/Pz8ysvedtttkyZNat26ddlI9+7dV6xYsW/fvsLCwkWLFvXs2bNGT3L//ffv3Llz27ZtS5cuTU9Pr9yGDyGcd955119//VNPPXW47aJvZV+yZMn3vve98hNLSkpuvPHGAQMGlHXxO3XqtHfv3j//+c+HDh36/e9/P3jw4MoxlUfKVJ6+Z8+ezz//PFq6V199tV27dtVUr0rR4Mp1yM/P37NnTwhhz549K1eu7Nix49GsVvkHKnPppZe2atXqF7/4RVFRUQhh/fr1f/jDH44ySQAAAAAAAIBT3mE78dGXll9wwQXXXXfdsGHD7r///hDCoEGDtm3bdsMNN4wfP75z584hhDPOOKNfv34dOnQYN25camrqvHnzhgwZcskll/Ts2XPHjh0hhHHjxkVb8hWkpKTceeed5UfS0tLuvffebt26ffe73x0wYEDv3r2rT33o0KE9evT4+OOPk5OTo831o/Ef//Ef0bZ0ldu1b9/+wIEDF154YZMmTcrPeuedd5YvX/7YY48lJycnJycvXbo0Pj5+wYIF119/fcuWLXv16tW9e/fKMZVHyhasPL2goGDQoEHNmzfv1KlTZmbmTTfdVL56lR+28sjhSr1r164ePXpccMEFXbt2vfnmm49Y2KjKP1B5L7744s6dO1u0aHHRRRdNmTKlbdu2IYTCwsLkfxs1atTR7AIAAAAAAABw6ol78MEHs7KyTnQaAAAAAAAAAHAqyMrK8p1vAAAAAAAAAIglnXgAAAAAAAAAiCWdeAAAAAAAAACIJZ14AAAAAAAAAIglnXgAAAAAAAAAiKW4nj17ZmZmnug0AAAAAAAAAOBUsGbNmv8HYXEylMsiZ6sAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%matplotlib inline\n", "# use `widget` for better user experience; `inline` is for documentation generation\n", "\n", "#Topology of the computer:\n", "!lstopo /tmp/topo.png\n", "from IPython.display import Image\n", "Image(filename='/tmp/topo.png') " ] }, { "cell_type": "code", "execution_count": 2, "id": "8dd653b1-3040-4f08-9bfe-1b1178cfcde4", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "pyFAI version: 0.22.0-dev10\n", "OpenCL devices:\n", "[0] Portable Computing Language: (0,0) pthread-POWER9, altivec supported, (0,1) Tesla V100-SXM2-32GB, (0,2) Tesla V100-SXM2-32GB\n", "[1] NVIDIA CUDA: (1,0) Tesla V100-SXM2-32GB, (1,1) Tesla V100-SXM2-32GB\n" ] } ], "source": [ "import os\n", "import glob\n", "import concurrent\n", "import time\n", "import json\n", "from matplotlib.pyplot import subplots\n", "import multiprocess\n", "from multiprocess import Process, Value, Array\n", "if \"mpctx\" in globals():\n", " mpctx = multiprocess.get_context('spawn')\n", "else:\n", " multiprocess.set_start_method('spawn')\n", " mpctx = multiprocess.get_context('spawn')\n", "import numpy\n", "import hdf5plugin\n", "import h5py\n", "import pyFAI\n", "print(\"pyFAI version: \", pyFAI.version)\n", "import SharedArray\n", "from silx.opencl import ocl\n", "from silx.opencl.codec.bitshuffle_lz4 import BitshuffleLz4\n", "import inspect\n", "import collections\n", "Item = collections.namedtuple(\"Item\", \"index filename\")\n", "MAIN_PROCESS = multiprocess.parent_process() is None\n", "print(ocl)" ] }, { "cell_type": "code", "execution_count": 3, "id": "7c6aaba7-377d-4478-87b4-45b1b85c7ce8", "metadata": {}, "outputs": [], "source": [ "#This cell contains the parameters for all the processing\n", "params = {\n", " \"DEVICES\": [[0,1],[0,2]],\n", " \"NWORKERS\": 4,\n", " \"FRAME_PER_FILE\": 1000,\n", " \"NFILES\" : 1000,\n", " \"NBINS\" : 1000,\n", " \"DETECTOR\":\"Eiger_4M\",\n", " \"pathname\" : \"/tmp/big_%04d.h5\",\n", " \"pathmask\" : \"/tmp/big_????.h5\",\n", " \"dtype\" : \"float32\",\n", " \"SHARED_NAME\" : \"shm://multigpu\",\n", " \"array_shape\" : [1000, 1000, 1000],\n", " }\n", "with open(\"param.json\", \"w\") as w: w.write(json.dumps(params, indent=2))\n", "for k,v in params.items():\n", " globals()[k] = v" ] }, { "cell_type": "code", "execution_count": 4, "id": "0f58cd73-78b5-4b6e-a6cd-2d553d35f3fd", "metadata": {}, "outputs": [], "source": [ "def build_integrator(detector=DETECTOR):\n", " \"Build an azimuthal integrator with a dummy geometry\"\n", " geo = {\"detector\": detector, \n", " \"wavelength\": 1e-10, \n", " \"rot3\":0} #work around a bug https://github.com/silx-kit/pyFAI/pull/1749\n", " ai = pyFAI.load(geo)\n", " return ai" ] }, { "cell_type": "code", "execution_count": 5, "id": "1d4a5604-4c2d-4bdb-aea8-63114f9e43c4", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['/tmp/big_0000.h5',\n", " '/tmp/big_0001.h5',\n", " '/tmp/big_0002.h5',\n", " '/tmp/big_0003.h5',\n", " '/tmp/big_0004.h5']" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Generate a set of files\n", "def generate_one_frame(ai, unit=\"q_nm^-1\", dtype=\"uint32\"):\n", " \"\"\"Prepare a frame with little count so that it compresses well\"\"\"\n", " qmax = ai.array_from_unit(unit=unit).max()\n", " q = numpy.linspace(0, qmax, 100)\n", " img = ai.calcfrom1d(q, 100/(1+q*q))\n", " frame = numpy.random.poisson(img).astype(dtype)\n", " return frame\n", "\n", "def generate_files(img):\n", " cmp = hdf5plugin.Bitshuffle()\n", " filename = pathname%0\n", " shape = img.shape\n", " with h5py.File(filename, \"w\") as h:\n", " ds = h.create_dataset(\"data\", shape=(FRAME_PER_FILE,)+shape, chunks=(1,)+shape, dtype=img.dtype, **cmp) \n", " for i in range(FRAME_PER_FILE):\n", " ds[i] = img + i%500 #Each frame has a different value to prevent caching effects\n", " res = [filename]\n", " for i in range(1, NFILES):\n", " new_file = pathname%i\n", " os.link(filename,new_file)\n", " res.append(new_file)\n", " return res\n", "\n", "# Create a set of files with dummy data in them:\n", "if len(glob.glob(pathmask)) == NFILES: \n", " input_files = glob.glob(pathmask)\n", " input_files.sort()\n", "else:\n", " for f in glob.glob(pathmask):\n", " os.remove(f)\n", " input_files = generate_files(generate_one_frame(build_integrator(DETECTOR)))\n", "input_files[:5]" ] }, { "cell_type": "code", "execution_count": 6, "id": "89a5845f-1ce6-41e9-9b1a-4ce532058d4d", "metadata": {}, "outputs": [], "source": [ "#This is allows to create and destroy shared numpy arrays\n", "\n", "def create_shared_array(shape, dtype=\"float32\", name=SHARED_NAME, create=False):\n", " if create:\n", " ary = SharedArray.create(name, shape, dtype=dtype)\n", " else:\n", " ary = SharedArray.attach(name)\n", " return ary\n", "\n", "def release_shared(name=SHARED_NAME):\n", " if MAIN_PROCESS:\n", " SharedArray.delete(name)\n", "\n", "result_array = create_shared_array(array_shape, dtype, SHARED_NAME, create=True)" ] }, { "cell_type": "code", "execution_count": 7, "id": "dc73341d-85d8-4a60-9085-3a556312a8a2", "metadata": {}, "outputs": [], "source": [ "def worker(rank, queue, shm_name, counter):\n", " \"\"\"Function representing one worker, used in a pool of worker.\n", " \n", " :param rank: integer, index of the worker.\n", " :param queue: input queue, expects Item with index and name of the file to process\n", " :param shm_name: name of the output shared memory to put integrated intensities\n", " :param counter: decremented when quits\n", " :return: nothing, used in a process.\n", " \"\"\"\n", " def new_engine(engine, wg):\n", " \"Change workgroup size of an engine\"\n", " return engine.__class__((engine._data, engine._indices, engine._indptr), \n", " engine.size, empty=engine.empty, unit=engine.unit, \n", " bin_centers=engine.bin_centers, azim_centers = engine.azim_centers, \n", " ctx=engine.ctx, block_size=wg)\n", " #imports:\n", " import pyFAI\n", " import numpy\n", " import SharedArray\n", " from silx.opencl.codec.bitshuffle_lz4 import BitshuffleLz4\n", " import h5py\n", " import json\n", " import sys\n", " #load parameters:\n", " for k,v in json.load(open(\"param.json\")).items():\n", " globals()[k] = v\n", " #Start up the integrator:\n", " ai = pyFAI.load({\"detector\": DETECTOR, \n", " \"wavelength\": 1e-10, \n", " \"rot3\":0})\n", " blank = numpy.zeros(ai.detector.shape, dtype=\"uint32\")\n", " method = (\"full\", \"csr\", \"opencl\", DEVICES[rank%len(DEVICES)])\n", " res = ai.integrate1d(blank, NBINS, method=method)\n", " omega = ai.solidAngleArray()\n", " engine = ai.engines[res.method].engine\n", " \n", " omega_crc = engine.on_device[\"solidangle\"]\n", " engine = new_engine(engine, 512)\n", " \n", " gpu_decompressor = BitshuffleLz4(2000000, blank.size, dtype=blank.dtype, ctx=engine.ctx)\n", " gpu_decompressor.block_size = 128\n", " result_array = SharedArray.attach(SHARED_NAME)\n", " with counter.get_lock():\n", " counter.value += 1\n", " #Worker is ready !\n", " while True:\n", " item = queue.get()\n", " index = item.index\n", " if index<0: \n", " with counter.get_lock():\n", " counter.value -= 1\n", " return\n", " with h5py.File(item.filename, \"r\") as h5:\n", " ds = h5[\"data\"]\n", " for i in range(ds.id.get_num_chunks()):\n", " filter_mask, chunk = ds.id.read_direct_chunk(ds.id.get_chunk_info(i).chunk_offset)\n", " if filter_mask == 0:\n", " # print(f\"{rank}: process frame #{i}\")\n", " dec = gpu_decompressor(chunk)\n", " intensity = engine.integrate_ng(dec, solidangle=omega, solidangle_checksum=omega_crc).intensity\n", " result_array[index, i,:] = intensity.astype(dtype)" ] }, { "cell_type": "code", "execution_count": 8, "id": "c80957b0-fbe3-4692-8536-a56e321b5ba4", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[,\n", " ,\n", " ,\n", " ]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def build_pool(nbprocess, queue, shm_name, counter):\n", " \"\"\"Build a pool of processes with workers, and starts them\"\"\"\n", " pool = []\n", " for i in range(nbprocess):\n", " process = Process(target=worker, name=f\"worker_{i:02d}\", args=(i, queue, shm_name, counter))\n", " process.start()\n", " pool.append(process)\n", " while counter.value" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = subplots()\n", "ax.imshow(result_array[:,:,5])" ] }, { "cell_type": "code", "execution_count": 13, "id": "7db29db0-f29c-41c1-89da-b53f93ef09db", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Performances: 1475.043 fps\n" ] } ], "source": [ "print(f\"Performances: {NFILES*FRAME_PER_FILE/run_time:.3f} fps\")" ] }, { "cell_type": "code", "execution_count": 14, "id": "c584fc0b-6109-4b4e-a87b-b29ca3d87289", "metadata": {}, "outputs": [], "source": [ "release_shared(SHARED_NAME)" ] }, { "cell_type": "markdown", "id": "e104df72-0507-4e71-935d-d4d2389dea49", "metadata": {}, "source": [ "## Conclusion\n", "It is possible to reach 1500 frames per second on a dual-GPU computer. In this configuration, a million of Eiger4M frames are reduced in something close to 10mn.\n", "\n", "Energy considerations for the reduction of one million frames:\n", "* Each of the 2 GPU was consuming 140 W (over the 300W TDP of one GPU) over 700s which represents 200 kJ (55.5 Wh) for the data reduction.\n", "* The equivalent processing using only a 6-core workstation takes half a day (40682 s) and consumes 1561 kJ (433 Wh).\n", "* Processing on GPUs is thus close to 8x more efficient than processing on CPU only.\n", "\n", "Other considerations:\n", "* Here reading from disk is fast enough, no need to put more than 2 processes per GPU. If reading is much slower, more can be beneficial.\n", "* Since the output array is in shared memory, one needs to have enough RAM for hosting it." ] } ], "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.10.12" } }, "nbformat": 4, "nbformat_minor": 5 }