From e55b459f4694fa3965f410c5dcc1e13c395e506c Mon Sep 17 00:00:00 2001 From: Logan Ward Date: Wed, 9 Oct 2024 11:31:34 -0400 Subject: [PATCH] Upload notebooks used in Table I --- .../evaluation-rates-by-task-and-scale.ipynb | 353 +++++++++++++----- .../figures/task-rates-by-scale.pdf | Bin 15932 -> 16914 bytes .../figures/task-rates-by-scale.png | Bin 68307 -> 71883 bytes .../get-runtimes.ipynb | 280 ++++++++++++++ 4 files changed, 546 insertions(+), 87 deletions(-) create mode 100644 scripts/1_analyze-hpc-performance/get-runtimes.ipynb diff --git a/scripts/1_analyze-hpc-performance/evaluation-rates-by-task-and-scale.ipynb b/scripts/1_analyze-hpc-performance/evaluation-rates-by-task-and-scale.ipynb index 2062a2c6..9cfb7dd1 100644 --- a/scripts/1_analyze-hpc-performance/evaluation-rates-by-task-and-scale.ipynb +++ b/scripts/1_analyze-hpc-performance/evaluation-rates-by-task-and-scale.ipynb @@ -19,10 +19,12 @@ "%matplotlib inline\n", "from matplotlib import pyplot as plt\n", "from scipy.stats import siegelslopes, linregress\n", + "from itertools import chain\n", "from pathlib import Path\n", "import pandas as pd\n", "import numpy as np\n", - "import json" + "import json\n", + "import re" ] }, { @@ -101,22 +103,12 @@ { "data": { "text/plain": [ - "[]" + "[]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" } ], "source": [ @@ -155,6 +147,58 @@ "The result is very linear, so we can use standard linear regression" ] }, + { + "cell_type": "markdown", + "id": "46afae55-f1d4-4aca-836c-d89807652346", + "metadata": {}, + "source": [ + "Determine the number which pass this step" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "2912c438-7c04-497b-a1ef-409bbebf1556", + "metadata": {}, + "outputs": [], + "source": [ + "process_re = re.compile(r'Received (\\d+) \\w+ ligands [\\w\\s]+, (\\d+) \\(')" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "f94e9039-1553-4304-8b10-d7f19c5df3dd", + "metadata": {}, + "outputs": [], + "source": [ + "total_made = total_valid = 0\n", + "with (path / 'run.log').open() as fp:\n", + " for line in fp:\n", + " if (group := process_re.search(line)) is not None:\n", + " made, valid = group.groups()\n", + " total_made += int(made)\n", + " total_valid += int(valid)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "9015dacb-d4c9-4335-b21f-2b6cdca440f5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Made 4946944 linkers, 1131063 (22.86%) are valid\n" + ] + } + ], + "source": [ + "print(f'Made {total_made} linkers, {total_valid} ({total_valid / total_made * 100:.2f}%) are valid')" + ] + }, { "cell_type": "markdown", "id": "63631c2f-2600-4206-9d06-491f53e39c56", @@ -166,7 +210,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 9, "id": "53f02307-e19e-497c-8208-f223dbfa236e", "metadata": {}, "outputs": [], @@ -202,7 +246,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 10, "id": "7dac1fa7-39fd-4cb6-995d-71cfa9b6a266", "metadata": {}, "outputs": [], @@ -212,7 +256,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 11, "id": "81b0589e-36b1-4a93-bf7d-e4a2da703718", "metadata": {}, "outputs": [ @@ -222,19 +266,9 @@ "Text(0, 0.5, 'Count')" ] }, - "execution_count": 8, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" } ], "source": [ @@ -247,6 +281,66 @@ "ax.set_ylabel('Count')" ] }, + { + "cell_type": "markdown", + "id": "2d820f58-3cbd-4963-8241-5b8a7507f11b", + "metadata": {}, + "source": [ + "Count the number made" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "2314cb13-344c-435a-b4da-c504111c6085", + "metadata": {}, + "outputs": [], + "source": [ + "assembled_re = re.compile(r'Created (\\d+) new MOFs')" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "601389e4-9691-4145-ab48-f8cb8ab8fb3c", + "metadata": {}, + "outputs": [], + "source": [ + "total_assembled = assembled[\"total\"].max()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "5dc322cf-eab3-4f6d-bcc6-9700c22da01a", + "metadata": {}, + "outputs": [], + "source": [ + "total_succeeded = 0\n", + "with (path / 'run.log').open() as fp:\n", + " for line in fp:\n", + " if (group := assembled_re.search(line)) is not None:\n", + " total_succeeded += int(group.groups()[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "292c858f-b670-42dd-8b33-cbb6791db23d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Assembled 818304 MOFs. 818304 (99.85%) passed quality control\n" + ] + } + ], + "source": [ + "print(f'Assembled {total_assembled} MOFs. {total_assembled} ({total_succeeded / total_assembled * 100:.2f}%) passed quality control')" + ] + }, { "cell_type": "markdown", "id": "ce06df78-d8bd-44c1-a11f-8e6144f60b0d", @@ -258,7 +352,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 16, "id": "9513428d-c10a-454c-a92b-24069de61a03", "metadata": {}, "outputs": [], @@ -277,10 +371,10 @@ " with open(path / 'simulation-results.json') as fp:\n", " for line in fp:\n", " record = json.loads(line)\n", - " if record['success'] and record['method'] == 'run_molecular_dynamics':\n", + " if record['method'] == 'run_molecular_dynamics':\n", " output.append({\n", " 'time': record['timestamp']['result_received'],\n", - " 'num_made': 1,\n", + " 'num_made': 1 if record['success'] else 0,\n", " })\n", " \n", " # Collect results\n", @@ -294,7 +388,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 17, "id": "39f7e846-1ef7-48d5-ba6b-4e556754f084", "metadata": {}, "outputs": [], @@ -304,7 +398,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 18, "id": "0bbceb8e-e8dd-4124-92f5-70da85f0eded", "metadata": {}, "outputs": [ @@ -314,19 +408,9 @@ "Text(0, 0.5, 'Count')" ] }, - "execution_count": 11, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" } ], "source": [ @@ -339,6 +423,43 @@ "ax.set_ylabel('Count')" ] }, + { + "cell_type": "markdown", + "id": "bd8ce7f2-4bf2-4d29-9a11-b0d6720a7680", + "metadata": {}, + "source": [ + "Count how many were attempted" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "012ee926-a4d5-44a0-a07a-154551e7d05b", + "metadata": {}, + "outputs": [], + "source": [ + "total_md_started = len(lammps)\n", + "total_md_success = lammps['total'].max()" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "a1d77c1d-4905-45c4-9467-bace514987f4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Attempted LAMMPS on 123702 (15.12%), succeeded on 70500 (8.62%)\n" + ] + } + ], + "source": [ + "print(f'Attempted LAMMPS on {total_md_started} ({total_md_started / total_assembled * 100:.2f}%), succeeded on {total_md_success} ({total_md_success / total_assembled * 100:.2f}%)')" + ] + }, { "cell_type": "markdown", "id": "7b811118-bfe3-4fae-b413-ca5eb8e7b41e", @@ -350,7 +471,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 21, "id": "99fdec5b-817e-453d-9f9a-1ddec2d351bb", "metadata": {}, "outputs": [], @@ -386,7 +507,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 22, "id": "1dc45a81-1296-423e-bd33-db900c08f5ef", "metadata": {}, "outputs": [], @@ -396,7 +517,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 23, "id": "7e27c7ba-5848-4e1f-846b-6d117faef65a", "metadata": {}, "outputs": [ @@ -406,19 +527,9 @@ "Text(0, 0.5, 'Count')" ] }, - "execution_count": 14, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" } ], "source": [ @@ -431,6 +542,32 @@ "ax.set_ylabel('Count')" ] }, + { + "cell_type": "markdown", + "id": "ac96e8a3-b4ef-4a02-b04e-3682a4b36cc0", + "metadata": {}, + "source": [ + "Count the screening fraction" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "83702c15-89d7-473c-989c-399e9101551e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Evaluated storage of 224 (0.03%)\n" + ] + } + ], + "source": [ + "print(f'Evaluated storage of {len(raspa)} ({len(raspa) / total_assembled *100:.2f}%)')" + ] + }, { "cell_type": "markdown", "id": "718030e1-f698-4fe3-ac51-6c104dc81b5b", @@ -442,7 +579,17 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 25, + "id": "97fc16c5-9f43-48ec-af90-5ceba9c4100e", + "metadata": {}, + "outputs": [], + "source": [ + "runs = list(chain(Path('../prod-runs/').glob('*-nodes'), Path('../prod-runs/').glob('*-nodes_repeat-*')))" + ] + }, + { + "cell_type": "code", + "execution_count": 26, "id": "475810a8-3e58-47a4-aa5c-3bfebb79c4ec", "metadata": {}, "outputs": [ @@ -467,6 +614,7 @@ " \n", " \n", " \n", + " name\n", " nodes\n", " DiffLinker-rate\n", " Assembly-rate\n", @@ -476,27 +624,57 @@ " \n", " \n", " \n", - " 1\n", + " 3\n", + " 32-nodes_repeat-1\n", + " 32\n", + " 5.998298e+04\n", + " 31655.763591\n", + " 1917.031667\n", + " 5.719428\n", + " \n", + " \n", + " 5\n", + " 32-nodes_repeat-2\n", + " 32\n", + " 7.880699e+04\n", + " 31354.873685\n", + " 1893.035318\n", + " 7.396966\n", + " \n", + " \n", + " 4\n", + " 64-nodes_repeat-1\n", " 64\n", " 1.801904e+05\n", " 30028.931713\n", - " 3557.010391\n", + " 3545.920710\n", " 17.054113\n", " \n", " \n", + " 1\n", + " 128-nodes\n", + " 128\n", + " 4.064778e+05\n", + " 60282.054454\n", + " 7018.797974\n", + " 32.367186\n", + " \n", + " \n", " 2\n", + " 256-nodes\n", " 256\n", - " 8.922647e+05\n", - " 150765.328746\n", - " 14065.025027\n", - " 62.023301\n", + " 8.792606e+05\n", + " 151548.181768\n", + " 14008.846510\n", + " 68.104150\n", " \n", " \n", " 0\n", + " 450-nodes\n", " 450\n", " 1.649134e+06\n", " 280278.829414\n", - " 24425.866886\n", + " 24401.898524\n", " 114.383164\n", " \n", " \n", @@ -504,22 +682,33 @@ "" ], "text/plain": [ - " nodes DiffLinker-rate Assembly-rate LAMMPS-rate CP2K+RASPA-rate\n", - "1 64 1.801904e+05 30028.931713 3557.010391 17.054113\n", - "2 256 8.922647e+05 150765.328746 14065.025027 62.023301\n", - "0 450 1.649134e+06 280278.829414 24425.866886 114.383164" + " name nodes DiffLinker-rate Assembly-rate LAMMPS-rate \\\n", + "3 32-nodes_repeat-1 32 5.998298e+04 31655.763591 1917.031667 \n", + "5 32-nodes_repeat-2 32 7.880699e+04 31354.873685 1893.035318 \n", + "4 64-nodes_repeat-1 64 1.801904e+05 30028.931713 3545.920710 \n", + "1 128-nodes 128 4.064778e+05 60282.054454 7018.797974 \n", + "2 256-nodes 256 8.792606e+05 151548.181768 14008.846510 \n", + "0 450-nodes 450 1.649134e+06 280278.829414 24401.898524 \n", + "\n", + " CP2K+RASPA-rate \n", + "3 5.719428 \n", + "5 7.396966 \n", + "4 17.054113 \n", + "1 32.367186 \n", + "2 68.104150 \n", + "0 114.383164 " ] }, - "execution_count": 15, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "summary = []\n", - "for path in Path('../prod-runs/').glob('*-nodes'):\n", + "for path in runs:\n", " nodes = int(path.name.split('-')[0])\n", - " me = {'nodes': nodes}\n", + " me = {'name': path.name, 'nodes': nodes}\n", "\n", " # Ones with linear regression\n", " for task, func in [\n", @@ -552,21 +741,10 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 27, "id": "2d084a1d-fa87-496a-a367-d1d3ad559583", "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "fig, ax = plt.subplots(figsize=(3.5, 1.7))\n", "\n", @@ -575,14 +753,15 @@ "for c in summary.columns:\n", " if not c.endswith('-rate'):\n", " continue\n", + " subset = summary.groupby('nodes')[c].mean()\n", " task = c.split('-')[0]\n", "\n", - " ax.loglog(summary['nodes'], summary[c], '--', label=task, marker=next(markers), color=next(colors))\n", + " ax.loglog(subset.index, subset, '--', label=task, marker=next(markers), color=next(colors))\n", " ax.set_xlim(ax.get_xlim())\n", "\n", " # Plot the ideal scaling line\n", - " lowest_rate = summary[c].iloc[0]\n", - " ideal = lowest_rate / summary['nodes'].min()\n", + " lowest_rate = subset.iloc[0]\n", + " ideal = lowest_rate / subset.index.min()\n", " ax.plot(ax.get_xlim(), np.multiply(ideal, list(ax.get_xlim())), 'k--', lw=1)\n", "\n", "ax.set_xscale('log', base=2)\n", diff --git a/scripts/1_analyze-hpc-performance/figures/task-rates-by-scale.pdf b/scripts/1_analyze-hpc-performance/figures/task-rates-by-scale.pdf index b70ecf80bde115bbae3aeffbe9fd63f422205bee..d80996e408e4b1cd0b522d87f346f7ab96b7fb62 100644 GIT binary patch delta 4219 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 Ap#T5? delta 3373 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 diff --git a/scripts/1_analyze-hpc-performance/figures/task-rates-by-scale.png b/scripts/1_analyze-hpc-performance/figures/task-rates-by-scale.png index 4d22ffc140e0bb0c5fad89d768136f79c7be63cc..c87d99baa4afa4210d01c9abcc5c85fd541b4052 100644 GIT binary patch literal 71883 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%0DLi-b=s~<~DWd=(gWy|yIUIu-rgGo?7wz}k6x%AQ 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\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
methodcountmeanstdmin25%50%75%max
0process_ligands38685.015.32488222.9015330.0298414.2579298.73672119.5629541144.887687
1run_generator4778.0376.245853323.27178932.975990181.138492269.747391450.6143817353.332190
2assemble_many6393.014.4086090.93770612.43121713.85099514.27705214.78254127.299553
3train_generator85.096.571124126.82355832.80458236.41705842.63804846.937154422.540000
4compute_partial_charges297.0211.49577522.866304165.086035194.421848208.427942224.075806297.390665
5run_GCMC_single225.01891.765798423.0852000.2542751583.6782581803.0195302149.6741823907.674146
6run_molecular_dynamics123702.0204.391879179.2200060.3251530.902979313.996324359.636168575.091465
7run_optimization305.01512.668131973.637451437.751491584.1570531000.4188822534.7104183011.846862
\n", + "" + ], + "text/plain": [ + " method count mean std min \\\n", + "0 process_ligands 38685.0 15.324882 22.901533 0.029841 \n", + "1 run_generator 4778.0 376.245853 323.271789 32.975990 \n", + "2 assemble_many 6393.0 14.408609 0.937706 12.431217 \n", + "3 train_generator 85.0 96.571124 126.823558 32.804582 \n", + "4 compute_partial_charges 297.0 211.495775 22.866304 165.086035 \n", + "5 run_GCMC_single 225.0 1891.765798 423.085200 0.254275 \n", + "6 run_molecular_dynamics 123702.0 204.391879 179.220006 0.325153 \n", + "7 run_optimization 305.0 1512.668131 973.637451 437.751491 \n", + "\n", + " 25% 50% 75% max \n", + "0 4.257929 8.736721 19.562954 1144.887687 \n", + "1 181.138492 269.747391 450.614381 7353.332190 \n", + "2 13.850995 14.277052 14.782541 27.299553 \n", + "3 36.417058 42.638048 46.937154 422.540000 \n", + "4 194.421848 208.427942 224.075806 297.390665 \n", + "5 1583.678258 1803.019530 2149.674182 3907.674146 \n", + "6 0.902979 313.996324 359.636168 575.091465 \n", + "7 584.157053 1000.418882 2534.710418 3011.846862 " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.DataFrame(by_method)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "e52cb4f6-2aed-4558-bbdf-e372fc7e7be7", + "metadata": {}, + "outputs": [], + "source": [ + "tasks = pd.read_json(run_path / 'generation-results.json', lines=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3e9c810d-a3ad-4929-b72c-330a31b3d982", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "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.8" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}