From 92e0eeaaefafbc53a50bd22ef0269320d73795a5 Mon Sep 17 00:00:00 2001 From: Anton Reinhard Date: Mon, 18 Dec 2023 14:31:52 +0100 Subject: [PATCH] heterogeneity (#27) Prepare things to work with heterogeneity, make things work on GPU Reviewed-on: https://code.woubery.com/Rubydragon/MetagraphOptimization.jl/pulls/27 Co-authored-by: Anton Reinhard Co-committed-by: Anton Reinhard --- .gitea/workflows/julia-package-ci.yml | 6 +- Project.toml | 1 + data/qed_ke-kke_reduction_optimizer.csv | 16 + ...eedy_optimizer_GlobalMetricEstimator().csv | 176 ++++++ data/qed_ke-kkke_reduction_optimizer.csv | 82 +++ data/qed_ke-kkkkke_reduction_optimizer.csv | 79 +++ examples/Project.toml | 6 + examples/qed_bench.jl | 148 +++++ examples/reduction.ipynb | 542 ++++++++++++++++++ images/qed_ke-kke_exec_1000000_inputs.pdf | Bin 0 -> 31319 bytes images/qed_ke-kke_graph_properties.pdf | Bin 0 -> 18258 bytes images/qed_ke-kkke_exec_1000000_inputs.pdf | Bin 0 -> 45763 bytes images/qed_ke-kkke_graph_properties.pdf | Bin 0 -> 25794 bytes ...lMetricEstimator()_exec_1000000_inputs.pdf | Bin 0 -> 72990 bytes ...obalMetricEstimator()_graph_properties.pdf | Bin 0 -> 41581 bytes images/qed_ke-kkkke_exec_100000_inputs.pdf | Bin 0 -> 30246 bytes images/qed_ke-kkkke_graph_properties.pdf | Bin 0 -> 20638 bytes images/qed_ke-kkkkke_exec_10000_inputs.pdf | Bin 0 -> 37312 bytes images/qed_ke-kkkkke_graph_properties.pdf | Bin 0 -> 26895 bytes notebooks/abc_model_showcase.ipynb | 4 +- notebooks/large_compton.ipynb | 60 +- results/FWK8999_QED.txt | 62 ++ src/code_gen/main.jl | 25 +- src/estimator/global_metric.jl | 4 + src/models/abc/compute.jl | 11 +- src/models/abc/create.jl | 24 +- src/models/abc/particle.jl | 60 +- src/models/abc/print.jl | 25 +- src/models/interface.jl | 8 + src/models/qed/compute.jl | 35 +- src/models/qed/create.jl | 29 +- src/models/qed/diagrams.jl | 2 +- src/models/qed/particle.jl | 226 +++++--- src/models/qed/print.jl | 59 +- src/node/type.jl | 2 +- src/optimization/greedy.jl | 4 + src/optimization/random_walk.jl | 4 + src/optimization/reduce.jl | 4 + test/Project.toml | 2 + test/runtests.jl | 6 +- test/unit_tests_execution.jl | 37 +- test/unit_tests_qedmodel.jl | 120 +++- 42 files changed, 1631 insertions(+), 238 deletions(-) create mode 100644 data/qed_ke-kke_reduction_optimizer.csv create mode 100644 data/qed_ke-kkke_greedy_optimizer_GlobalMetricEstimator().csv create mode 100644 data/qed_ke-kkke_reduction_optimizer.csv create mode 100644 data/qed_ke-kkkkke_reduction_optimizer.csv create mode 100644 examples/qed_bench.jl create mode 100644 examples/reduction.ipynb create mode 100644 images/qed_ke-kke_exec_1000000_inputs.pdf create mode 100644 images/qed_ke-kke_graph_properties.pdf create mode 100644 images/qed_ke-kkke_exec_1000000_inputs.pdf create mode 100644 images/qed_ke-kkke_graph_properties.pdf create mode 100644 images/qed_ke-kkke_greedy_optimizer_GlobalMetricEstimator()_exec_1000000_inputs.pdf create mode 100644 images/qed_ke-kkke_greedy_optimizer_GlobalMetricEstimator()_graph_properties.pdf create mode 100644 images/qed_ke-kkkke_exec_100000_inputs.pdf create mode 100644 images/qed_ke-kkkke_graph_properties.pdf create mode 100644 images/qed_ke-kkkkke_exec_10000_inputs.pdf create mode 100644 images/qed_ke-kkkkke_graph_properties.pdf create mode 100644 results/FWK8999_QED.txt diff --git a/.gitea/workflows/julia-package-ci.yml b/.gitea/workflows/julia-package-ci.yml index 10cf859..b7887e6 100644 --- a/.gitea/workflows/julia-package-ci.yml +++ b/.gitea/workflows/julia-package-ci.yml @@ -22,7 +22,9 @@ jobs: version: '1.9.2' - name: Instantiate - run: julia --project=./ -e 'using Pkg; Pkg.instantiate()' + run: | + julia --project=./ -e 'using Pkg; Pkg.instantiate()' + julia --project=./ -e 'using Pkg; Pkg.add(url="https://github.com/QEDjl-project/QEDprocesses.jl/")' - name: Format check run: | @@ -32,7 +34,7 @@ jobs: if out == "" exit(0) else - @error "Some files have not been formatted !!!" + @error "Some files have not been formatted!!!" write(stdout, out) exit(1) end' diff --git a/Project.toml b/Project.toml index f1957b2..722043e 100644 --- a/Project.toml +++ b/Project.toml @@ -15,6 +15,7 @@ QEDbase = "10e22c08-3ccb-4172-bfcf-7d7aa3d04d93" QEDprocesses = "46de9c38-1bb3-4547-a1ec-da24d767fdad" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" Roots = "f2b01f46-fcfa-551c-844a-d8ac1e96c665" +StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" UUIDs = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" [extras] diff --git a/data/qed_ke-kke_reduction_optimizer.csv b/data/qed_ke-kke_reduction_optimizer.csv new file mode 100644 index 0000000..794ca46 --- /dev/null +++ b/data/qed_ke-kke_reduction_optimizer.csv @@ -0,0 +1,16 @@ +operations,graph_nodes,graph_edges,graph_ce,graph_dt,graph_ci,gen_func_t,cpu_compile_t,cpu_st_t,cpu_mt_t,gpu_compile_t,gpu_t +0,77,101,252.0,6240.0,0.04038461538461539,0.02087051,8.691e-6,3.405098066,0.244763721,1.565749515,0.936213163 +1,76,99,246.0,6240.0,0.03942307692307692,0.020658734,9.36e-6,3.244313848,0.230460257,1.548012602,0.887605389 +2,75,97,240.0,6240.0,0.038461538461538464,0.045333482,8.74e-6,3.163679857,0.217614064,1.52780456,0.816496837 +3,74,95,234.0,6240.0,0.0375,0.020314034,9.081e-6,2.956421016,0.183415997,1.524262179,0.793770075 +4,73,93,228.0,6240.0,0.03653846153846154,0.033579409,8.52e-6,2.845414866,0.19168374,1.50907807,0.742734411 +5,72,92,228.0,6144.0,0.037109375,0.019736718,8.87e-6,2.827109937,0.207452606,1.497203204,0.719774022 +6,71,90,222.0,6144.0,0.0361328125,0.043612693,1.01e-5,2.62776692,0.166492497,1.602060948,0.668929854 +7,70,89,222.0,6048.0,0.03670634920634921,0.042731148,1.053e-5,2.631288029,0.185812224,1.514154792,0.694503947 +8,69,87,216.0,6048.0,0.03571428571428571,0.042148711,8.19e-6,2.493343257,0.183595081,1.506478504,0.652420896 +9,68,86,216.0,5952.0,0.036290322580645164,0.041568955,8.571e-6,2.487317627,0.147773078,1.472141844,0.653143947 +10,67,85,216.0,5856.0,0.036885245901639344,0.041307868,9.13e-6,2.491634709,0.175728138,1.482162906,0.63058774 +11,66,84,216.0,5760.0,0.0375,0.041265756,8.43e-6,2.516916643,0.180420842,1.463053866,0.650627815 +12,65,83,205.0,5760.0,0.035590277777777776,0.039711293,9.22e-6,2.479664249,0.178013433,1.459566956,0.652477867 +13,64,82,205.0,5664.0,0.03619350282485876,0.030866093,8.87e-6,2.485424881,0.179983608,1.564961227,0.647932468 +14,63,81,205.0,5568.0,0.03681752873563218,0.029946916,8.93e-6,2.469922022,0.179443854,1.485935831,0.651804318 diff --git a/data/qed_ke-kkke_greedy_optimizer_GlobalMetricEstimator().csv b/data/qed_ke-kkke_greedy_optimizer_GlobalMetricEstimator().csv new file mode 100644 index 0000000..eb191bd --- /dev/null +++ b/data/qed_ke-kkke_greedy_optimizer_GlobalMetricEstimator().csv @@ -0,0 +1,176 @@ +operations,graph_nodes,graph_edges,graph_ce,graph_dt,graph_ci,gen_func_t,cpu_compile_t,cpu_st_t,cpu_mt_t,gpu_compile_t,gpu_t +0,356,493,1399.0,30528.0,0.0458267819706499,0.077070556,2.6761e-5,17.804336617,0.960385595,10.618577031,4.95440474 +1,354,491,1399.0,30432.0,0.04597134595162986,1.030851104,2.37e-5,17.726472964,0.933074463,2.174912444,4.959474851 +2,352,489,1399.0,30336.0,0.04611682489451477,0.376282553,2.3861e-5,17.935912907,0.968087391,2.238665483,4.912705328 +3,350,487,1399.0,30240.0,0.04626322751322751,0.076651194,4.2451e-5,17.976779783,0.977130996,2.246167674,4.954520005 +4,348,485,1399.0,30144.0,0.04641056263269639,0.223709216,2.8031e-5,17.67129111,0.97799748,2.175788856,4.923999491 +5,346,483,1399.0,30048.0,0.04655883919062833,0.076034997,4.3191e-5,17.766336956,0.967055891,2.187609178,4.922574669 +6,344,481,1399.0,29952.0,0.04670806623931624,0.398917781,4.3422e-5,17.709032771,0.971142926,2.170963978,4.917191185 +7,342,479,1399.0,29856.0,0.04685825294748124,0.352569343,4.3801e-5,17.690255833,0.952966242,2.159295978,4.945842152 +8,340,477,1399.0,29760.0,0.04700940860215054,0.117620751,4.2992e-5,17.905787431,0.749896479,2.19940915,4.922882222 +9,338,475,1399.0,29664.0,0.04716154261057174,0.318053898,2.3481e-5,17.522775542,0.745113955,2.202366151,4.928734427 +10,336,473,1399.0,29568.0,0.047314664502164504,0.184069985,2.3381e-5,17.529935879,0.74637911,2.238397648,4.919919125 +11,334,471,1399.0,29472.0,0.047468783930510315,0.086029218,2.365e-5,17.560859257,0.75559668,2.249242933,4.956561058 +12,332,469,1399.0,29376.0,0.04762391067538126,0.077326472,2.4361e-5,17.559317648,0.746726769,2.1818156,4.938490196 +13,330,467,1399.0,29280.0,0.047780054644808743,0.169738661,2.342e-5,17.517109121,0.751453942,2.187781478,4.923659727 +14,328,465,1399.0,29184.0,0.047937225877192985,0.077817676,2.315e-5,17.533304215,0.745481303,2.209343496,4.960503415 +15,326,463,1399.0,29088.0,0.04809543454345434,0.171584444,2.352e-5,17.579912576,0.754778436,2.210370024,4.934281254 +16,324,461,1399.0,28992.0,0.04825469094922737,0.084223667,2.305e-5,17.570464754,0.751290178,2.22797709,4.939806799 +17,322,459,1399.0,28896.0,0.04841500553709856,0.123005102,2.3661e-5,17.605650973,0.756929676,2.269940175,4.937928844 +18,320,457,1399.0,28800.0,0.04857638888888889,0.086677986,2.37e-5,17.5539199,0.746367967,2.264938904,4.959258096 +19,318,455,1399.0,28704.0,0.04873885172798216,0.12293158,2.3711e-5,17.609395222,0.755783994,2.264754078,4.92827168 +20,316,453,1399.0,28608.0,0.04890240492170023,0.124475123,2.4281e-5,17.597716228,0.75106304,2.20218749,4.933120236 +21,314,451,1399.0,28512.0,0.04906705948372615,0.112172177,2.6391e-5,17.623178954,0.755694751,2.186417905,4.921509117 +22,312,449,1399.0,28416.0,0.04923282657657658,0.219362642,2.321e-5,17.593459902,0.747914841,2.168628993,4.952994795 +23,310,447,1399.0,28320.0,0.049399717514124294,0.080729209,2.358e-5,17.571675834,0.755489634,2.209531477,4.951190234 +24,308,445,1399.0,28224.0,0.049567743764172334,0.080235835,2.3271e-5,17.615791747,0.750314688,2.21464245,4.949496195 +25,306,443,1399.0,28128.0,0.049736916951080776,0.124106403,2.374e-5,17.60716179,0.753826187,2.186184237,4.920128786 +26,304,441,1399.0,28032.0,0.04990724885844749,0.080715608,2.3781e-5,17.581988477,0.750266997,2.209826064,4.937813884 +27,302,439,1399.0,27936.0,0.05007875143184422,0.080606465,2.4071e-5,17.633096607,0.749125265,2.198599437,4.935320693 +28,300,437,1399.0,27840.0,0.0502514367816092,0.081056137,2.3781e-5,17.564695624,0.746230293,2.225110355,4.939656214 +29,298,435,1399.0,27744.0,0.05042531718569781,0.096545225,2.379e-5,17.58144781,0.747458632,2.263551336,4.924245431 +30,296,433,1399.0,27648.0,0.050600405092592594,0.120638697,2.383e-5,17.574370836,0.748933285,2.234417803,4.915183371 +31,294,431,1399.0,27552.0,0.0507767131242741,0.125073582,2.393e-5,17.627352699,0.754384428,2.214199106,4.938130459 +32,292,429,1399.0,27456.0,0.05095425407925408,0.12314953,2.468e-5,17.697160429,0.796488763,2.261473826,4.956976138 +33,290,427,1399.0,27360.0,0.051133040935672516,0.125481487,2.354e-5,17.636971006,0.748416796,2.222200724,4.948970096 +34,288,425,1399.0,27264.0,0.051313086854460094,0.094052012,2.4301e-5,17.62971842,0.805139938,2.205015347,4.959455536 +35,286,423,1399.0,27168.0,0.051494405182567725,0.08136377,2.4041e-5,17.621304482,0.747718686,2.244362062,4.941432169 +36,284,421,1399.0,27072.0,0.05167700945626478,0.080217839,2.3921e-5,17.61427713,0.747754586,2.212103901,4.933185029 +37,282,417,1399.0,26976.0,0.051860913404507714,0.126372199,2.376e-5,17.601417663,0.750036789,2.163344775,4.926698186 +38,280,414,1399.0,26880.0,0.052046130952380955,0.125444544,2.476e-5,17.612452443,0.748155225,2.195259021,4.91594575 +39,278,412,1399.0,26784.0,0.05223267622461171,0.083158944,2.4551e-5,17.599589645,0.741671021,2.208064301,4.9351555 +40,276,410,1399.0,26688.0,0.05242056354916067,0.083321959,2.4101e-5,17.567124159,0.748238012,2.197233222,4.954754226 +41,274,408,1399.0,26592.0,0.052609807460890494,0.084803792,2.3901e-5,17.549365204,0.754817994,2.229499405,4.94957165 +42,272,405,1399.0,26496.0,0.05280042270531401,0.127648261,2.3851e-5,17.582852416,0.750759497,2.230398721,4.937220319 +43,270,401,1399.0,26400.0,0.052992424242424244,0.128445184,2.428e-5,17.596647819,0.75777713,2.160922996,4.937371146 +44,268,399,1399.0,26304.0,0.053185827250608275,0.129526096,2.5081e-5,17.594476326,0.746906342,2.219401891,4.93357998 +45,266,397,1399.0,26208.0,0.05338064713064713,0.129819495,2.4731e-5,17.568331366,0.750368555,2.18948505,4.922275732 +46,264,394,1399.0,26112.0,0.05357689950980392,0.087649075,2.462e-5,17.585414218,0.751605626,2.198684054,4.941424565 +47,262,391,1399.0,26016.0,0.05377460024600246,0.089110637,2.4551e-5,17.614139291,0.750622403,2.168793662,4.953321773 +48,260,389,1399.0,25920.0,0.053973765432098766,0.090307061,2.45e-5,17.633806293,0.749096576,2.224521298,4.930813246 +49,258,387,1399.0,25824.0,0.054174411400247834,0.133480181,2.461e-5,17.634768586,0.756613261,2.201452177,4.972809945 +50,256,385,1399.0,25728.0,0.05437655472636816,0.134254424,2.425e-5,17.606323938,0.748779206,2.216818872,4.939295094 +51,254,382,1399.0,25632.0,0.05458021223470662,0.134016868,2.4531e-5,17.5926305,0.75625873,2.227679889,4.968213894 +52,252,379,1399.0,25536.0,0.054785401002506263,0.135650945,2.4601e-5,17.642803637,0.751975585,2.226011125,4.9285844 +53,250,375,1399.0,25440.0,0.054992138364779876,0.136647933,2.4161e-5,17.799738254,0.76667472,2.165144989,4.930427128 +54,248,373,1399.0,25344.0,0.05520044191919192,0.123103164,2.4461e-5,17.745879754,0.760526742,2.161495227,4.940492285 +55,246,370,1399.0,25248.0,0.05541032953105197,0.09476826,2.3511e-5,17.596131758,0.756924114,2.180021837,4.954121771 +56,244,365,1399.0,25152.0,0.05562181933842239,0.095345787,2.4171e-5,17.612023424,0.747989147,2.215139082,4.945396527 +57,242,362,1399.0,25056.0,0.05583492975734355,0.139570128,2.3801e-5,17.630922372,0.750668446,2.186529739,4.961981394 +58,240,359,1399.0,24960.0,0.05604967948717949,0.097466916,2.4451e-5,17.61078772,0.7485922,2.217673752,4.95291513 +59,238,357,1399.0,24864.0,0.05626608751608752,0.138599302,2.3601e-5,17.586404505,0.756929027,2.233374301,4.935342135 +60,236,352,1399.0,24768.0,0.05648417312661499,0.147210964,2.4911e-5,17.650436019,0.74908103,2.157077946,4.937714591 +61,234,350,1399.0,24672.0,0.05670395590142672,0.099491094,2.3601e-5,17.608002511,0.756924473,2.165309665,4.932434479 +62,232,348,1399.0,24576.0,0.056925455729166664,0.141929827,2.454e-5,17.605756917,0.749178717,2.234082435,4.957629943 +63,230,344,1399.0,24480.0,0.057148692810457515,0.142483983,2.4211e-5,17.623883273,0.758216784,2.210078838,4.930940098 +64,228,341,1399.0,24384.0,0.057373687664041995,0.101524943,2.4371e-5,17.662312587,0.751128917,2.22449657,4.96708528 +65,226,339,1399.0,24288.0,0.05760046113306983,0.102619253,2.3831e-5,17.610112922,0.758167777,2.187456785,4.957519684 +66,224,337,1399.0,24192.0,0.05782903439153439,0.10351088,2.3401e-5,17.611932402,0.749178457,2.236980212,4.933450322 +67,222,335,1399.0,24096.0,0.05805942895086321,0.148780402,2.3711e-5,17.636035095,0.75707833,2.252138664,4.951632995 +68,220,333,1399.0,24000.0,0.058291666666666665,0.148311059,2.4851e-5,17.617252052,0.750104986,2.22330739,4.9243139 +69,218,329,1399.0,23904.0,0.05852576974564926,0.151678794,2.4181e-5,17.627742278,0.755299894,2.248062201,4.951401482 +70,216,326,1399.0,23808.0,0.05876176075268817,0.15082361,2.3851e-5,17.647410652,0.752445605,2.240948426,4.949599133 +71,214,323,1399.0,23712.0,0.05899966261808367,0.153382492,2.4011e-5,17.654743596,0.752802907,2.253819342,4.966250371 +72,212,320,1399.0,23616.0,0.05923949864498645,0.151516131,2.3931e-5,17.672908543,0.750257716,2.220003155,4.944782327 +73,210,317,1399.0,23520.0,0.059481292517006804,0.154244628,2.386e-5,17.60330678,0.750422813,2.211295295,4.943727837 +74,208,313,1399.0,23424.0,0.05972506830601093,0.153767234,2.4291e-5,17.640950842,0.74988433,2.24794966,4.952712228 +75,206,311,1399.0,23328.0,0.05997085048010974,0.155927375,2.406e-5,17.589128666,0.749120129,2.253801308,4.953014816 +76,204,306,1399.0,23232.0,0.06021866391184573,0.15464184,2.4521e-5,17.662616581,0.750484429,2.227511412,4.924026259 +77,202,304,1399.0,23136.0,0.06046853388658368,0.157807248,2.4041e-5,17.611953814,0.755679546,2.178734374,4.943974526 +78,200,301,1399.0,23040.0,0.06072048611111111,0.155978707,2.4051e-5,17.624250437,0.794935481,2.247188963,4.940403894 +79,198,298,1399.0,22944.0,0.06097454672245467,0.158377905,2.5091e-5,17.634938402,0.754743461,2.245248812,4.919902064 +80,196,296,1399.0,22848.0,0.061230742296918765,0.158750786,2.4511e-5,17.6360904,0.750867213,2.200032233,4.942215648 +81,194,293,1399.0,22752.0,0.061489099859353025,0.161152794,2.4831e-5,17.780761042,0.765338482,2.204873372,4.939655562 +82,192,290,1399.0,22656.0,0.061749646892655365,0.160175486,2.318e-5,17.798147683,0.76168194,2.230891056,4.955801153 +83,190,287,1399.0,22560.0,0.06201241134751773,0.159868767,2.4791e-5,17.764165058,0.796377137,2.239618185,4.928054627 +84,188,283,1399.0,22464.0,0.06227742165242165,0.160933577,2.4221e-5,17.798426962,0.848255338,2.218112612,4.932433146 +85,186,280,1399.0,22368.0,0.06254470672389127,0.163393917,2.4371e-5,17.808464853,0.765692696,2.213490844,4.943298137 +86,184,277,1399.0,22272.0,0.06281429597701149,0.163792118,2.4261e-5,17.805783627,0.761027705,2.232891092,4.919454211 +87,182,275,1399.0,22176.0,0.06308621933621934,0.162177953,2.43e-5,17.797665375,0.761040026,2.236586089,4.951072155 +88,180,271,1399.0,22080.0,0.06336050724637682,0.165377424,2.557e-5,17.805099359,0.763146286,2.212611436,4.921150887 +89,178,268,1399.0,21984.0,0.06363719068413391,0.166754373,2.5141e-5,17.770997205,0.764361801,2.199943181,4.934748884 +90,176,266,1399.0,21888.0,0.06391630116959064,0.167241957,2.4571e-5,17.770223198,0.759580227,2.247867501,4.935730147 +91,174,264,1399.0,21792.0,0.06419787077826726,0.169623073,2.5e-5,17.771153368,0.750276145,2.243455929,4.939933808 +92,172,261,1399.0,21696.0,0.06448193215339233,0.168358288,2.5181e-5,17.799224982,0.760906435,2.210000929,4.943923374 +93,170,259,1399.0,21600.0,0.06476851851851852,0.170287483,2.529e-5,17.79271252,0.763151029,2.205444892,4.924953813 +94,168,254,1399.0,21504.0,0.06505766369047619,0.168986856,2.5021e-5,17.775583682,0.760237647,2.222811993,4.951301097 +95,166,250,1399.0,21408.0,0.06534940209267563,0.171662521,2.4401e-5,17.636022254,0.749599438,2.234944605,4.958431762 +96,164,246,1399.0,21312.0,0.06564376876876876,0.170911431,2.4481e-5,17.633556045,0.788097892,2.198060879,4.922871993 +97,162,244,1399.0,21216.0,0.06594079939668175,0.172387252,2.4781e-5,17.620254381,0.799269067,2.202436673,4.936411908 +98,160,241,1399.0,21120.0,0.0662405303030303,0.171830017,2.581e-5,17.656653806,0.750275098,2.200933622,4.94776375 +99,158,238,1399.0,21024.0,0.06654299847792998,0.174560093,2.447e-5,17.625724723,0.756745741,2.249721096,4.958786002 +100,156,235,1399.0,20928.0,0.06684824159021406,0.178996759,2.453e-5,17.669194606,0.749422535,2.218089817,4.960858653 +101,154,231,1399.0,20832.0,0.0671562980030722,0.175032127,2.3871e-5,17.642586975,0.754643863,2.194675279,4.944134534 +102,152,229,1399.0,20736.0,0.06746720679012345,0.176393906,2.4731e-5,17.592973556,0.749943551,2.229565622,4.927935661 +103,150,225,1399.0,20640.0,0.06778100775193799,0.178017631,2.412e-5,17.630568322,0.755272802,2.221125776,4.952348991 +104,148,223,1399.0,20544.0,0.0680977414330218,0.175897841,2.36e-5,17.661766307,0.749293633,2.2201698,4.963634779 +105,146,221,1399.0,20448.0,0.06841744913928012,0.178367362,2.5001e-5,17.654508999,0.755361234,2.185187066,4.938710949 +106,144,218,1399.0,20352.0,0.06874017295597484,0.178791594,2.502e-5,17.649520916,0.749748217,2.238645461,4.955141284 +107,142,216,1399.0,20256.0,0.06906595576619273,0.175900502,2.3291e-5,17.648252045,0.755157659,2.250102545,4.948078116 +108,140,212,1399.0,20160.0,0.06939484126984127,0.180050739,2.3901e-5,17.642556024,0.751139061,2.195233955,4.92102672 +109,138,210,1399.0,20064.0,0.06972687400318979,0.182587052,2.492e-5,17.631301401,0.754040144,2.177296385,4.948297571 +110,136,207,1399.0,19968.0,0.07006209935897435,0.181449712,2.4401e-5,17.618787463,0.748940439,2.251932822,4.950366155 +111,134,203,1399.0,19872.0,0.07040056360708534,0.183466877,2.407e-5,17.658532693,0.756589176,2.240568188,4.97337861 +112,132,201,1399.0,19776.0,0.0707423139158576,0.181545084,2.485e-5,17.63441504,0.751343023,2.183033772,4.975534251 +113,130,199,1399.0,19680.0,0.07108739837398374,0.177809314,2.417e-5,17.627163359,0.754577307,2.211080446,4.977438563 +114,128,195,1399.0,19584.0,0.07143586601307189,0.183038393,2.5541e-5,17.63366534,0.751510139,2.237832092,4.969644912 +115,126,191,1399.0,19488.0,0.07178776683087028,0.186344151,2.4971e-5,17.711808739,0.759177,2.236586017,4.951292022 +116,124,187,1399.0,19392.0,0.07214315181518152,0.184833587,2.475e-5,17.648467279,0.749564641,2.179772409,4.97017709 +117,122,183,1399.0,19296.0,0.07250207296849089,0.193249355,2.3811e-5,17.639230223,0.755564354,2.195109482,4.982434629 +118,120,180,1399.0,19200.0,0.07286458333333333,0.186818046,2.372e-5,17.635977046,0.750626058,2.243877912,4.972608068 +119,118,177,1399.0,19104.0,0.07323073701842546,0.189204719,2.4961e-5,17.791522288,0.766082656,2.242948358,4.980365418 +120,116,173,1399.0,19008.0,0.07360058922558922,0.186391669,2.4181e-5,17.645956891,0.750893368,2.197914806,4.98745469 +121,114,171,1399.0,18912.0,0.07397419627749577,0.19060573,2.4701e-5,17.771140583,0.765197694,2.20643796,4.959618561 +122,112,169,1399.0,18816.0,0.0743516156462585,0.188466188,2.381e-5,17.795228145,0.759434429,2.26208531,4.965068853 +123,110,165,1399.0,18720.0,0.07473290598290598,0.191524927,2.3841e-5,17.779734215,0.767242896,2.242967333,4.950554681 +124,108,161,1399.0,18624.0,0.07511812714776632,0.189450326,2.3601e-5,17.807849571,0.762371273,2.196711688,4.966122065 +125,106,157,1399.0,18528.0,0.0755073402417962,0.191473057,2.357e-5,17.632877767,0.755845465,2.188474891,4.977562868 +126,104,153,1399.0,18432.0,0.0759006076388889,0.191382079,2.3851e-5,17.775729988,0.758861116,2.278116886,4.979965119 +127,102,151,1399.0,18336.0,0.07629799301919721,0.192296369,2.394e-5,17.777918793,0.764981303,2.224818047,4.949944943 +128,100,149,1399.0,18240.0,0.07669956140350877,0.191424719,2.4331e-5,17.856475915,0.76057459,2.201588049,4.941974925 +129,98,146,1399.0,18144.0,0.07710537918871252,0.194280932,2.3951e-5,17.779963845,0.766401736,2.223182601,4.961465017 +130,96,142,1399.0,18048.0,0.07751551418439716,0.192850597,2.3861e-5,17.765033828,0.760509569,2.250897799,4.967399083 +131,94,138,1399.0,17952.0,0.07793003565062388,0.194741823,2.38e-5,17.778261696,0.764271609,2.248898068,4.975998565 +132,92,136,1399.0,17856.0,0.07834901433691756,0.193567295,2.5281e-5,17.791322862,0.759809249,2.216694812,4.962092553 +133,90,132,1399.0,17760.0,0.07877252252252252,0.196949912,2.4641e-5,17.775924767,0.766636532,2.192664527,4.943809886 +134,88,129,1399.0,17664.0,0.07920063405797101,0.19423328,2.4491e-5,17.775940481,0.759698903,2.241454301,4.965419114 +135,86,125,1399.0,17568.0,0.07963342440801457,0.196021362,2.4541e-5,17.749824568,0.77002309,2.244133161,4.973507276 +136,84,123,1399.0,17472.0,0.08007097069597069,0.195945063,2.4791e-5,17.793381264,0.758984676,2.223761942,4.967845004 +137,82,120,1399.0,17376.0,0.0805133517495396,0.196404909,2.5491e-5,17.781126567,0.76777764,2.208548873,4.942758101 +138,80,116,1399.0,17280.0,0.08096064814814814,0.197313346,2.469e-5,17.785944557,0.814271788,2.200296465,4.939179018 +139,78,114,1399.0,17184.0,0.08141294227188083,0.155633427,2.5181e-5,17.79491891,0.767423131,2.233213884,4.963944358 +140,76,111,1399.0,17088.0,0.08187031835205992,0.194686919,2.4311e-5,17.835512877,0.761171578,2.216772786,4.968370761 +141,74,108,1399.0,16992.0,0.0823328625235405,0.19895497,2.4301e-5,17.80769545,0.768202031,2.212642548,4.971369432 +142,72,106,1399.0,16896.0,0.08280066287878787,0.197589165,2.4241e-5,17.817799582,0.760097766,2.219367009,4.967751237 +143,70,102,1399.0,16800.0,0.08327380952380953,0.200103786,2.425e-5,17.804210307,0.767108387,2.264925155,4.965506236 +144,68,99,1399.0,16704.0,0.08375239463601533,0.196633322,2.5371e-5,17.822197608,0.762852947,2.20877412,4.971541033 +145,66,97,1399.0,16608.0,0.08423651252408478,0.200144552,2.4801e-5,17.823667792,0.766965999,2.209992675,4.969252216 +146,64,93,1399.0,16512.0,0.08472625968992248,0.199816644,2.4901e-5,17.838429006,0.764432365,2.241092809,4.961995819 +147,62,89,1399.0,16416.0,0.08522173489278752,0.187325579,2.5321e-5,17.811923957,0.767393244,2.227406228,4.960056608 +148,60,85,1399.0,16320.0,0.08572303921568628,0.198893612,2.4451e-5,17.82940565,0.760747136,2.209815727,4.971563658 +149,58,83,1399.0,16224.0,0.08623027613412229,0.201039293,2.4651e-5,17.817639935,0.767607352,2.210546374,4.97066195 +150,56,81,1399.0,16128.0,0.08674355158730158,0.199841932,2.414e-5,17.82203287,0.760048809,2.243550629,4.954439346 +151,54,79,1399.0,16032.0,0.0872629740518962,0.2011596,2.4741e-5,17.804574042,0.767800679,2.250206119,4.955980994 +152,52,75,1399.0,15936.0,0.08778865461847389,0.19971389,2.4331e-5,17.829821975,0.762018993,2.205143141,4.970086548 +153,50,73,1399.0,15840.0,0.08832070707070708,0.201368798,2.4881e-5,17.836101646,0.767371477,2.218711432,4.96364023 +154,48,71,1399.0,15744.0,0.08885924796747967,0.200798594,2.4491e-5,17.830384655,0.765407907,2.286796949,4.939295093 +155,46,67,1399.0,15648.0,0.08940439672801637,0.202551163,2.5121e-5,17.827221721,0.768466657,2.262575248,4.943430916 +156,44,65,1399.0,15552.0,0.08995627572016461,0.198816901,2.578e-5,17.840506569,0.760760306,2.220630133,4.952844324 +157,42,63,1399.0,15456.0,0.09051501035196688,0.201424744,2.5021e-5,17.814439397,0.767553139,2.196934945,4.958506547 +158,40,59,1399.0,15360.0,0.09108072916666667,0.202145126,2.565e-5,17.808712307,0.76137146,2.235801178,4.949559042 +159,38,55,1399.0,15264.0,0.0916535639412998,0.201663393,2.4591e-5,17.784477195,0.766209648,2.249329555,4.964028527 +160,36,53,1399.0,15168.0,0.09223364978902954,0.199579456,2.5461e-5,17.900752023,0.761934363,2.209582978,4.950507063 +161,34,48,1399.0,15072.0,0.09282112526539278,0.159541692,2.5211e-5,17.769415534,0.935609132,2.216664395,4.962977201 +162,32,44,1399.0,14976.0,0.09341613247863248,0.201979445,2.5581e-5,17.802148727,0.758630938,2.257162782,4.954367291 +163,30,40,1399.0,14880.0,0.09401881720430108,0.203381244,2.5411e-5,17.808584074,0.768160516,2.239967841,4.949515694 +164,28,35,1399.0,14784.0,0.09462932900432901,0.200707381,2.5071e-5,17.811958674,0.765546396,2.222827481,4.962523474 +165,26,31,1399.0,14688.0,0.09524782135076253,0.203476579,2.4431e-5,17.791537057,0.759747517,2.210172596,4.96717851 +166,24,29,1399.0,14592.0,0.09587445175438597,0.38619058,2.5161e-5,17.784565893,0.765981903,2.205094732,4.970469758 +167,22,25,1399.0,14496.0,0.09650938189845475,0.209174268,2.6071e-5,17.886396985,0.762283972,2.251379768,4.9348063 +168,20,21,1399.0,14400.0,0.09715277777777778,0.184182012,2.5331e-5,17.791795342,0.760972528,2.229551257,4.941190792 +169,18,17,1399.0,14304.0,0.09780480984340045,0.203935864,2.572e-5,17.823665061,0.762353868,2.199132836,4.965200905 +170,16,15,1399.0,14208.0,0.09846565315315316,0.200164969,2.4631e-5,17.792385586,0.76804392,2.174965407,4.972074439 +171,14,13,1399.0,14112.0,0.09913548752834467,0.204567903,2.5071e-5,17.806154396,0.759505453,2.2340466,4.972671228 +172,12,11,1399.0,14016.0,0.09981449771689498,0.201861418,2.5971e-5,18.529840195,0.789347616,2.23167521,4.947890089 +173,10,9,1399.0,13920.0,0.1005028735632184,0.202902727,2.4951e-5,17.865867105,0.761004999,2.194876208,4.93177029 +174,8,7,1399.0,13824.0,0.10120081018518519,0.198079003,2.4651e-5,17.791197743,0.767399089,2.226370372,4.951979965 diff --git a/data/qed_ke-kkke_reduction_optimizer.csv b/data/qed_ke-kkke_reduction_optimizer.csv new file mode 100644 index 0000000..bd41fbf --- /dev/null +++ b/data/qed_ke-kkke_reduction_optimizer.csv @@ -0,0 +1,82 @@ +operations,graph_nodes,graph_edges,graph_ce,graph_dt,graph_ci,gen_func_t,cpu_compile_t,cpu_st_t,cpu_mt_t,gpu_compile_t,gpu_t +0,356,493,1399.0,30528.0,0.0458267819706499,0.084389903,2.4971e-5,17.802549835,0.960409581,2.406448706,4.927079076 +1,351,483,1369.0,30528.0,0.044844077568134175,0.126855933,2.9211e-5,16.868735557,0.927387188,2.257632484,4.697683068 +2,346,478,1369.0,30048.0,0.04556043663471779,0.08319682,3.5431e-5,16.871399152,0.834869326,2.264361993,4.701280771 +3,341,473,1314.0,30048.0,0.04373003194888179,0.124422234,2.392e-5,16.454231193,0.856669072,2.271991539,4.68580348 +4,336,463,1284.0,30048.0,0.042731629392971246,0.121696991,2.2921e-5,15.881542683,0.816430136,2.213686135,4.449106524 +5,331,458,1284.0,29568.0,0.04342532467532467,0.124024888,2.314e-5,15.879200155,0.799333453,2.194093083,4.435654931 +6,326,448,1254.0,29568.0,0.04241071428571429,0.121610951,2.2e-5,15.325702423,0.833341953,2.203843882,4.199677306 +7,321,438,1224.0,29568.0,0.041396103896103896,0.118972208,2.1631e-5,14.367273685,0.711553932,2.16189756,3.948872646 +8,316,433,1224.0,29088.0,0.04207920792079208,0.074826839,2.2031e-5,14.367107152,0.792981221,2.169096496,3.961630969 +9,311,428,1169.0,29088.0,0.04018839383938394,0.116237162,2.15e-5,14.416973472,0.788583102,2.092186151,3.946339564 +10,306,418,1139.0,29088.0,0.03915704070407041,0.114647398,2.031e-5,13.671420757,0.745657392,2.037551329,3.657411205 +11,301,408,1109.0,29088.0,0.03812568756875687,0.11434652,1.951e-5,13.093103664,0.686554396,2.065489584,3.441139671 +12,296,403,1109.0,28608.0,0.03876538031319911,0.112282663,1.8991e-5,13.11525848,0.705183633,2.0639299,3.422598036 +13,291,398,1109.0,28128.0,0.039426905574516495,0.111549203,1.9661e-5,13.08100601,0.700772882,2.065935946,3.41679234 +14,286,388,1079.0,28128.0,0.0383603526734926,0.109881396,1.907e-5,11.871746271,0.665244638,2.063828106,3.187580585 +15,281,378,1049.0,28128.0,0.037293799772468716,0.108444747,1.7961e-5,10.963517612,0.62180291,2.037926216,2.935137574 +16,276,373,1049.0,27648.0,0.03794126157407408,0.107959773,1.874e-5,11.021594456,0.541779823,2.003876106,2.931304737 +17,271,368,1049.0,27168.0,0.03861160188457008,0.105629068,1.8241e-5,11.017450178,0.581974375,2.017201027,2.952118903 +18,266,363,1049.0,26688.0,0.0393060551558753,0.107303406,1.8301e-5,11.028597789,0.556078309,2.037535226,2.911405619 +19,261,358,994.0,26688.0,0.03724520383693045,0.106584986,1.7111e-5,10.789192026,0.525275525,2.011931363,2.931360979 +20,256,353,939.0,26688.0,0.035184352517985615,0.105743463,1.7521e-5,10.50283261,0.535253087,1.962456949,2.941274646 +21,255,351,933.0,26688.0,0.03495953237410072,0.105189187,1.7471e-5,10.739591259,0.555102576,2.013201521,2.896175037 +22,254,350,933.0,26592.0,0.035085740072202165,0.105895137,1.6631e-5,10.68514711,0.571809578,1.974934611,2.890503396 +23,253,348,927.0,26592.0,0.0348601083032491,0.104181459,1.817e-5,10.344271645,0.572483889,2.002875753,2.842241926 +24,252,347,927.0,26496.0,0.034986413043478264,0.103568232,1.7471e-5,10.363216025,0.602207417,1.943794016,2.811132729 +25,247,342,927.0,26016.0,0.035631918819188195,0.102006829,1.669e-5,10.360319761,0.588967585,1.942523675,2.838431844 +26,246,340,921.0,26016.0,0.03540129151291513,0.103244544,1.672e-5,10.140255758,0.565172778,1.980058606,2.776594151 +27,245,339,921.0,25920.0,0.03553240740740741,0.102991317,1.723e-5,10.166352736,0.588556746,2.025713505,2.754827976 +28,244,337,915.0,25920.0,0.03530092592592592,0.102527335,1.6261e-5,9.965044496,0.527648944,1.966870364,2.708992883 +29,243,335,909.0,25920.0,0.035069444444444445,0.101020632,1.6541e-5,9.899918186,0.530837495,1.99964346,2.686936268 +30,242,334,909.0,25824.0,0.03519981412639405,0.099846559,1.614e-5,9.924451078,0.532149983,1.992832633,2.667590089 +31,241,333,909.0,25728.0,0.035331156716417914,0.103293156,1.634e-5,9.893503718,0.500188044,1.971455575,2.661440862 +32,236,328,909.0,25248.0,0.036002851711026615,0.110948742,1.5851e-5,9.916889596,0.515528547,2.014256204,2.691654688 +33,235,326,903.0,25248.0,0.03576520912547528,0.099799239,1.658e-5,9.667648582,0.561210643,1.981308261,2.647665444 +34,234,324,897.0,25248.0,0.035527566539923956,0.099455409,1.6561e-5,9.588166052,0.544847505,1.932560182,2.56349283 +35,233,323,897.0,25152.0,0.035663167938931296,0.103335368,1.6271e-5,9.590387462,0.542413718,1.965145602,2.559435691 +36,232,321,891.0,25152.0,0.03542461832061069,0.097770562,1.6571e-5,9.362808632,0.543288523,2.017894491,2.498672404 +37,231,320,891.0,25056.0,0.03556034482758621,0.100428616,1.5941e-5,9.340302395,0.548822639,1.994799194,2.525394 +38,230,319,891.0,24960.0,0.03569711538461538,0.056667955,1.5341e-5,9.356871677,0.537041949,1.921246656,2.507595034 +39,225,314,891.0,24480.0,0.036397058823529414,0.099323026,1.636e-5,9.383625024,0.506403697,1.972101141,2.529248938 +40,220,309,836.0,24480.0,0.03415032679738562,0.096789665,1.645e-5,9.524601658,0.473707387,1.980933173,2.524768525 +41,215,304,836.0,24000.0,0.034833333333333334,0.053463925,1.671e-5,9.520567128,0.487585179,1.942542795,2.535491481 +42,214,302,830.0,24000.0,0.034583333333333334,0.096303802,1.6011e-5,9.137262758,0.4297148,1.950560163,2.478408276 +43,213,301,830.0,23904.0,0.034722222222222224,0.070596338,1.6901e-5,9.143790565,0.492842898,1.949332161,2.476752284 +44,212,299,824.0,23904.0,0.034471218206157964,0.09696925,1.612e-5,9.089211511,0.456930617,2.022026121,2.419473874 +45,211,297,818.0,23904.0,0.03422021419009371,0.052526649,1.536e-5,8.807671694,0.471203239,1.970488502,2.372441242 +46,210,296,818.0,23808.0,0.03435819892473118,0.096716114,1.5701e-5,8.806210783,0.451452844,1.960073481,2.387451098 +47,209,295,818.0,23712.0,0.034497300944669365,0.05145174,1.6061e-5,8.867215342,0.450895098,1.968012818,2.394204111 +48,204,290,818.0,23232.0,0.03521005509641873,0.093248236,1.9521e-5,8.844517253,0.476030278,1.963827031,2.389413849 +49,203,288,812.0,23232.0,0.034951790633608815,0.093881584,1.527e-5,8.849095772,0.446415074,1.974782212,2.332439097 +50,202,287,812.0,23136.0,0.03509681881051176,0.050473481,1.5851e-5,8.784636116,0.469233287,1.953068913,2.321316886 +51,201,285,806.0,23136.0,0.034837482710926695,0.092750242,1.5541e-5,8.632088328,0.491467054,1.945455141,2.29300329 +52,200,284,806.0,23040.0,0.03498263888888889,0.092540087,1.7161e-5,8.637677414,0.471865872,1.975464118,2.259260411 +53,199,282,800.0,23040.0,0.034722222222222224,0.092944049,1.5261e-5,8.624992966,0.478249573,1.931707577,2.232058939 +54,198,281,800.0,22944.0,0.03486750348675035,0.091660013,1.575e-5,8.680034605,0.429976994,2.022314921,2.224544849 +55,197,279,794.0,22944.0,0.03460599721059972,0.092591389,1.582e-5,8.266084761,0.442472956,1.949268775,2.165130527 +56,196,278,794.0,22848.0,0.03475140056022409,0.090376966,1.529e-5,8.26930839,0.438461132,1.960119483,2.169387658 +57,191,273,739.0,22848.0,0.03234418767507003,0.090398736,1.589e-5,8.061516101,0.468233752,1.825342557,2.144808638 +58,186,268,739.0,22368.0,0.03303826895565093,0.090566151,1.5781e-5,8.051685873,0.472555774,1.827021946,2.175475243 +59,185,266,733.0,22368.0,0.03277002861230329,0.046301524,1.4931e-5,7.809555195,0.466519375,1.819191936,2.095906173 +60,184,264,727.0,22368.0,0.03250178826895565,0.087977349,1.4771e-5,7.825535183,0.452072238,1.820734702,2.06485156 +61,183,263,727.0,22272.0,0.032641882183908046,0.08908488,1.4591e-5,7.77560322,0.445728609,1.804235078,2.06763398 +62,182,262,727.0,22176.0,0.03278318903318903,0.076517376,1.461e-5,7.754359737,0.421063625,1.812681957,2.076417548 +63,181,260,721.0,22176.0,0.032512626262626264,0.088983767,1.4091e-5,7.616158878,0.422402602,1.868182992,2.016601005 +64,180,259,721.0,22080.0,0.03265398550724638,0.089172453,1.467e-5,7.63910266,0.402654247,1.844390793,2.031385412 +65,175,254,666.0,22080.0,0.03016304347826087,0.091971222,1.3851e-5,7.35822511,0.443635961,1.719023302,2.007792679 +66,170,249,666.0,21600.0,0.030833333333333334,0.073480651,1.3871e-5,7.291999508,0.434965958,1.750073777,1.999358953 +67,169,247,660.0,21600.0,0.030555555555555555,0.085309774,1.7211e-5,7.245192983,0.412650069,1.744681817,1.962798523 +68,168,245,654.0,21600.0,0.03027777777777778,0.089043539,1.367e-5,7.024436477,0.421292773,1.722710908,1.890918459 +69,167,243,648.0,21600.0,0.03,0.084353527,1.428e-5,6.8832018,0.415786727,1.715216258,1.830282141 +70,166,242,648.0,21504.0,0.030133928571428572,0.084367977,1.3441e-5,6.899982477,0.419080281,1.707637056,1.843529005 +71,165,241,648.0,21408.0,0.030269058295964126,0.085701815,1.4031e-5,6.936174291,0.377346024,1.704252961,1.85218872 +72,164,240,648.0,21312.0,0.030405405405405407,0.083910355,1.3601e-5,6.9051589,0.389477478,1.75740328,1.867258596 +73,159,235,593.0,21312.0,0.0278246996996997,0.082135195,1.3351e-5,7.031037571,0.356084586,1.631072,1.797434919 +74,154,230,593.0,20832.0,0.028465821812596007,0.080356395,1.358e-5,7.040766129,0.405151789,1.620631997,1.781269114 +75,153,228,587.0,20832.0,0.02817780337941628,0.066967517,1.3391e-5,6.644186555,0.395240289,1.641155866,1.743666486 +76,152,226,581.0,20832.0,0.02788978494623656,0.080763676,1.298e-5,6.633937959,0.388869331,1.630064054,1.701302723 +77,151,225,581.0,20736.0,0.028018904320987654,0.080671833,1.2781e-5,6.622133299,0.392564435,1.625932508,1.711411428 +78,150,224,581.0,20640.0,0.02814922480620155,0.080368195,1.358e-5,6.599986437,0.397419271,1.657700695,1.694756709 +79,149,222,575.0,20640.0,0.027858527131782947,0.080015475,1.298e-5,6.281191715,0.37819019,1.622522233,1.656839741 +80,148,221,575.0,20544.0,0.027988707165109036,0.065331671,1.334e-5,6.313635402,0.380955078,1.627111603,1.638795233 diff --git a/data/qed_ke-kkkkke_reduction_optimizer.csv b/data/qed_ke-kkkkke_reduction_optimizer.csv new file mode 100644 index 0000000..9432121 --- /dev/null +++ b/data/qed_ke-kkkkke_reduction_optimizer.csv @@ -0,0 +1,79 @@ +operations,graph_nodes,graph_edges,graph_ce,graph_dt,graph_ci,gen_func_t,cpu_compile_t,cpu_st_t,cpu_mt_t,gpu_compile_t,gpu_t +0,15866,21617,66249.0,1.314048e6,0.050415966540035065,6.468999136,0.001398329,8.478099553,0.43958521,0.0,0.0 +10,14676,19713,60656.0,1.279776e6,0.0473957942639962,5.993535435,0.000745961,7.192805963,0.417393835,0.0,0.0 +20,13774,18527,56334.0,1.243296e6,0.04531020770596865,5.489738392,0.000682889,6.652182167,0.336339503,0.0,0.0 +30,13352,17940,53276.0,1.236672e6,0.04308013765978368,5.169906767,0.000675318,6.370526843,0.313517861,0.0,0.0 +40,12714,17168,51163.0,1.199712e6,0.042646068389746876,4.845906388,0.000634457,6.124306725,0.311820244,0.0,0.0 +50,12004,16270,48473.0,1.163232e6,0.04167096503534978,4.433653313,0.000596017,5.760561483,0.320897852,0.0,0.0 +60,11750,15983,48022.0,1.144224e6,0.04196905501020779,4.316924709,0.000596237,5.738809149,0.283214404,0.0,0.0 +70,11538,15697,47325.0,1.133184e6,0.04176285581158929,4.201152631,0.000554855,5.438337093,0.313985744,0.0,0.0 +80,11434,15550,46814.0,1.129536e6,0.04144533684628024,4.216359254,0.000553545,5.429706297,0.268223845,0.0,0.0 +90,11066,15085,46232.0,1.10352e6,0.041895026823256486,3.924567625,0.000560535,5.412444055,0.274917428,0.0,0.0 +100,10848,14847,44297.0,1.100352e6,0.04025711772232885,3.848048388,0.000527955,5.127227854,0.294706757,0.0,0.0 +110,10462,14382,42261.0,1.084512e6,0.038967756926617685,3.674674179,0.000509054,4.922064369,0.276530272,0.0,0.0 +120,10304,14191,41810.0,1.07472e6,0.038903156170909635,3.58233155,0.000516074,5.02371138,0.266906519,0.0,0.0 +130,10200,14067,41437.0,1.068864e6,0.03876732680677804,3.529160319,0.000501634,4.863804478,0.24639169,0.0,0.0 +140,10042,13871,40956.0,1.059552e6,0.03865407266467337,3.346890818,0.000488403,4.753116119,0.254509861,0.0,0.0 +150,9956,13765,40583.0,1.055424e6,0.038451844945727974,3.41847396,0.000500654,4.756966153,0.255966291,0.0,0.0 +160,9906,13690,40433.0,1.053024e6,0.03839703558513386,3.405093274,0.000496774,4.812050085,0.24421971,0.0,0.0 +170,9838,13597,40283.0,1.048896e6,0.038405142168527674,3.348340057,0.000481363,4.669473296,0.234701411,0.0,0.0 +180,9242,12790,37708.0,1.02336e6,0.03684724828017511,3.063089187,0.000449352,4.335668832,0.228471471,0.0,0.0 +190,9120,12648,37082.0,1.017984e6,0.03642689865459575,2.994073054,0.000429002,4.181894908,0.224361729,0.0,0.0 +200,9052,12555,36932.0,1.013856e6,0.03642726383233911,3.046147594,0.000427282,4.151250123,0.212513705,0.0,0.0 +210,8912,12405,36366.0,1.005792e6,0.03615658108237091,2.937579863,0.000433982,4.261727394,0.214012817,0.0,0.0 +220,8808,12281,35993.0,999936.0,0.035995303699436765,2.892146284,0.000432382,4.198423468,0.219749812,0.0,0.0 +230,8626,12061,35765.0,986112.0,0.03626869970145379,2.752333211,0.000414672,4.035044142,0.241721263,0.0,0.0 +240,8426,11841,34336.0,980256.0,0.03502758463095355,2.714773746,0.000414522,4.036870861,0.235365769,0.0,0.0 +250,8118,11464,33416.0,961728.0,0.03474579090969588,2.579966689,0.000402461,3.870568035,0.20937257,0.0,0.0 +260,7942,11242,32634.0,953664.0,0.034219599355747934,2.520293442,0.000391581,3.72881432,0.191238985,0.0,0.0 +270,7838,11100,32153.0,949536.0,0.0338618019748593,2.456319106,0.000383211,3.635092003,0.187908484,0.0,0.0 +280,7716,10940,31672.0,943680.0,0.033562224482875554,2.402192681,0.00037687,3.594882506,0.194062713,0.0,0.0 +290,7576,10772,30745.0,939552.0,0.032723042471305475,2.338714319,0.00037334,3.556085038,0.194369971,0.0,0.0 +300,7376,10529,30487.0,924480.0,0.0329774575977847,2.279512925,0.00036552,3.504723807,0.191079171,0.0,0.0 +310,7218,10310,29868.0,917376.0,0.03255807869401423,2.207692656,0.000355539,3.30937664,0.181261073,0.0,0.0 +320,7078,10137,29417.0,909312.0,0.03235083227759009,2.147511905,0.000352659,3.30461376,0.18005858,0.0,0.0 +330,6860,9848,28991.0,895200.0,0.032384941912421805,2.078259266,0.00033941,3.211808988,0.172834084,0.0,0.0 +340,6702,9611,28264.0,889824.0,0.03176358470888625,2.069880378,0.000318959,3.033092324,0.154811992,0.0,0.0 +350,6616,9505,27891.0,885696.0,0.03149048883589855,2.005510172,0.000326369,3.008426711,0.173417779,0.0,0.0 +360,6512,9391,27325.0,881088.0,0.03101279327377061,1.968347618,0.000315789,2.921325386,0.168873786,0.0,0.0 +370,6426,9280,27175.0,875232.0,0.03104891046031224,1.92734893,0.000315548,2.990437001,0.181187901,0.0,0.0 +380,6358,9187,27025.0,871104.0,0.031023850194695467,1.889258172,0.000308689,2.846738111,0.181651873,0.0,0.0 +390,6272,9081,26652.0,866976.0,0.030741335400287898,1.840892272,0.000329279,2.825270586,0.177422669,0.0,0.0 +400,6204,8993,26532.0,862368.0,0.03076644773460982,1.820608708,0.000296329,2.759355249,0.175583708,0.0,0.0 +410,6118,8864,26274.0,858240.0,0.030613814317673377,1.783961229,0.000290708,2.707626007,0.172954176,0.0,0.0 +420,6014,8740,25901.0,852384.0,0.030386539400082593,1.774576254,0.000288998,2.694176581,0.173939173,0.0,0.0 +430,5928,8629,25498.0,848736.0,0.030042321758473777,1.7065974,0.000284277,2.675798329,0.170062674,0.0,0.0 +440,5842,8523,25125.0,844608.0,0.029747527847238008,1.685087395,0.000287118,2.688215586,0.166480549,0.0,0.0 +450,5738,8399,24752.0,838752.0,0.02951051085422151,1.673553823,0.000274969,2.523253333,0.167824913,0.0,0.0 +460,5670,8316,24662.0,833664.0,0.02958266159987717,1.625105871,0.000272178,2.52817126,0.164730041,0.0,0.0 +470,5548,8161,24211.0,827328.0,0.029264088729016785,1.583826656,0.000262318,2.419247276,0.160768733,0.0,0.0 +480,5426,8006,23760.0,820992.0,0.028940598690364826,1.58433006,0.000264708,2.454129792,0.155746163,0.0,0.0 +490,5358,7918,23640.0,816384.0,0.028956961429915332,1.520887155,0.000253268,2.329551174,0.153813499,0.0,0.0 +500,5272,7807,23237.0,812736.0,0.02859108000629971,1.488167166,0.000248837,2.282665244,0.154234105,0.0,0.0 +510,5150,7647,22756.0,806880.0,0.028202458853856832,1.448681065,0.000247727,2.275316917,0.149501885,0.0,0.0 +520,5028,7487,22022.0,803232.0,0.02741673638500458,1.43939862,0.000236057,2.14942739,0.146771977,0.0,0.0 +530,4906,7350,21679.0,795168.0,0.02726342106322186,1.367826149,0.000242258,2.188588822,0.148076932,0.0,0.0 +540,4838,7257,21529.0,791040.0,0.027216069983818772,1.341798982,0.000230357,2.096237881,0.141709174,0.0,0.0 +550,4752,7151,21156.0,786912.0,0.02688483591557887,1.339939443,0.000227267,2.062687036,0.13782156,0.0,0.0 +560,4684,7068,21066.0,781824.0,0.026944683202357565,1.327848904,0.000222317,2.00294804,0.139508498,0.0,0.0 +570,4634,6993,20916.0,779424.0,0.02683520137948023,1.276183945,0.000224717,2.021180753,0.13573571,0.0,0.0 +580,4548,6882,20766.0,773568.0,0.026844440307768676,1.235522514,0.000212457,1.917354147,0.128401984,0.0,0.0 +590,4498,6807,20616.0,771168.0,0.026733474418025645,1.267249751,0.000212506,1.899792552,0.133449083,0.0,0.0 +600,4376,6657,20195.0,764352.0,0.0264210730134807,1.209891149,0.000205326,1.850663451,0.129490109,0.0,0.0 +610,4326,6582,20045.0,761952.0,0.026307431439250767,1.18887911,0.000203196,1.819359467,0.129183977,0.0,0.0 +620,4204,6422,19564.0,756096.0,0.02587502116133401,1.172245936,0.000212366,1.757557943,0.125887084,0.0,0.0 +630,3836,5980,17558.0,741504.0,0.02367890126014155,1.043747354,0.000175996,1.554965777,0.115650062,0.0,0.0 +640,3732,5856,17438.0,733440.0,0.023775632635253053,1.010298683,0.000174715,1.562411059,0.113877446,0.0,0.0 +650,3628,5714,16957.0,729312.0,0.023250680093019175,0.985957627,0.000170445,1.474744854,0.110990727,0.0,0.0 +660,3506,5549,16446.0,723936.0,0.022717477788091765,0.948042334,0.000161975,1.420057878,0.106426767,0.0,0.0 +670,3420,5448,16103.0,719328.0,0.0223861715378798,0.921840457,0.000156765,1.356400004,0.10491163,0.0,0.0 +680,3316,5319,15700.0,713952.0,0.021990273855945496,0.892707383,0.000162605,1.335548894,0.100909488,0.0,0.0 +690,3212,5200,15357.0,707616.0,0.02170244878578212,0.89578919,0.000149085,1.299462304,0.099173414,0.0,0.0 +700,2916,4871,13850.0,693792.0,0.019962755407960886,0.781393124,0.000134984,1.179737113,0.096642976,0.0,0.0 +710,2722,4598,13123.0,684960.0,0.019158782994627425,0.725161332,0.000122213,1.056813282,0.08619269,0.0,0.0 +720,2636,4492,12750.0,680832.0,0.018727086858432038,0.701632434,0.000128984,1.019551067,0.085388434,0.0,0.0 +730,2532,4373,12407.0,674496.0,0.018394475282284845,0.675037355,0.000119134,0.993660466,0.082709493,0.0,0.0 +740,2428,4231,11926.0,670368.0,0.017790228650532244,0.6435086,0.000109403,0.927737064,0.078423743,0.0,0.0 +750,2342,4125,11553.0,666240.0,0.017340597982708934,0.619218823,0.000106693,0.883708241,0.075467284,0.0,0.0 +760,2274,4032,11403.0,662112.0,0.017222161809482384,0.635081649,0.000103493,0.919860114,0.074058132,0.0,0.0 +770,2234,3977,11313.0,659712.0,0.017148392025611175,0.593953439,0.000110543,0.84404911,0.077019298,0.0,0.0 diff --git a/examples/Project.toml b/examples/Project.toml index ac0e043..0a5d779 100644 --- a/examples/Project.toml +++ b/examples/Project.toml @@ -1,3 +1,9 @@ [deps] BenchmarkTools = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" +CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" +CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" +DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" MetagraphOptimization = "3e869610-d48d-4942-ba70-c1b702a33ca4" +Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" +QEDprocesses = "46de9c38-1bb3-4547-a1ec-da24d767fdad" +StatsPlots = "f3b207a7-027a-5e70-b257-86293d7955fd" diff --git a/examples/qed_bench.jl b/examples/qed_bench.jl new file mode 100644 index 0000000..67934fa --- /dev/null +++ b/examples/qed_bench.jl @@ -0,0 +1,148 @@ +using MetagraphOptimization +using LIKWID +using CUDA +using UUIDs + +function cpu_bench(compute_function, inputs) + compute_function.(inputs[begin:10]) # make sure it's compiled + + time = @elapsed Threads.@threads for i in eachindex(inputs) + @invokelatest compute_function(inputs[i]) + end + rate = length(inputs) / time + return (time, rate) +end + +function gpu_bench(compute_function, inputs) + CUDA.@sync compute_function.(inputs[begin:10]) # make sure it's compiled + + time = @elapsed CUDA.@sync compute_function.(inputs) + rate = length(inputs) / time + + return (time, rate) +end + +function bench_process( + process::MetagraphOptimization.AbstractProcessDescription, + func, + io::IO = stdout; + use_likwid = true, +) + println(io, "\n--- Benchmarking $(process) ---") + + NFLOPs = GraphProperties(graph).computeEffort + if use_likwid + input = gen_process_input(process) + func(input) # compile first + _, events = @perfmon "FLOPS_DP" func(input) + NFLOPs = first(events["FLOPS_DP"])["RETIRED_SSE_AVX_FLOPS_ALL"] + end + + nInputs = 10000000 # ten million + println(io, "Generating $nInputs inputs with $(Threads.nthreads()) threads...") + + inputs = Vector{typeof(gen_process_input(process))}() + resize!(inputs, nInputs) + processes = Vector{typeof(process)}() + for i in 1:Threads.nthreads() + push!(processes, copy(process)) + end + + Threads.@threads for i in eachindex(inputs) + inputs[i] = gen_process_input(processes[Threads.nthreads()]) + end + + println(io, "Benchmarking CPU with $(Threads.nthreads()) threads...") + (time_cpu, rate_cpu) = cpu_bench(func, inputs) + flops_cpu = (rate_cpu * NFLOPs) / 1024^3 + + println(io, "Benchmarking GPU...") + cuInputs = CuArray(inputs) + (time_gpu, rate_gpu) = gpu_bench(func, cuInputs) + flops_gpu = (rate_gpu * NFLOPs) / 1024^3 + + println(io, "\nBenchmark Summary for $(process):") + + if use_likwid + println(io, "Measured FLOPS by LIKWID: $NFLOPs") + else + println(io, "Total graph compute effort: $NFLOPs") + end + println(io, "Total input size: $(bytes_to_human_readable(Base.summarysize(inputs)))") + println(io, "CPU, $(Threads.nthreads()) threads") + println(io, " Time: $time_cpu") + println(io, " Rate: $rate_cpu") + println(io, " GFLOPS: $flops_cpu") + println(io, "GPU, $(name(first(CUDA.devices())))") + println(io, " Time: $time_gpu") + println(io, " Rate: $rate_gpu") + return println(io, " GFLOPS: $flops_gpu") +end + +# use "mock" machine that only uses cpu +machine = Machine( + [ + MetagraphOptimization.NumaNode( + 0, + 1, + MetagraphOptimization.default_strategy(MetagraphOptimization.NumaNode), + -1.0, + UUIDs.uuid1(), + ), + ], + [-1.0;;], +) +optimizer = ReductionOptimizer() + +# sadly cannot put these in functions because the world age must increase after the function is created which happens only in the global scope + +# compton +process = parse_process("ke->ke", QEDModel()) +graph = gen_graph(process) +optimize_to_fixpoint!(optimizer, graph) +compute_func = get_compute_function(graph, process, machine) +bench_process(process, compute_func) + +# 2-photon compton +process = parse_process("ke->kke", QEDModel()) +graph = gen_graph(process) +optimize_to_fixpoint!(optimizer, graph) +compute_func = get_compute_function(graph, process, machine) +bench_process(process, compute_func) + +# 3-photon compton +process = parse_process("ke->kkke", QEDModel()) +graph = gen_graph(process) +optimize_to_fixpoint!(optimizer, graph) +compute_func = get_compute_function(graph, process, machine) +bench_process(process, compute_func) + +# AB->AB +process = parse_process("AB->AB", ABCModel()) +graph = parse_dag("input/AB->AB.txt", ABCModel()) +optimize_to_fixpoint!(optimizer, graph) +compute_func = get_compute_function(graph, process, machine) +bench_process(process, compute_func) + +# AB->AB^3 +process = parse_process("AB->ABBB", ABCModel()) +graph = parse_dag("input/AB->ABBB.txt", ABCModel()) +optimize_to_fixpoint!(optimizer, graph) +compute_func = get_compute_function(graph, process, machine) +bench_process(process, compute_func) + +exit(0) + +# 4-photon compton +process = parse_process("ke->kkkke", QEDModel()) +graph = gen_graph(process) +optimize_to_fixpoint!(optimizer, graph) +compute_func = get_compute_function(graph, process, machine) +bench_process(process, compute_func) + +# AB->AB^5 +process = parse_process("AB->ABBBBB", ABCModel()) +graph = parse_dag("input/AB->ABBBBB.txt", ABCModel()) +optimize_to_fixpoint!(optimizer, graph) +compute_func = get_compute_function(graph, process, machine) +bench_process(process, compute_func) diff --git a/examples/reduction.ipynb b/examples/reduction.ipynb new file mode 100644 index 0000000..cfa8674 --- /dev/null +++ b/examples/reduction.ipynb @@ -0,0 +1,542 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Threads: 32\n" + ] + } + ], + "source": [ + "#using Pkg\n", + "#Pkg.add(url=\"https://github.com/QEDjl-project/QEDprocesses.jl/\")\n", + "\n", + "using MetagraphOptimization\n", + "using CUDA\n", + "using UUIDs\n", + "using BenchmarkTools\n", + "\n", + "println(\"Threads: $(Threads.nthreads())\")" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "compute__5aa84716_9ba0_11ee_31df_554757739f76 (generic function with 1 method)" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# preparation of graph\n", + "machine = Machine([MetagraphOptimization.NumaNode(0, 1, MetagraphOptimization.default_strategy(MetagraphOptimization.NumaNode), -1.0, UUIDs.uuid1())], [-1.0;;])\n", + "model = QEDModel()\n", + "process = parse_process(\"ke->kkkkke\", model)\n", + "graph = gen_graph(process)\n", + "n_inputs = 10_000\n", + "inputs = [gen_process_input(process) for _ in 1:n_inputs]\n", + "cu_inputs = CuArray(inputs)\n", + "optimizer = ReductionOptimizer()\n", + "\n", + "get_compute_function(graph, process, machine) # run once for compilation" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "bench (generic function with 1 method)" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "function bench(func, inputs, cu_inputs)\n", + " compile_time = @elapsed func(inputs[1])\n", + "\n", + " single_thread = @elapsed func.(inputs)\n", + " multi_threaded = @elapsed Threads.@threads for i in eachindex(inputs)\n", + " func(inputs[i]) \n", + " end\n", + " \n", + " gpu_compile = 0 #@elapsed CUDA.@sync func.(cu_inputs[1:2])\n", + " gpu = 0 #@elapsed CUDA.@sync func.(cu_inputs)\n", + " return (cpu_compile_time = compile_time, gpu_compile_time = gpu_compile, cpu_single_thread_time = single_thread, cpu_multi_thread_time = multi_threaded, gpu_time = gpu)\n", + "end" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "# bench and produce data\n", + "using DataFrames\n", + "\n", + "STEPSIZE = 10\n", + "n = 0\n", + "\n", + "df = DataFrame(operations=Int[], graph_nodes=Int[], graph_edges=Int[], graph_ce=Float64[], graph_dt=Float64[], graph_ci=Float64[], gen_func_t=Float64[], cpu_compile_t=Float64[], cpu_st_t=Float64[], cpu_mt_t=Float64[], gpu_compile_t=Float64[], gpu_t=Float64[])\n", + "\n", + "while true\n", + " func_gen_time = @elapsed func = get_compute_function(graph, process, machine)\n", + " res = bench(func, inputs, cu_inputs)\n", + "\n", + " graph_properties = get_properties(graph)\n", + " push!(df, (\n", + " n,\n", + " graph_properties.noNodes,\n", + " graph_properties.noEdges,\n", + " graph_properties.computeEffort,\n", + " graph_properties.data,\n", + " graph_properties.computeIntensity,\n", + " func_gen_time,\n", + " res.cpu_compile_time,\n", + " res.cpu_single_thread_time,\n", + " res.cpu_multi_thread_time,\n", + " res.gpu_compile_time,\n", + " res.gpu_time\n", + " ))\n", + "\n", + " if fixpoint_reached(optimizer, graph)\n", + " break\n", + " end\n", + "\n", + " optimize!(optimizer, graph, STEPSIZE)\n", + " n += STEPSIZE\n", + "end\n", + ";" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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PgkJCbdu3fLy8qqcGDsuLs7d3T01NTUtLS0kJKTaTIKEkLKysk2bNt24cYP7tbS0NDY2tqCgoFGjRsHBwYaGhsHBwXl5efHx8a/pGQilUsntCDx3cD2c7Nnb23vEiBFamez5xVAarGVvb8+ybE6ZvPIMFiHkaWkF9yeNcxPOlL2Y7PkVMNnzKwitxzHZMxVxcXFZT7Jc+jSpWl1xRBJxg+5uKesTDx48OGbMGLrvy8nOzs7IyOCe8zczM6tcrlKpTExMqr04Jyfn6tWrubm5O3fudHZ25gqsZcuWGRsbm5ubT5ky5dKlSx4eHufOnfv000+tra39/PyMjIwqKioGDx7cpUsXkUg0bdq0gwcPent7Hzx4cPny5S1atMjNzX3//fdPnz7t5ubGsmy/fv3y8vLatWu3cuXKyuHIk5OT+/bt2759e3Nz8+nTp+/atatNmzYFBQXt27f38PBwdnbmJhN80bfffrt58+aePXtev3598eLF+/fvt7CweO+99+bOnTts2LCqszVHRkaWlZX5+/svXLhw5MiR3HzMS5YsWbVqVWRkpEKhOHLkyLp169auXWtjY8OduUhJSRk5cmRqauqpU6dUKtVff/1lZmZmb29///59bhofQsiUKVNiY2O7d+++YMGCiIgI7u7yyZMny2SyevXqWVlZTZky5ezZsz4+PlXTPnnypJubm729PSGkqKiodevWISEhTk5O3KBi4eHhhJCuXbvu27fvNRVYdTnZs44VWLrO1dW1RTPvNQn35oV6cktYQtZeuR8U6M994AAA9AZ3ec7M2eKlfzVzsSCEVA7/TdGKFStWrlz5+PHjWbNmVY5CzikoKJg7d+7cuXOrreLu7j5w4MDr169v2LChcmGLFi0WLFhACBGJRNu2beOKj4cPH548eZI76+bv779kyRLubv21a9fOnTt3x44dPXr06NGjBxdhzpw5a9euXbp06f79+1NTU2/cuCGRSK5evVo5FNaHH344ffr0CRMmEEI6dOgwc+bM2NjYNWvWeHp67t69mxDy66+/Hjt2rFq2t27dWrFiRXJyMnd6LCwsbN++ff3799+6dWuvXr1sbW0nTZoUExNjaWm5bt06hmFOnDhBCJk5c6aHh8eYMWPy8vLmz59//fr1GucTnDZt2uzZsxctWsQNjn///n1ueUJCQnR09N27d62trb/44gs3N7dR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", + "image/svg+xml": [ + "\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", + "\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" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# plot data\n", + "using Plots\n", + "using StatsPlots\n", + "\n", + "img = @df df scatter(\n", + " :operations, \n", + " [:gen_func_t, :cpu_st_t, :cpu_mt_t], \n", + " label=[\"Function generation (s)\" \"Single threaded execution (s)\" \"$(Threads.nthreads())-threaded execution (s)\"], \n", + " title=\"$process using $optimizer ($(n_inputs) inputs)\",\n", + " linewidth=2,\n", + " xlabel=\"optimizer steps\",\n", + " ylabel=\"time (s)\",\n", + " yscale=:log10,\n", + " minorgrid=true,\n", + " size=(800, 600),\n", + " fmt=:pdf\n", + ")\n", + "\n", + "savefig(img, \"../images/$(String(process))_exec_$(n_inputs)_inputs.pdf\")\n", + "\n", + "img" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "image/svg+xml": [ + "\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" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "img = @df df scatter(\n", + " :operations,\n", + " [:graph_nodes, :graph_edges],\n", + " label=[\"Graph Nodes (#)\" \"Graph Edges (#)\"],\n", + " title=\"$process using $optimizer\",\n", + " linewidth=2,\n", + " xlabel=\"optimizer steps\",\n", + " ylims=(0.0, 1.05 * maximum(df.graph_edges)),\n", + " fmt=:pdf,\n", + " size=(800, 600)\n", + ")\n", + "\n", + "savefig(img, \"../images/$(String(process))_graph_properties.pdf\")\n", + "\n", + "img" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Julia 1.9.4 (32 Threads)", + "language": "julia", + "name": "julia-1.9" + }, + "language_info": { + "file_extension": ".jl", + "mimetype": "application/julia", + "name": "julia", + "version": "1.9.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/images/qed_ke-kke_exec_1000000_inputs.pdf b/images/qed_ke-kke_exec_1000000_inputs.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c6d5b3b7e98df418952001aec00201ff0c4ab727 GIT binary patch literal 31319 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 Zo)niP7L|bgW@uqxWXPqe>gw;t1ppUHqAUOa literal 0 HcmV?d00001 diff --git a/images/qed_ke-kkke_exec_1000000_inputs.pdf b/images/qed_ke-kkke_exec_1000000_inputs.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3ee95a431a9f535185ca80578ec7e53af9869958 GIT binary patch literal 45763 zcmZU)bzEHC4ldjlcPs8rad#E?k!r}3KVw+cXxO9;x@Q^!~33d@43Hk z{+jGbo+Qu8O7_}psFfw8nAn&(5vg~!$EOh4$XLl7Oso+F1rb@qfo8@o4nQ(GX*sn| z{}HVm>?Mp{%*f~@_}N+6IoR0QxLG+^`8c^D3d%qSQ&)i5zXoJnWDsOBQ=pZb8SoRL zurQ*Tz3Ce=`~P_O>gi}k#v*R)Vr=VR0Rb?!Fmop3gea&YvM9N_*jm{`WR8F2{|oRY z|2M>c0sgBBiP6E;-i3_yf84#H{lD7(c=@j?8zPIGm8mnCF4vnE{r@rK`5!}hGkXgc zOENZgL>4J4TNg7Ri>R8ojLa7^4+%4XgQ?k@nX?OoE;~fle?I2_eBM(2&*eAx|9=>7 zDFe+Q5&tJ=RWoM?S0DhAw4fjvibj= zD<=;t7cVav3&8k)q&F*RHFmE5(c|M~<=|uguik&8|LXl8MYeww*xuZ}{ibZ}0!i5Z z&F`D2rDS4l26&6>O?!_jz2k5V;rT8~Bl6w!-0`u^&O!I- zXdl#Q7w(5goOVw6aJK$(3wqsOZhu94ZM=E8S%29FUE;hx#lGI0ygt`IGbCP#?)rSa zXUTsxn(%*iUw@f?CA}f)znxpVx%Z8d^BcKuP5&-}{K(ce|J?QDB(`wv|C9_mIeBeD zeuzyLeZ5U|^?x+vgO9;+T6^$* z21+9Rw{6E5Pc4~FGAqT>=j+*pGjKxr_UrrA(&q?5zOTZ`Lf@4R8VM#mYeLVjysXRC z$IW6lu)M}DeVhN1L+msjZ>xu>?}9S@{8)xbI%%)dPrO?f#qT_Y9#z^v`EMu|uWRCg6+_}r5?&&J(T!zX27n*R%Zk9#ho2}ltHpCF? z4Qwx9-1>fBd*jUz^&i7`{!`ULmYdc)Q(~_3)j{2E&BBu;fgZ8%zaKn!udgjV`Gvnc zaNnL;_}fs*&#lip?8`2;Cy%mQcD0w5_37pLoZlt_|Kck)(quK6mOmBLT{!HEOCZq! zmj6U+tPfoctIgcB8b_oaSbb&-6Afw1T<<4&sAmZF7tqWtiQ^gmx{GM18Q3ISs&~ON zw90Pwx^_!Fy;UMZ`06GsQTvVEV$MXa#9{XyeA3?jJU{Mt>cy47;IM>sW%nvvun`-i zNsIqYQ)=0P)xV_|o`lrizofMf-OHC}=5y;_vkhz;qC2?$9r4Mo=~7G<$-1{Ul4D%} zl3wvIHyJ(Bd)1l_TTm^24e%QZ*wt-!e*8~0xAAc4ho2hl^FOVqm&Re3L-%ou0Y~pa z184MxXc^L?1e>$(6h9_&jMvd6r($GlSU4RvlRYwtU`8}sEX``4TcMe+Pd1ewAEk9V za^Z`WOWWzsax%@|d=n_yx?BHip;x)aJ=dDJyaFW zn43gVJ-tkm1}O%V8i*}XG&-xFjmhiu;R5cD@yNa3xBG1cwFRh^Jab{Z`|Ton>t98y7B_B1 z>?G>s{sQn%kb-4tfS5^ z9Kaz)BWwfBX$TYiAu^ABWsqjS!v{uRyA(H1ZsqDMdUE1{5`BErGGZVt&m3LOxIR3o!F%a z(Qz{oR@lDq?q_G=*_YU|4)vLDc>8ojA8+m`EO^C9EI*t!!;%LwejBW(03P#9SY8pU)q<7cIp3C;Mi9C|*a|e!+^VCcqTcU?I1yTKOB|UEX)8+*U}?)9{ps zrEs?at1~^|)9G|C?P71^(?afU6)V-&QNKE+({PYfa{aRmi*)tANHi+&w04RYI$!Tr zVz`#g{vN;UZ4Cr8sOY=Pd}^Id_`Yhb5DX)uCR4VkG(A6Ag?IJDZTN8fVtXy+j7ooh z5FI0~O?2}$u~h_}kvPRo!Z>NAN(vA-a&~^XBcbC#X+@jl#Vp?66LhI!-~H8zy`4DP zc0Iu@7j68ezQawaiG8SvG-1^f%l`1J@10Dat#zgT@gA*7O5y5I2<|!jfhIPAeId1c&PL5{c!?$l1v$R z;ptf+)XTY?ODRBROqaExTfJA3`D=CO4pKm1MOQkDatzUzekT*EZZex}j6w9knq5vu zUE0UWOXpXT_q;nYyFwqR)hpF~Lu!`InQ*T{i14_ zNjMKcQ06pj7CiN~cWxOX1pwF=Sk~p95tY#o=hK$X zl(lo`atQ3+UEe3Af!b6DJD5KgH_rxqda_FsC_`R8MoeziiUpMFiV;vWGNOGges|j? zG*8eMrs1Z|rSuhT17r2EKe$rZLqgO1@!jtoI9`+C$n$TrRY`>@iUf>f`&U8u{*xV0^5Ba(N7C4s}ioteRH!mY%&`z7PU;ztCV znTXw?ys>Cq`w@rjJAm#l8Udz4cIEw6pYgh4zTC9AErJgt1wf|w^7p%xL~I+c1El`n z5^0-4f(xlBL&lM8pO|^ISoDHMv9<|1Dn_7LuLK)GObfjnIDpZ=)%T_?bW2ixV>5!Hc|K1XMaj#HX^?Db*6Q$pJSOc#y?OzTVjN*`C&N zB+2JMduz=1udx2nt4Zl3LAsMy8~r@|@?KvgV;`l91*OvXsgLiomU9^cVygN=k?1$` z?TJ1sZ)C&dl>jD=a(<*0@4yU_5+i~@>S;=y0*s+rg1}YwG7q1KV-PQXrPWD~HnQ=% zu?9Hv9ITUVcBU}_Xwy`q`a+DXbBwY%$w4&7hUX3F%8f7@t2>;SDiN!2lq_&# zi4N>kajIXA-gHY4^-`Iq5D3N}{NfC*X*J3k*~PfF*!(B+?8g+URafNMs;6zVbEN0v z;_up;Y}S#+>~>g0g4b)q36va%OkfQ2PqDu`Nig;&@2n)#2sTe%zEBE(#=n@^^N*bK zn$=HRK%up*`n~Z<%B4QYHf3QRg>_Sb^GshFF60R3@%irx@bOj8irSj|(4@txg2+$Y z_I*z^90zVXzIYU?$kQ~|e!9Yo?0Q1y@wLj2Tk|s*4b=RvnoMQI#H&zi`J$0)ty8Gb zyL!OZ!boiTP;X3B{)a;ir;vCnV-{Gr(vNzeP$h!uHEpEeZk5TLo?Rsak?1eA6N4mL z`g8hi%+(@O7tyg3noD6^&I7I~tt$Hg6dA<#cBD1_<-{k{L>HE?o1@19id#tE-$4pN4Wof_8HowQ?>lQ*V%C%u;upIg`s(hS$XmYl8%wYgUe_vlHhMP{=aby zztR_RSr)3kwzYZe;5t8*8*fwxzdTNwaTo3%fG~=+@*GSStE97GnyiTs5x-{sz%y|~ z;ENF>T!M!Z)teI7AkhD*#PB=Fo65|fu0Ox zFZJ=fC)MDH!6Fx&m@WP3g&QMjj#js~1HA}5yB2E+)HB4l^fmkC=6-uC;F1E~mOg-) z6$cCPu=d8N>6Zs*`-bNkziz_zTg`7RTwI*!^q4p8pFHz^4Y%dQ7-^Ym2&uB^6cTI1 zfyy*$!ujsTgc{}O!o_w#jMAw{fa)AIj(lGJQCO0Lt6_)gfwxUrzBgEbk3a zS+Rn5mYLt8?>%;7+LAjRu4}M(H5J$@R$O-YzT~(JM-w5Ppr8{+nq9yC0hoxNvy*3I zzdvO~1Y)yA9-(|e2bd5lSkW$JiEK!8V1m|>Yo$%YFjjy|e({R+)aLsdQgR7XjT&2m zbdOcfH_9?U-AumB-K3G%4^dRCITJEfrxjW}bQ0TmzlS2nR=gV01sZsY7iz9C7L(Nv zF=~>y0{hhbGEvMTrz|aos*tBV8P=VryVEUe+|r;=xFzZAYL-9hD)79zl7JA?!ng+z zBbiDQ_sZ~^q&PIE_Lo1PSs@;-v9T`OrSf(pE^{^$xuZI1-naz*+VD68=qA+8Lu*3nlMQ#pOnyxUMYY^vvNtJQ34)w>pPaXrBSp48Wphi zlOTS_G+fe{JIaij6tFrCf&cNFsz4|}Kyu@1iLtv}&$S~FKTJ-W3edGz5w+#$trvzr{}vuKjMF>J=nXR_LHF3g4tC|5S7YoKV}^X5{*oH3v*z z0VLvdDcPiit;jQ}1*B)q08NJ3>d^gk*G)9-><4bL3 zeY9iCoQLR>rx1p_V~sQfXA3%a?eGof5WgfbKNRxiW{}L~i2S7`Gmi~@%_~f#!eWDB zc1j##!&bF=lmgLE4B}&ic*vqfwFOm#f4^I_86o|`B3x)X+S`C}yrMro)Lu8n*nfP4%QnoEccO9jkV3=;{Gm5F?`4;Xk{1pUnTl`~32Z z_@mg(-B;k9VRVYhA7#-DcQaXQ+Sl;Cy6N4K`>J^AefUczS-A;a!mf2 z<`9IMQV2ra8$uNX;nNKSp&Nogy8uCWqK6@Bd7bu8uJCtZ|K+w z#8TS_WAWaCMGH`|3Y7FVn`$ICP`-bkox0T_YIQ*KX&#SLG6S~UKy<-`Z_z5F@HC*} zQphtNThb;t{yB!#vXc}6v~d0KQ{?3xc-!I>+Wr_h9%C~345zR=NCa6oQs|ZR0$`gI zKnf5&mc8spL8ldQniB92Eb=U5czVAjzbCB&et+1n1mm}zYBZQFFJY7%#YZKvvl)AL zA^d(5iBOUMF{%g6gS8k*vs6SZtNub`RQk{KCtdJ+zfDV2T&V8L@H{@)C@h0_^Xjqi z2$9oz2AaE0i5=x7&EFII6A~B@y?!X#e_{|J9SM-{w4!ulOkSZGTSCL5&pqi!w9qoxVXW~Ioh8XSBl3#qf;FU%5aLR z1vz{;BjL)R)}?Q9z(>swx;=Lqt~X%H5!-celdh8=fgKW(SYvHGzxvy8+|23r#~r?P zz10FCAKm$@pH&Y+**u>4#xVl^FeRTq*1l{{0+@B9VI{Jmw1_P~V zU5no$^4uqfJ!%V3q%ukEX2E^>dA^Zz3f^uY^6m6(?(E!b@5Dvq#kl!4khY%9X~?0z zEZp@h$W_o)jK=E!G_zQ(z$8dy5eV1Pw6LOFJoG0uOe!oR_B=&5eSq1cy1lvFbJY2yjHnLCZlLLlGS@`v8;V`6Uxn@2||{1jbR2G1-= zeBOqKn|;NCP5CASW)n6J!Y^-E)MJDAB2sp0pDfhbNZj%^(JViVp58xICzHVpS)p;1 zAV>1-XL%9n2|vYlsiURos=rPRTK1Jwe+#pwowLV4zpiq#Co{aHgBXy3Uw`VLR~k+I=Sm)2hNv>RNjj)HYLbG`RrC^K;W5UG9;={T>M>`5ge3L+^V8hAreOTs3*xTp#wq+YAkf@Y_=bm-O z#f5i1Y#pN9 z^BU3K8Cu|gaQWeRwIKwj3nf`dZ0pd0dT>(;Y2$zyG6@HFGYh*m9?l zHLN&HDZI#(Ijvr9*st_&@whIuL@wOiUGSx1sn6h{+Gqx`wckBr@{`G$c5raP-4aOl z-4BH*&|Z@9-sGD&09$B^N4xysd`bnZSOw_19#rP8Gevati?ahkivpJg>?<=vVpLn0 z2ST=Qil4&dj#~2cJ^ucE=TCkFHrQ@&BWI=e>mS}`1R_Y9>d_IhL|=%xB%q^s1Incf zYy)r2OWKC|*bf4U9kisjb#Krbg}LmFOITXWR){fs@wI~8*c;Sg(N z?l_!^0pdK|_?`q%^Et{jAs!IyV_;0aEz2UuA)I!Q1jC1w!%Cq zboBKKuqXl=LvHpyiV1ik(29H|Ud7TNT=ZuG^*gee&RMt)%3&?u24Z+TY~<72@DF*> z#Co6LMxDGl95XO8@rJ3~-RzOS?C)M11pXT4<;~U4f4568{kirhaK6d%@5cdtY(Wz~ z!AhtA2dCn;dlVj@LiOHOf%-7r- z@O$n!zsv(+NW-ep#lL^QG(aoso2wKVe_ps5ROq?uSDgZ%gfh#Z$GxyHm_Q5#mpi-- z*zAg%_&XSI_b{?q^M(8F9oy~~juYj2=ynpjmZ&a|R^g8yQfpAfu9A3xOi%W~FY`vt zJ&k#j)hc*?jHb(nxD!4Nmx)ZBEQGsgS4P{;ZRUIc)=?IKpi-Yr&!ovY4D*Wp-+;Z( zSic>#F;+?S!tpMGIjgAck!_QY$Evzgt-`Os{hqZP+>Wrh%}<_}w=cq)1{av$+LTVt z&lM{a=<5ST>-g3&^E0{#mHIvjC@J2|35p`6fH`rv3%qe`p(&J33LE4bT)F)>0 z2g!V!r&q+$@K7?H>asZf3iN>36{b7dwk1MV{13NlAy=Y-hs>E*Uxr!@^%}S2GuBPVO)e}tyshK zg9W2g$C#_bkLgJ3g|y7j(KO7P?s}~`l!8)a)z^WoIX~cPu1^Dagr)lRE z0(%T(f8z-J5`AyHW6gT{GsmogzQldh+GvP}K}&-#k$b#gP>ebkZR=8z7@For*g8}V zH;X-F74_!jb2lG2g_K|G=~kEHAhEnq6?9DXr}^2Gc5{_0&(^Pp4L?0$)`KsrYyNFA?Ja zWuY(Fm<9A?wQYaHq<)lC3(T7pu&*RQIaMI+FN}VS4o2$8{d?S@dDSmadwf|agud~! zh;}|Qcv-0YUe4LW18qIHE)W}*+raNbH>i^eBb9+x|M(U+j<@M5g!s1HcL3%qy`DKT z!4qmWJDR?ccb9yG&$5G?AkXAz7q=chRBD5zVOpUj*=o%4Gwq}JBo({k{kvJ5qJ}<} zk42$oKbM|$PmK&c0G*UNqn4Duzb*tli8b;9Nth8vzhs!w5y)rE3I5&K{2XTXCmk=) z-V7&3ZmATW$i6g*QmR?Fj*VZ+GGd&K0U(nrtfQ!DES&->D1#|glflWNTzb6Cg)IVgr zURuakJRPw}jyPklk;8A4!>^IM$aZoqy4xz5b{x>xk5Dr#Adxy&#mcEZRlSzbNM?6S zrhxg~JR=yjkWW!KYqclOQ&cRxBrC+jZRTEtH9xePk7JU|Zk`-5KJB0%p=94EH!731 zn(ra%=UTML=UpwQ(B}9{pB|aFMh?O3O|gk{);l@%-VcU3MyXl&SoLbBw0Fk&3K*q- zsJd8xtcv!$Imqnl=xr0*hN*9zn~eFYwZNeM`a(Ijj+NCw(SD7=;#-(&bahKw<@YN8 z6*-UH`IXXX((c2Q$xBS#_&MF{ZvKSK47 zJg;(WrVC1Z=7+Ab?5 z7`uwF*O6SC*_q9H5s|o2crNr^SBh&~A+7%|;Q$%uBJ0|o@8PN3a~l+xq_GOw&I<}1 z_n&nwbsjLF5jHG!qmG&}q7m*YWi@f%pI%m$7;JpC&Tx}uTkFF;9nGU?du*OtE)^LBwM9iT=;HM*?D*?^}=G`#w_z)9e%63euG z(L)9Hwq^f^D}OUvf{ZjY=1aVl1J|FyH3K`}wI$P6y|s$J$3L%0?#ZmOdw!Qb)`015 zgO0RK|66-T`6Byse={C(N7s2Xk*wW<2Xi#OE?ESIr)*#7;Oy>Hn0(Ny+S+(6ci=9F-pHL$vTTd zG46kZHZvB&+Lv}NY+z+e@!{JuGXt_q%JJ!dI?jp|^`MB7366&1q?_;e8JN7YzLr{+4NACjDkZ6Jg+xKjf(*>24NB z&Q>dNDSUSTk6V8<&%pkRKxW&Xaa5rmWr%bemQ6cqxif*mbV>Z0@-*dpC&|ZwnPCCE zles_&jgm_LM36-2DFCrhf75exy$UWY;WdnKo0VX(C=b`Q58En|C_&%YYOqzMhmsg% z@HKW>Mn~sZWlABI7~qVdC-q-=w>;+pGUZz>N27>%#^rH6hIT(KKyAkT5iXK z-DJJRs9-OHHp$I27g->-`ds2{th~rBrvB<{+%i#k?dVUuZaYi<#`b<%&+<#szttdp z!sVA4h2^tevma0*3#OstvWk7-Cq%y((n`-yY54I@1MN@`D6Gq4Grfb2rPtShX_SY6 zHB}oaU$VjsRACUGz2)ic*N}}<4|_Hc-v>=M&Y3Z(w7O9Y4TV#NOZ`ah#ww0Gtuh>| zrM)mrcV9KwKVX2JGgTkA^mgm@%HHS40YFD3AcMc=$wmf?+s13thRZvT=iBT6z~AGP zVnw*IY~stu#qXc*g_q#>4|3Q2dya0qfEB7)E6F{GN<$FY(9u0+@2_q4mp*R3wWOoh zZ?qNKgwDyO#A#Vy;+t6t_t^oC+2>F~RV|a;M6mY>PIg-+8DyByFI)sokO$!$ShI48ghE z_<1(>Qy}uBDBcy@rp>0yd7ylp@QjakQf$y59_mj2ptZ>%n{TnyA^_NyXHL1QsDMnO zJUpiF_mh)@aqJ$GsU%%CO>K@kcQ5o(>d^Q#r~0YOv1fa>Y+;nB$q2oPvWa{w+f5{h zrYCvA1XKAiKx^-F*vClrU>=c5+3@5Z6D?A;>BtKiv7b-ia0IXs@(}NH7%sD$TU$0Z zT}WNdufjjET9X3m7@mXxhZ@+*qO3pc6!dIi$^O|rw70W)y3u?3ZqP6iiqry##{;LM zm=!SCnMHYf8LRgjo!EIb(bYoeS7hte!UG_4SIpfsean^Dd%G*`U6Eo5T9%GKEro{T z9B%U(-gjY(2ANbwgLX9Mg)qVmDA?~`EI{j`;}rHhRe2j$tARFar!)7JA<@^N7~EUn zgL72IQNXfQT+UZ4wYjBfjL`i>*Br@K;AI+VJCL@2{&fFzp2ir zyo7-b&uy!X-jNt+9!U8a&E1$|ZKm#p8q!tb8sI##A!&gupROaHFt$cxVc9L>5W>^r zc&Apc5*PV8udXYF#%=Uii?Y=)Ll3BtvE3Nyj#D-ouUxrDG-GK8hsM_*T90UVu6@6P zm`~^qR!aj5!yJEId|YJeGu?-pP0_I@SMt%cu}GO%461!K8hM5j9Gsnh5w~1(CdR(E zH;d*s-c4=DgSO88y{$az{JMG3Tl2g71ym|ES)7w(zJF zUiDi0NTmFzB>LgcFrL|#3hP!@v+Y2Ra^qtWp}AWYK`OT$ znay#uyFty4ki6l0y!@&yyW8iD5uLlzueT)oo&8Dt$@N5-bv5x&dj`{uf)`P9err1W zZA;JhNdv7WhQ8)Xi^nQcrJp7RWHVXK64k6~w(ayO`j(qoVn7O|9=cDdSx2@LTn;(x z0U#o{?ienqmo7PDU&A6@#b34w(`w+2VXJ4HQ+s(H;_64>^lj+pqXE!b?u+qkqpJ5B z3$MQ4OVbRf|Lk?AMj^3Z8m{p>R<_zVIML*APAay}Fi82Up(DZBYu_ z9<>@|`B>Ql^Rvq;Jvyvc;KVl7pYAKCJQCWC?Sk`#ABp;w9^RVixI=KSfb1~CV>s>) zuPu)ce>c8Mo>96gj`$=G4`htsxyzCb^TD{wW_zMg4)MUHRIRE>J3WQ2y(>n}@5+di zxW9{MO?MuCPz>j4me|k3wLa!EN@zY4q$j3&)p=jh(rR3LjNUhjHe8OGwCv`Uv>vD{ z$n9GGmE=?5aZblOYwjU02VoB65~^m|FQfF6;+|PPykW^ct=_2%W$EsE{{2frTzmAq zKTtn`mlTK7Oo_+)547UszdHjWHR(agW6OC;`JOQ8Uz!WU?dAuXNzr({_Xmb~W3`$K zJvtA4rcXbSfZ{+SxZf^+Fc%96#yP7CWO5!d)L~iO&TtL!dzPN<3v1houh{3G(NcoK zZfh>GB^W$LCUKWA*)RFKZS# zq^vjPZME(B#GQTRcD!&4)RXE)=SDDvl5S;48vZIIpi0Rb+Y`XS5DGQMF0}TxzoGzI z@$Rli?;VAP_Z;=6R4zuvz_E%3HOE4&$1(R3*5fwc$&wjEE6}#{DNk;!D&@U_Q|Q6@#=MY)~;?Wjz0v3qx?zKq*V+NDaMWYdjR`DE5+vQHd8k zSfju=&I3^uIYYQ@eQ->3Ax9=)5th~ zJys|cqJ9;1q-h%4wdcQv)C^paXYy9ngC8eX+2JA?y@gE{ujDcI_mF0Jk(-T){J=kP zmobmHO^@SIy~@^xP5|xt2B+flC#h;^4zFaccLcDg-RMeWaEbfZh;G>xrlsAiPdYEk zIpw;n_B));_k?ay%iQ*{-Dg#*uGLlyXc_q%tc*WVyQ4hu=31XXJiH&b`^w<} z$c#s3rjse0R(4ZG>Uf-9nM*VLno&Qb&x@ifiN?l2b@STmB2;eUL=o`vd@g5lenR zhpDkG7FG~y1owfwi@n!Fm*4d*F2CK<^&c+s5qw=YPXST$Zz0U}XYJdi-Qpf*k9k|q z1N}6ManB$2u3-mi9+k6{{4iJ5NcF01@|-z_9s=> zgh#y|XEwOQel1~`*cb6^kG_L*;j+`KVy^QOJO9|mpL{Oqtqiu8zK}}%PSrH$BdNhX zO0t}G#g%ah@D$Er+ zM(@k%3-rskzG(J<^Vug>=JpZwtw(ehejX!L=PePo5PUaVl`mb4J}@9v^2C$gY<(`B zqPWGvhb}%z@-_bYBMM7)I$E1`(7b9p<$;Mo^1ca?5^M>g-@*D+em+Hv+&iu!A=VXZ zmf&`bDinssv}g+}sgM@^d&l+980Om1HlN?clHmO&!MO^WG|HAv1zUe0>77uQg8OAR zt?+@%=B?gIhJ4ns7OCT*!)#PstQNo#a##lyRuGdm-zYY(!P^#!`)wmh9Q#PVzXr^dVw`_H^}~Jo=25D118X+UaZwl zRfoJL3TdPBH#<3Wu3LchMH~L)*#5Sby9sJi;S+RNzHl>QVu#V|n(8N-xt%~uMZ3^I z?N5aB{?c!wd)7|H~p)(pR+A1c7 z2DCHFnuo^}w!0j;46+mSz0gEkKQ}9lJjeT0(}#>dT-H5KNM`nleoSvKtb=b0F3BXtQ!C4)rG021xzP(h#{QI6y|!w8x;)g-e>GiQkk(QTyB zPyQ1kGO(#g_3?&q3@0IggOMszwEMk5W027nw=&Y2#!6Ji@Id20{I(G`2 z1Jo_sL7XW#a$A$MKdN2Ztm~nYGP$<&)H5w2-GMvhmu>)FtST>e+lwJTQ0*WzoL-M%|27^QhR!KtgYJoWt9nD2H?P*MCvAY$0#6sCrWO z6bXsLd>ZaRwGnO!DE7g=Aup*7Q%oybq;5*Sou_Y48~GF=pm8o!oL%~&MjY`L4EYEe z!{XENRH>9xf$k6u<&+K2pZHDe#g#9i`+al?3a;i8VFU=uDidtNL{iSD{@8jMm1l9Uy~k4mnloky5rOt{BfrXONX zlhptH_Ndw>(NKZrw+(lSii>LYA!)vc_*s{fRj3nf(UW=Km+B!o4noN!h>Eq%MN>=} zKfHEzZ>d1eBHeHWLqM%;wN(vgiNxEG9h})B%w2#bt>bgSCN%Cd_2{-* z<#vc=Lo4z&2-|B!%7fGB%+NIw7HA^v?|DkEr~x6^(MC6o`a?uz_r^AyCMVjcZA-b8xu0nykXx*iG7rEQ+~!IX*{zkBWP#|`s%#!L3O`V;nUCsXO2w#uiNeDe=9lV8<&vjc zCz80?!4x?MAoI-Yijc5FNT`&Hu51g0-%HVkR1v}gE4>9@egJ}XT|v!OFy zX^dh2o+fdOMpDmE3PwT`bMbDSfPpW>Xew4JZ~(4@F*WY>oB@J9;)wo-g1z4Qn=2?k zdx{2)s(8X*@Q*Ub#rRgop()oSiQL1^+ zUv+gJDQf0k(Zp%lkSgf=s8EXx&w(^O*WcV zS+bL}M72}~izfUm7j{=2=eUY*2Gm0nym$t%5(r44bT@~KBfd-JO6F8vi9NiZ(G(7Y z8z^wWlUHJL3zJJ_xCR=hpqUo!&iCFfnJfVYX2?>MDF)ORr_7V14<5?N%Fe#EToSP< zJl(~I+ge4=-dZ-&DYfv?p^-SLk3!hj^mHsdBcR+%haMFH@u)Akng}JZn#|dn;p_*e zR?RLbl0A_I)Uquc4cn$__*zZv#s-&#~dl@m=xJmaTv^c*{*9 z(6ER1G1|C-k%}fre2@*hG9T+Vn}yesNDfp#qH$@?>%j;yK+!c$MuDVl zSYCIJSMxBQWk#3~R2%39Klli^!p@q?gl}Ak>^w4)G0oA2%ua&#*s-<=W3!Hn=q^-x z^-NDSn3_4`!H(@u&uJGS($I{Jn|!=S)L#7@MwW20y{xHm5^@!l!2I7#P0NqqEkh>8 zu=>1AQ6l~89TZ0`0dAiJ0Aog2kDPJ+SeNbBT>NX8w0uSp);@h1tkjtFJR2M>0F_RVE8#CivD zoYe+^J$f1KYojxy2>&fU-tyY5QFip72>k*8@x&^opk%}@dE=n-{GGn!ncuhv#Ap_E zaYarR-ZBK*6>QFRzZw6Dn5WHXwDe9DX(uK@h( z7p9AlpAm8UgK#O?No0QE3krn_*Cvq&`Krcd2%Vh!_Q&(Xeq>9^P>zCkP>7mn1642` zJUv_Yq&XpY{j6#pK^B&SeYDHJAvB%TjY)JXA9hM-QA0TH8d8s|{)c1#jT>PSnIo^W zf!IFRHus*;lQG{M43w*9T@yw&#>L98YJ*&N!Atgj+1WtP1kUQUpW}Ze%i|Ix(Qf=& z?=YfA0{(0^7TVy~;BI^DN;zX26kv2|?>~Zi8r-Z0L!udusGIzT2^&%(LN6Gt-WK;? z$G9I!Z-vU zp(!_%+uUl%^1^pFKy{kjqf4G~#p=j+k7L~}#-M_x#4_@+PtibDvxbv?aMGkX&v~2+Y03u)3M4V%qB+ zt~M|i5oTcm=}F6Ke=8qiYrJLb?%i(i^d0_mKz6)#qx1_eiE+40C|W&D7tPCCzTT#T z!?c9tGH(U)2=mit6Xx%D_0J_S#otgPiqzPSxVX=4?jvs6R!L979ZXFScvrdqw#EzUv2&|0;L% z`|+m-_27|bTkf|MIh}UZl{Lie`Zce70mWfA#OwU8Mp;!Hp@qlqTY>NCt!p+sLqZ_$ zh}98imOs>^!|p+fBeL9jFd}EsE4+LicJy*!CgUtzc51*YI;DilZgLf}{a%5E0u~#m z7HVE>|zWUCYvA?4Kar&QB1yH%pF*(}& z&eC1J+3a80vC-Kf8Q-XL9xUG)_$&N-3Kc9q#5Rk5HBK!d9F1F8j{OU5_PO4axS>IR3kvTo)vlk_~bz za7CCoxMQkODki@w@w3syM#rO~?qeD=`K5f)>+~=hjF@czWA-|rflz*L#Yz8b3$9eF zWongx6jrIvaI;gd=JvN;)^Y%FsI6c-ujgB z?tlAKtPx67Q`N?-fOywM1Ud~d(LLV9?9W?=aHk%lK}1Z7x6XRS^~@S$0g#oYiGy@F zYZ+Y^5ad559d=TC=S=38dCWLs=6&5Xq-??utvK8T_)k1)Oiviez?k~&)Mb%s01^MU z23HA8{BKJp0e5bp3O-|jW+I$gLTa3(V)ng)?tsIPDux>8lDVWenrN3}QF(H!wqvck z#J2gz+&RN7qHjv>8oZ?$G#S*yeXS8olVO>ZI6lWMXkz`97Htiav?{8~lnz-2QpWuy zLe_*|GPEdlRq4Q(0`r?U3rYX1PRPViD(thr;O2DHg(;f*+;$p1ikDtE#$VGxk4Rdo zqGUS1q}tkFtD|J?91%p7^E1b;V>9M zV*FN4%ztJQBO3lBeEh$IU_R2{a|Ui-t1YokNs+(9j?^G|yO%WA3#gxoM|hi5nr&EV zkb4A5CXKDn`FaYJfoy=_#1bmA$-q_?x|i@8kG9lnETun2Q}1J>75K-Qw%Fd~jfpq+ zFrlWaRc|bkAHjI_$J69n9KJ`@l>2|ih#`b!z9iq*1IP|ou5xZl^%((x0NujYQ8w90 zJAOf6%+~D-%vzKJRKW#n8OkHBOg}N`6P15E1xsv`8q}c?CVTD#n!-Na<6v&G>|2v{ta79Rj@zOO=ak8WtdM=7(H<5`P#_&<>*=bKb z45Z`K$Ay(yCIv_UcxL%-M3ZXlKd)(|%9DOe#=Z>?QRxK=&Z7e_`z-=Hgl*Swo1v8K zKDLhd+p~4(3O@uSa;{1imT2fRAEq30oygs`-|(t=WdFIV`HsoKTAE4mgCz=uG6oK@ z<>MI=F_9(K85>bPl{UBx1bi23fjL3+Yp9>;-?1|bnRjo~))1c>C(=%kRTZC3s%5?p zA5kSF{IesrIrq3>XR6I0O4RKfWbX81Y>cwjZT3pOt!Wid=meXXr!}xY*pSIj{MW*d z|BtS>j*D{pzQ+|sq@_!GMjE7B6r{Vmk(BP1l#U^!l@z2Kq`MImNdal3I|Y8v%;0@{ z@Avcj$Jf2e;d#zJYp=ET-UlYTGA6~atj52m3N-qiP%aM%SpIsW+I%$GYmeDf& zSe=Y?{$mpPKWM@HHe5bUooJ6c#eiETlZ7-H)6d6BC4Uk3;`mWs04f`}oCnHJQrhiK zuT5tSP3E)1x0TEsV<^(WsYFQxtUpACo@x&M&}jF)W=pQF4q3=AeFNP=`qpkR0z9`|^6C4{t(qE?M{Q?06|M zhg{U$uS+|)9(u%~mDo=D(CWS$(v(+c7rXTyGivVrBE^_`Nhy~fuYY@ly3gEAMRKzV z-Tj7)DE^^@O2Sato5S3F@HS~Ge==UKS zsXj zdJ*}4TVEv2uPN2!kQ2Gj!4z&7jBR@*T9ehOLHj!WaVAo7ajEh2t~uV(9|QtK!Qs3Bmkk&79;1a zUT9ALvk>mXxr04b1zdn1x*s)T-?3gBQ?l4$Vdyyjzvj`V;Jr9($IhevE)jzj5fG`PoG{G z)P}NW`lgd7BaE@*Ud8Y(SC5tcst6^ zn-!f9Cc+ENY^Wwep z9y8Ly`{LfOB`N?w|UmuUcg?+n!E!{tT)xY16ES z8XOvLlH7yD0w@T|9MVq$R=;Z3z6+dx!0+(*qitLugScS?!9ErXh*QTNp`-HA`0l&p z?hs^2$(PYNbHc8VUynHF%0149sy7OGAA{~YxH0=Q`Si6v62IfV06VdH0jmfl72Bv? ztlTBny8-Jye;ygA+t+TGd7!kPXe5OKt*ZV6*ftEkW05k<*CV5T&%S;qDbr4odGu#` zbSKZVie=SSEMr2bUun`gom015d*vks)6zeS=kZ8_DNkw4BWo=l=k#dVeo4$Xe=Hw? zB+jU5=i2KLZi9`eTjfQP!=;y%2UH4w;GnPICFW+G?z2$Cjs9z|Yd zKLqO0555UWf#(p$$fM>l=_8D=MPu!Pq+um!cp22Crr~9cft~szrw=oj!LC^3UIzG` zWY&~jf={}`Z4-YydSTI&x=0t0#x)(Rj5Pd}i7p;WWQM-^aN}xXr{30mDPM*_K6^$; zWA=$uxl(b(N7krQLW>P$avmU*i|v(aa_3zCZ*<_GqJPSR9&gC-C7DQT7w{7q(ZcFCcyUgE`@T&#_pn=bWRI+a5Y(s> zA12{Oy@FnofW2hi1tDoSh2|*QCvk2JvY8Y}Xb$(j9P_l%?z#>@DLTJDlrZVI;6uK# zHHPzq=q_}{d>J)g!n0knPO-uN_8lvgWn9|ns)j;mxWLQ(+rKLd)PM%5SM%gS3%Z@z z9P;YM@>Q}Yqn${`7_{}25?vmli?wmq0R_&~&gkICBK67t6<@0vJaoiaT}`Wx+kZBq z)8u^<^Y0$9>u8U|kg^ULjp>fuUv0x6!HD|$1Y-v*8bgenK#~j3RE>#t=~s7@9u0fU zQIayP5}~n*&GcE1b(Rf7NT}?JUB3yowplGDqnwmOJ!|K1bpvu#?z{EPu6eBKAXy}@ zeec6Y$Cvqo%K{?!!kOD920BIpgJyljac>emLgys2wAARcn3a|OXFc^==hCCO|;p;NGs)|0IEAsDCfxBRd#$elF+0LI8J}i5K8RWSLuJr<0(&I+6~E4pI6_j*s1!kI{K!xcogE(Z&0v$dAi-6#@3@@bB`i0)BGT_sVnb z7sV>nD*{Ht+Do=vv>7SgI~EZo9OF^VR_KW&3wZyZ#^@MKInzRE8d#ppRyQ|wPw zBja*DB+}!#sLq6@gfwpv_YZ5LMX{26v97JV1iTyZEU#e4_m&1 za)+q%bKz$KK0b^HFANp$FIwz0k35l*SO~7AV4T933(nHZ0zGn~r$c~de`EsOh7f$e zt9jl|>`)Mks-Pj@XXvf~CfZ&UU^iX%2NQiaXcE=2Tt*mF*}I?jS0e-1k;$4i@U-V^ z5*5$2jZL&8HL;~D;>S1nC}@BHumAyo3I{;IKu-(^o2dSJnzbSdN;pT^=3J?w8OY1% zWlwWgVhZ|2(;!U}HS4d^@yq_n z{p%oj(+;i>s?Kko4w`4rloLJ(>Y@yJ+TJ`uk!x#Iw8Nyy>mzOZ{fsH&`A3Mz2;AU; zEy8zBn)5LvX5PBgv822(#6osa@&^-}is0@nOXZmSD4&u=qK)SWXs5!CH=+6^Tcjgj zJ6L~&-IRyXIs0~fie%zL+2noCuKNbK;-lOpZ6UkGeVl|?ec}!XDBuYoe6rB+{f#<5 zeHM>b;sAWIa3g+hC=z^%;E{-!)spTW*JEe>pn#2GN>7WZ{FfTAe7ZMByxypmTolm0 zh_}_~pDeMT8@jNsDVSr8_(4sZ?W6^Z;=I}M=!MgI^07+W7)qfk9q9KIug}7 z7erEVj14|E$UA70{7=v*hDIbWL@OSmgd3I}4)Q6o%Vyb8hEjov8i6)vpU}Dr8=BT% zEg|4gC9kN2Uj7b~QqbTCFw}h%M2si4N^EQLJ${)paLB0Qc_xU`iQeJ?44}7-Bw$tY zm63ojVb0n8pf1i3F3%^^FQ2?8oOzh|W6v@QcsHC(+F3~33~x=)T!zx2l>@}*d}hNO*2T!LPf z2@Q~Pn9$(;X(yC^y7zj|`9Tp_G_y?NA-}~zghbps+#p5lNhwL}Q_bBc#EMwxDB*z$ zfLH?ZtOaePdCQW9oMLX5FlPuGvSI~0TWhcXBnFfeUqo`Tll@q&B)yAkT?N1Gws51n z#q~9TbJXSgtjD=xO6kg50-j#tiacy?PH{Ni(A&ff} z)uv@M60Z7MGcp`E+sQL6FIj}ByxZ;gA{Nt>e%|x8gF1UX=KhV}ZR!N<{G9oDM4z`k z0ZMrKqhcq03A2#Uwy$vzk~7g_*Cj8S2f*2;mL$U3IF^!HKtCUNQsA4tr7xlew2Wcx zWqHFvF3+0d2*uyf)g$KGZOlqMWh8EwK@^4U2?!np+WP#&_naecHP?g{7hm2`1BcN_ zEMqsqJ}L!5@l&oTYYCqKfSocFc7F;`DC`~t_P8+9ix|e@WqlkDvg~XEB^bsttkcpF zMPMv(tb9;VBH~Lh34%L5j|%TTz`6m+dT=jTP6v;GA+wASH6Y6HHEO7{xEsy8RFLbz zsl=`g7kN3hDLo;oGWL2N&=8iZVY#Jy$a5fJ#}qWGf`Eiose4Nu0da~W&Waye4iJ_E zejS;euM&I-nN2d&F-lWDMlUYmIpvt#@4)s&=0NA!hlv3`-`qN5Q$eRVUe;e3;s=A1 zQFhv)Jup~z2MC_k#&ajX%($_<*BR|pPtmMAxKXqvUswt}SCHy6ut&Be*uazW=#c3W zWCL2|x2;KYXvly2>BV}NK07ZKt8{GX_AEMY_lbWtTtBIK|rT1r%i56V*=-ZOs zJ_@Hs0HRLvnUol>d+_1gZB|5uuiL2}L6D1)0uXl<;}{lfC>d z4f!Tv$=IX%q)XYngc_1R zlPy5SISto4ulcn;&x!lZ6-AfYB;6%Jb)Dh5L+co8+ZD z*NXYZ91IEVI>+<4A7Kpy(sAr5QQtqVaVJRE9XyqRkYJkTsxQ^nVYB0Lgu%?lTTJcm zYy+~pCf-ds7`FCAVdlBUncZBebuYtfmQ8rVjH2js|c22QDkH0OGpcYr8zKDggRv4WQj$_HX~gW zH9Eu2sAhyCSt&xXxDEOW?1TZgIW77TqA?160CXgn40JMp4AKcE^gZcnqGfdHD$A=4 zs$rbn8fkV0 zu#3CKc~nQw{$nl*DVf>@Q?Dw6>90y>JY zVG@+;r|pFBDw%{u4P%+I2u_1=wbKb>Clb>_`fKJ2lB}`lP3e2_;ZVDs)_uQwj?QXJ z9v-cz5fN@E``U&G9YDbnmaVj2ZUhtNFR;|JZW+X-EU2XXnLGjXyR6N#;;CO0(VnFj z7}v~F^>!emGvcySH$0wk@}ffT!?LLpJu=~cKwb4V6Q?vM{I#OS%ZP?hnjk*oA#CnJ zyF|u^CAD+yJs)1y&@xhq{XNwK2=2$*%*xl{g^C)lBlbm09wbTFtA*OHP=O^G%$l+i zaF&ens7$!wSWCA_UddD6*JdfWhfN`tzI5$xP7oy8M>u}pI%#y+^FgRpk-ai@G=Hw1 z;4x^rOQtJU`|ln*00aEa-qQ5&YDJC42t!@Fw?wKLV4At-5;T4GVu8hgpRqE|^M3~* z`+uKu9SP#%OGMb-Awy$jM+vWHEkeD}%@&dI?&jf_ zl9a(LsC7W6FzuERJO{->9sXaXgrd>%+a$(OVAW^Vq6R)6sxCQj^N+woCNP$Bf(Kq4 z*rQu!C9?s3SpO6t+D7X|j^+F);VrC1p_;SiYtPhxu>lVl^>y`}uy)rd!1%T@l9Vtl z&w*B7`51NSczpZM;zEdnL>CE-)z8eu((Um=%M$^6a-nRyz#vOyIXE_pBtv;is*7@s zGk|F@82mA!nL0@v)U_N^UdWWgUf#*WDlM6om#ddv9a^lYArl3W0X2ojT1i32(WM3V zVrjYw1L_syBipkaUk)&!lBRWF2VjH1Rvfcq+PvIh6{7_?j<<{t8({;6fsM9ZXo_Gd zyNrj_x%ZvKK4++_1FKX8TV^oxP~dJ_+cc^XEeL6LTk^)muQxuL z@nKXU)Hn8ev)cnf@)80J@kx(Ny4RsR)EJ zv;7KnsStE&NG0*O%@v0W1&n2qhY^e~0Wtpt^bueaSZH;q9-)T(+0&j6C485)2pL~1 zTUg6u>0UW@BHGF4p`u9Pz6Z$#>AU<=5L)P99@c$@+9!?9A36l!oH7aWj+A0XmAZLj zuY_f-UCjeRF9!%v^I@|oyFLI+)L*Mqks^{wNG2kUTygOafv#vJQ(nM8z;E}oj}StWpxyWR&1hTyc>~pY|Y!8+R|(#eB^!WwDB^r z$tcVc|2A)L2$iZjyjew2!cnm&3TA`@M(>33>#zEm=!jv;@dG9?PvRp4^($OM>5`%K z32+MTtQYDnutjW^S6isRRFvz)T7PgTo5bgUv$KJH@g?ZQK@U~9Dg1~7CD z+Kk;N+GcTJk(hj>t-+Z4#k(Z=F->gEoVj*o(S1Qv`Z|g~ItRVnr2hS`k;JA&;>!a; zAlz)t>Ry7>l_26cup%UmG4v~c92jc>Q4UN1AQUT?)$LGpO@b5hUvBgQe0LZn>gCPVZFb_W^MUs#UIIdMb6V=v#t- z)(;?PWdk(X2$eYM-~_=|)IlYjZ&}3Mji@87H;=Dv2{b`r#{uh@H9AU1!n_4w%?86` zZ$=4V=WBd_`s8Jgq`n|4^P~oZ;C0bE+GMJ9`VHy7FQ@=s>Cos*mq&FhG!fX*Qg~Il z!U~z8(Se8LK`Wj*Aa(!ap(36CaYG1;5*$VQ$2CF3Jr|vI-iCd3!>WUDx(j<{59fw| zgmG0=rX7xN6Ahd#FR{qYhEA}WFJ1itMXv{U2}#!}U@8D^g>ewzoncMG-bM`~L2sp7q9q{#~ye8fgSHIm0l^re&ui&!!{*+yKJ60+f9gOY>Dz!(ve< zkRSrD6QI`xOyO5Tftd#(d(R@=dSrj>=G4m89qjGaxchPW0UyfdY+dP}Ai}Sj+$NQq zAj}2E9RgTebX4+<|39ClER% z@i&Q$QuTzSK@hsH1=Hs86g)pux(q+*M-z{errau=n)0SY7qme^kk_dY)?QsmL z{ugS?gudH)++0A8*PtZEdTlTZSNPx+51IRiGkwRpi)}P_!p!P`x=|4zvOjfWqQLh8IyJh<5;0duX)kNFXLCHK#@XLvF;cgf1Z`NC7L zN7zV8{>Qn>*ii)jmv~8N3Y*fCo5jKJ#KNsNV4{H*QVuiBw}^cydPUiUkyO{s#|7RW zHrV)H81R=+0r#srFr`@F(h+DocMJG~4PlRMYWwh+Ub;|M5v5W+EUfu#Oo|@n5&bXdz*LK2;@62PoLy)@XVjN)C!yBJH2SRT zjfK~na|MWJPc5`p4p=G~YbaHOrf9y>Xp;QMFz3DnDtgx;lT@OL9?iA)*b+{P0PPc+dH<{g5Iz%-GK=)Y_1Jfqbk zzW4A0qIME6w9QdJ!d{AOitoJiEKn~!gpna+v+t z7qx4?<%zBtg0H;Kjd&{QG<$bxoA~q}%>&(uEr$P;*N0SEuXJIm@e-98^%wX}=WpS} zz_@oF$L(+aB*lL)xaTX71YV*!Oi=n_ozP>|KPoX>Etbl*-iQRFws$?^MWhs%|IRc`xNe&-D4k(mL z-!NWE((-8JRNDH^s%WKX!U4eOz?kj|Ivd})nU*n%1cM{YfxK_S`c&Qqwv+`jhD(5HxiXln4 z!VsZEM;B@1-7@yTK+owi4nr9PJjOd`CxCtj4dF7k0i=KB3HtYvK_$w6mK+IcJ(G#; zT=qX|lI81-z6qfF3Y@LF#0BE><h3%Epul_pur)PwUSp~8r6?8}7dgcdGSuE9elL)NS_$mcpVX$CN@n*@4svBzc z86$yoF_TiwBbd4$2#S4jd?BSIagLI$A}O5xwt3$2o?Eja0!p5Qk;9AW39B{|P5KFQ zzcw4GzKue`747;HYS>ZG5rx3kNM&o!?^Xf2E?ZlU35y=^kwYGOA0qh47A6+gUwr~w zh!<){M7?aoEdZ)5pkZ);Csq(24+{mbs|zA^K3D`ftX{34zG9ohQjZpiH_^=}I4Cx0 zqnXc!om5t@dQz^i67lSXPXT&sJ`M*G=9A*Lun2OoSs|+s47c9n|Mn47s4vDa-#?++cS=|=j7S7|8Ou^8 zwXG$;9mg{AZu-t(xT*1K7p|lXvjhVxfE@2qFILg%i9u1BSkqb0r%*JRF-a1rAItE7FLv`zNyc{El>m$5F;Xal|(Dyzzg*u5Eqi zORdy{bWT&N+reA$d~D&6XR_iSd_Qw1m^p-2x>`~)f(E#8H_UURTDd{=ox z`ADN5xyn3$NL761E;%SxJ)YLW)BLkWlOB`{tnnRtz%n$=qODu?`=U~>Y4zp{uEn!g z)QHL;%1Me;-J7jD-=dtmaHsUBPphr6#tMCFUh0V>u!>^)qeGMs1{ELWz6kU9!RPaF z+Q5*bR>=1q)}U&jL4Xt3?9Q_c+V#XRrSIT>r`_isIcWjo)_>LIPk#04zH6j0n<|%02mC*O!8$} zez0}uYoGmk6$p8zii1Igj->SS#1Ub#vmMI7?+yip#+N>o$^~(HtY7AG-8nSsSSE%c z#c5&&H~*liu=O5VQcRKD*$3cRqg1zt5EReCDh*#$%++eO^Z_3khW`|(&0u2M7bdjG?g<6Yasr=mbge{G&4MpAv5gE%~w4gSS!5o_!J zj_{l;0qD0#qR{CZCIZanvE+X8Q!CdvDQgjQ6o$Px^TtP_}SEoPeq~G z84OZfMlJe_bgBe;;CQ^$qf4S2_C?IVgU_cmPOp5VHoHMfk}Y2!3SX% zb3>t*iJ&wrSR}+gxgxw#vV-JeUFT zVmjIG5C5Y-CK3qgP$_{W3+y@gVH;@eu=?)ZRdp<{k-W=H3{P zQgb`4Dr96m6TYqS5}yW{W^sUiQ@B>~Svs|Uwo>@N1GNvtv)I0al9UbF9}dWbtDPQ6 zEz_j{4CYmKj$~ncpC*wIPu#*|Wa@Sdn~_KF|6k1UrcId@zx6af1BqE;H(`b1Skv&x zT=Gd!m3uQW>d${s%}0c}C_uOXw)SxIxn*nXG*n3b!Wpxj-!}>{`w!7%+wNpQ?*4*# zU#`M*HhfFZPB!2eQeb(c>ce8lvmwIvkX%4N%OEU5Wz8Q=GOHKh&c$2@i$9sM!n+1r zkz*0p^CH1mXHsyDR#Q}e?Hoq8a*s3>9Ky!^q4921Vg4iFM_lu83`NTSddMpLW^!ZY z{vq=(4hp#b5W(m@N)8A&6ce}MZhkg(D+)H4wmGGa9}0~N-^Fz|m~>gO4ZizhFOZ!M z@S;94RQZQ_g*JbG;ASo0+$b*%JEds?qQegnhp0xEDaPS+UpHQrAoW7m0p3Fr*ci86 z*FAMj!OEA-FXt_Qc9)jBPlg2icwMds-%{_k4Xc5+I?>`eF35b}pe7&!(wplKSV7@_ z0*zc@HjdB7a6P%y<%MgWbwtC%UZ-Qn?bhoH9&lupIqts<3hLv3MKWPx8XigCOpg%| z&Zn~XH%b-F4=VR*DB-?l#$%rt_&HC z1!DgX4C7JyM*hgZen-@8_7CF+3X_(8L_EpAiaCnA>3w&4=dTpe+)(?nrQUog?@R3!jhZ zKrd=P%=9)2GKU}91>e{?)EG-OKcjj#kqBQzj;_G==n(x!mBgxtWt!J9%DOt#(#-9C zg&!|xvz6S-JpF}g``){Koc5W4UIaveP?8}_q5@E%PI&8R)JT4+nrK(&!2@_n)%_Bz z(tGkG?FaZR1Qktv5bDGK7j!Afe-in$*dCS&znUsYJ845(Cnpshf~;N;3E%obsP(KI zE6(7RYkm%+m=q$ZU+_Iu6zj=Bz?3j zNmSXt{fLI#-yxv0Eut(b#X|*Fu-FW0IMtMD zwzP;c{{IhksWJ3W6gs#c>L}nyeeR0#vS@+AbjRnmi~}P>lcEs) zEGMwi9SL5>VGJO}f(6PdyQCd#*7l8>pZ|rqY!xYJ=>l_>-i&&1k0`B%(f_sj7wu~# zWs|PuT(31HlGl%eDDhrChXA_?`Wte1w&C!nFw9Y6#_!Xo?H!58OUk(xDgW~rXsKgb z5c5x|qvgKy{txrBa0cq7G>{wqv`Ch6aIqp>L4^W!BQ+NqHb2$B+=opj{8T@4V&+MF ztJViV8ixh^F+d6{s)!2QQWXB5+G7i=8{rIE{aVxvcz{O>g|fe(VD65_S8?Yx5R%?< zF;rsyU9wD9C;Un9Qsn36Ha|R(PKF?$kG455sEU2E_5OFE?dRF7nHnHV;uQ_lz*Q_J zn>d*-#;pvaRpXXBKfi@0#Q#}oSK0o&M1+?)%@dpC_w4mhbi8M&CEqVl=?}U7{L8#0 zK*j+2hMBj4N*&lK71<@Cj$s9n)lKtY^cm4)#@fDc;{U%2ZNRU5eF8ru+0-VCtYXZq zOm0feEfB{6Q=L2w)cbddK#RmqM(2F969)ZZN_`7xq3!NY4of5t7G0#+U)*Iltr8A( zW^WEik8mhp6$4P608aid(f%q#F&{~V+HI&N1H7+A#T#QeL$)^aC1mAiE+9@c0GuR7%)wrr@r zOQIT5G?DwuI{dfDK6HUgSkgCLR(#J&Z&f478! z6#r@o<>{Zp(a^MZ9PmW5J!m#s57-ViY&$^Z27&k`*&48@!iqW=_3);i?< zIexqH!=EunBu9W_`1O}#_`4ie%edTtz{=ET(1gcAGpzl^)UdW1^17y`wkkDp`P?t<;62v!6d5fnN`L-iNY1Y2mF!M`vAuQ z8c7FbQfQmSd}Z4SCf*kMIa|-YjR8p!N(D9ea>3bZdU-?d@WuZqM2)2Na9dRmih6)} zrmH=ST`+HaaW{rHd-F&9BhOe>eNuKrMeEV!~ z5!&IY-_5q~?$Pem*h8_?~g+D#RMjLSg7;ewmVCA3}{j} z-A^})TwQ{a!gus)%VzJl1efdjmUujJXTHbnD;^8^uFDqB@@Pj{e@VQcc=0nnz@|{U z1Z`5y84Ih*+%(Sa3zg=rf3w|Znh8ryu<60;Y{8UU6*a9p6UpAKy9mYing1r#wiD=k zbxq2@G_gCfMk@W@_vYC4=87KUhnC|4j$8H@r?koINbhr>g}jg5^o{q&uaB416|biX z^^>M$EwC>3!x=n9!V6e9{AvbDB2;`kpDA#w4>72EFuBfMlN1&lUAk_W*|+Etc($P) zZ3WZ&Txt1f3JR2r+kMf)Z1{3tnCV*r-@c+Z>6xR}7+q<`c4Qh-FnYseq|jwfDQSU_ z60hAgInSr&*Y}ROT`ZGP<@tTtJD*+lFZU=9t@KQi)XpbX)0-4zNakQ1-vnXqaAyaj z&e?9RZy(1J1D|^RJ8B8%@O0O0N{wie%*o5pcWPMPaeJabNxAmL+=v=xLqDQ0(;8m^ zNqQfFo6twmCfSVbtHV*6N}lX3M7IzPgHy8e?Ya+|Ll13SS6NjWM~C(?HaI<3i!*8X zFZK(YIOQxwTi$ayUY~)%(*15*!;0L3B`T-%=$e@E^$sP`4u$=>YBIUQKC)+ymdkGu z6z4xVgw76y9E(pRbseS<`kp6_rVcIo)|ZT;n-b`HL_cD>phIwOK=hFo3W3dimPhe;~rp$lUFU{kCM-dDWM{j0rE^Hw>wAAeJG#m8ui zP1p;O?DCx`hUk1@;M`ac-}g1vM8CR5&nES4sooTS;GPra8qYlrd=`t>7hS(>-m^>B z$1O-UL@%5mNYBnKh_G9HdwySut1fbD{*12H-hM1%4AN3Q^{LtwD&I=IK8SvVq-h{@ zji%{Jan8%DzWmrb^F<;KyHaE-F)x@sBADPH#f^G2wjVFUbXb_n$#i&Aaffdu&mqq` z&PLPC1hZ72#b-g59pa0KA{a6wqQtrtu(PifUnC`_a-cCB~HJ%;$N-kl=`APfGuL2{wmZ$uOy12OvI?tlO!kZ zbJb5GiC5tssRA>XmGWx8&$=r1c)@#BY2pjbL$2(li~1S^F&kuv*2q__mzf!3l&W+y z)}&;-IPUf8mWRN-@|mXzV#7(EDkZCA7F{YEk1L9>9Gf>UrHZSN6S&vfr*=06#Omeb z!ysO+tE0JjZ*3{Rj((Lk-Ds^mI59x7>K#Lwe>5>wP#&XIPQ6oO8=-HunU(lXo}3If z3i7%w{M|>HXh_h9T$aY9e&>?+y!zXUKNEyi%10Xa=u3JkHZA1Eea$D;UzrDX6QoSdoh`_n+Kxi zN-wO;3xyhucUj&8zdBfa;1fy@cp=JrBVPygM^eM`FAUB!3~x+9y_+Ay%bK&ryE2$+ z68r__55zw%F&BS!XRms?J~9gT84Uh3VY-3D1S$(xLnbx8S7W(@?`H@&Y_A z<|;<>yD~*F37g8jfOX6jH<1MB1;s2pBPo58Q&Z@2^IRdvQTq+#+=_G zpW*Z728mF+J?z3YskU16rZOo%&3DYOP@GuY@_U6zp)>s;qcUp0weRM><~u80O(P@x z@%s~Q=BH7dtfM^u1*nDE53n)b=6xTh}{>x`y* zb5USfk+37pH=1W^Sxosf42E~d%&=zT7JWweJzrkCeZol~Wf(=J$6zqbky@(2Zm+;@ z>cyx#ROwb>Vi;Wta9LNhVQ5p|O18YaQJc`JU0H!G4184?_7Dq7RD$`Y-i8+Kz?B6* zKUg_Ds>J|2c2I^Ly^ApAtR0$B-W#0ooT9%RTaXXbBJ#QTe*2FE6s;m-a0>rqzZ6I3 zR$zkL`hIf4I*(90));vY;%2>(s^&C#`KW0cb8D)srvt~dW`_1gD~9d#n@juoMnA<} z7Frzi68%8V{s#VUzau&OJsHd1Yh;s6j1V8Eue~Ea-s=dD7GiDMQ6BJiMsI0$UM|G7 zqAcPV^w7Md{K%H%F@0Dm&xR7k(SWYtxIR!LN6B^Cem8LR)v3{>OG-ngf~WLxrJxAu zl8aiN&Gdc8K@lg+5zHe(nrd_Y@F(|2OW$$$ARb81GkkZxzEY#brji-_>QDEK*bKPTgvFLEo)2>F=pmrd3f>fK|B1Q7Nn$I(>Dd(HA+QAle}W3;H5|zXqDmPRHLn~P`35! zc18{M_hVsr&A`7=;iW#Mv~CX+DgDi%)()fUafjEc+dS#@gm{`C@W$@yWv@8ge8L90W8Zu48{ubhTh{SnZaGXooB zA5&`EOK$RJlXJ&KerwU8ZK&C^?P;VgD=A}m=Dh+jqjsw1OV$4{l5NTK>?C$pz}0wo z==~kl`uv+O+MZq}JZAJ-5uQnMKar#Jkl9>!nPz4?>a_~EXw9THR#qwADW%oB%}e~H zm+kbk6CG+xVPA|f+fg}JM7J7jU88Ae#Em5{2|Jpq75!Q7-#F)#XowSx$Mlr5H;4$a zq;n~SUR~aFmzG~<^cH3}oRmO#(7_V{o2!ZWD^pB_S_?>fOT`_PA-X<@mSrjgdR?!$ zWn4A}-2-jEwr<`bjV>1{3=7R=8P9Z}sc7m(y;t!vveZ_J!{R!~yTOY0RY~~w#6uYj zPkp4}tz5&7M$Dz!+=^gl(C$Fs?O+y~ zSsKl$E!@&7C7;q}+9AE&Rr!z_We}RI!Wkeu(Z=0+gA{bLdY)D)qZ#EqqrLp*8uC) znBRKO6xTt5){i1>IlJzTJkru$y@zv@?Yb4?>{2}sCd!g+JbA47x!+oAhI@%WNhHW! z*lVrIFdu!egT~&RyO`FmdtPH~rAXNlU8i)#Dj-5srBHNlr>LR@&&Fd?;;!(O^-ccR zqIAO6$yN`q{Fzm$5M4T?Uv>ir?^(|8oj$W%&FAOwPiNgEyUMpi^N}94eB~=3E8F6n zE()jx%gF|!MES4?>|GUOzAI-(Rwp(9|%-) zDv-wckJp1j&q&3UrLRd{wet}?ci)hQSz8%Y{*;jXGS1ei7WeLvfa+!filZJMzRYO* z+>+JzlnOv(efqVfo*fkkR06R#I<{KXrJrXvy^y zzZWvZm9E3PbVqrG?{k$Ay)%a9cnI(OarM}PfHoStpvw0i#8lx1#Dj%?j%BUBV?~UQ zs;VFfVf7U9d;+^UV-IMIwUbPu{ocmyw+kDz+Q+t>Xfu3a;HM7&PxTWDFa)O&jAC86 zok|9Y7p*jwob)z7h&$+Kv~{Lqezz0=(@{ikF1q91Bo5zt6som^4qxO^j7t*zh>3DgdTxXT?* z*Ww~I(NtNO@DzGV<2&u z7pK_Xgn+NKbLzoVDYL05Z`lsvDG;~TH+~oKOl0{*u=*#Vyfuu$D*qtf=)7ywl~pH? zYzvD`$y}EyiO)_ID_3ai=eiUPWe>Nh>a=vFRYVd7W<0)=XLla=nhl<*)6;Mc@Yz<& znGQ>=U>DsK_n7H2FHtlz%5eDcmJQlFZ29_o)16=bz9u!ZibbknuZ~c7z;0}}$!M@ z%-e2XOns!=8yu;S<@u!j6Q~obU!!gf)cCa#1AnBW5ty!aeKt-$x%a8eL1`hl=vC^1 zPStDF&R3~>=Zwv$XQ%@T!M}mJV5rPAcqPSQ^eu_OVT)k4fbDC0&VE)u`s&UnuP73j z&_2HhEZ=$|D$@EQ$+l1wdrEctyc2aoKe|lJ?2s7Irze86{9^Z%En-NbYX{ldo)g7| zD|9J|oH<2$$etsK?EHB;JwocaH z3EmLmgWjf@LlOPqFtPD8`Xb&cijke}hVC>iuA00QW#InDDh;*tz-EeaVT(UW!BcV8 zkKy?3-|{A4ECFAAbT;W-S1w5~t91B?jA!VCoye;{Q>Eby zr{A{VI%qaGLD!tkIs4mWx=PSn0>JN?)8OfS2Rn|97h{;C843rv4j|c{+0Qxq&ztrr zb)MS5D?MWtVW zSiLjt(oT-XT^~$PB_+CU87Ji%7jT*#HAEz_3H)9`=kWq@nrgmCch@O*CR8Mwm)?0X zaZbb)Jv+j~h^B_=d;MC9ZNbkA#0oC~Cb>H24MvH;^`8D}GO$nD>QMAo?8rgOU|n8ewxkr z?+9Kch9~teZRI{w5$K;H(pRyz%kE4T=&Hr@R>o@Dcp+Hkj%5bWqG^Bcl|OmE{WeW| zeSgj1G~1Fe+0W11z6$Mdbn;hHm{lJ203`WvY&iay#>F8b#=7y^W;A_9 zVCA5Z{x1r=8i~A|d?TgS?`&J~%fs8w#SEGGkw-VZENYtykcd2>-Ck8-)D z%orc(fe-Ht;XfqZp(=m=XdI!<$D3=m$%6fjd$#&x*~~+im=^Jgok?N_Jh_0(S2KJm zhZuF=$uuY)8vBj7gYrve_wA7RZN&*Cove)?@uk`nwl(5Ev~*{DL^h9D;i!iiI9HWs zp6{zUfsm>G!^_$GEpF;-pWI5X^@mTR5rw}@({ol0H*?Qo3O+j`8s=e%`HqvAK(c4x z+he!_?M|rKn#k4=&3*ipq4PGi?Cfl&(DAdFOjib90=xHQJ$Jx&oUi%2nO z2@z>QD!zu3Px|^D=*%WL6Br60!G*+>YvSHQl^!kwTFiwsj11g$`}O-6h1?5H zz-t|>qq|sBjZkj&-JcCmTB^ZOv+XX3_IyqiMOTzjRx}sEPQE7Dg-=~XWhhn84x+eZ;S*$(|&gT?&51l|9__!y}5Jfe5~ z$M;Fgi{_4c4or?2*X%U~$KShHukyT5xLVURP8mL|@DNL#ZQqD2PO!Vtj{Z_K*RPPy zUAXh3zadDDrOU;ZGEw{&nZWF5&ofEC@Dn#3V+=iXask%h->t{4Jp0|0J^x=>Ul|rv z)V8Z2(gM;TCEYo6E1=RKjUXTl<D`~2tzZ%&^6SM(%p>%NFyBsXMDeNzVqYV zzt(lHwfD95wfA0Y-S>0vXT5$j)TuhV=}>cbD|u4-5UCD>?Twd^&TyER@|!lMQF*v` z$7wfY4#5Kig^peanQcmD35eVRc8AWZdrP`byMa@<4pS$yFFev_1E{LN&+a78-^`Yn zI8$kHVX!8o;UG6k(9egox5UI$-F9ky{B?Z!^te8ahr^Cqc|Q1DHco5MYD%UJe>Zmq zushTJ4hsT`H{_oxzkgv+)aSvubyy8tZSbc4q1{l%ho5150obMY^`Aj{cF7-R(MHh1 zB?#R%?U+ua;&db0ZF-vUQ&w?a#FrgFTce6?s1$~cnhDQ}7clH9$UJH3sxyJ9ZoVny z8q7a4j6K?>*OeAF4)NSa=~}4L7Trbbi+4vScSGPGb)6N}3`{*&;`6 zc_!T6zb{h&Ex4LKhgM0EoEG5n6~guVKFoMtjP4NJ2O_5R?nq|e&>4UFn@s3I=jGqF zh~5ro)9t~hi{Zw5@;r7nFa%;Jk9|hD$rQcR{CPMS~ zc1n+f-1@1}@oiYPSooY4QpLD^ZDW9W;&Gp@Mqc@9sdi#n{5q+M6nZI=G3!6-i8`L_ zNHQ5L_;#_mrG522NJhgf_b+9U`K#XzXMUEFSv^OqC)_1(bgK=Adu!hgm6kx(EC&f#O2cryfm6CTPp8hfwe-zQKwmKVF^|b&J`kjIh3m&Jy&DkY&VSY8mfSQ8mDlru*O9S~bH?pNTyE=}+>%FP# zSL7U%I&|9Y%i{>`a_k*(>sLd<-!i$V9F2N#N zqE8|lCaDIY^O#IV_!e_tDbnR&B17Liqmba~d^3wW8b|uiStrG#gBbOp4is}Ld1H|7 zfJIjB!NDxMbcTZy2C!x7g%G|dN!ymRaCD{XJ$Ig=kv17#3C+f|NKGoWq1x||0(P>! zxrkGU|34IClIt{NT73+{6+g)452KtUH9^J;fu;MOV$2jw`zaE-7_YMPS zVbx4UusTSHxr{)tguI^@0(HH!BhQt&x(2DN96z^yF&_U*T}n{Ntp9QF2}DoXKYdzU z${w%sZ`EwTPw}c(7?w`=2i4eB!W;eZ@|J6Hs2KS^S%F4#E!UU92RBEj;KGG!ZJ9$A)Z8+ zG^CKaQ`&7^v2gb>*2Yr?z6U_FwuRXaTNJd05~1rJ7ctg@ZvXB>srdA$f$3~a9&t(8 zK~(G~Y^|?6*gNujj#MK*U6(og*cB5WsooD?ST2%NJ+Dzpy#H&IZslyE!I(Rp{G_8D z)1>(1it+xQ4!whJPvNK4$8E+mf^CQqg=j6tz0e?w28{O6qt)Z`*;~MD1nT7R6JFK{ zbZXscXGaFRTkbEf<+Le|Ii-}d0vV_xaXRj4q+Gf2)a-fiJM|JMm_I~A=p7v5WL#=7 zgB}uE{}aZEJdwn$7fJFDzj{B*P<4;boVJFT>v8&m`i+p7pdz?hFVfv_Y0=bvzuK*U zsT-+JORJ9SyG20Dmh#arBGHTvd`!4#@mv78TD2(uah2X8#34kB>QF*=@|p0b)j%tk zv|q0+>M9JlylGsSgtLw37JtvLlV)t$l_nAX z+#@BZ$VrtPBP1V5az6fs%AZ&ylIRS27|&sdWK@S94Sd3x=(hKM*-Vf=PDIf45mb+> zsZ^k(nHSExv8Uo`owfez(OKB`(}A~z5}CivYuCd7V?bNjOuZOrM;_7BBan75rHd9w3(Up zvfXQFx+*f*LcqJV$i{Vy7g-u_-KR?g_^>RsDacqT`t!L^Gj-08D(P~Zt%W*?H)ICK zWoTn(G%98QH!ML{U5CuP78gQ-VcvxbiW>BFyJB!-F=jap&fw$5%i8bXj#MCcY)m*`FRIHmmN-X@>Ff|9+S- z@ak;dvbUmXV1Mr$AzK* zWCKh!u-6`O&fz?seb=^!TWe<(<)-ZZNt@R~>6b##1Nbbq>u5 zCs44Psj-l468;k=UgD@Gc@C+IF!Xy>LjnCElTh(teY`aS3ofRhU?N8ZX;m%7e zuULeo_*2rh3nS#bSOy@2Xx`vP*7(C_IMB=q0Z7Jw^6J`{QTpuaSmNoGedIryH2DWb z`;5D9^&!IgoX5Q^a@ye-i>Tb7LBp=qp@VhTJw78w3ghW)8`KQB@=Raz4WzBNZ463p ztvM?{a&yIT=}u_-FIuUe2*{uIt7UNI%j?Sxv-s|S zDUI!eKbakQ*3qB8PM2J$4vGTwM8n(cEbR=qewtx28M+_zCTqK|X!zwD+5sQ4;+`P4L)mT_JbD zeFHs1FDvWkLshF6>Kify8!;UUl={Q;((Mhzbn7>EVHYEcjSH<8d+J_#-LIr1WHBG_ zwu}E>6DGkPZCotnkuz7x)kMiTVhD(KmoO)2i#D1yI?F_oVDd2t?kZ2`3_z6S^B7P* zX98|%F*QY09#(7ek0FN_jY`6X946|vvhOn>^cewTRkU?E~YyOn18&|yKfEzc0x zb#d!r)t(^Mz5G;p^tE9zfY$rMfb`}BR{Bk2cV_ny#TbY@1Y5_adgf?q%wc`(jIJ-7 z>Do)$E}q@;<|`>E!^TuRtlpMy4&<3ydMe;a9#qV!BPF__n;XZwpGYXPNGnl%wG^~+ z9GPe7O(g#x;sm}~B|Vko348#19C%qkeweF&w-lMSH*~z|$q~QzI4G`mKcFqSnNw4lqS2)`heJ?E$r^k1`$e9527z6DsV`5<>EvLjKYW^9_Sl*Fw@ zRwkFrUP*L~e_IfMEFLa|MS{)#$8o_Vd&LF=QCRBKeiy!NtzzmoTH0-d4YjFI;Khej`Bh-mTki z@Gj^>t}j}TMi*tn}Tk$Pv3A1s8>Cf ztXA1}{Z;@BklU)=o|lw3*xQutv^_oQX@~K(V*;fiTCl)PWJ8}#&v`xRnHbY+Pb4Q) zg~I*%K$GE-L4hlB?r@4K-cRQLai(QB=<8>4naGasGtg}TWp@^t>>oCl#Vi+Zc^jeJ zzTo^_V;Q75TKnHmK1p&DCX4EN43r`GHH2&SNv}%8J>!^!EGonYf$PMgHM2$3J@H$7 zgs1&IX!p2GcpsY}TY=~rIsxVGw%A7WZIul#e&9GGzQ8K^Vw=i%6~@*Mld`#-@$!OaB%OiyS07`b=Hnl8)Qq2TCk4ciT@2PSg{Y~z90Ij_1j zQq8=%p5tofp=`Ul3RTyxx|}HrzlClZiV7?eoS71c_UqTvC;d!Mmyo2JvG*sv$L%#*vO)H!s4S7D!Kv>MWpvu@J< zR5z&=+BbbCX26t@uSj$reH!g*V7G8>?1lWBnb3^-@M;S?^r%jZ9@Ujv5%#HMfpa~t zYP<=W$zJy^*UqctLsVu){OIOka5R^?9;biEi@bkP8EC^DJPQYD@Kw?s1ogaQz0I+D!yxZNwdudPVlp+NL|MJc-q{z0&Piu<~#={f0_MUQI$nCNr;++ z0;Qv_<_2U-W&I2__IyntpS_E5$JJTj7t7MR^_wB({Y}Nk;}dxdd4|du8UE3b416X}|7AaB#l5YSJvlb!o_8K;Dlj7KhV2%`Jku zMsqlJHRDLN`WFm9d%qn&&o>OPh9=&$>7Z~X#^ScEs@uA19{hJS2;SYLAT{>q$}m(0 zkWW}BK|46Me~{~5;I)7jnv_WXX$5aRtT`H&aA?qr!m{sBbDs2_ZS~RBL;RKT=uGJ& z)MY~6wjpBcZ0Wf4L^<&UqSm)Xjp6?1Edk<5{{rKZuiU4PS_|QY7vBiTv~Sh5Ft9H0 z*T!z?B3Bq>i#Cdr$H}}S4@G)H$uoT2!>RZMd4nECh+n=*tIUT#bRxf@2n9tJ6DOIc zQACOR6+18bjcjFg63xDQ@oO%vLH*XB6`}AJ`+`R~XfNLS&Yar3{+85yCw|_a-;+`^ z_Ipx3@#5}kK0Ji2^4lnz_(kgaQP8nPFt*t;xe!0>x8|^K4Z`3;#Mh&Jxi%tj>Bw^{ zdEr>%dyb^D6F`h=80FZ?@70FKv;Pd#e(o52IT8;Kwz(qm0+j7(YbFyB48J+wiyEsA z1N6jyyd}34c&9iQO=ntv<=sshU{jU8NGOG`ai&8eL*JT}x-dpkzhvCvnsb~kix!zN zKY++&zY7Q?0jA_$5lQD|XT|iLR*XUL6;yN0zGaRh&tBX8-L8UzZL@n^A7(bKa*>@9 zlx?tIp4PHAcat{eK=8VY=BAGY^dw;9tLEvP*NuEJ0o?H|nSRfNiox|+^oZEX4F6J` zMwiyV57u#GtLL8!D2;q^EnkTKK@@VSXb(jiiRNUku;&}h7a<$Xh2^f0GFSdbG$Y;#Irff_qRaI9RU8b-$O7P>f(`hB+ zl(XwpqFt;55qmTqK9(v2Q{>E6HQ<%MR386S;nD*dkNMoCsggn6O*{ynltFSY`CaO0 zNf^+*z_S*r`~kG%j_#Djz*vdj&dGW#mG_b;D|9XTLx{4u4wq9UOS*uDzgFISbZSbZ z=60zuXM@6H+7`Wtz!GYiVX0qx_0#r|!R(=#gcUZ@7y@e?GcW#B!KAJ4SE; zv1l5TiZt6Rj-@{fgr=q(7FygWZ1V=PyES`q?ue>+(3sESwH4rA;O-YFY6n@G{tZd_ zJzo7&c^i2fGG2$jbCR;~sjtkw|5tx*Q)Bx>AHRE}>&66zEVybcb~pOql6SeW3+dVE z>zHk?HjH{6IhN?hiw>B%L7%Oer6uiZkc5D}_k<6b3n>{4yt{yiFLzR)+FpQ_ z`wdfOUbuO(wrr4~X7|~8SVxx=p^;q5CGmm}@By9i%W&I4S$Pl9udlIV<{PE_}hZ%*( z(!#m)InBk0CmJtmX0esUew^~7-eSko;L=y%lBn!*z-&_82k+(hHq7n153d-ggr{BDMzAd9$UVeJ%E zIDIub*O}TxO&deIK!+|~aTYGrY-Q2ygn$1T3FSqG!uD8X^V^lu@45IZrN#!K`|yv` zzowv&SKX}VP=MVl`>q+djLxgdGZFm`pt~nnSGJ13k4-RgfacKJR9(V2(vm6J;9EDQO@Yi@OfWtO{Wq6;`L!TX_V9PQ!ws= zQLOC~&99@>nXn~svY=hu%7$y(=AYjwMCc@-A=u`xG^o9}t%Svg7|7U~&saRSMADV; zd8%IJ;)Wrgqux~RkuLiN?$9ecz0vas>pFNpeZu+AzWWe^cgU3tM-6y-LBhl4EOLp} z;B6@c{txt@Mj_c;{qxFP)aA}ilFcq;#hzC5qtC((Os+j%?1SVlaaXroRQgwuL28ge zKQfWWI}sYG9$<>Ad(;tQUp!m?kH8qVj=?Dvq%^(xI0|ET`iXN$vvcnZM_{h|uebi` z4@RUZW%zb_3VpnYCjmp&XzwNtxsNGMqpjMX@_d_nf7Y>CSc{vyUIXd$%7W;Buj~YA(P> z=2W8g`N>VF*eIZE(yrO#Ujd?``?i0IvF^6SRW)DgTwf&P0pTn+T5Zwagx%fZLwV28ruCfHnajS?e;G=fsUFp8mopU;(nn0X7Y(rm;iSCYTpW|jDqhs;e8ydV zK#_I~dGJk0BwBV7y%QHkNe(J1(a{bViXv{y)u0RYMyvAhOd{!y)cxwE6ch(AC$efu zoL9K|1AVQbJu*1iaagE5t>()BIanX?g5`&>YXZ&kIZEREQuDkosI@Bu;hM8AG=}N^ zn=>T0evOa!jPZh*X5g>DrHVu($^0xiw=w&NQc^bMYU_`JiCGc(%O`8}b)oy?)DkK{ z_}(qksc>t3lZmV3Qh+DE2H#R$gY(9`!?uMt<$)@O%k1;HOOcd#IwH5Nz$j$zVYF}0 zVRS+Ll7qzhXIUx1;)CUd;(yj{$`a3$&=Aky{K204<9T|9iK)M9Ch7~BYU$)-nF-== z=}lZ>F_GZ~%>rCc=XDQy7qvv*K_-(kVSqSAfJJ$;OwCg#`b-a5mCZVK*);S=8%MNU z2Kri4TX6fu<7@Aul$VIb78zL+sWYf*-EVa~waag-2|kZenG8V9=1-W@u9_uWJNb(V zx`Me8nUO57cPFBsn+h+6>Rkl?mB*J#!%zQRnku|!!!SoOpJAx5Ethvza@5+t0hz|-kV>QPq4+#^~kt*U# zlo2!?ORLwH|IutdN)`~*oWU}q&_c4eOB!YyDl+Wc+{QVczgK_ksd!9DlQ97MYmcAf z_5?R_=$E;?CWzpSB;Bb!cb?ZqS=(PD4Z(IJq> zkCDZJiNIu{rNZc=-ItnuEho)#tk#6->Wtx6m`YtSb*cUNnR&;LqJmiBnwuGThq0*vB#0{?q3iUI(_07e_e|HT9W zjQ^=+1pO~2C@B2jn3(u~VM0P8|Ah$yB>oE%6%zX|Oh{bt|6}g17Iu!-u6WYYc>KC{ zzSih2^XoV{xibne3NY&6@xKMxI5DEzqsy|gcy8_%uI~T2HxU3p2%WT+RY_AB@BaWy Cx_bx! literal 0 HcmV?d00001 diff --git a/images/qed_ke-kkke_graph_properties.pdf b/images/qed_ke-kkke_graph_properties.pdf new file mode 100644 index 0000000000000000000000000000000000000000..fce3bfffa1928bf31480516a4520e362bb29d311 GIT binary patch literal 25794 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�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 = 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 literal 0 HcmV?d00001 diff --git a/images/qed_ke-kkke_greedy_optimizer_GlobalMetricEstimator()_graph_properties.pdf b/images/qed_ke-kkke_greedy_optimizer_GlobalMetricEstimator()_graph_properties.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2602ec9db02fdd9165fb1634107e0839dfc83831 GIT binary patch literal 41581 zcmZU)1yo$iwl19DF2UV`yA#|=fS|!0g1b8e*B~Ld1$TFM2=4CgG~PJ>V()YAyYGKJ zdW`N`Yu2oq-<0~QRyU=BxFjPh69)q2&i42e0xKyCsjZ;}0zW?jvzUXifs?HRDUFnj zGVOnw=C(HC22RGLG~&E$ENtwoY^+=?9Gu*&9Dsm=gY9=`BjbNNkaCg&nn}Mqn7bG| z&>{#5A{g6zf78tNzef1xZf8u&EN0+jU}b9xC@?TJb|mEh1e6e%<(-|Z%x!=+`#249BrL#oJd*z*Klvz{%`4jM)|KOD+05O`FBTBEzY-5bpBUI?*G+M z*4W0>$&8eh4S`wG+{($=fmuXZ?8}$W#%|)qMz-IL-?}+E0dQF(u>A8f`RDa!@_#PB zssDec@n*7vF)-u**sNsiXzT1?1Q^ZFPs%K53)}&|0Lqyq+?=G8o!*dt^Nf@-8|ObF zVj`q0Oe~*xSlB5oG;Gfb~t?+dTyXC%_P!H+^qSb$LSzW23k6 z-kNV$z8ZfwHxRXTBh_L7CeOpdLdwO$qVoovjT10uM^dgg$lgT%hNCDyO@FMfC@8#nr-QIINR2DZXO682w^SII z?598}{2}J*0l}5skxkC|_0@}7+3e4yI{Q;UU%K4ogT2l=^W#3a!ClAC2mU7FF6`yF z;dS@%_2$&~F8Y2z8b*geonfQ(hTf?(jpOZXk!&bIpBS+cwGh`Kfc=2Ukj}vJZCl>06Ik!r?2LA zUqHSu(d!k$KFeKf+>GCA=(M$CjKVC)d5VlOWd+An0TuM$kJF%7T1yB>BTkBv<~R#z2b$c�XB+EC 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 I-mW_T1v1K_tN;K2 literal 0 HcmV?d00001 diff --git a/images/qed_ke-kkkke_exec_100000_inputs.pdf b/images/qed_ke-kkkke_exec_100000_inputs.pdf new file mode 100644 index 0000000000000000000000000000000000000000..095401c1deb5e61df820dd44c30cd68a5dcd9815 GIT binary patch literal 30246 zcmZU(Wk6iZwk{gnEw~d1?oMzE?(XjH5}e>}!QCB#L*pLYz474g&TH0L`@DVc?O$_@ z`sy1}RikRwY;pxrF?wbOHhA*goyi$^W)db6dm}4&US4=c5hqha7keiXDsgFL>VHK` zdpl7>7gG`{QEnC{7FK2!W)3DMW-caX5J17n-o(||^nW^#u#b+NIu1Ieua$p1gVhx{KG z|A*i|P>_%Iu68aYO#fx>gYExB|6}DpP-b{WX-gAl5^eSmE4u&Hk@LSg%9z@jyI7Dg zv%oWoS=zXmIxz|T*+0LJkpESG(Eq<~e1z;| z3i9~hn3YVO?OmOWK|%BKk}!(dgIYijAacg<9xmd_E+3iy7#VS8W|n^-B0?lg3`}gC zOzd1-B#g#}|0R9&5?5wn|1aD(E+*D*EdRm%EBy!ezd+`H0L&j|KiU)wT|fcbec1gF zHRO$~OpQPM`Vc=fvZf}MhQjt9B-%`%Ai0>BNI+9U_anh}E}+<)NjN@I`vLuT27Ji> z$;H2!W%a*pWOa4CjVy9BeUUkyjmA9Lk@j+ivh?&n%@<8goIwJ zuipw$%;F9n6BS}Hz^;9LVkaBK5t<-B^v+3EY3ZIP3XSX`p~OXG@%8ZOsE!?dJAY2` z)D7r_yN!GZe;Z19KizqMxO#ucd9$`V-RXMw>ncQf-gv*==z7V~uYM2P^^VJwPk1*x z)n~fdcpFW5|NBn-((ve79n0Mn?<3%0jW)_@7%%cOEBg6wDF!pyg2m!Yz5-Z`Fflx6nb%g zI5*R|Kzo4t#-Futv}lcjvUNUtNalA+4^mMc6uuDbS9p&PaY1wnQQp^B$FgqWyR6*0 z7Rth0AaNJ?R(WN@fygEfkJnyFy?@Ht>OY@hgCI{&T5esi8@cr(i`IVby&EOUN4j;- z-yfi}^t$$djJ=!(W0$U{u0jvbE>=?d&u?cz_EVO})+-+*6Jz@OAd>T0OZE4ae^`{O zYfMK)K%Js4T~B<`K(6{0)wteAf?R0z83*WtI=50+z5?Mu2A>vLI0(BpN?5OM*-w4Z zI)zG-Ygp~M{Xr1x1`xzgmeLa2ds*&Xw(N28^JCedQs=@gKAUe|%?rgZeGA$y$-mfb zBlb#i683m z-48Y6KWeFe)CnKz=v~gT7h&Q@T^fN!v47O@8--U0vj3n_{!t72CXO(=#QnqlkNW-L z1I_=BI`$v#oe%Ew2h3l`LQw9^oS1RXU2i482F26F-mW8MOJ5WR z7uN+I+*uU~$>&3YT+hboHQ`E4(F<&b-rrtW7_Gq$-kulyRm_WPisJF!&3Hs7z>ecM zl^_IU(htt08 z>eyIR`SYNqG=~d(gJOTHQiOCu)-WHSTA%B_UCxXlt>Xn$)o z>$MMDaB@uTsy>F{>ZEvSNe%Jn^K!*6{Sy!k=;0@jW7JOT9!dXQQ)efeVt17E3u%@9 zTnJYTJ=d51mTI)=S))T+u~P^yKkeJ@!g}c?JK{P)Io)%nj1}Xm|3+;U3Vz0sfj>oV z^ZoeN71sHq`E9!Vrk7K0xL4hXrSTC|Dz{(PAR6$oX+kzc;pk7wcb z9BVZR23XCf%XriEuAKsI3v^5Yy=ayoRosouyuHlr{(1pY`Aj4`&!9*xa&>4nBm^0@=(wqm4R1&)!^{ zHq&>o^+@kHryK#nw}&jd_0Y9s>D!$+348gZc@-fSAjozC@tzx#NYYn zfvKqO;}l<%oSJR^e zWjTmoJstJdOrW9rx!v=gZ6EbpAV$#Lj*18>yb|hDY)zauyS%^#uc1OGN}}i6C+f%k zc?55LR5dDbB?j7to=qf$6_dtTC0~CP2Bd1qzjat$&2dha7YpmTf_OOWNu%(p;->de z<#{@I{Vv3dp`RM*h1Bob_2B=`SW4wI+^uALL)Q?PHj^$2w>E60MvfE(vw$9HkzvEW_!5==$rZ2E{`QYlA`ku zos>@%ix-}2k%0rF<&zbq>bm0Ovi=q*aqYQ!7n-G?Jc(o8e98d{WooRd!VuQ>dh>QX z#1)l0gV<5(6U zZRMzL)kl(1Xr#$ZMAy&%a_1;?%BUg_D5CZ914P_>5Pt%v{tnr<655e9CD+*#3*WYOJqjeKkPykZTL;pt@=(Q! zKcgN`>RzLvoyM?<)^)~?sS(FR_h~Q8nClrbRdGHk4A6`{3w6iqI*rhYg^{01x^kt# z=L?chWm8D3VrK?ql%2n8I(P6MvFA7!E^~n`|6l98Fmk@~X`;%ti$T+>6R^Ect3{Fy z<06^+Lvx%nlhFIE-ct%2Kdptq`ZT%iwKT;BI+8-L0Y*Ykf$?E%sGsloem&^mkaxDx z_mnj&U`J+gWyPF3VABI69Ub;1Q1ElF&ITQL<{Tmtn71vA^3TGR@(Ew`{@6|g6&jc9 zLs(f5$S7w~CspgH&aDBv*_!b%T)n<#>7b~*KzGpTIKd?xBA=63%~ z)MMV+_~NIyw+orY^YsR_RoU~tvF;Ti$kwhK)rt7HtRvRS+4>HH+xQK ztMJpoT%h2S+bn=V&IiD(fzX_RKOKCk zWogETXkoiP6^mPqes6F9II^%e;oA#~)7ty?i?cMXaA0y8ry&cH%f`qqw8P-YK)197aa9RZ#)!S@uiE#yKmKb44mugOkR6(|e%KfABM z>iTEod<84A zl$DGvT$2v}`6D8UfCIa~(Dv59ZrKbaW>G|}VqwU4$R}i>9jv5|7$#&F zpEgydgbtZm*SV=~J(u|c-KzPqgKe@${aBZIb2Giul#7>J;w zJ>#5(r0g+uVfH&k$?c|ORv%Bx21-&<0U&5I__m+Y;-88Lh(75|TZ*Gl0h=u$ zn5dWkcnZPsqo&QQ$wvhdb1(Vhc6?Tgggj-z@7pE=O+i%+s?!EnwxPHA(sIr{$$R6E z8#sk}s@vBF>Q2u2u;8M`{w9#Ofs&ME$OKtl_8h5*fT#*Dkr##~TNYn{;vLd$z}a9q zzLdr_loK&ai?_w;u$%PwnT^@|SRZ}oN$&xL##}JVOS!(OuaXReFhC~uy(M&jp#qN0 zBnXbeat@H|A4ky%o<4gIMoH&Lp)2%`_y(-sVU|$iu+1(wJO?vO!1Ya*uTIK442m`H z9mC}KL|d_Uk;k&=?Z($2k^bq3ChuIgJSCfr@t(-Q3!Aa)55j1-`J4!`#Pz|3SN#!I z&i&gjba7aw;t`kIV@%{#($0ZceS?snMI?6jCFg^jEldLCj2WZ$7-j{Cc>Fa>VSN_P z)1+Y=&`yR;oBoO?BYnkSr7bP>;Ra9ig2fl4h@FYAm+%FX50~gh?VWs~=Y06PnQxw1 zZ?9m<8#m(4{?q#Jr|7m51nZTRZE#@Fc_(czZ;j6`DhlSN4X{lP@W(wK06VX4S{e_&a>(d?vCJh>Y59!V>5sO+9}J-F_XV>YZy|F{sZpOqAPx z19$~78^1KmV+cUaaU09h6ACfVy*@y_^>9lMG@TxVD6Z#xcjzvuT?xJOG1)D+ftw%Q z4K1ha<+pNJnPWlo{05267$?(iYNp$Hri1%RRJ+vAEEdVw1Yx!TCfmV*UUOVOfSs=i zKv!)}2b!z=$iz2rUv{D2%|AQ|nau-c1IL>W*?hpz_1w&Yiri95f8)ny>|T9oUlOF5 zQluH%oYRY{np4@H@W`OOcMNc&-c+(kamClG;IuB)Sa+=YYJEzh9bwibsI2x z2y4A@zr`4%JTmmq%;4v|uT}Fm&hY@uRCoQn;~&@T82ZN1M@j=Q!hGJjM*1TbE8-U! zY}V&LY~N&g?rQ1R_ud;%mn?@h;5~(ZQuWW&R^wBJe+rqi7ERl@NbB6+sCf8maivWW zV0A{MSj=vcynPvHR8+TzP{`{FXdS(W8@;^BF=Jjdj%0JbSomWd-??BZ8XAZ^7&>}j z`5cIX5vD^I>F6~(0yy!uk$DfC#6ICHT>mA>+)7QUD@*O-QM&wDA7HF1<^pjmk3O%5yl zj${>m{Y%JO9^ue>oKe)HQ;CdMA5BVXt2qF^x!FsN?cQSku{=H6<-(i1`}&u`MOMSQ zJdV#`Y>om<`OrlNWh%E>n+k&P;b+@N@(>akc@=s)rhPT~HvMU3pM&6^VUn}7jc|<4 zt0JXXZr7|uS}x7Lp;kgv^WXx(R)#8CrC2~!@L_1cB>oq6I|l3;$x2Qi+iE! zcd^R9-{b54(q-@|)Jpx;B+*#QnAU9N$nn0;i zR-Fazb0_!-5@j6?KRf7%FS|RcEqIUo9)n@w-^5u#vY!_0<{=eI*(@JA=A7x*5q3^D z-3%g!Yi3x2`6IAhIUxkzk-YsRJ5@7M4)mLE5o1j)c6$oIx3&Z$lUoOB%U_p=2eb$S3(?5Rsnu_zRNBAxr{}Y434|ME0N4(o1tyR1qJjh zKjbp%HU;+P!#!)dTnzED>T>m$f!r%I0CcnC2Jr~eJiC-nzRJQp+#jyJuU*^Eeqiq@ z;^lq){W9cQZ!0{Z3os^Ji`U;o~6O+$b@g(4-XT1{v6Pj(rpX(JXim zBY}{!2{2}MtzaNUofn}!clY^Ts^_1mdoNMp;&fH+_ehCXb($}VLVp**Z}rQ9cuzZd z-n25`crYcEl^%;NlZK%6NU?H^Gs4 z^hc_g^vxu6<9sydEbQve)ybo37j(aS#nR~jy@C^-2bj`yIPymV?3V^G4MC^Z&fA;6 zAqE>9h(}~vf=_;MG*Ld~*9n3VysejLsbtvZV{IO>YIjFwG zk{STNC48L;tx&v%m%RYNadZxW;ro42@NrE8Izjiy6I(ZawKM?7I}@1D$ID|N_8h`L z7Yxt$3qdWWQOCAt9p`}#dZ6phtcH&RO^xWy=0RR3}{wi1hE=iPFWqR7Le#D=x&Lf=k`Tv*FMsibwpSr&NSfY_e(%J zlucI{xYEkZRdhBd7JphrchOUc1)Zm#LFZ}KwhSB7bo2=7s-XGvs1s0Ly%Ge&u)x^m z52nc~Lt`(f(;eE?-Roa?WNXW8JlG14dPrr{!SVEZ2l$2ysA_Q534AMC9H(mPUU$4LaLD7ho7Q3>k>+JAChC8xb1Q}3zi+&piwL!n zW4!6Hu|7(5c)JVQO#dQ*Sj#BZ@%7?8Ezj`tbE1Rof@(Loa8PB9LqN(ugHvUIV$-H! z+A#)>V)y}wJ(Cc5NZgEP-`pY_@f9mW>HS(x6a6A7dmnTvmZ|-Dp`5bAGE3TNye*dM zRx2Le15C(9h{X2S`;v3%eo~gw7KE1|49YNXImqV)mnjsH5K0KRQYJun);QMHznl00 z7<%l(Z;&5W&t3BSvqWE`Y+lE4?!g<{@0tD96QM?oYC+)Qf)r(g~@4HCmgJvl7I zJp+Y05?j!$m;vm5r*+m-CEc3VOxIrvEn8?1->@V?x@<2isT_f`G(El1P>Z%XdmD)* zSV3F5ogJitoXnqQW+e=CCehy8hc?i^f9=;ta#`kFi%IgveyK)NHsQMo_sN?lB2Rfn zZhddOzZE8a=y?K`2WKuf+b~vjk~hDw*=Z)Ny>gKG2{xIAd$ZhcoYhRnH?idHkh4Jf zthm&9ND1N)7pT!l>~DiDm3={?kS`9zoglsQ1SAT%#FaDyQWInITNbgLRqgWtBNcnBxxsO(-%oXdwc+Ixd+PBrUS}+QS33$71h{w%m_t< zEgx{r)jgPc9fo+$l+4(o2d*4eFa<|384W2DRdgIvi-8-=vuy~FMd>(@D4rOq6hHHY?oyjK)sd z@83xJbBfm{-aH%o9#S9<~2iIs}z>`P>1T+cz`p4UUW*<9*V>XfdV;Nbx zErp;>jDt7KP9njp8c6rGqhRv4I0e(lfQCp$yOWnW>gHDjhDBu?FUPzfW0WUQp*mjvC>KJS|* z7e4VvU7=<>eY9Cy)wYk-0W()NS$MHD=dWd{vQ0)la zN$L7-;Ye5bPv2JkR%EKsrc%KfQcNq|@5zc}XSaW9-8c&7r(G7ouk$r9l&w2NC$qsB z$-n`0Cy>6LrC~DY^$nE&_CW|4BI#s5KHJgc;Lxe{eP`jjiNDb9h8Ecn?Y&hWUM)YA zzQCLqsDc#m4Ibd%LIUFN!5mnsc7^}JrlQz5Xe=@?6St{ClUom|3b7<@3FN%K=r~!L z+B7kBB701;V7Usmu(bcw*;Oa5pMM6-WTgEJjctRmdHrW={AWe@Wg3=~jV0tlZ&Lr6 zN2|$oIP~99^l8nCrr&6`$l>@eu=P(zkw)|~9K;?R@E6p{H;P0Aoh9a4Y#U4Z-#wo8 zOjEvA;}Uof{-u5f8!INh8PTq)*DMTp@0`{D(@0Eu9Mj}rptDW zk)l)oGRIqZjd3*>ux`CXp1WaBuFM!hW?`H>xa(vSV;iir5btXDmA$v)qY@^KummkXK+b8+v{=ysY7ePO$S|V{^0RKuZHnim?3m?qlJv zZ(-s5-#z6|06;xt>Nyq@dg;e;_#tFPfe`wq^UK$b3}GNdr}w#IS^e)J?c%+XGnnd! zhU}xA-dYvk_LxQ2hf6wV{crrX_XZtQw!%c^Ic)-STQt#s32~^3%9tENZ2$Nn*%;z= zNDf{0wKS?!KX?EqrJiT+jvwaAF2_EjJG3lYJ$YdSK%W%_r>yQ(o)wDH7V21ew@;9z z@Y}j~rBU6E2_V@!cn=OU2AT18A{;#(8ueEdrK- z*Uj1E>R1?{Ir0nvYfVWiEt+4thrIB!I!cv&7UWX2dc)mU%!+z{T%yJ@03kAlEl^+J z@)UfhDC=hO+w{_Jwb%4wgM>u7Ls0oBg7$@l$)#Y-VAxKs3`orijb>BxPdIG)ihiSD zt8zcP4vWh$kMb>S(~+t?mIWiQAb4z6$$P&y+HQ+P-JJ?H3)uM2o=O>AciJ~6YBzJ$a|!?B4UMdXDIwbkBYpPyum?4Fk=I4 zSwr{f4ZUUinP;*+n6>)kPv^4Zm&`c6DY127aTmlK*eqrn6k!%!L^O&whQ>5?@1}=@ zk(T<~M>MC^2a7|EqrNQd{Dx;8t())*+?YhY-usQ?Ek0^~N;X=0YD4<6Z;mAaIQDu*_188jIjO1$M4(hZ zm+*NZp?9*O&mplgy)iai~4I(FxB4>w5E=Zocu~wp| z)}c5fXTR(;(Dv2ncVW=)!V~Tj?&PHL*p5Q8#G{|&ra5km zW#3!~`V!LLWHOTHjQQFh%QY5Uv!7*`omI4o-ljtZQD#WI#D0`nF>w|k z9Uqd#%C2p-g!QPfbCGl%G)70G8#q#3f>ew|GlM&te`Yty3h}hb)Sujf2-TPv~R4B=!wOGQj508yVM7r+6u( z3Z~HxNt+A>>G@GtVG$*Et`=#M9BFlG9%N-JPmXZqF%0wxqlnj?nqaHYa22~+Qfa#D zeF^U_F_yC=bCtv!bL(;wf!MdVnWUDI^r6Y`Jz{^g6BbK*)*zy_tzPg17x9cjYmtx{ ztM0;V|lSGH4pIz!Nly!fQC2kMu<}_T>xZ0vxj)33Mu}%pBV_a((CJ}G7 z=_V1Jbv170O}D6E{AwQL+oEtA0K7ahO-C$_F1YKKfXE7|lzmhgoq*EO3Snlawi&@tCr0!R20fL%94!Z9D z8bE2&iNj;%078(_?*xlC$!7vMbe#`JtnJ&*k}y}xJK9pV6A)qv&SaO?fn>taBXh2g zCue3564}?iYc8*gx*658QeLx-$w~yWQL(g@yJ|lUKUemE*%73y@A)Sua{vX`T!Mce zY5_a%ijQ~Dur>E6IAbEM{VZ$GW~xVv8khPUEoXgvvFEZ}?b~ANIdqTD)4gVI-$MU% zKXS={-~Do0DM~?v?mS$<-W$jw|K5f5G%0)kXUI#L!5sFp)nY)IEP!?O7G1{nN%Nf# zOKNbsannz5>1fuTiE z4A5!RsqDQ_>rVR~+J{_rKAl~g_xzT9!O3=R;MZm)Y-eE}y1C?OBJp7Dx@|C5>Lm=R zY@YSXM=H9sRU%#A84kENI|4%CgFNcVqB00YAYgH=XbFX0%t|zT1?d!Pu!IDiU$)4xnB&C1R=2N!!-1q2uZ5QlubvyUg_h%4EzVw>u+BNdN zm3jI~QNB-ZMlw9q&y?qKkuK*NzbKa!3{7wV!Rg1I}HiOt# z+&I>J$q-r$o0eQ}OgdM8hx&YLeKe#ldpx!K?qW+2=OQ;FC0g8CksAp2=f`gKATzl4 zWh_-69G!#E8BztGVPUN)J9-ot;vf}CZ}7HvKQk`hIt+~;17s5I`jo{I#%2@)#x)pD zCqg;x29)9gsSx0I&@iU-pX-r1;^l&158^xb!wy12dfSOm^{B_IJ!!;-W|_jyT23Uq z8&vrjg(7#lb~y#Z5Q5?GUSLg`3-3g&njTThuspcDp1vlLRO=%d96|~-tbW_3KQEKYShPgDPScN^%MPzsC8>%hOJK~#=!;kZF@kUGw(|}oaai!s9g7T<)E`ewLbmHCSPXA0!Y?Pc*7H>~ zP^J!_cV=%G`u^-^#G;LbYL5rR59)9t!c;pf)i*;Z|7e+42^zknv$w}i+Trdfc59iR zn`CU$&BO}$6?5R0$qYMx=N%Yt^IE*;zEaTZsr28mp_fL2HBD9!1D z?S80(uRrJcfL1gtNXpeq1@I->(T=U0XAzkI$M@X$q1V1^K;p zN=^$6r_Q>-lKP4r`x_EUGv0fzG<^M+^$;)Rs2Mhchz*3F|;q`6PLXShi{Fv%9Mtr=2?^ye$` z@!(wC20K6KYOqYGS_MA4@k^QbD8xwi4$O!;*R9V+%NKiOM(Be%i`Z|&(P;KMg*!p! z^!LA|OY(i{vZtwxmG!uhhUzhrB5XxAgHIc7FumdWmLi9v3{Y?sBryJk;7V#`MDweqWDgNfpyN`Lf z?gxS^pIsbg6I7>_&jD%gZ#I>8%tL9o#_K7v>oH@6w6u zp%}M#hFyL?V(v=>R5yCLo?fB4C{^(=1>107iX(p)4cNPMpJ&_T+{>RC**vU(*JF;$ z!Hy*hx9WIM8xhslGZ2Q+t>{Tq2;)q8AB#!SMkKY8*8!IzhC%DIUMFgvtOci{%ZV9T z2HV&V>yy)@OOo2wbU)8mKMIm+Jo=yST0v z%V%ufS02KpS1QEm{^#pSEDiI~eYvuK^4m-;MJ)D7A4D~YmRU)Nq2iI{4X-HQQwFL-!x z5Nbgj#NSiK3q*kjU#OM6%icfR6&R}4VNm?#woc zoJLr4Nx;Bjzt28x%>18?cYjYWD~};IJoEOx`_!=rCti~jFE;tpI+XW1ilA|PM!wdVlGkLlihR_(d|>s z3WR}Pe2Elm+9K$%Oe=Q|1k_ujL6_Y(z3Jw<(y6o~k7TH;m=x-j_`HcMUN;BlUdj|m zy7_FgCc%!DFQ?ymE<;5MiPWbw3oa@e)CSO&Bioqt%E&|`ZtdQs~} zc?{aN8mb2c1WNR>)aGQXs+(IY?!g!VE+0S2cm2f85!(4JF=(l?azviv?~KLQGbrhx zb7c13tzEf7Ui!yklxSEt6PT}A;3fsn`56lERaDD?=Z|GYogV2he3XlV>K~9Jv2UH6 zPzb!Air`=tl4w+W&g5l~n0?;^L2`&V^G-t%9KKm@4YeqFpNfpEhOHzz^4R!SU*d-Z z&o#3+@@i^rbURN{sZjKEiJ3^Qr+6~qt8jMYr&rpu?OTGy<~cFx{#GN`)snP2$!leq z*6`YAT}NV+c0YL;S*`=cdL)@~PT%*4jm02sX_gp0{#87Y(yh3q2$`bnZ)NNMWH7FX~F;aN)`~SJB-=$+V7Q@A`)s#(Nt~!qJI%(TnGy z&^cHtqnbaLbB<=;0)U44Ij48KqLUwN(*qcy_X#ZxkBBu2dX^9mDYfrzem)6_zmTo`v1 zMt;BvA3D(2vbN7eeAS1mPKIKhwXbSQTu%nEz71-HKK5QTspvf4lQ>rR-DygbtkE%GIpmIdSHf5RJM zKQD>xaU9l=7-~x07!(h4txsVXzRhp*;@uc6_x_TAw4B(r(ITc+^)~J5KbaZ{q`PZ? zE=2hP`So<>Fcxs{BTAg@dS1TLa$a2q{GEHfT4M_v(DjWz?RU-dqU1iMd-f5w4=dl6 zUGC=2%y(5r#l@$%Vbi@cN1sw%(^%h_p$w4`1bie*qkPVUle=zPWayJj0pvTS_}Lt0 zc??~2u^~;)kl>_m7B=oE%nuP?4}ddXVY9`OqN3wNPP2WG44!i)*<$I=R8ZZ%^Bwnx+Ks?f z7_ul#Ee1N}k=g-WAsxn!9vN(r=m*Jifw01 z@7pLL@H*K+wdD`HG}Pqe=b?61Dt%99xwkld;m(S!IXw&sBa#)%$GH!?zYLFR%h*32 zW_dmVm2xvtUul`NfPD?F?t*Te$}Qq8Uu)t}Dh=$x|8{2Sm*++iI=;u8E|XcpRf1*W zDR?C99FX^C-4B<$d*^$7Wiy%Js}<0fNs3dPw=|4?3lPTx>i=>ulL}B4M#s&;pNm@rqgP zJW^TCn&3l_KQ8_&ve`#tA$n47BopJPs~9o%kj9n^v;2&%r3u_L59j`KiU#@7ndJm4 z$+b?-s}JMl%`cSSudjn#RnGqO*B9SR7kX)ShBPNtDaKF$Nu=f^2#@6Qm0n7vy0U4G zIXP+@MeI6Iip|vTv$Egfu3XT6(#~T}=0_3nJwLZTPf{B`G~x_VBUzx)WAjhWsi zh2o_5zYh(OuqIK`nLyw5yr! z{v78Sk6-A^QPRL`2JJHU=R@%YTe(Bli{0(X(V#+nUt=l$hx-u_D`D_kr#jS!iYXeZ z_X3T%|Jbj&A%>vZ@V<$aF5K}E*0`s(S?`*`b{N5%deXbkcSkH*kPQnGOTU$>s2gHP z;Tp6<=n3KyX-GEX*=4%s1}}uvwa;z6a-lJ}ZP}n0-oAI|wS1-7A z+IOy!XI{G)m-seJqaj(Hs~Eox**xIiQ$d%mqAu>~cU%geM%tfUElQU0*my_f;<+y$ z2bWrgZ=YI4+8t!dl9L9`0{)^BFX_4P=G>kKRW)Oa zR=}z2x*;llKH?Q1e!Z0J%>{m3e{dgwE4k-!6L=^}9Fu2YGfee`520Y{m>*3m05;~c?V<(N&s0B={V!wyqPgq8eoE$~8#umz1s?@Zpe>%Z@}`fsH}hgYB8ymh(oS4O4p zN_j7QJ~#Fc@8PzCKX^HRkf`r!($nW)f0eqKl%13JRa~(J6O|=RKsvFlqgeK2dEWOK zst-#hbXigj?67mz?Y#?9NXw?5%N9qyvIz9+gmg=xnV0c+3w8;3yHs~LyH1rlO&ifw zmT(DPrm>1BNZb%O=f5H#r@K6VLk;2k{mEw1q%f#(%9<>uy_SzUnP0{EffECm$GD=? z7^W1vs3@DCOB1_2~LNfkpDw41iT-cyN5Y=bLe-U zlsT=j=bEs5+CMz|hCBSaX~z*BFCoRAp+6PQF!ibp=_yXF=Wq0X2B5xJ9bHxA-OY!v zA7QTJAcMFIy_6wq*p(WU?mJ2BLbz-%9tKGZy0orr6^7hw?zj2H{%88nd5(LRmyw+@ zf_~RCD@%VXXS?!W{;dG+u7uhy>D=^ts-=5!-Q4HqW){m>m^v2^r!VsupLGozM$)$r zcJC(v_V|wX#oni@%Exy$NVR;6cIV2=9crtkPSNn@yn7Sr*hJ2hK+r|9r(6M*YoGnx z*N@KS>6-^V=fv(CPWex)ioWdk!0Xf)@-gqaK{H8wU4_k{$PKs(vqKLZLYIJ(=Im?L zqUE34s)**$TgoR@GIN9nVGSP+8Y@#-r<+ZX*BijCk)@Gr%!X&}$o`_|tzjb6hW>cr6i@UG zo6qL%Hp=5Cu?V143uK2)Ze*L30dmD;b7fOftMZGvxF12YWmWb2b$D{pfi2ROk#FC4 z*H20}2pV*2wpsvD#ol--ADwKQ;GMRgu0jzLLPc@h!RLy99bfYqh1fk0ZX5kgPN@CH z#Zmj0udSGNrNc&L+~Q_3r8}F4&Wa*YMQCyQbv4L+R^=$AtDO34Td##Gd(ZSw&=mKz zbR)|kv85x2Tc3oi_HbeqdV)OCm<)J*bexxwc?SpCT{Rr#m3kdmFO|e_3IE@<;d{-y zL+y#5%s*g%6h@n0dD5XSefdR2rvLq#yf#*NP89F!wChdmeqgP7fX2$}gfM%ss5(wn zImNesA|~_76VT93i|Urc>P{Z+mLp8&tgzXYKX|?V{&1BcKi{Booh%3D5^%P$9l8}-4T}B8xgzB7UA4+t7+iy z_+v=)E{*BCOt1!m811%7?{GLrdC3T@(ZWc-Xc^OAI9@&M^Kr~7{hsufsCyoE95w6? z5fz9c_(J7Y{J0;P3p4OL*|J@26ja%E0%GswRXAi^DzF3+Cw+@f}IV5oQ z8^%M%`tC}zBiSW&Z|W!X`g6#NElcdB*8q_|4+R3;{s^_XKfeuqb`uhuu(06%N}z zC3=_)QWEWJt?ix7%So>&6|GuEANTWTZQf7m=nwSYyFY`ac07{ZG}Km_Hs5>%yCz`c zn3n@Q?EFp-t_X^?l$;-#2=w154|3PG#w&nV;kr3^w_RD+>QL$(I}{Z^Bwq=QHByRD zAs1ELm{-dp)io3HJUHri;f4^c-JM;K(RKskTjfc2_uckJLcwbW!oEiUxQEiRUneYS z40NLnYGtxAWG%5Az({Gi&N$Kv4D!2R(_Ul$P|ptWy~o;<%@zB$_>^NsCpB8kt{zy! z;ODQI=y0JW$mUgBnnDt2n{Qh_Gc9VMZ(ReL2qaXW^V#P}i78|K)_0B$xy1r2i6s8O zTIeb8_n(OhF_CCO0lx<~{s<`f^VkE-8NVR~0CVyL`hfmW}0gTi-@BA_Xzvmhr6OK_jbw^RP~{|HM=^ z49FVd(|gZ@o4?6q>kX2EWwre27w^9TJrZPfl+wDLujYD;O$|Q$(L!zg@A!UX>)a)y zSW-Dvcc54(38zU(8cD^;A3R!P%9TP@x|%JVN?}Q{pn+@=!TNK&je)%~d(TATau?et zCb_0UFn`IU)IBBXZId#ciJaH<602T=9rQ`9C#%7gUz@@gP#E>Gji(OW9&R z&pI4E_Eks2CyjJ>YG~H4WM`VZeTA>LO4>%Fp8pEp)^CHU$NjMrfLyToH7HB7+9V}& zT;^!k4&OR~+oUQz;vQ+aP$?lI-X?0OO|EUttuq7itb&g0mXCm;wm{{|V>JizuG>TQ$>FL2e3#Ry>rYrnai|J(+fA(XFnW%CW2&d zRQ}*{&2B-_@*So*y8G!9&_+Kh^@}h#ZdL#F;^3Ro@(Wz_mOe_$(3TYRW#QdV@>x|T zDGBIQcWHLtHyhKE!{L=m8JMWbl1yTnmK6S##c!O6N^{ubmFMU`Du$_=&+s!*aLd~e zj|P(LB}92&u&EHL6c6&%{zr+va%MDGY8i!_+tw98J=w$lie9?wJkcUzuR+Jq5jTj6 zQfg=r149_;(KieR)&(H5U-*>!$kJzNncR}L$qg~}Y!-VYxaB&pvOi}PT0zsf{qaU4}g-_Xl8zF4DdZuO-B-r#VK{IINT$3!m%JVzfqAY?mdDQxXNcxnG& z9PrX8u5TXechIKvEn6QBlfGo=LUo5FnT!Qdew4(fqHCrJUQl~8dA9>u*^+-hD!T*5 z^*ZYn@_g8aiww6M2m*ShDeda~fd}Xn_-3NAI>mz!?OB8`&Hi`@-KE_6r~>!TV7*W- z?pSfP_GDy^YR*T{xIxOXk!F!;zxiM+Nu)Sc@fuK`TloN9mrE|#NXSh~N+thgB#jo1 zY<1S}De`~LwP)h8hn0tSrgakB_bXgp;OK&_gtt=4;OI@8-fsGrWg&RrHy;pj7#M!? zc|M$pV)y`yn!FRLHCs!`zCya~6yD8(543rSO4W(U2>_ct7$5&*_6+BxZHJX;=u;S0 z%QK&i)8~2=wCPf~>H7L~RS- z8(U%k{yej8`s4PasV43?%=>7;*IZI7UrPV6Ek)%wG5{6_Ss8!vNG-MvIz@idJl8E7 z_Lp#j)LyRT;y+iEG+>QC8dBsr%jd9!uzqua|8X+b@GKKS)<07|ZddblWT5EMB3(LE zjmqfUn6#)cA)|tz;NWYd48+vlf=Hyxpw_W-lB|A!)kIQ6ky`gqNsPK*; z=-~wokcG@q_*v)*aDTZCkmVz_Cm>>OCCdVTy!i~>PSs*?R^tRR-@;2+=luJQc$jTx z{G66de=3Dw-$B$rp0qZKQ&YN7EAT#)sL>-Jn3=kNp1&&kKhM8&Z~mmI!G(>na?^S2 zz0JUl%j&|1o4jqsDO=wFhSLCy_!6bw!#D5nU$#K?WtLTekfbddvvz4&oD=1lfHco_ z0m>ohs(JTI(A98^2uT~2>I4ILeQz8nR`(zGFJxcsgX+_J%@aMS)4_(UBBRK=>4Cm! zt60<6P74-ixjHa%*+iD~uQ(6?it{%PzHp5w)Mn)T&Ym zY7l&Fpr=Ohy6*HFRjdDG&{gBZ_h#kU63ZX6zK2aY<1@GRMRNP2d65OxJPs89DLY*J z5#r?U5>z3D+B1?GafbOe!+HIG;;nzT>9a;U+31}8hZ{AmBJqie@gB0Hxo9@H%j;WP z(ot7KAMq4MX|hVrx)`$3rqkpvbEb-?QD+G_9qmo*|epY22+F0DDNVg`< z#0K)ty6!~10l9xi?M{Uye`{g?w#u+mnDy(bEngiMcv46@ixr4v!s2(LeoRay2qYba zm{ncbjk$s9L6CuOUSZlg#p0N(vlR)FnK^0zE7MvG(EnauvkSH*Z4g%`5+NL6(A$LT?rfj*)V?E3it_BVT~OS+8bm5>L{QNLC10H}WbX@{C< zDv*gnS2rD?(vDkZ@QvdD=r8Qg?vk4kA&;aYe}v3nD}ePiHwpG5St{%jDl^|ocFmS2 zDj7jlhgyH(y2}>?=)WB0jTkXHrwO;mBkwT3!*Qf14W4_Nx9|4(Mjf^=qB#UGmt@`` zRWazH1DG*cQitGRkVVY@i$5kek2NkEY&98$63_@VF4c`7eP%F83!;a}9wy~`TG3K$ zwPVbs(odq+p0}j_nu78EUp%41_}Q@0wr5d|suBPNi~Ru>@^k5z?h|ChN;TJ&1dR9H zA4*wDEv60Gs@~{K2*JOenb;mf?-W(UJV{gwg|V35#~qEz#;DY~Wp_o4{h>lP{iG%h z^}2Tf|0Rntrj@RB^N&!x%ac6~KGjB{s0T88r`grB-ldhlT?L~0*UeKbHTvxgrXv~+ z6(R=>Z4q;Nx3|_OTb@$~A5PX^-CdunaV+L|ck3oONnS3GN6?>R7+;qLUhQdz(KqbS z_lZjb9pQY@>%UDTckF&&gMP7n-5GhkNOk1pcd)Vb-bYUJn0>w3>3C6NYNAfLENam$ z&z(kaIfC-^REM8mjdb-L-8qjJad5{hUq@kwUp=SLAy$^=$Ma6uq*s{z*M8C)_h>@! z$vouai4c7H>9CDc;bR%STQMe$dbiY%t*4oFv^ zC^vx&ZsmY^^)*}^)8}UBY!tN8d4V2S*|C2cU^2=rD?EqtGTfjAj?@;=xp-{(= zQ{))cOToFc5lMQlSLB!e@)UW3?KzZb5 zzN*;gDd9g8V@YDMjXA(|cFTyfb$4u{y@o!R^h6f2Dj*wU8$%JE`}p)s8@&cO_klOy z0Mgb&2>?EF0%u$oNdH{xO%7N&($4%HEJC4}ip2NPmsK&)x92?R=tMz3rErwM~ zQ8Uy5tc19|mFmOA_t_u8hj^}==Y_PHqCfe0 z9v?IPSO$VT3dy@ucXm9eTKs`YFaY`?w;Zbp+PR($CSvd$b-GKZ09QH|=t_L&F#vhI|#u^USQGzlLM6IUS;1&(3 zh;`u-1BzI-EY)gCj9|GTtSf0N=>O3x)mQV+IaNiX5=Eou!fn*Es@!8;8>H%TZ&;G{ zdl8@RG~|BDkIC)3RTvt=1_mO?*ymR-EeB5LIeHsGob{V?FWH%s7sq4^Q0SVe+m_r! z`)N1oPR7E6}e_hXr;6Q1VF-b;J zv`IlGP;P17B*(b)$FcZ%AmtFwf(^SggNCL~g*mS2bMPZA_E$%|Z34WdxurnsX27lf znuY_ST24#o5HQcKhkHi$Lq!TC`*LRIvE4?XGrmV9e=78L6Tb>yS}}-PnVLdJhleEX zw{^1AauTa_(W72D;lZ3wfpzUi6L%Bo#~>>&yI=a~fOX#lj={$D>O}=JbaV^1E(Ru2 zV#}!?73+cQ)NQ)15~rIgDHA6e&Dj<5ttHrGr(&R8SK(LhxO;T4b<7Qekx_`{8ydYtl^mu9R-;jX z@~9?uf>f(RYs_j%JV)A06nUU%L&$uJR{u?Cl!gRejon$IU9U%K_0fCl6617E1Ske=Lw2MP1{B{ezEYD_^w<*Bz+I5g3zWVrnX zJ`3uZQKL}S2+YCGeOO?2Q&$Zl^U$`@E zebDkGDY;W&{w7M&7a3V;Aa03v`LE z0c8g?5ONl1;WZD4{P{R`sjS^ZZx;$|ZH7*nez?V&=zH7D`1bi!z@&Gj-Ig3QMj8zi z7U*_kdjmGlR&)|6_Qe~Y@nLDp?}o99`CMQ)uXqgPPgN$xL;g&n&gs^L#@I)PZ`o32 z#t0zYp5Y=|dT-7cy1LF|V?$Dlh(yfeQ@3C=efgr)rQ<&63nBz@eA}) zEdaQX<9?TBBeoWcCGVdMQ7lWF%r&uHF_x^g$c>P^dT}$2ru7%Jk$tFFC+pme{nmTTRXJ=9WZY})kh*D5z4f&ULvCG z_KzJV@zkgO?#_>>o82#WSlZOhId`fLesLmfkLA8OBj|v1VbFbQZSKBw890zo- z;WqM71qK*v>tOASd>pn5$HXWE1j8-UePTYq!Z8bxg0MI4NQ( z50Tf)zQD=9?&I4E3W%Z5S;qgZ;<~XqMm-gqATZ7F@OsZeXbb!MM{&Y=u)1UzG+(M1 zjlm`-W6v+GM8oe6d34Xc+C56qyvdtD*fb_-#*Dfri*dW2-KrxRyqOz1_JY83de3`kpS#obgezc{6~l{pws)_d1~v|0 zNQ+ulECiBDLIaZqO-@>_;P`oJLREM|ycfxHr@Ar7T(1A5y{5W41=bd>veork?>Pt* zavDXD^Kle_O7TWk7ob-~OP^2+MU)8KeqD8IY*^&+b#o3q#_;;N{3wBoYL&gox%gb& zIsngO8cld=OT$L|0!hXyzu7hJ=xRv!Egt{k-p&e1Kzf9MK81H=+Tp5Fd83$U{Q4|2 zL28Wht3=T>QHj&%^w6e!@XL>Q)Vw0T%gFD2`D{*tpz*6Yj*VLG08_UUxk$8K#6knb z0Up++=uXz>P2DN-zs?Ke_$KPpMKqeE*&2l#QRH zDjNl#xbDxYD8{Pt;A_3fRN+p={~IHFw*NRQ7)FORf^@}S9&4DaUpp#VLtLrg|11Gs2NTq)~|AYO~ z$=EC9Ad8j(xfOY)3Nd4U(QVb#4~uWm#%dJaLqH>>Z7*t%UPu9@FP_hw4F3adCrk#P* zG#SyKha}qX0O$vHdIW@J%ZvR)`OBLZN+RPvE z;o4>djLU7C-Zh9G)-7fS z;?`=T9H7o4mYrPAGew?dl^PZx-Ns%SnAb*YL)rRNu>sP*tVGKCCxjP{eY|1vD?D6~ zMHEa$8M-GuBOvKlBGsJ zCPK$!5Cu6zIS#)6Hji24fC>B-4n6kAHT*~8wkLsi?|~ufsrDN$gz$a$W+Hp`r!8#Z z4va_k{n)l{^&EnKAnjF)=B&AL!dbAw7vFFejdjcpHvdJu&{e~Exo(Oy@1FtMoBNCW z0fAB(v}uB$*?==R=?8Eo{T=d$x~A8k=$;I2*c6pn&>Pj3QrF@4Wmdr(~~h) zjTe}RgvYkuWu~}uHAhOH#pboU%LH5O`4sB;U#ZGmbas$N69RrFh=<=NeG-TNj60szAfs;cj zK8mUHCox{F`v7hGk3W~qg6b-(3xE%(Edx_;Oy-DMm+0=`#F>|*e(!35sdApwp$8X$ z7q;lox)hB$ux5+T^WcZfC<^h^ZtP)joHa5EkP(+qpxN` zG5oIJ`cQHJ<^a|qb*wVC4M0$+cdmA<_SXR@b2Y=nCE0$(PoW9XO3{@uLyoO$P8GTe z4xfmQ8Q=>rZ?8F>&Z*Vd1gnIbDJBeD$se3vLG3R46S4Al$zZ@Sj)hgIFhjhmoO}QN z40GT}^;x}CUf;Fc+c$tj_GgwKQ9>XB(b6+4)-0Dac7Bcwwn=a%qVLWy=sOUc8>}UY z6~7YAulm)~Of-9?UsBu^UD5@R7{gy@di?!l|Ld81otA1ZLR0LB#SFYi{@(Vl% z8Hpr{$kH2?W^6}!V2|5T5wgIl3y}>zNU~viIcSAG*_Guk;jDG|WEYL9EkUdurP$m~ zsR+h+>_peLkTXaAOz~H3)lzs#J-MvV$Ubp`xz?&%SIp%R`V$9l5KwTA93L$NoQ8MO z>gSIA?b#y5v{4pvx9AwQ)vh#RA5qUU5y>1DcFIav}J@V2Cq;N%R?MwD8(Usl1Wh{3*`8#NR2RKX+xFmVL;`m1MU* zaiJhu$5c2-mjA*UTDCbM&8otxsJCi#A`*c6(0Izf?3sLvf5*VB*)EXjxZZ|{zHsdJ z`?0;s$=`<`NwwQkbK|yxORuq(Eo-XkhRqSX#3(gtYj|#ACfa;96*)>OjjAWD#+_6; z?Q1>>tjRFW292xL4VqFy0{ftut1m=m`B$E6;YO>1t9o~Dz5(O}t+R7)BThiG)?EVA zy;JBuPrV<`M23i$9jFS!G+!r~KK=qUl<-XHQqWwewSPWm$g>ocusGwL*l0-Y9^HI| zN)1kMor?0@JAj1?sKkJ1*3IHN2Dma#fbxi)Y*ZB9d-P~d%`TyS`UPURM}W#f*2(@E zFtNda_ICA$msGfbNvY5PeR}XcwyAe1i)|8uS4v!nHVp3Mh)}{3Z~;shL7C2kr4G|4 zTG&T+bm2wbjv7-81P0_%M1_@=LxdGkhg^{(x!E zNFu7_^{vPLSlKO58_wssbu8#6j@SZ+99qI;q6p14g8^fU-g)lKch|ZQ=SE zDT^G0kCD98@@#eAW=!gmIq(NQU$b4rdc>RtOcou-dZ34}NwsM>pTiV!(puHat_gF( z9K0^GOuC(fPNzw7!eQo4EsZq_avuKt z)zP$M&FkF3T|0!zn6a&7=+0lkvFoL~kLykI`u#ZTPcP-`Y11sTZH$_Zep$7s_eLlC zKr!og6CSk;x}>k_qpj$d?qev9h|wv>U!5(3kwwJedK!VE)TeUy=6uN=YAX&zC2a>u zyC$>EngB|{(&icDx;8L z2C-FjaK%&hYwZ`K8C=4ugR}k>U1!V8ZwN)|6wqBGwD$IT<@7EsKx&X^pq3Ffi%zL~{qQYM9{$MxF~n{0t6hC7(*UCzmF~n6L6?Ek zl};*vS7;?tNnRC$%IF%LrOn3PZfK1I=5fEV^QzLrWXpcr74=noBQG$K|Jb~BQdC{r zbgv>Tg_<{Wzf9)Qv~_9JDtsR?{tPZZ+~4B2E6iD7v_lvJJ$V|Y_Pp)jnRY-;Bw-w z=Vu=C8h;D3>zgdoc|WFlILPo<#^<*FTx+~`URlC;D0fii_h^9OWXI_o(?$E_IX@L= z#vd7YCOfsg@IU1l6C zr0Ufz!_W~f;VVPbZ&d@!gvU~;@Rsj)?bE%Z9Bg+hl3QD3RA8WpqlJ2vQ@YM zU`+0o3u_7CHVeMltwLuDP1;Pp-vgJjH2^+?Q}b6dm77mySMKQXYg%hVFBs{zT=hA9 z@T3g(+7?8QAjXzLK;*_ir)GU>`d2m|y!=036{Np9<&n9AgX=A=^9c42`$pI`am8l34ICb3dK@hj^aC%4rPo5Zb{nqwMo8k{fk;+c5WjzuNp>U7oU& zlIse_v+w-QTw)n96Hbs_rE=~r_mkmA>2FU4SQP6(?UeZJq8>=(hF&ki$Z zhnn-D(GKvGmV@?`ym=cT<3`Bg@Z=!0_A|Rapca)3bIqEy!Pkvslv4`xO|X9>Knn`h`Z#%kn~s z$({H=d^1mmyVnI^@uMPEv#e7KhoxL~zc<#e?11f9o>oO?_D4){{4Ljk)I}W2&V>=5 z4{pTuDKh303kEH9gvfhUu2k0f2wbyZv{hY{cKtrnF?d&gFzEzTsYK}0&VntjErSBjGR6boe~Uesuk49x00 z0w*|W=e_?3iwiZMaYYj##>%%L-sTww;~83R5RGg9@pP^x`$*ufkvgUF9i)Frb5MtM z`a1V%hb?7@WL&{L>{jLqE7g}#*^e;Em^6cQ&iXU#!>Zi7sB)R>Hw*%YNENKkGC)jA zKjwap3wR*ZhDtlGYVaH?ZKY_3*r#rdNu?>bNr`~HWLQDgZ2mNrh$#MZ4^YoB)}7G1 zj9iF@gw6%Y)xqEG)B&ezy4F*NXpT=b2U4+rxR*CL+D%=GcehD72GGg_jr>S{p zgjdf>$AMpkX0}d(z7V56%`PU*SCUECK^DHtP@aT@>%|n%emOjUJv`C`IjIY;Kb8MV z&hFpMY%X|xkO!#dNUkY{T;r}upnUK;gkMS}P8-eCM3Dk$*2r?eW8{EBZZ$*ol1q%A zs6I5;y7Y=VLn|oh5Gs%r_Zh_zyK8jBw*(}zznJ@M#aj;Wvn6gu>FUPeziNedeft^r z?vA$-b?o|@U`?>9-FGK>vuNHLh#n$zl&sPSG4|S%>2mAo``T#^8m+6MB=Vb5Qfe&1 zkm=~D8y+OsL-&4v+U~r$`PliC!^M%H&@#w84(ktMy?9qFsw3Fd%L7yRt+`ECk5w9aO^xY(;3Tx+Za0~PHJyG7CX~;GcG8bX$ zNWcFaON!EM{XvQ?9re^2cl8o|mtyomUi)Yk(rR3(MlWUs6>fmQmV!=?g(II-wNo`% zp#5XrDG0(v9p|SU?UAK}-f1%KClsjRkkvgy=Nw4*!O*AH_Ckli)VswM+mL)*29>Qv zAOT(+?g?7S4#fH$+%~h2>plhI-JGDkLdAh#RXwq5)N;MwiFOqfE@N5kAmAyb=1VkI zqMTLxGWSJ7tYa5uadmCAQ^l?&b{=ea8A3C$tV9pwstJ=Abp4~ZYrj6-(8)^zowvb; zzJ*M$O#cKPig&C{_7N!77S*@PZC&)6&rn99c6&zbHwa`c^TxZ+RvT7k-|;l(rx3W8 z6^gW^PTh)uN>ePOMhSoZ@Q|eF1MXrpuBpasgsz%Dcb6wATjlRVJXFmD6Bg3}^GhdG zDl*Qj@NT_@SHkt|(_}vLP){1Xxa^Prd=Ui-ePURI9u8R!U3b=n!;GDoIWVq|REl_a ze98sZiOs2Rw)X=%al>dgPVYW*S&@&bn|I+xmE9Kar|l2UKbVt>oWE1zB((pZd*S{a5h&(!a`ky_*ni<5mOj%v9`1H1q2 zM*m^D(G5;&`zo=bDa}Sq#Fuc_%QWL}Pj)}r4cGV9>tL%F;)q%b3?YPFf178QVeV6Q zuFxl{2nWS`F~2j*F^vmN@Q^0hfY;PbO5GxS(c@o!n0I_`p6ZlN=Ey@1+zkYSFB?0>`chG`4o`R{nnWaPiKMO7Jhq@-6wl`ghwt`JR!6qQqu@6KFvrL6 z9-I#!Aau9=;dm5s`a>0rH&{NBXgczR**ALRw6i#kbqz*O_&1i@k7v_hr|m+O;khA2 zY*wX_T`xUTAy~q9@BO(x1Vm(wggYX>-@uMKL_wiB4MTZPlfJz*rw3ufW=%+x7AuswE z8`xr)Jd8zT@xCF^PvM*`9zw)9Y6=U*X3K5A8(e4Ebsf~VlR9ww5EwXe{wVlWy8`ps zia&~BH2`|f(#>mZ%vQn42K2RAg_8@R+T?-p!UnpWGEZ4=OV><0#+lPR+r&oT5fQXr zs1m^pJ+~D(cx`id3tLdL?$Nz2i>X)};5Zp8*=|bF=zXAdS4xRbh5y~m)%I5&PM%oqXKW<`u6_$FJMlx!7S0{=v zG;$3S5bYBOuY-E8!-lSX4s{QSkLAXw!WxnTCzyL`C0lx~xf(NFAhb{G84I;`yRJPF zxxcRhED5wL^vjBBf`6uiOdXmCkJbr!dI#zR%~XAN#@#1EwKp>cucq#U{ihfVXo+#MZJ zuRCbOgu>}On_MP=7v27r-<3JnH;D>t*s9!@s{FNtCN6Qh{*+=g=W{tj{y=g+2ocv? zEs*UL_A(;pQ~1oc%#RjJpB;B~|X{f#$g(uozO6@WQ&X*dipS>eKfo5DZiE8@|C{XFF0mZ_X!F7+9YyLkfB=jDE zCANz75XTF@0k=vv;MI7YM(e)JPzwVB5^U|8Wf8; zYlG^(No{;%?G|QoeOY?xxcY+c$mgEDOvKRi7?CQZq(3DD}tyeW{my%rncu7BM1*Yg-58TCwg4l**&-#d*qL7KWn z#y9PV8aulE?neDb$r(nS>9LFiV$Xp-cM!TJ%gzeE19^G*GSRdHlP8Lllc88*?5JTA z8?J`vJX0J|&8O#YL^io;DLWh~)0ik$lwmoon&Kd9E$BE&ozr@Td^EW*i%A~od^zN9 z_cio+9qyxK<8i)6ISW9TSNM~L+iTLHaDe@p^FhZ3HO?YK z-}h8D1Gbv&kIn3)P(99vuDyt*qAUESwWYWjm(NG{m+w4}QM5}<9L#)VbCWv+Fc-Io zGrz4khOo}djAqH0F@+RM$*W>|{VAlqN*a-^p(s_<@n}*RPh!t?Y_Bj{bcH#MG++Cy z8enn%WhdO^2`T-D*n4?V<0qFjI-5BmzZYqkOdXRWCCwM}Cqiy%iZ%t!30r>Y+r~4C zoA52Rk{9%;3yVfTYC1WZt_1xrCmd}T97UrA{={Czi1h^)p8>eX)aALym83*C{(4@7 zmqz&k%t+%D>jW{QJ5YifbttHx^TQ=oaFw3()Vh|sSVVV{kn&{0FWgpaa&8Y92tcu$qAtQ>P`yHk3Hy(YRaJXy&9JpK za^h5;qN;6ck?5f9gD;5U1nB_rCU@Kk3ku$C{dfJ_%J6IpNtJ6BW#sLHq~Y`#{6-ob zxtgJ8HjTP1wV`w=TmV=CyAOwre#GBGD!+5Cy*TGAgj*|aH%=>4;d|p7B=&in&BP~@ z*8b2<#HCP{+dmXqSHWXUz}hSA-mzjI+E`^IiWw>@71q3wf#EnnD)L6k0tnFMa%|Zj znNK0&9O=#L)!!}phnDqbf?l{WR?Yi>#;_*)5x2xYSre|Sy;jD1q~|Ie(m_P74m|Qj z8#9|SdJ2QR;o?dB=a3}!@P-$0w2^|!Cn}_!FF>C_OMC6EI)--g_c1LDL%qs!#;vk= zzMmJj8l5gPTWsuf>t))#w2-|?N&wq8XbaOB|?n3=&1O#gR`lk5MCv9N%fg8t8StnA$XXN-dd+^O_`u4CZ> z_i_FAn3IEnxs{2--CDKjeB+By-xbz%iKT9vdhwIzP*`}(&>r=ydB1Gt70 Syf#+w4{*bglZ(oW!Tmp)$-%|| literal 0 HcmV?d00001 diff --git a/images/qed_ke-kkkke_graph_properties.pdf b/images/qed_ke-kkkke_graph_properties.pdf new file mode 100644 index 0000000000000000000000000000000000000000..fabbf220129ccc0d064f903071d60fa168845371 GIT binary patch literal 20638 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 literal 0 HcmV?d00001 diff --git a/images/qed_ke-kkkkke_exec_10000_inputs.pdf b/images/qed_ke-kkkkke_exec_10000_inputs.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4ee404fc631e1be5695af413b3163551cac181d4 GIT binary patch literal 37312 zcmZU(b6}iJ+Xvb@{VPm8R=Ny$hJ1er{EZg7>Mi)E#Y{0;OK=NO@PjJjzkpV(#n+o3@z+z zMS#vGL=+-iObkrSj7*Gd3=H6ZtYCnGqn)vfk;#7uh**ihoQaGbEnH0;DdG6|;7n|d z-#9b$jW?4WO~4xe zW3!TplbwsB5!h%R9wK@%JMawn0nD6U)ZJNJ+4;@$Z!06N%*gZ?A}mP6K*zws&cMpS zK}2r^{MYD>N?e(V^br%GuU9;H@R;^4S7RL z6Qei1-iB{)WKE1MfI@ceMA{5sBRLoth`=GC`{rOe_~*$Xepa*v2ad9FUddrX+v)3PPmSTTVa- zq6aGIqA=l^!w$T7H~$QtKxQaUW@<*UjkX^Z223GAF*EVuaD;&MED~? zU!Fu>Z;m^BUQbtFl3$u*nAk6)kF+WTK$vcWUHUW+fhiT%Rc=PLK7QmLMq|=G1pU#Da4#%JMlZ#Wf%lsMRr|iL{OxwDua(0&uh&d_ukAG_ ztFPpUh}`tr6|c{BulI|LJ|nUBD1~{x_tBOm`Ony%rKnF$S>7E=mIrSSiaXJ51q5BM z-?EelJ*0l}4_QKW$?xr7itFFN_y~<_`r_|S3Ew&J))Vj_Sh|9zIL8SWE$O?W4=rq7 zC)Jui^5>dm|}>6zk15lk55t1wI`b{1`U|9JlBul2&< z@t4!G?^F$Mo&B?~MeZ*vlFs*ynfy1rL8~vD48LAh8c&b!9711ST#xw2UfM*m$zThs8^yMZb))K&36tk&&P|I4) z(rF+>j2}k*ilXbA9RsYGD{2XDKbBfw9ZM{JPDwW@bqs7!%j+G&^vz$QRlYIbO0bx; zoC0-ZBBRpgjHK4jPaSA~_3?ddJbitb+^Kk;;x!&;_0elHn{UmA9ggOEuYGlS%iz1@ zgKypR?70{DYe5sD9+^cUdgQ~=yQ1l_vd{g|D;0HCqt%cc&{JQ0xP(VPh_@617=s02 zwT_Oan)4SH9SW}rH&H_B2v&opZ&GIH?P*ng@)73doVsW)TEe~~h$(9I$?ukIWU(Ij z#HaCgUc;MA{-zu7VO2`;rgZzGnnLT0Wa_&O=`L#sHT~NdrWt~8HY7FKqP)IMU{^pq zZS1sk9zF{3H_N%hn6j(bZ+$Y(4*p-=yIjiUwGH?@2gQ?>un;r6{F7W#DV>#b0=lax ztF7BC_!{J5aJxl<1yQ`ezE9um2}xJv*GibFL#z1cKEpLA&>a`ZC9bQruhLbB$1BvD zg#$S>XF)@|pRMWTE(f+b*pQmO}!J>E%nQh-zAp{kn`>%$wFC7u*r2(57&! zIM4;$>a~x%gnX41emp>N64owd8c*?17tNluw*C0ME=3_yoRhuWxn?pko4dEXn72^Z zrFMCX>Q5>cWJWfTO>D+-f?U$N9#{!m*N_+<-PGD=b8pqFB~~L*5*Xu~7Sm31p26RV z&xOj76-Twg2G|b49ER>%fDHjN#bBa=12UE1935AfJ!c%-?MId1d3p$r72TfWdK#O> zXo#N4>-SG1Gj1sSUzUJFCYl2q!embtO~&F9ZNao2FAwM3#a~D7+x=f0c#Q;nkZ(1x zTA43)i%R$60JI&cygTVs*g0cI;g8qi2v~bXP?jpfS9ZfCr`qK0@ViBJrmOHj;0qH| zaFlE-fq~9&9Q=ZRh&dN2GiiF-ygGDse3^51(&S+w@U7NsPi+uπfHA+r8@)aTQf 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\", model)\n", + "process = parse_process(\"ke->kkkkke\", model)\n", "\n", "inputs = [gen_process_input(process) for _ in 1:1e3];\n", "graph = gen_graph(process)" @@ -62,13 +62,13 @@ "data": { "text/plain": [ "Graph:\n", - " Nodes: Total: 14783, DataTask: 7396, ComputeTaskQED_Sum: 1, \n", - " ComputeTaskQED_V: 1819, ComputeTaskQED_S2: 5040, ComputeTaskQED_U: 9, \n", - " ComputeTaskQED_S1: 518\n", - " Edges: 26672\n", - " Total Compute Effort: 77102.0\n", - " Total Data Transfer: 5.063616e6\n", - " Total Compute Intensity: 0.015226668056977465\n" + " Nodes: Total: 2234, DataTask: 1121, ComputeTaskQED_S2: 720, \n", + " ComputeTaskQED_Sum: 1, ComputeTaskQED_V: 312, ComputeTaskQED_S1: 72, \n", + " ComputeTaskQED_U: 8\n", + " Edges: 3977\n", + " Total Compute Effort: 11313.0\n", + " Total Data Transfer: 659712.0\n", + " Total Compute Intensity: 0.017148392025611175\n" ] }, "metadata": {}, @@ -78,6 +78,7 @@ "source": [ "optimizer = ReductionOptimizer()\n", "\n", + "compute_compton = get_compute_function(graph, process, machine)\n", "optimize_to_fixpoint!(optimizer, graph)\n", "graph" ] @@ -91,7 +92,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Calculated 15537.0 results/s, 1295.0 results/s per thread for QED Process: 'ke->kkkkkke' (12 threads)\n" + "Calculated 133942.0 results/s, 11162.0 results/s per thread for QED Process: 'ke->kkkkke' (12 threads)\n" ] } ], @@ -109,6 +110,31 @@ "rate_per_thread = rate / Threads.nthreads()\n", "println(\"Calculated $(round(rate)) results/s, $(round(rate_per_thread)) results/s per thread for $(process) ($(Threads.nthreads()) threads)\")" ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Calculated 17124.0 results/s, 1427.0 results/s per thread for QED Process: 'ke->kkkkke' (12 threads)\n" + ] + } + ], + "source": [ + "bench_result = @benchmark begin\n", + " Threads.@threads :static for i in eachindex(inputs)\n", + " outputs[i] = compute_compton(inputs[i])\n", + " end\n", + "end\n", + "\n", + "rate = length(inputs) / (mean(bench_result.times) / 1.0e9)\n", + "rate_per_thread = rate / Threads.nthreads()\n", + "println(\"Calculated $(round(rate)) results/s, $(round(rate_per_thread)) results/s per thread for $(process) ($(Threads.nthreads()) threads)\")" + ] } ], "metadata": { diff --git a/results/FWK8999_QED.txt b/results/FWK8999_QED.txt new file mode 100644 index 0000000..deaebe9 --- /dev/null +++ b/results/FWK8999_QED.txt @@ -0,0 +1,62 @@ +CPU: AMD EPYC 7452 32 Cores, 64 Threads | 122.8 GFLOPS (?, source: https://www.cpubenchmark.net/cpu.php?cpu=AMD+EPYC+7452) +GPU: A30 24GB | 5.161 TFLOPS (source: https://www.techpowerup.com/gpu-specs/a30-pcie.c3792) + +Benchmark Summary for QED Process: 'ke->ke': +Measured FLOPS by LIKWID: 5657.0 +Total input size: 1.394 GiB +CPU, 64 threads + Time: 0.594810558 + Rate: 1.681207548437632e7 + GFLOPS: 88.57428190774921 +GPU, NVIDIA A30 + Time: 1.547648257 + Rate: 6.461416510353748e6 + GFLOPS: 34.041919930904314 + +Benchmark Summary for QED Process: 'ke->kke': +Measured FLOPS by LIKWID: 16256.0 +Total input size: 1.768 GiB +CPU, 64 threads + Time: 1.294064702 + Rate: 7.7275888790914565e6 + GFLOPS: 116.99244828756034 +GPU, NVIDIA A30 + Time: 4.973188906 + Rate: 2.0107822544072892e6 + GFLOPS: 30.442398346629826 + +Benchmark Summary for QED Process: 'ke->kkke': +Measured FLOPS by LIKWID: 43433.0 +Total input size: 2.632 GiB +CPU, 64 threads + Time: 3.232029091 + Rate: 3.094031556784648e6 + GFLOPS: 125.15398916399816 +GPU, NVIDIA A30 + Time: 14.597070187 + Rate: 685068.9810963502 + GFLOPS: 27.711131662091034 + +Benchmark Summary for ABC Process: 'AB->AB': +Measured FLOPS by LIKWID: 41.0 +Total input size: 2.201 GiB +CPU, 64 threads + Time: 0.688079611 + Rate: 1.453320203089116e7 + GFLOPS: 0.5549390644454747 +GPU, NVIDIA A30 + Time: 0.013803574 + Rate: 7.244500590933913e8 + GFLOPS: 27.662564462822903 + +Benchmark Summary for ABC Process: 'AB->ABBB': +Measured FLOPS by LIKWID: 899.0 +Total input size: 3.079 GiB +CPU, 64 threads + Time: 0.855687624 + Rate: 1.1686507692204276e7 + GFLOPS: 9.784633680518386 +GPU, NVIDIA A30 + Time: 0.014804518 + Rate: 6.754694749265056e8 + GFLOPS: 565.542893445984 diff --git a/src/code_gen/main.jl b/src/code_gen/main.jl index 3b8b24b..94ba03a 100644 --- a/src/code_gen/main.jl +++ b/src/code_gen/main.jl @@ -62,21 +62,12 @@ function gen_input_assignment_code( assignInputs = Vector{Expr}() for (name, symbols) in inputSymbols (type, index) = type_index_from_name(model(processDescription), name) - p = nothing - - if (index > get(in_particles(processDescription), type, 0)) - index -= get(in_particles(processDescription), type, 0) - @assert index <= out_particles(processDescription)[type] "Too few particles of type $type in input particles for this process" - - p = "filter(x -> typeof(x) <: $type, out_particles($(processInputSymbol)))[$(index)]" - else - p = "filter(x -> typeof(x) <: $type, in_particles($(processInputSymbol)))[$(index)]" - end + p = "get_particle($(processInputSymbol), $(type), $(index))" for symbol in symbols device = entry_device(machine) evalExpr = eval(gen_access_expr(device, symbol)) - push!(assignInputs, Meta.parse("$(evalExpr)::ParticleValue{$type} = ParticleValue($p, one(ComplexF64))")) + push!(assignInputs, Meta.parse("$(evalExpr) = ParticleValue{$type, ComplexF64}($p, one(ComplexF64))")) end end @@ -111,10 +102,12 @@ end Execute the code of the given `graph` on the given input particles. This is essentially shorthand for - ```julia - compute_graph = get_compute_function(graph, process) - result = compute_graph(particles) - ``` +```julia +compute_graph = get_compute_function(graph, process) +result = compute_graph(particles) +``` +If an exception occurs during the execution of the generated code, it will be printed for investigation. + See also: [`parse_dag`](@ref), [`parse_process`](@ref), [`gen_process_input`](@ref) """ @@ -135,6 +128,8 @@ function execute(graph::DAG, process::AbstractProcessDescription, machine::Machi result = 0 try result = @eval $func($input) + #functionStr = string(expr) + #println("Function:\n$functionStr") catch e println("Error while evaluating: $e") diff --git a/src/estimator/global_metric.jl b/src/estimator/global_metric.jl index d83a450..3e0a55e 100644 --- a/src/estimator/global_metric.jl +++ b/src/estimator/global_metric.jl @@ -75,3 +75,7 @@ function operation_effect(estimator::GlobalMetricEstimator, graph::DAG, operatio ce::Float64 = s * compute_effort(task(operation.input)) return (data = d, computeEffort = ce, computeIntensity = ce / d)::CDCost end + +function String(::GlobalMetricEstimator) + return "global_metric" +end diff --git a/src/models/abc/compute.jl b/src/models/abc/compute.jl index 6f1857d..8315c60 100644 --- a/src/models/abc/compute.jl +++ b/src/models/abc/compute.jl @@ -1,4 +1,5 @@ using AccurateArithmetic +using StaticArrays """ compute(::ComputeTaskABC_P, data::ABCParticleValue) @@ -75,14 +76,14 @@ function compute(::ComputeTaskABC_S1, data::ABCParticleValue{P})::ABCParticleVal end """ - compute(::ComputeTaskABC_Sum, data::Vector{Float64}) + compute(::ComputeTaskABC_Sum, data::StaticVector) Compute a sum over the vector. Use an algorithm that accounts for accumulated errors in long sums with potentially large differences in magnitude of the summands. Linearly many FLOP with growing data. """ -function compute(::ComputeTaskABC_Sum, data::Vector{Float64})::Float64 - return sum_kbn(data) +function compute(::ComputeTaskABC_Sum, data::StaticVector)::Float64 + return sum(data) end """ @@ -159,5 +160,7 @@ function get_expression(::ComputeTaskABC_Sum, device::AbstractDevice, inExprs::V in = eval.(inExprs) out = eval(outExpr) - return Meta.parse("$out = compute(ComputeTaskABC_Sum(), [$(unroll_symbol_vector(in))])") + return Meta.parse( + "$out = compute(ComputeTaskABC_Sum(), SVector{$(length(inExprs)), Float64}($(unroll_symbol_vector(in))))", + ) end diff --git a/src/models/abc/create.jl b/src/models/abc/create.jl index 0d5f844..ecc0126 100644 --- a/src/models/abc/create.jl +++ b/src/models/abc/create.jl @@ -5,6 +5,20 @@ using ForwardDiff ComputeTaskABC_Sum() = ComputeTaskABC_Sum(0) +function _svector_from_type_in(processDescription::ABCProcessDescription, type, particles) + if haskey(in_particles(processDescription), type) + return SVector{in_particles(processDescription)[type], type}(filter(x -> typeof(x) <: type, particles)) + end + return SVector{0, type}() +end + +function _svector_from_type_out(processDescription::ABCProcessDescription, type, particles) + if haskey(out_particles(processDescription), type) + return SVector{out_particles(processDescription)[type], type}(filter(x -> typeof(x) <: type, particles)) + end + return SVector{0, type}() +end + """ gen_process_input(processDescription::ABCProcessDescription) @@ -58,7 +72,15 @@ function gen_process_input(processDescription::ABCProcessDescription) end end - processInput = ABCProcessInput(processDescription, inputParticles, outputParticles) + inA = _svector_from_type_in(processDescription, ParticleA, inputParticles) + inB = _svector_from_type_in(processDescription, ParticleB, inputParticles) + inC = _svector_from_type_in(processDescription, ParticleC, inputParticles) + + outA = _svector_from_type_out(processDescription, ParticleA, outputParticles) + outB = _svector_from_type_out(processDescription, ParticleB, outputParticles) + outC = _svector_from_type_out(processDescription, ParticleC, outputParticles) + + processInput = ABCProcessInput(processDescription, inA, inB, inC, outA, outB, outC) return return processInput end diff --git a/src/models/abc/particle.jl b/src/models/abc/particle.jl index 8769eaf..d91bc0b 100644 --- a/src/models/abc/particle.jl +++ b/src/models/abc/particle.jl @@ -1,3 +1,5 @@ +using StaticArrays + import QEDbase.mass """ @@ -60,27 +62,30 @@ Input for a ABC Process. Contains the [`ABCProcessDescription`](@ref) of the pro See also: [`gen_process_input`](@ref) """ -struct ABCProcessInput <: AbstractProcessInput +struct ABCProcessInput{N1, N2, N3, N4, N5, N6} <: AbstractProcessInput process::ABCProcessDescription - inParticles::Vector{ABCParticle} - outParticles::Vector{ABCParticle} + inA::SVector{N1, ParticleA} + inB::SVector{N2, ParticleB} + inC::SVector{N3, ParticleC} + outA::SVector{N4, ParticleA} + outB::SVector{N5, ParticleB} + outC::SVector{N6, ParticleC} end ABCParticleValue{ParticleType <: ABCParticle} = ParticleValue{ParticleType, ComplexF64} -""" - PARTICLE_MASSES - -A constant dictionary containing the masses of the different [`ABCParticle`](@ref)s. -""" -const PARTICLE_MASSES = Dict{Type, Float64}(ParticleA => 1.0, ParticleB => 1.0, ParticleC => 0.0) - """ mass(t::Type{T}) where {T <: ABCParticle} Return the mass (at rest) of the given particle type. """ -mass(t::Type{T}) where {T <: ABCParticle} = PARTICLE_MASSES[t] +mass(::ParticleA) = 1.0 +mass(::ParticleB) = 1.0 +mass(::ParticleC) = 0.0 + +mass(::Type{ParticleA}) = 1.0 +mass(::Type{ParticleB}) = 1.0 +mass(::Type{ParticleC}) = 0.0 """ interaction_result(t1::Type{T1}, t2::Type{T2}) where {T1 <: ABCParticle, T2 <: ABCParticle} @@ -126,7 +131,7 @@ Return the factor of the inner edge with the given (virtual) particle. Takes 10 effective FLOP. (3 here + 7 in square(p)) """ function ABC_inner_edge(p::ABCParticle) - return 1.0 / (square(p) - mass(typeof(p)) * mass(typeof(p))) + return 1.0 / (square(p) - mass(p)^2) end """ @@ -166,6 +171,10 @@ function ABC_conserve_momentum(p1::ABCParticle, p2::ABCParticle) return p3 end +function copy(process::ABCProcessDescription) + return ABCProcessDescription(copy(process.inParticles), copy(process.outParticles)) +end + model(::ABCProcessDescription) = ABCModel() model(::ABCProcessInput) = ABCModel() @@ -195,14 +204,29 @@ function in_particles(process::ABCProcessDescription) return process.inParticles end -function in_particles(input::ABCProcessInput) - return input.inParticles -end - function out_particles(process::ABCProcessDescription) return process.outParticles end -function out_particles(input::ABCProcessInput) - return input.outParticles +function get_particle(input::ABCProcessInput, t::Type{Particle}, n::Int)::Particle where {Particle} + if (t <: ParticleA) + if (n > length(input.inA)) + return input.outA[n - length(input.inA)] + else + return input.inA[n] + end + elseif (t <: ParticleB) + if (n > length(input.inB)) + return input.outB[n - length(input.inB)] + else + return input.inB[n] + end + elseif (t <: ParticleC) + if (n > length(input.inC)) + return input.outC[n - length(input.inC)] + else + return input.inC[n] + end + end + @assert false "Invalid type given" end diff --git a/src/models/abc/print.jl b/src/models/abc/print.jl index 26bfb39..9ae692a 100644 --- a/src/models/abc/print.jl +++ b/src/models/abc/print.jl @@ -36,15 +36,26 @@ Pretty print an [`ABCProcessInput`](@ref) (with newlines). """ function show(io::IO, processInput::ABCProcessInput) println(io, "Input for $(processInput.process):") - println(io, " $(length(processInput.inParticles)) Incoming particles:") - for particle in processInput.inParticles - println(io, " $particle") + println(io, "Incoming particles:") + if !isempty(processInput.inA) + println(io, " $(processInput.inA)") end - println(io, " $(length(processInput.outParticles)) Outgoing Particles:") - for particle in processInput.outParticles - println(io, " $particle") + if !isempty(processInput.inB) + println(io, " $(processInput.inB)") + end + if !isempty(processInput.inC) + println(io, " $(processInput.inC)") + end + println(io, "Outgoing particles:") + if !isempty(processInput.outA) + println(io, " $(processInput.outA)") + end + if !isempty(processInput.outB) + println(io, " $(processInput.outB)") + end + if !isempty(processInput.outC) + println(io, " $(processInput.outC)") end - return nothing end """ diff --git a/src/models/interface.jl b/src/models/interface.jl index ca30152..60e6d5e 100644 --- a/src/models/interface.jl +++ b/src/models/interface.jl @@ -80,6 +80,14 @@ Returns a `<: Vector{AbstractParticle}` object with the values of all outgoing p """ function out_particles end +""" + get_particle(::AbstractProcessInput, t::Type, n::Int) + +Interface function that must be implemented for every subtype of [`AbstractProcessInput`](@ref). +Returns the `n`th particle of type `t`. +""" +function get_particle end + """ parse_process(::AbstractString, ::AbstractPhysicsModel) diff --git a/src/models/qed/compute.jl b/src/models/qed/compute.jl index 1225160..166529a 100644 --- a/src/models/qed/compute.jl +++ b/src/models/qed/compute.jl @@ -1,12 +1,13 @@ +using StaticArrays """ compute(::ComputeTaskQED_P, data::QEDParticleValue) Return the particle as is and initialize the Value. """ -function compute(::ComputeTaskQED_P, data::QEDParticleValue{P})::QEDParticleValue{P} where {P <: QEDParticle} +function compute(::ComputeTaskQED_P, data::QEDParticleValue{P}) where {P <: QEDParticle} # TODO do we actually need this for anything? - return QEDParticleValue{P}(data.p, one(DiracMatrix)) + return ParticleValue{P, DiracMatrix}(data.p, one(DiracMatrix)) end """ @@ -15,7 +16,8 @@ end Compute an outer edge. Return the particle value with the same particle and the value multiplied by an outer_edge factor. """ function compute(::ComputeTaskQED_U, data::PV) where {P <: QEDParticle, PV <: QEDParticleValue{P}} - state = base_state(particle(data.p), direction(data.p), momentum(data.p), spin_or_pol(data.p)) + part::P = data.p + state = base_state(particle(part), direction(part), momentum(part), spin_or_pol(part)) return ParticleValue{P, typeof(state)}( data.p, state, # will return a SLorentzVector{ComplexF64}, BiSpinor or AdjointBiSpinor @@ -34,7 +36,6 @@ function compute( ) where {P1 <: QEDParticle, P2 <: QEDParticle, PV1 <: QEDParticleValue{P1}, PV2 <: QEDParticleValue{P2}} p3 = QED_conserve_momentum(data1.p, data2.p) P3 = interaction_result(P1, P2) - state = QED_vertex() if (typeof(data1.v) <: AdjointBiSpinor) state = data1.v * state @@ -47,7 +48,7 @@ function compute( state = state * data2.v end - dataOut = ParticleValue{P3, typeof(state)}(P3(p3), state) + dataOut = ParticleValue{P3, typeof(state)}(P3(momentum(p3)), state) return dataOut end @@ -64,13 +65,10 @@ function compute( ::ComputeTaskQED_S2, data1::ParticleValue{P1}, data2::ParticleValue{P2}, -)::ComplexF64 where { - P1 <: Union{AntiFermionStateful, FermionStateful}, - P2 <: Union{AntiFermionStateful, FermionStateful}, -} - @assert isapprox(data1.p.momentum, data2.p.momentum, rtol = sqrt(eps()), atol = sqrt(eps())) "$(data1.p.momentum) vs. $(data2.p.momentum)" +) where {P1 <: Union{AntiFermionStateful, FermionStateful}, P2 <: Union{AntiFermionStateful, FermionStateful}} + #@assert isapprox(data1.p.momentum, data2.p.momentum, rtol = sqrt(eps()), atol = sqrt(eps())) "$(data1.p.momentum) vs. $(data2.p.momentum)" - inner = QED_inner_edge(propagation_result(P1)(data1.p)) + inner = QED_inner_edge(propagation_result(P1)(momentum(data1.p))) # inner edge is just a "scalar", data1 and data2 are bispinor/adjointbispinnor, need to keep correct order if typeof(data1.v) <: BiSpinor @@ -80,12 +78,11 @@ function compute( end end -# TODO: S2 when the particles are photons? function compute( ::ComputeTaskQED_S2, data1::ParticleValue{P1}, data2::ParticleValue{P2}, -)::ComplexF64 where {P1 <: PhotonStateful, P2 <: PhotonStateful} +) where {P1 <: PhotonStateful, P2 <: PhotonStateful} # TODO: assert that data1 and data2 are opposites inner = QED_inner_edge(data1.p) # inner edge is just a scalar, data1 and data2 are photon states that are just Complex numbers here @@ -97,9 +94,9 @@ end Compute inner edge (1 input particle, 1 output particle). """ -function compute(::ComputeTaskQED_S1, data::QEDParticleValue{P})::QEDParticleValue where {P <: QEDParticle} +function compute(::ComputeTaskQED_S1, data::QEDParticleValue{P}) where {P <: QEDParticle} newP = propagation_result(P) - new_p = newP(data.p) + new_p = newP(momentum(data.p)) # inner edge is just a scalar, can multiply from either side if typeof(data.v) <: BiSpinor return ParticleValue(new_p, QED_inner_edge(new_p) * data.v) @@ -109,13 +106,13 @@ function compute(::ComputeTaskQED_S1, data::QEDParticleValue{P})::QEDParticleVal end """ - compute(::ComputeTaskQED_Sum, data::Vector{ComplexF64}) + compute(::ComputeTaskQED_Sum, data::StaticVector) Compute a sum over the vector. Use an algorithm that accounts for accumulated errors in long sums with potentially large differences in magnitude of the summands. Linearly many FLOP with growing data. """ -function compute(::ComputeTaskQED_Sum, data::Vector{ComplexF64})::ComplexF64 +function compute(::ComputeTaskQED_Sum, data::StaticVector)::ComplexF64 # TODO: want to use sum_kbn here but it doesn't seem to support ComplexF64, do it element-wise? return sum(data) end @@ -194,5 +191,7 @@ function get_expression(::ComputeTaskQED_Sum, device::AbstractDevice, inExprs::V in = eval.(inExprs) out = eval(outExpr) - return Meta.parse("$out = compute(ComputeTaskQED_Sum(), [$(unroll_symbol_vector(in))])") + return Meta.parse( + "$out = compute(ComputeTaskQED_Sum(), SVector{$(length(inExprs)), ComplexF64}($(unroll_symbol_vector(in))))", + ) end diff --git a/src/models/qed/create.jl b/src/models/qed/create.jl index baf73f2..899e76d 100644 --- a/src/models/qed/create.jl +++ b/src/models/qed/create.jl @@ -1,6 +1,16 @@ ComputeTaskQED_Sum() = ComputeTaskQED_Sum(0) +function _svector_from_type(processDescription::QEDProcessDescription, type, particles) + if haskey(in_particles(processDescription), type) + return SVector{in_particles(processDescription)[type], type}(filter(x -> typeof(x) <: type, particles)) + end + if haskey(out_particles(processDescription), type) + return SVector{out_particles(processDescription)[type], type}(filter(x -> typeof(x) <: type, particles)) + end + return SVector{0, type}() +end + """ gen_process_input(processDescription::QEDProcessDescription) @@ -29,30 +39,37 @@ function gen_process_input(processDescription::QEDProcessDescription) massSum += rand(rng[threadid()]) * (length(inputMasses) + length(outputMasses)) - inputParticles = Vector{QEDParticle}() + particles = Vector{QEDParticle}() initialMomenta = generate_initial_moms(massSum, inputMasses) index = 1 for (particle, n) in processDescription.inParticles for _ in 1:n mom = initialMomenta[index] - push!(inputParticles, particle(mom)) + push!(particles, particle(mom)) index += 1 end end - outputParticles = Vector{QEDParticle}() final_momenta = generate_physical_massive_moms(rng[threadid()], massSum, outputMasses) index = 1 for (particle, n) in processDescription.outParticles for _ in 1:n - push!(outputParticles, particle(final_momenta[index])) + push!(particles, particle(final_momenta[index])) index += 1 end end - processInput = QEDProcessInput(processDescription, inputParticles, outputParticles) + inFerms = _svector_from_type(processDescription, FermionStateful{Incoming, SpinUp}, particles) + outFerms = _svector_from_type(processDescription, FermionStateful{Outgoing, SpinUp}, particles) + inAntiferms = _svector_from_type(processDescription, AntiFermionStateful{Incoming, SpinUp}, particles) + outAntiferms = _svector_from_type(processDescription, AntiFermionStateful{Outgoing, SpinUp}, particles) + inPhotons = _svector_from_type(processDescription, PhotonStateful{Incoming, PolX}, particles) + outPhotons = _svector_from_type(processDescription, PhotonStateful{Outgoing, PolX}, particles) - return return processInput + processInput = + QEDProcessInput(processDescription, inFerms, outFerms, inAntiferms, outAntiferms, inPhotons, outPhotons) + + return processInput end """ diff --git a/src/models/qed/diagrams.jl b/src/models/qed/diagrams.jl index eb207a4..073fe4e 100644 --- a/src/models/qed/diagrams.jl +++ b/src/models/qed/diagrams.jl @@ -82,7 +82,7 @@ end function particle_after_tie(p::FeynmanParticle, t::FeynmanTie) if p == t.in1 || p == t.in2 - return FeynmanParticle(FermionStateful{Incoming}, -1) # placeholder particle and id for tied particles + return FeynmanParticle(FermionStateful{Incoming, SpinUp}, -1) # placeholder particle and id for tied particles end return p end diff --git a/src/models/qed/particle.jl b/src/models/qed/particle.jl index 208a5ae..dfdbb99 100644 --- a/src/models/qed/particle.jl +++ b/src/models/qed/particle.jl @@ -1,4 +1,5 @@ using QEDprocesses +using StaticArrays import QEDbase.mass # TODO check @@ -34,19 +35,6 @@ struct QEDProcessDescription <: AbstractProcessDescription outParticles::Dict{Type{<:QEDParticle{Outgoing}}, Int} end -""" - QEDProcessInput <: AbstractProcessInput - -Input for a QED Process. Contains the [`QEDProcessDescription`](@ref) of the process it is an input for, and the values of the in and out particles. - -See also: [`gen_process_input`](@ref) -""" -struct QEDProcessInput <: AbstractProcessInput - process::QEDProcessDescription - inParticles::Vector{QEDParticle} - outParticles::Vector{QEDParticle} -end - QEDParticleValue{ParticleType <: QEDParticle} = Union{ ParticleValue{ParticleType, BiSpinor}, ParticleValue{ParticleType, AdjointBiSpinor}, @@ -60,51 +48,44 @@ QEDParticleValue{ParticleType <: QEDParticle} = Union{ A photon of the [`QEDModel`](@ref) with its state. """ -struct PhotonStateful{Direction <: ParticleDirection} <: QEDParticle{Direction} +struct PhotonStateful{Direction <: ParticleDirection, Pol <: AbstractDefinitePolarization} <: QEDParticle{Direction} momentum::SFourMomentum - # this will maybe change to the full polarization vector? or do i need both - polarization::AbstractDefinitePolarization end PhotonStateful{Direction}(mom::SFourMomentum) where {Direction <: ParticleDirection} = - PhotonStateful{Direction}(mom, PolX()) # TODO: make allpol possible + PhotonStateful{Direction, PolX}(mom) -PhotonStateful{Dir1}(ph::PhotonStateful{Dir2}) where {Dir1 <: ParticleDirection, Dir2 <: ParticleDirection} = - PhotonStateful{Dir1}(ph.momentum, ph.polarization) +PhotonStateful{Dir, Pol}(ph::PhotonStateful) where {Dir, Pol} = PhotonStateful{Dir, Pol}(ph.momentum) """ FermionStateful <: QEDParticle A fermion of the [`QEDModel`](@ref) with its state. """ -struct FermionStateful{Direction <: ParticleDirection} <: QEDParticle{Direction} +struct FermionStateful{Direction <: ParticleDirection, Spin <: AbstractDefiniteSpin} <: QEDParticle{Direction} momentum::SFourMomentum - spin::AbstractDefiniteSpin # TODO: mass for electron/muon/tauon representation? end FermionStateful{Direction}(mom::SFourMomentum) where {Direction <: ParticleDirection} = - FermionStateful{Direction}(mom, SpinUp()) # TODO: make allspin possible + FermionStateful{Direction, SpinUp}(mom) -FermionStateful{Dir1}(f::FermionStateful{Dir2}) where {Dir1 <: ParticleDirection, Dir2 <: ParticleDirection} = - FermionStateful{Dir1}(f.momentum, f.spin) +FermionStateful{Dir, Spin}(f::FermionStateful) where {Dir, Spin} = FermionStateful{Dir, Spin}(f.momentum) """ AntiFermionStateful <: QEDParticle An anti-fermion of the [`QEDModel`](@ref) with its state. """ -struct AntiFermionStateful{Direction <: ParticleDirection} <: QEDParticle{Direction} +struct AntiFermionStateful{Direction <: ParticleDirection, Spin <: AbstractDefiniteSpin} <: QEDParticle{Direction} momentum::SFourMomentum - spin::AbstractDefiniteSpin # TODO: mass for electron/muon/tauon representation? end AntiFermionStateful{Direction}(mom::SFourMomentum) where {Direction <: ParticleDirection} = - AntiFermionStateful{Direction}(mom, SpinUp()) # TODO: make allspin possible + AntiFermionStateful{Direction, SpinUp}(mom) -AntiFermionStateful{Dir1}(f::AntiFermionStateful{Dir2}) where {Dir1 <: ParticleDirection, Dir2 <: ParticleDirection} = - AntiFermionStateful{Dir1}(f.momentum, f.spin) +AntiFermionStateful{Dir, Spin}(f::AntiFermionStateful) where {Dir, Spin} = AntiFermionStateful{Dir, Spin}(f.momentum) """ interaction_result(t1::Type{T1}, t2::Type{T2}) where {T1 <: QEDParticle, T2 <: QEDParticle} @@ -115,19 +96,33 @@ function interaction_result(t1::Type{T1}, t2::Type{T2}) where {T1 <: QEDParticle @assert false "Invalid interaction between particles of types $t1 and $t2" end -interaction_result(::Type{FermionStateful{Incoming}}, ::Type{FermionStateful{Outgoing}}) = PhotonStateful{Incoming} -interaction_result(::Type{FermionStateful{Incoming}}, ::Type{AntiFermionStateful{Incoming}}) = PhotonStateful{Incoming} -interaction_result(::Type{FermionStateful{Incoming}}, ::Type{<:PhotonStateful}) = FermionStateful{Outgoing} +interaction_result( + ::Type{FermionStateful{Incoming, Spin1}}, + ::Type{FermionStateful{Outgoing, Spin2}}, +) where {Spin1, Spin2} = PhotonStateful{Incoming, PolX} +interaction_result( + ::Type{FermionStateful{Incoming, Spin1}}, + ::Type{AntiFermionStateful{Incoming, Spin2}}, +) where {Spin1, Spin2} = PhotonStateful{Incoming, PolX} +interaction_result(::Type{FermionStateful{Incoming, Spin1}}, ::Type{<:PhotonStateful}) where {Spin1} = + FermionStateful{Outgoing, SpinUp} -interaction_result(::Type{FermionStateful{Outgoing}}, ::Type{FermionStateful{Incoming}}) = PhotonStateful{Incoming} -interaction_result(::Type{FermionStateful{Outgoing}}, ::Type{AntiFermionStateful{Outgoing}}) = PhotonStateful{Incoming} -interaction_result(::Type{FermionStateful{Outgoing}}, ::Type{<:PhotonStateful}) = FermionStateful{Incoming} +interaction_result( + ::Type{FermionStateful{Outgoing, Spin1}}, + ::Type{FermionStateful{Incoming, Spin2}}, +) where {Spin1, Spin2} = PhotonStateful{Incoming, PolX} +interaction_result( + ::Type{FermionStateful{Outgoing, Spin1}}, + ::Type{AntiFermionStateful{Outgoing, Spin2}}, +) where {Spin1, Spin2} = PhotonStateful{Incoming, PolX} +interaction_result(::Type{FermionStateful{Outgoing, Spin1}}, ::Type{<:PhotonStateful}) where {Spin1} = + FermionStateful{Incoming, SpinUp} # antifermion mirror -interaction_result(::Type{AntiFermionStateful{Incoming}}, t2::Type{<:QEDParticle}) = - interaction_result(FermionStateful{Outgoing}, t2) -interaction_result(::Type{AntiFermionStateful{Outgoing}}, t2::Type{<:QEDParticle}) = - interaction_result(FermionStateful{Incoming}, t2) +interaction_result(::Type{AntiFermionStateful{Incoming, Spin}}, t2::Type{<:QEDParticle}) where {Spin} = + interaction_result(FermionStateful{Outgoing, Spin}, t2) +interaction_result(::Type{AntiFermionStateful{Outgoing, Spin}}, t2::Type{<:QEDParticle}) where {Spin} = + interaction_result(FermionStateful{Incoming, Spin}, t2) # photon commutativity interaction_result(t1::Type{<:PhotonStateful}, t2::Type{<:QEDParticle}) = interaction_result(t2, t1) @@ -142,12 +137,18 @@ end Return the type of the inverted direction. E.g. """ -propagation_result(::Type{FermionStateful{Incoming}}) = FermionStateful{Outgoing} -propagation_result(::Type{FermionStateful{Outgoing}}) = FermionStateful{Incoming} -propagation_result(::Type{AntiFermionStateful{Incoming}}) = AntiFermionStateful{Outgoing} -propagation_result(::Type{AntiFermionStateful{Outgoing}}) = AntiFermionStateful{Incoming} -propagation_result(::Type{PhotonStateful{Incoming}}) = PhotonStateful{Outgoing} -propagation_result(::Type{PhotonStateful{Outgoing}}) = PhotonStateful{Incoming} +propagation_result(::Type{FermionStateful{Incoming, Spin}}) where {Spin <: AbstractDefiniteSpin} = + FermionStateful{Outgoing, Spin} +propagation_result(::Type{FermionStateful{Outgoing, Spin}}) where {Spin <: AbstractDefiniteSpin} = + FermionStateful{Incoming, Spin} +propagation_result(::Type{AntiFermionStateful{Incoming, Spin}}) where {Spin <: AbstractDefiniteSpin} = + AntiFermionStateful{Outgoing, Spin} +propagation_result(::Type{AntiFermionStateful{Outgoing, Spin}}) where {Spin <: AbstractDefiniteSpin} = + AntiFermionStateful{Incoming, Spin} +propagation_result(::Type{PhotonStateful{Incoming, Pol}}) where {Pol <: AbstractDefinitePolarization} = + PhotonStateful{Outgoing, Pol} +propagation_result(::Type{PhotonStateful{Outgoing, Pol}}) where {Pol <: AbstractDefinitePolarization} = + PhotonStateful{Incoming, Pol} """ types(::QEDModel) @@ -156,12 +157,12 @@ Return a Vector of the possible types of particle in the [`QEDModel`](@ref). """ function types(::QEDModel) return [ - PhotonStateful{Incoming}, - PhotonStateful{Outgoing}, - FermionStateful{Incoming}, - FermionStateful{Outgoing}, - AntiFermionStateful{Incoming}, - AntiFermionStateful{Outgoing}, + PhotonStateful{Incoming, PolX}, + PhotonStateful{Outgoing, PolX}, + FermionStateful{Incoming, SpinUp}, + FermionStateful{Outgoing, SpinUp}, + AntiFermionStateful{Incoming, SpinUp}, + AntiFermionStateful{Outgoing, SpinUp}, ] end @@ -190,17 +191,23 @@ end @inline momentum(p::FermionStateful)::SFourMomentum = p.momentum @inline momentum(p::AntiFermionStateful)::SFourMomentum = p.momentum -@inline spin_or_pol(p::PhotonStateful)::AbstractPolarization = p.polarization -@inline spin_or_pol(p::FermionStateful)::AbstractSpin = p.spin -@inline spin_or_pol(p::AntiFermionStateful)::AbstractSpin = p.spin +@inline spin_or_pol(p::PhotonStateful{Dir, Pol}) where {Dir, Pol <: AbstractDefinitePolarization} = Pol() +@inline spin_or_pol(p::FermionStateful{Dir, Spin}) where {Dir, Spin <: AbstractDefiniteSpin} = Spin() +@inline spin_or_pol(p::AntiFermionStateful{Dir, Spin}) where {Dir, Spin <: AbstractDefiniteSpin} = Spin() -@inline direction(::PhotonStateful{Dir}) where {Dir <: ParticleDirection} = Dir() -@inline direction(::FermionStateful{Dir}) where {Dir <: ParticleDirection} = Dir() -@inline direction(::AntiFermionStateful{Dir}) where {Dir <: ParticleDirection} = Dir() +@inline direction( + ::Type{P}, +) where {P <: Union{FermionStateful{Incoming}, AntiFermionStateful{Incoming}, PhotonStateful{Incoming}}} = Incoming() +@inline direction( + ::Type{P}, +) where {P <: Union{FermionStateful{Outgoing}, AntiFermionStateful{Outgoing}, PhotonStateful{Outgoing}}} = Outgoing() -@inline direction(::Type{PhotonStateful{Dir}}) where {Dir <: ParticleDirection} = Dir() -@inline direction(::Type{FermionStateful{Dir}}) where {Dir <: ParticleDirection} = Dir() -@inline direction(::Type{AntiFermionStateful{Dir}}) where {Dir <: ParticleDirection} = Dir() +@inline direction( + ::P, +) where {P <: Union{FermionStateful{Incoming}, AntiFermionStateful{Incoming}, PhotonStateful{Incoming}}} = Incoming() +@inline direction( + ::P, +) where {P <: Union{FermionStateful{Outgoing}, AntiFermionStateful{Outgoing}, PhotonStateful{Outgoing}}} = Outgoing() @inline isincoming(::QEDParticle{Incoming}) = true @inline isincoming(::QEDParticle{Outgoing}) = false @@ -216,12 +223,12 @@ end @inline mass(::Type{<:AntiFermionStateful}) = 1.0 @inline mass(::Type{<:PhotonStateful}) = 0.0 -@inline invert_momentum(p::FermionStateful{Dir}) where {Dir <: ParticleDirection} = - FermionStateful{Dir}(-p.momentum, p.spin) -@inline invert_momentum(p::AntiFermionStateful{Dir}) where {Dir <: ParticleDirection} = - AntiFermionStateful{Dir}(-p.momentum, p.spin) -@inline invert_momentum(k::PhotonStateful{Dir}) where {Dir <: ParticleDirection} = - PhotonStateful{Dir}(-k.momentum, k.polarization) +@inline invert_momentum(p::FermionStateful{Dir, Spin}) where {Dir, Spin} = + FermionStateful{Dir, Spin}(-p.momentum, p.spin) +@inline invert_momentum(p::AntiFermionStateful{Dir, Spin}) where {Dir, Spin} = + AntiFermionStateful{Dir, Spin}(-p.momentum, p.spin) +@inline invert_momentum(k::PhotonStateful{Dir, Spin}) where {Dir, Spin} = + PhotonStateful{Dir, Spin}(-k.momentum, k.polarization) """ @@ -240,10 +247,10 @@ function caninteract(T1::Type{<:QEDParticle}, T2::Type{<:QEDParticle}) end for (P1, P2) in [(T1, T2), (T2, T1)] - if (P1 == FermionStateful{Incoming} && P2 == AntiFermionStateful{Outgoing}) + if (P1 <: FermionStateful{Incoming} && P2 <: AntiFermionStateful{Outgoing}) return false end - if (P1 == FermionStateful{Outgoing} && P2 == AntiFermionStateful{Incoming}) + if (P1 <: FermionStateful{Outgoing} && P2 <: AntiFermionStateful{Incoming}) return false end end @@ -253,17 +260,17 @@ end function type_index_from_name(::QEDModel, name::String) if startswith(name, "ki") - return (PhotonStateful{Incoming}, parse(Int, name[3:end])) + return (PhotonStateful{Incoming, PolX}, parse(Int, name[3:end])) elseif startswith(name, "ko") - return (PhotonStateful{Outgoing}, parse(Int, name[3:end])) + return (PhotonStateful{Outgoing, PolX}, parse(Int, name[3:end])) elseif startswith(name, "ei") - return (FermionStateful{Incoming}, parse(Int, name[3:end])) + return (FermionStateful{Incoming, SpinUp}, parse(Int, name[3:end])) elseif startswith(name, "eo") - return (FermionStateful{Outgoing}, parse(Int, name[3:end])) + return (FermionStateful{Outgoing, SpinUp}, parse(Int, name[3:end])) elseif startswith(name, "pi") - return (AntiFermionStateful{Incoming}, parse(Int, name[3:end])) + return (AntiFermionStateful{Incoming, SpinUp}, parse(Int, name[3:end])) elseif startswith(name, "po") - return (AntiFermionStateful{Outgoing}, parse(Int, name[3:end])) + return (AntiFermionStateful{Outgoing, SpinUp}, parse(Int, name[3:end])) else throw("Invalid name for a particle in the QED model") end @@ -291,8 +298,7 @@ Return the factor of a vertex in a QED feynman diagram. end @inline function QED_inner_edge(p::QEDParticle) - pos_mom = p.momentum - return propagator(particle(p), pos_mom) + return propagator(particle(p), p.momentum) end """ @@ -300,24 +306,49 @@ end Calculate and return a new particle from two given interacting ones at a vertex. """ -function QED_conserve_momentum(p1::QEDParticle, p2::QEDParticle) - #println("Conserving momentum of \n$(direction(p1)) $(p1)\n and \n$(direction(p2)) $(p2)") - T3 = interaction_result(typeof(p1), typeof(p2)) - # TODO: probably also need to do something about the spin/pol +function QED_conserve_momentum( + p1::P1, + p2::P2, +) where { + Dir1 <: ParticleDirection, + Dir2 <: ParticleDirection, + SpinPol1 <: AbstractSpinOrPolarization, + SpinPol2 <: AbstractSpinOrPolarization, + P1 <: Union{FermionStateful{Dir1, SpinPol1}, AntiFermionStateful{Dir1, SpinPol1}, PhotonStateful{Dir1, SpinPol1}}, + P2 <: Union{FermionStateful{Dir2, SpinPol2}, AntiFermionStateful{Dir2, SpinPol2}, PhotonStateful{Dir2, SpinPol2}}, +} + P3 = interaction_result(P1, P2) p1_mom = p1.momentum - if (typeof(direction(p1)) <: Outgoing) + if (Dir1 <: Outgoing) p1_mom *= -1 end p2_mom = p2.momentum - if (typeof(direction(p2)) <: Outgoing) + if (Dir2 <: Outgoing) p2_mom *= -1 end p3_mom = p1_mom + p2_mom - if (typeof(direction(T3)) <: Incoming) - return T3(-p3_mom) + if (typeof(direction(P3)) <: Incoming) + return P3(-p3_mom) end - return T3(p3_mom) + return P3(p3_mom) +end + +""" + QEDProcessInput <: AbstractProcessInput + +Input for a QED Process. Contains the [`QEDProcessDescription`](@ref) of the process it is an input for, and the values of the in and out particles. + +See also: [`gen_process_input`](@ref) +""" +struct QEDProcessInput{N1, N2, N3, N4, N5, N6} <: AbstractProcessInput + process::QEDProcessDescription + inFerms::SVector{N1, FermionStateful{Incoming, SpinUp}} + outFerms::SVector{N2, FermionStateful{Outgoing, SpinUp}} + inAntiferms::SVector{N3, AntiFermionStateful{Incoming, SpinUp}} + outAntiferms::SVector{N4, AntiFermionStateful{Outgoing, SpinUp}} + inPhotons::SVector{N5, PhotonStateful{Incoming, PolX}} + outPhotons::SVector{N6, PhotonStateful{Outgoing, PolX}} end """ @@ -328,6 +359,10 @@ Return the model of this process description. model(::QEDProcessDescription) = QEDModel() model(::QEDProcessInput) = QEDModel() +function copy(process::QEDProcessDescription) + return QEDProcessDescription(copy(process.inParticles), copy(process.outParticles)) +end + ==(p1::QEDProcessDescription, p2::QEDProcessDescription) = p1.inParticles == p2.inParticles && p1.outParticles == p2.outParticles @@ -335,14 +370,23 @@ function in_particles(process::QEDProcessDescription) return process.inParticles end -function in_particles(input::QEDProcessInput) - return input.inParticles -end - function out_particles(process::QEDProcessDescription) return process.outParticles end -function out_particles(input::QEDProcessInput) - return input.outParticles +function get_particle(input::QEDProcessInput, t::Type{Particle}, n::Int)::Particle where {Particle} + if (t <: FermionStateful{Incoming}) + return input.inFerms[n] + elseif (t <: FermionStateful{Outgoing}) + return input.outFerms[n] + elseif (t <: AntiFermionStateful{Incoming}) + return input.inAntiferms[n] + elseif (t <: AntiFermionStateful{Outgoing}) + return input.outAntiferms[n] + elseif (t <: PhotonStateful{Incoming}) + return input.inPhotons[n] + elseif (t <: PhotonStateful{Outgoing}) + return input.outPhotons[n] + end + @assert false "Invalid type given" end diff --git a/src/models/qed/print.jl b/src/models/qed/print.jl index 76f2166..7ba4160 100644 --- a/src/models/qed/print.jl +++ b/src/models/qed/print.jl @@ -32,20 +32,63 @@ function show(io::IO, process::QEDProcessDescription) return nothing end + +""" + String(process::QEDProcessDescription) + +Create a short string suitable as a filename or similar, describing the given process. + +```jldoctest +julia> using MetagraphOptimization + +julia> String(parse_process("ke->ke", QEDModel())) +qed_ke-ke + +julia> print(parse_process("kk->ep", QEDModel())) +qed_kk-ep +``` +""" +function String(process::QEDProcessDescription) + # types() gives the types in order (QED) instead of random like keys() would + str = "qed_" + for type in types(QEDModel()) + for _ in 1:get(process.inParticles, type, 0) + str = str * String(type) + end + end + str = str * "-" + for type in types(QEDModel()) + for _ in 1:get(process.outParticles, type, 0) + str = str * String(type) + end + end + return str +end + """ show(io::IO, processInput::QEDProcessInput) -Pretty print an [`QEDProcessInput`](@ref) (with newlines). +Pretty print a [`QEDProcessInput`](@ref) (with newlines). """ function show(io::IO, processInput::QEDProcessInput) println(io, "Input for $(processInput.process):") - println(io, " $(length(processInput.inParticles)) Incoming particles:") - for particle in processInput.inParticles - println(io, " $particle") + if !isempty(processInput.inFerms) + println(io, " $(processInput.inFerms)") end - println(io, " $(length(processInput.outParticles)) Outgoing Particles:") - for particle in processInput.outParticles - println(io, " $particle") + if !isempty(processInput.outFerms) + println(io, " $(processInput.outFerms)") + end + if !isempty(processInput.inAntiferms) + println(io, " $(processInput.inAntiferms)") + end + if !isempty(processInput.outAntiferms) + println(io, " $(processInput.outAntiferms)") + end + if !isempty(processInput.inPhotons) + println(io, " $(processInput.inPhotons)") + end + if !isempty(processInput.outPhotons) + println(io, " $(processInput.outPhotons)") end return nothing end @@ -53,7 +96,7 @@ end """ show(io::IO, particle::T) where {T <: QEDParticle} -Pretty print an [`QEDParticle`](@ref) (no newlines). +Pretty print a [`QEDParticle`](@ref) (no newlines). """ function show(io::IO, particle::T) where {T <: QEDParticle} print(io, "$(String(typeof(particle))): $(particle.momentum)") diff --git a/src/node/type.jl b/src/node/type.jl index 9105424..39283d0 100644 --- a/src/node/type.jl +++ b/src/node/type.jl @@ -3,7 +3,7 @@ using UUIDs using Base.Threads # TODO: reliably find out how many threads we're running with (nthreads() returns 1 when precompiling :/) -rng = [Random.MersenneTwister(0) for _ in 1:32] +rng = [Random.MersenneTwister(0) for _ in 1:64] """ Node diff --git a/src/optimization/greedy.jl b/src/optimization/greedy.jl index 20ef336..a777587 100644 --- a/src/optimization/greedy.jl +++ b/src/optimization/greedy.jl @@ -71,3 +71,7 @@ function optimize_to_fixpoint!(optimizer::GreedyOptimizer, graph::DAG) end return nothing end + +function String(optimizer::GreedyOptimizer) + return "greedy_optimizer_$(optimizer.estimator)" +end diff --git a/src/optimization/random_walk.jl b/src/optimization/random_walk.jl index e43507e..41e4d21 100644 --- a/src/optimization/random_walk.jl +++ b/src/optimization/random_walk.jl @@ -47,3 +47,7 @@ function optimize_step!(optimizer::RandomWalkOptimizer, graph::DAG) end end end + +function String(::RandomWalkOptimizer) + return "random_walker" +end diff --git a/src/optimization/reduce.jl b/src/optimization/reduce.jl index 625874a..c6414f5 100644 --- a/src/optimization/reduce.jl +++ b/src/optimization/reduce.jl @@ -28,3 +28,7 @@ function optimize_to_fixpoint!(optimizer::ReductionOptimizer, graph::DAG) end return nothing end + +function String(::ReductionOptimizer) + return "reduction_optimizer" +end diff --git a/test/Project.toml b/test/Project.toml index 5c459da..41c02e3 100644 --- a/test/Project.toml +++ b/test/Project.toml @@ -4,5 +4,7 @@ QEDbase = "10e22c08-3ccb-4172-bfcf-7d7aa3d04d93" QEDprocesses = "46de9c38-1bb3-4547-a1ec-da24d767fdad" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f" +StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" StatsBase = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" +UUIDs = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" diff --git a/test/runtests.jl b/test/runtests.jl index 39a7cca..fa37b10 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -18,12 +18,12 @@ end @safetestset "ABC-Model Unit Tests " begin include("unit_tests_abcmodel.jl") end -@safetestset "QED Feynman Diagram Generation Tests" begin - include("unit_tests_qed_diagrams.jl") -end @safetestset "QED-Model Unit Tests " begin include("unit_tests_qedmodel.jl") end +@safetestset "QED Feynman Diagram Generation Tests" begin + include("unit_tests_qed_diagrams.jl") +end @safetestset "Node Reduction Unit Tests " begin include("node_reduction.jl") end diff --git a/test/unit_tests_execution.jl b/test/unit_tests_execution.jl index dea4072..6c8b43f 100644 --- a/test/unit_tests_execution.jl +++ b/test/unit_tests_execution.jl @@ -2,6 +2,8 @@ using MetagraphOptimization using QEDbase using AccurateArithmetic using Random +using UUIDs +using StaticArrays import MetagraphOptimization.ABCParticle import MetagraphOptimization.interaction_result @@ -27,11 +29,11 @@ function ground_truth_graph_result(input::ABCProcessInput) constant = (1 / 137.0)^2 # calculate particle C in diagram 1 - diagram1_C = ParticleC(input.inParticles[1].momentum + input.inParticles[2].momentum) - diagram2_C = ParticleC(input.inParticles[1].momentum + input.outParticles[2].momentum) + diagram1_C = ParticleC(input.inA[1].momentum + input.inB[1].momentum) + diagram2_C = ParticleC(input.inA[1].momentum + input.outB[1].momentum) - diagram1_Cp = ParticleC(input.outParticles[1].momentum + input.outParticles[2].momentum) - diagram2_Cp = ParticleC(input.outParticles[1].momentum + input.inParticles[2].momentum) + diagram1_Cp = ParticleC(input.outA[1].momentum + input.outB[1].momentum) + diagram2_Cp = ParticleC(input.outA[1].momentum + input.inB[1].momentum) check_particle_reverse_moment(diagram1_Cp.momentum, diagram1_C.momentum) check_particle_reverse_moment(diagram2_Cp.momentum, diagram2_C.momentum) @@ -47,7 +49,18 @@ function ground_truth_graph_result(input::ABCProcessInput) return sum_kbn([diagram1_result, diagram2_result]) end -machine = get_machine_info() +machine = Machine( + [ + MetagraphOptimization.NumaNode( + 0, + 1, + MetagraphOptimization.default_strategy(MetagraphOptimization.NumaNode), + -1.0, + UUIDs.uuid1(), + ), + ], + [-1.0;;], +) process_2_2 = ABCProcessDescription( Dict{Type, Int64}(ParticleA => 1, ParticleB => 1), @@ -56,14 +69,12 @@ process_2_2 = ABCProcessDescription( particles_2_2 = ABCProcessInput( process_2_2, - ABCParticle[ - ParticleA(SFourMomentum(0.823648, 0.0, 0.0, 0.823648)), - ParticleB(SFourMomentum(0.823648, 0.0, 0.0, -0.823648)), - ], - ABCParticle[ - ParticleA(SFourMomentum(0.823648, -0.835061, -0.474802, 0.277915)), - ParticleB(SFourMomentum(0.823648, 0.835061, 0.474802, -0.277915)), - ], + SVector{1}(ParticleA(SFourMomentum(0.823648, 0.0, 0.0, 0.823648))), + SVector{1}(ParticleB(SFourMomentum(0.823648, 0.0, 0.0, -0.823648))), + SVector{0, ParticleC}(), + SVector{1}(ParticleA(SFourMomentum(0.823648, -0.835061, -0.474802, 0.277915))), + SVector{1}(ParticleB(SFourMomentum(0.823648, 0.835061, 0.474802, -0.277915))), + SVector{0, ParticleC}(), ) expected_result = ground_truth_graph_result(particles_2_2) diff --git a/test/unit_tests_qedmodel.jl b/test/unit_tests_qedmodel.jl index af63fdf..14a03ac 100644 --- a/test/unit_tests_qedmodel.jl +++ b/test/unit_tests_qedmodel.jl @@ -3,6 +3,7 @@ using QEDbase using QEDprocesses using StatsBase # for countmap using Random +using UUIDs import MetagraphOptimization.caninteract import MetagraphOptimization.issame @@ -17,32 +18,32 @@ def_momentum = SFourMomentum(1.0, 0.0, 0.0, 0.0) RNG = Random.default_rng() testparticleTypes = [ - PhotonStateful{Incoming}, - PhotonStateful{Outgoing}, - FermionStateful{Incoming}, - FermionStateful{Outgoing}, - AntiFermionStateful{Incoming}, - AntiFermionStateful{Outgoing}, + PhotonStateful{Incoming, PolX}, + PhotonStateful{Outgoing, PolX}, + FermionStateful{Incoming, SpinUp}, + FermionStateful{Outgoing, SpinUp}, + AntiFermionStateful{Incoming, SpinUp}, + AntiFermionStateful{Outgoing, SpinUp}, ] testparticleTypesPropagated = [ - PhotonStateful{Outgoing}, - PhotonStateful{Incoming}, - FermionStateful{Outgoing}, - FermionStateful{Incoming}, - AntiFermionStateful{Outgoing}, - AntiFermionStateful{Incoming}, + PhotonStateful{Outgoing, PolX}, + PhotonStateful{Incoming, PolX}, + FermionStateful{Outgoing, SpinUp}, + FermionStateful{Incoming, SpinUp}, + AntiFermionStateful{Outgoing, SpinUp}, + AntiFermionStateful{Incoming, SpinUp}, ] function compton_groundtruth(input::QEDProcessInput) # p1k1 -> p2k2 # formula: −(ie)^2 (u(p2) slashed(ε1) S(p2 − k1) slashed(ε2) u(p1) + u(p2) slashed(ε2) S(p1 + k1) slashed(ε1) u(p1)) - p1 = input.inParticles[findfirst(x -> typeof(x) <: FermionStateful, input.inParticles)] - p2 = input.outParticles[findfirst(x -> typeof(x) <: FermionStateful, input.outParticles)] + p1 = input.inFerms[1] + p2 = input.outFerms[1] - k1 = input.inParticles[findfirst(x -> typeof(x) <: PhotonStateful, input.inParticles)] - k2 = input.outParticles[findfirst(x -> typeof(x) <: PhotonStateful, input.outParticles)] + k1 = input.inPhotons[1] + k2 = input.outPhotons[1] u_p1 = base_state(Electron(), Incoming(), p1.momentum, spin_or_pol(p1)) u_p2 = base_state(Electron(), Outgoing(), p2.momentum, spin_or_pol(p2)) @@ -117,36 +118,36 @@ end @testset "Known processes" begin compton_process = QEDProcessDescription( - Dict{Type, Int}(PhotonStateful{Incoming} => 1, FermionStateful{Incoming} => 1), - Dict{Type, Int}(PhotonStateful{Outgoing} => 1, FermionStateful{Outgoing} => 1), + Dict{Type, Int}(PhotonStateful{Incoming, PolX} => 1, FermionStateful{Incoming, SpinUp} => 1), + Dict{Type, Int}(PhotonStateful{Outgoing, PolX} => 1, FermionStateful{Outgoing, SpinUp} => 1), ) @test parse_process("ke->ke", QEDModel()) == compton_process positron_compton_process = QEDProcessDescription( - Dict{Type, Int}(PhotonStateful{Incoming} => 1, AntiFermionStateful{Incoming} => 1), - Dict{Type, Int}(PhotonStateful{Outgoing} => 1, AntiFermionStateful{Outgoing} => 1), + Dict{Type, Int}(PhotonStateful{Incoming, PolX} => 1, AntiFermionStateful{Incoming, SpinUp} => 1), + Dict{Type, Int}(PhotonStateful{Outgoing, PolX} => 1, AntiFermionStateful{Outgoing, SpinUp} => 1), ) @test parse_process("kp->kp", QEDModel()) == positron_compton_process trident_process = QEDProcessDescription( - Dict{Type, Int}(PhotonStateful{Incoming} => 1, FermionStateful{Incoming} => 1), - Dict{Type, Int}(FermionStateful{Outgoing} => 2, AntiFermionStateful{Outgoing} => 1), + Dict{Type, Int}(PhotonStateful{Incoming, PolX} => 1, FermionStateful{Incoming, SpinUp} => 1), + Dict{Type, Int}(FermionStateful{Outgoing, SpinUp} => 2, AntiFermionStateful{Outgoing, SpinUp} => 1), ) @test parse_process("ke->eep", QEDModel()) == trident_process pair_production_process = QEDProcessDescription( - Dict{Type, Int}(PhotonStateful{Incoming} => 2), - Dict{Type, Int}(FermionStateful{Outgoing} => 1, AntiFermionStateful{Outgoing} => 1), + Dict{Type, Int}(PhotonStateful{Incoming, PolX} => 2), + Dict{Type, Int}(FermionStateful{Outgoing, SpinUp} => 1, AntiFermionStateful{Outgoing, SpinUp} => 1), ) @test parse_process("kk->pe", QEDModel()) == pair_production_process pair_annihilation_process = QEDProcessDescription( - Dict{Type, Int}(FermionStateful{Incoming} => 1, AntiFermionStateful{Incoming} => 1), - Dict{Type, Int}(PhotonStateful{Outgoing} => 2), + Dict{Type, Int}(FermionStateful{Incoming, SpinUp} => 1, AntiFermionStateful{Incoming, SpinUp} => 1), + Dict{Type, Int}(PhotonStateful{Outgoing, PolX} => 2), ) @test parse_process("pe->kk", QEDModel()) == pair_annihilation_process @@ -160,12 +161,24 @@ end for i in 1:100 input = gen_process_input(process) - @test countmap(typeof.(input.inParticles)) == process.inParticles - @test countmap(typeof.(input.outParticles)) == process.outParticles + @test length(input.inFerms) == get(process.inParticles, FermionStateful{Incoming, SpinUp}, 0) + @test length(input.inAntiferms) == get(process.inParticles, AntiFermionStateful{Incoming, SpinUp}, 0) + @test length(input.inPhotons) == get(process.inParticles, PhotonStateful{Incoming, PolX}, 0) + @test length(input.outFerms) == get(process.outParticles, FermionStateful{Outgoing, SpinUp}, 0) + @test length(input.outAntiferms) == get(process.outParticles, AntiFermionStateful{Outgoing, SpinUp}, 0) + @test length(input.outPhotons) == get(process.outParticles, PhotonStateful{Outgoing, PolX}, 0) @test isapprox( - sum(getfield.(input.inParticles, :momentum)), - sum(getfield.(input.outParticles, :momentum)); + sum([ + getfield.(input.inFerms, :momentum)..., + getfield.(input.inAntiferms, :momentum)..., + getfield.(input.inPhotons, :momentum)..., + ]), + sum([ + getfield.(input.outFerms, :momentum)..., + getfield.(input.outAntiferms, :momentum)..., + getfield.(input.outPhotons, :momentum)..., + ]); atol = sqrt(eps()), ) end @@ -179,7 +192,18 @@ end model = QEDModel() process = parse_process("ke->ke", model) - machine = get_machine_info() + machine = Machine( + [ + MetagraphOptimization.NumaNode( + 0, + 1, + MetagraphOptimization.default_strategy(MetagraphOptimization.NumaNode), + -1.0, + UUIDs.uuid1(), + ), + ], + [-1.0;;], + ) graph = MetagraphOptimization.DAG() @@ -289,3 +313,37 @@ end compton_function = get_compute_function(graph_generated, process, machine) @test isapprox(compton_function.(input), compton_groundtruth.(input)) end + +@testset "Equal results after optimization" for optimizer in + [ReductionOptimizer(), RandomWalkOptimizer(MersenneTwister(0))] + @testset "Process $proc_str" for proc_str in ["ke->ke", "kp->kp", "kk->ep", "ep->kk", "ke->kke", "ke->kkke"] + model = QEDModel() + process = parse_process(proc_str, model) + machine = Machine( + [ + MetagraphOptimization.NumaNode( + 0, + 1, + MetagraphOptimization.default_strategy(MetagraphOptimization.NumaNode), + -1.0, + UUIDs.uuid1(), + ), + ], + [-1.0;;], + ) + graph = gen_graph(process) + + compute_function = get_compute_function(graph, process, machine) + + if (typeof(optimizer) <: RandomWalkOptimizer) + optimize!(optimizer, graph, 100) + elseif (typeof(optimizer) <: ReductionOptimizer) + optimize_to_fixpoint!(optimizer, graph) + end + reduced_compute_function = get_compute_function(graph, process, machine) + + input = [gen_process_input(process) for _ in 1:100] + + @test isapprox(compute_function.(input), reduced_compute_function.(input)) + end +end