From 2642dd06f1b904e88ef29c85ad7e395967733642 Mon Sep 17 00:00:00 2001 From: Kyle Krick Date: Thu, 25 Jan 2024 20:17:42 +0000 Subject: [PATCH 1/6] Added docs for container options to installation guide --- docs/source/installation-guide.rst | 205 +++++++++++++++++++++++++++++ 1 file changed, 205 insertions(+) diff --git a/docs/source/installation-guide.rst b/docs/source/installation-guide.rst index d28ff76..a8ddfb9 100644 --- a/docs/source/installation-guide.rst +++ b/docs/source/installation-guide.rst @@ -139,4 +139,209 @@ Uninstallation and Cleaning Simply delete contents inside build and install directories and / or delete the build and install directories. +Running QUICK in a Container +---------------------------- +For users that are familiar with software containers, QUICK is also made available as a Docker container which can be run in Docker, Singularity and Kubernetes. +The current version of the QUICK container is compiled for x86 CPUs and NVIDIA GPUs and runs serial, MPI, CUDA and CUDA-MPI versions of QUICK. + +**Note:** For CUDA-enabled versions of QUICK, the container requires the host system have the necessary GPU drivers installed. + +**Note:** For MPI-enabled versions of QUICK, the container comes with an MPI runtime which can run on multiple CPUs of a single node. Multi-node execution has not been tested. + +The container is published on the GitHub container registry and can be found in the packages section of the GitHub repository: ``_. +You may want to review the available versions, but for the examples below we will use this image: ghcr.io/merzlab/quick:23.08a-mpi-cuda-12.0.1. + +The following examples have been generalized, so you should be familiar with the system you plan to run the container on. +Many HPC resources will have additional steps that might be required, for example loading modules needed to run Docker or Singularity. + +Below is the file contents for water.in used in the examples below: + +.. code-block:: none + + HF BASIS=cc-pVDZ CUTOFF=1.0d-10 DENSERMS=1.0d-6 ENERGY + + O -0.06756756 -0.31531531 0.00000000 | + H 0.89243244 -0.31531531 0.00000000 | + H -0.38802215 0.58962052 0.00000000 | + +Docker +^^^^^^ +To run the container with Docker, begin by pulling the image: + +.. code-block:: none + + docker image pull ghcr.io/merzlab/quick:23.08a-mpi-cuda-12.0.1 + +Once the image has been pulled, you can run the image and mount your current directory in the container at /data: + +.. code-block:: none + + docker run --rm -it -v $(pwd):/data ghcr.io/merzlab/quick:23.08a-mpi-cuda-12.0.1 /bin/bash + +Change your directory to /data: + +.. code-block:: none + + cd /data + +You can then run quick, quick.MPI, quick.cuda or quick.cuda.MPI on an input file: + +.. code-block:: none + + quick water.in + +When you are done, you can exit the container with the exit command: + +.. code-block:: none + + exit + +Your output file(s) will be left on your local directory: + +.. code-block:: none + + ls + -- + water.in water.out + +Singularity +^^^^^^^^^^^ +To run the container with Singularity, begin by pulling the image: + +.. code-block:: none + + singularity pull docker://ghcr.io/merzlab/quick:23.08a-mpi-cuda-12.0.1 + +This will pull the image and convert the Docker container to a Singularity container such as quick_23.08a-cuda-12.0.1.sif. + +Once the image has been pulled and converted, you can run a shell from your current directory: + +.. code-block:: none + + singularity shell --nv quick_23.08a-cuda-12.0.1.sif + +**Note**: Singularity requires the --nv flag for the CUDA-enabled versions of QUICK + +You can then run quick, quick.MPI, quick.cuda or quick.cuda.MPI on an input file: + +.. code-block:: none + + quick water.in + +When you are done, you can exit the container with the exit command: + +.. code-block:: none + + exit + +Your output file(s) will be left on your local directory: + +.. code-block:: none + + ls + -- + water.in water.out + +Kubernetes +^^^^^^^^^^ +Since the container is published as a Docker container, it can also be run on Kubernetes-based systems. + +Below is an example Kubernetes manifest file, saved as "quick.yaml", for a job: + +.. code-block:: yaml + + apiVersion: batch/v1 + kind: Job + metadata: + name: quick-qm + spec: + template: + spec: + containers: + - name: quick + image: ghcr.io/merzlab/quick:23.08a-mpi-cuda-12.0.1 + command: ["sleep", "infinity"] + resources: + limits: + cpu: "4" + memory: "16Gi" + nvidia.com/gpu: "4" + requests: + cpu: "4" + memory: "16Gi" + nvidia.com/gpu: "4" + restartPolicy: Never + +**Note**: This manifest should be updated to conform to the resources available on the nodes in your Kubernetes cluster. +For example, this manifest assumes the availability of nodes with 4 NVIDIA GPUs. + +Once you have appropriately modified the manifest for your cluster configuration, you can schedule the job: + +.. code-block:: none + + kubectl apply -f quick.yaml + +You can check the availability of the pod running the QUICK container like so: + +.. code-block:: none + + kubectl get pods --watch + --- + NAME READY STATUS RESTARTS AGE + quick-qm-wpwns 0/1 ContainerCreating 0 7s + quick-qm-wpwns 1/1 Running 0 68s + + +Once the pod is running and ready shows (1/1), stop the watch command with ^C (ctrl + c). + +**Note**: The pod name "quick-qm-wpwns" will be different for you. Make sure to update the pod name in the following commands. + +You can now execute a terminal into the container: + +.. code-block:: none + + kubectl exec -it quick-qm-wpwns -- /bin/bash + +You can then copy data into the container via your preffered method. +For simplicity in this example we will use the kubectl cp command from a second terminal on our local machine: + +.. code-block:: none + + kubectl cp water.in quick-qm-wpwns:/root/water.in + +Returning to the terminal attached to the container, we can change directory to /root to find our file: + +.. code-block:: none + + cd /root + ls + --- + water.in + +You can then run quick, quick.MPI, quick.cuda or quick.cuda.MPI on an input file: + +.. code-block:: none + + quick water.in + +When you are done, you can exit the container with the exit command: + +.. code-block:: none + + exit + +You can then copy the output data back to your local machine: + +.. code-block:: none + + kubectl cp quick-qm-wpwns:/root/water.out ./water.out + +You can then verify the transfer succeeded: + +.. code-block:: none + + ls + --- + water.out + *Last updated by Madu Manathunga on 11/21/2022.* From 638c234102c0f214e2e6ce12a80fc4bc81f62ff2 Mon Sep 17 00:00:00 2001 From: Kyle Krick Date: Thu, 25 Jan 2024 21:41:26 +0000 Subject: [PATCH 2/6] Added instructions to terminate k8s job when done --- docs/source/installation-guide.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/source/installation-guide.rst b/docs/source/installation-guide.rst index a8ddfb9..5a4f5d7 100644 --- a/docs/source/installation-guide.rst +++ b/docs/source/installation-guide.rst @@ -344,4 +344,10 @@ You can then verify the transfer succeeded: --- water.out +Once you have transferred your data, you should end the job: + +.. code-block:: none + + kubectl delete -f quick.yaml + *Last updated by Madu Manathunga on 11/21/2022.* From b4a45441b3dea588d1f26af1ba9bd41c4e4f5a90 Mon Sep 17 00:00:00 2001 From: Kyle Krick Date: Fri, 26 Jan 2024 23:32:01 +0000 Subject: [PATCH 3/6] Updated container CPU information to be more precise --- docs/source/installation-guide.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/installation-guide.rst b/docs/source/installation-guide.rst index 5a4f5d7..3d13a36 100644 --- a/docs/source/installation-guide.rst +++ b/docs/source/installation-guide.rst @@ -142,7 +142,7 @@ Simply delete contents inside build and install directories and / or delete the Running QUICK in a Container ---------------------------- For users that are familiar with software containers, QUICK is also made available as a Docker container which can be run in Docker, Singularity and Kubernetes. -The current version of the QUICK container is compiled for x86 CPUs and NVIDIA GPUs and runs serial, MPI, CUDA and CUDA-MPI versions of QUICK. +The current version of the QUICK container is compiled for x86_64/amd64 CPUs and NVIDIA GPUs and runs serial, MPI, CUDA and CUDA-MPI versions of QUICK. **Note:** For CUDA-enabled versions of QUICK, the container requires the host system have the necessary GPU drivers installed. From b7040beb7b3c9a2e7839988f4e8c5ee17e049697 Mon Sep 17 00:00:00 2001 From: Kyle Krick Date: Mon, 5 Feb 2024 17:17:37 +0000 Subject: [PATCH 4/6] Updated developer-guide with instructions on maintaining the container image --- docs/source/actions.png | Bin 0 -> 38471 bytes docs/source/developer-guide.rst | 263 +++++++++++++++++++++++++++++++- docs/source/packages.png | Bin 0 -> 14232 bytes docs/source/quick-container.png | Bin 0 -> 41475 bytes 4 files changed, 262 insertions(+), 1 deletion(-) create mode 100644 docs/source/actions.png create mode 100644 docs/source/packages.png create mode 100644 docs/source/quick-container.png diff --git a/docs/source/actions.png b/docs/source/actions.png new file mode 100644 index 0000000000000000000000000000000000000000..f3bdace51c333fcddb422aa889a72b3cf5b8f469 GIT binary patch literal 38471 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 +* `1-hour lesson on Docker `_ + +In addition to those short lessons, the official documentation for each is below: + +* `GitHub Actions Docs `_ +* `Docker Docs `_ + +Updating the Dockerfile +^^^^^^^^^^^^^^^^^^^^^^^ +The Dockerfile may require updates from time to time. +Reasons for updating the Dockerfile could include: updating the CUDA base image, adding a build target for ROCm or accounting for changes in compilation & configuration of QUICK. + +The below description considers the Dockerfile as originally authored, provided below: + +.. code-block:: none + :linenos: + + ############################ + ### Base MPI CUDA 12.0.1 ### + ############################ + FROM nvidia/cuda:12.0.1-devel-ubuntu22.04 AS base-mpi-cuda-12.0.1 + + RUN apt-get update -y \ + && apt-get install -y \ + gfortran \ + cmake \ + g++ \ + openmpi-bin \ + openmpi-common \ + libopenmpi-dev + + RUN mkdir /src \ + && mkdir /src/build + + WORKDIR /src + + # Copy the current version of QUICK into the container + COPY . . + + WORKDIR /src/build + + RUN cmake .. -DCOMPILER=GNU -DCMAKE_INSTALL_PREFIX=$(pwd)/../install -DCUDA=TRUE -DMPI=TRUE + + RUN make -j2 install + + ############################# + ## Runtime MPI CUDA 12.0.1 ## + ############################# + + # Runtime image is smaller than the devel/build image + FROM nvidia/cuda:12.0.1-runtime-ubuntu22.04 AS mpi-cuda-12.0.1 + + RUN apt-get update -y \ + && apt-get install -y \ + openmpi-bin \ + openmpi-common \ + libopenmpi-dev + + # Copy the compiled quick runtimes, leaving behind extra build dependencies & reducing image size + COPY --from=base-mpi-cuda-12.0.1 /src /src + + WORKDIR /src/install + + # Manually run steps from quick.rc + ENV QUICK_INSTALL /src/install + ENV QUICK_BASIS $QUICK_INSTALL/basis + ENV PATH $PATH:$QUICK_INSTALL/bin + +Beginning with line 4, we can see that the base image chosen is "nvidia/cuda:12.0.1-devel-ubuntu22.04" which is aliased as "base-mpi-cuda-12.0.1". +The aliases serve as a shorthand reference inside this Dockerfile, as well as to the Docker build process where these can be specified as build targets. +From the tag ":12.0.1-devel-ubuntu22.04" we can infer that this image is itself based on Ubuntu version 22.04 and that it comes with CUDA version 12.0.1 pre-installed. + +Similarly on line 34, we see an additional image of "nvidia/cuda:12.0.1-runtime-ubuntu22.04" aliased as "mpi-cuda-12.0.1". +The main difference between these two images is the amount of software they have pre-installed. +This translates to their overall file size with the development image having a size of nearly 3.5 GB and the runtime image having a size of nearly 1.25 GB. +A smaller image size is preferrable, as it takes less storage for the end-user as well as less time to download. + +Both images are fetched from the `Docker Hub `_, specifically the repository `nvidia/cuda `_. +Both of these images will require an update in the future to support the latest version of CUDA. +When released, newer versions of these container images can be found on the tags section of the nvida/cuda repo. +These future versions should then be replaced in the Dockerfile. + +Next we consider lines 6-13 and 36-40. We can see additional dependencies being installed for the development and runtime images, respectively. +These are packages required for building and running QUICK that are not included in the respective images. +When additional build and runtime dependencies are added for QUICK these sections should be updated to install those dependencies. + +Continuing with lines 15-27, we can see linux commands being executed according to the directions for compiling QUICK. +When the steps for compiling QUICK change, this section should be updated to match. + +Next on line 43, we see that we copy the /src directory from the development image to the runtime image. +At this point in the process the /src directory has all of the built binaries for QUICK. +This step is critical as it is resposible for drastically reducing the final (runtime) image size from >= 3.5 GB to >= 1.25 GB by leaving behind all of the extra software in the development build. +When the development alias is updated, this line should be updated to match. + +Finally, we see on lines 47-50 that the steps outlined in the quick.rc are performed. +These steps must be executed here so that these environment variables are automatically available to the user each time they run the container. +As steps are added to the quick.rc, they should be added here as well. + +Manual builds with Docker +^^^^^^^^^^^^^^^^^^^^^^^^^ +When making changes to QUICK or the Dockerfile, you can manually build the image to test your changes. +These steps will require that you have an installation of Docker and familiarity with a linux terminal. +These examples assume that you have a `Docker Hub `_ account and that you have QUICK cloned on your computer, referenced as $QUICK_PATH in the examples below. +These examples will reference the Dockerfile discussed above. + +We will cover a few options for building the image: building all stages, building a specific stage, and building without the cache. +Stages, in the context of Docker, means any section of the Dockerfile that begins with the "FROM" keyword until the next instance of "FROM" or the end of the file, whichever comes first. +More can be learned on this subject from the `Docker docs on multi-stage builds `_. + +Building all stages +""""""""""""""""""" +We will start with building all stages, as that is typically the default build choice. +When you build all stages, the last stage in the Dockerfile becomes the final image. + +Begin by navigating to your clone of the QUICK repository: + +.. code-block:: none + + cd $QUICK_PATH + + +To build all stages, run this command from $QUICK_PATH, where the Dockerfile exists: + +.. code-block:: none + + docker build -f Dockerfile -t [your-dockerhub-username]/quick:[your-tag] . + +**Note**: You should replace the brackets and contents with your username and your choice of the tag. + +The build process will take several minutes. When it has finished successfully, you can find the image with this command: + +.. code-block:: none + + docker image ls | grep "quick" + +Assuming the container built successfully, you can then run the container: + +.. code-block:: none + + docker run --rm -it [your-dockerhub-username]/quick:[your-tag] /bin/bash + +When you are done testing the container, you can exit the container: + +.. code-block:: none + + exit + +Building a specific stage +""""""""""""""""""""""""" +This build option is useful when you only need to change something in one stage of the container, for instance installing new runtime dependencies in the runtime stage. +Building just one stage can save you quite a bit of build time, assuming that you have previously built its dependent stages. +In the Dockerfile discussed previously, the runtime stage has a dependency on the base stage, as it copies files from the base stage. + +Begin by navigating to your clone of the QUICK repository: + +.. code-block:: none + + cd $QUICK_PATH + +You can then specify that Docker should only build the stage that you want: + +.. code-block:: none + + docker build -f Dockerfile --target [stage] -t [your-dockerhub-username]/quick:[your-tag] . + +**Note**: You should replace the stage and brackets with an alias from the Dockerfile, for example "mpi-cuda-12.0.1". + +Assuming the container built successfully, you can then run the container: + +.. code-block:: none + + docker run --rm -it [your-dockerhub-username]/quick:[your-tag] /bin/bash + +When you are done testing the container, you can exit the container: + +.. code-block:: none + + exit + +Building without the cache +""""""""""""""""""""""""""" +Lastly, you can force Docker to build a container image without using its cache. +By default, Docker will keep a cache of the layers in a Dockerfile and will only build layers that have been changed or that have a dependency on a changed layer. +You will want to build without the cache when changing things that get copied into the container image, such as the source code for QUICK. + +For example, if you were to change some of the source code, but you don't have to update the Dockerfile in any way, Docker will not know to rebuild the layer and you could find that the container does not reflect your latest changes. +Building without the cache will force Docker to build the entire Dockerfile, which will take longer, but it will catch any changes made outside the Dockerfile. + +Begin by navigating to your clone of the QUICK repository: + +.. code-block:: none + + cd $QUICK_PATH + +You can then specify that Docker should build the entire Dockerfile without the cache: + +.. code-block:: none + + docker build -f Dockerfile --no-cache -t [your-dockerhub-username]/quick:[your-tag] . + +Assuming the container built successfully, you can then run the container: + +.. code-block:: none + + docker run --rm -it [your-dockerhub-username]/quick:[your-tag] /bin/bash + +When you are done testing the container, you can exit the container: + +.. code-block:: none + + exit + +Automated builds with GitHub Actions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +The QUICK container should automatically be built and published by the GitHub Actions worfklow "Docker," which is defined in the `GitHub repository `_ at the path .github/workflows/docker-publish.yml. +Runs of this GitHub Action can be found in the repository on the "Actions" tab under the name "Docker." +This workflow is triggered upon pushes and pull requests to the master branch as well as when releases are published. +The workflow builds the Dockerfile located in the root of the repository. +When this workflow runs successfully, the newly built container image can be found on the repository homepage under the packages tab on the right: + +.. image:: packages.png + :width: 300px + :align: center + :height: 275px + :alt: packages + +Clicking "quick" will take you to the page for the container and display the most recent version, as well as other versions: + +.. image:: quick-container.png + :width: 750px + :align: center + :height: 350px + :alt: containers + +From time to time, it may be necessary to update the versions of the steps in the workflow. +When doing so, it is important to leave the first step "Convert IMAGE_NAME to lowercase" in the workflow. +This step conforms the image name, initially "QUICK", to lowercase which is required by Docker for image names. + +Beginning with the second step "Checkout repository", other steps in the workflow will have versions ranging from "@vX" to "@x.x.x" or "@XXXXXXXXXXXXXXX". +For example, at the time of writing, the second step is "actions/checkout@v3". +The step name is in the form of "[author]/[action name][version]". +To update an action, visit the `GitHub Marketplace for actions `_ and enter the name of the action into the search bar. +For example, if we needed to update the second step, we would search the action name of "checkout" and look for the author "actions." + +.. image:: actions.png + :width: 750px + :align: center + :height: 350px + :alt: containers + +Clicking into that first result will take us to the `action's page `_ which will have instructions for using the latest version. +You can then update the version as appropriate in the workflow definition file at the path .github/workflows/docker-publish.yml. + +*Last updated by Kyle Krick on 02/05/2024.* diff --git a/docs/source/packages.png b/docs/source/packages.png new file mode 100644 index 0000000000000000000000000000000000000000..e8e71ae4c63df0a8780276a2c8b7c0783fc795af GIT binary patch literal 14232 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 J%H%%y{SW)|{_Ow& literal 0 HcmV?d00001 diff --git a/docs/source/quick-container.png b/docs/source/quick-container.png new file mode 100644 index 0000000000000000000000000000000000000000..bb2248a32db337e12ff6af294257e827ba975c89 GIT binary patch literal 41475 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 Date: Sat, 2 Mar 2024 01:36:27 +0000 Subject: [PATCH 5/6] Added container performance --- docs/source/performance.rst | 39 +++++++++++++++++- ...k-container-taxol-timings-various-gpus.png | Bin 0 -> 42275 bytes .../quick-container-vs-normal-timings.png | Bin 0 -> 79770 bytes 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 docs/source/quick-container-taxol-timings-various-gpus.png create mode 100644 docs/source/quick-container-vs-normal-timings.png diff --git a/docs/source/performance.rst b/docs/source/performance.rst index 39d91bc..333aa9c 100644 --- a/docs/source/performance.rst +++ b/docs/source/performance.rst @@ -37,4 +37,41 @@ The multi-GPU implementation of QUICK is based on MPI. In particular for larger See the following paper for more benchmarks of QUICK multi-GPU version: `Manathunga, M.; Jin, C; Cruzeiro, V.W.D.; Miao, Y.; Mu, D.; Arumugam, K.; Keipert, K.; Aktulga, H.M.; Merz, K.M.; Götz, A.W. Harnessing the Power of Multi-GPU Acceleration into the Quantum Interaction Computational Kernel Program, J. Chem. Theory Comput. 2021, 17, 7, 3955–3966. `_. -*Last updated by Madu Manathunga on 03/03/2022.* +QUICK Container Performance +^^^^^^^^^^^^^^^^^^^^^^^^^^^ +The following benchmark results were obtained using QUICK-23.08a. + +QUICK Container Compared to Normal Installation Performance +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +This section compares performance between containerized QUICK and a normal installation of QUICK on the same computer using A100 GPUs. + +Both versions of QUICK were timed on the following molecules & settings and were run on one and two GPUs for comparison. + +- Morphine - DFT B3LYP BASIS=6-31G** cutoff=1.0e-7 denserms=1.0e-6 GRADIENT +- PSB5 - DFT B3LYP BASIS=6-31G** cutoff=1.0e-7 denserms=1.0e-6 GRADIENT CHARGE=+1 +- Taxol - DFT B3LYP BASIS=6-31G** cutoff=1.0e-7 denserms=1.0e-6 GRADIENT +- Valinomycin - DFT B3LYP BASIS=6-31G** cutoff=1.0e-7 denserms=1.0e-6 GRADIENT + +The results show the SCF, gradient and total time in seconds for each molecule. + +.. image:: quick-container-vs-normal-timings.png + :width: 900px + :align: center + :height: 450px + :alt: quick container versus normal timings on single and dual graphical processing units + +Overall, we found the performance difference to be minimal between containerized QUICK and a normal installation of QUICK. + +QUICK Container Performance on Various GPUs +""""""""""""""""""""""""""""""""""""""""""" +This section compares containerized QUICK performance on various GPUs for the taxol molecule with same settings as above. + +The results show the SCF, gradient and total time in seconds for each GPU. + +.. image:: quick-container-taxol-timings-various-gpus.png + :width: 450px + :align: center + :height: 450px + :alt: quick container taxol timings on various graphical processing units + +*Last updated by Kyle Krick on 03/01/2024.* diff --git a/docs/source/quick-container-taxol-timings-various-gpus.png b/docs/source/quick-container-taxol-timings-various-gpus.png new file mode 100644 index 0000000000000000000000000000000000000000..5697ce24c58fba4e4349cba56947182413e74aa1 GIT binary patch literal 42275 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
l7 zT~m!#i!95F&BXXaL{TJJDs?xff_*3>PG5a z%8ryFh6{TzM@dfq0guL6B}?!KKykcls_>}x8>b06l5{qtIAhR8LdL?vnCE844PIqs z9poO!!KH}040mz)*LH=@p2{1gA>Zd>Or^CS%V3s1!DaD1Lc`r;iLvG|{dL&g-z=kd z9o2S7%OEsKQnLc<*Dr#L04jMCi)Md?4LY$HIV}mkIC0SS?4dA@p^lRR+(&DVlDrDS zITt|gRJgAN{94l87=A0)qt645BeB2`j&&dZ;zW2S4#FU3Cm}q#pZmz>b1m6{5DWR? zS%AL6SpZ5370z(LES(KxK;mtXK|?YmPv(y|>pUexF-V%>z!*)St)sp1$77E)-~Dwo zyt$&)<%oTCJOsxetb9F~kU@|Lg2|r|2xY(lA~<^l5ww-?zOG0PSF^z^viwV_2Yys_7*NYb~noTD;k;Q_81i=RuL0hUF zCJh(kJ8T<1g%XoUNQe=kAO-O8nmRHz)9OC5lw?wI7E&OaWebi9)6O`Zilea*WW`$6 z>WhqwWaZ`Esx6&VT{<8G_q;amD_FqkqMj?cV`~Hpr(f69M#xrmTj$8r8(CRxK^I!@ z%Ticft+5ls_vPG12=8l>>r6r&2uq5(Rz30l>*?R&~l5rKSt~B{IHSE}=5)laab3AU31^xdBMEPZ-kJg^A=(v?NkYj&>%Db6It)wjh&rC+&WL53Zm77A zeB7OAokPOlxCu46qlk-h;T!~wlA1eEkuagXfY^EXIc6qd0Ix zLovebT!vUM8H>X1z&oMeFSxVIDhLtYg1S1L-uO70smz=kD(kV2CR?hGK{n-HU%k|0 zzzNrKtiMMMam|sPcb;3f%5ukr6JhpGMJXEM05rwan(!CBa4^L^XT)(v1x>cB-Z7LR z_u+RN*)|GTRb~t%X$iGXx@~b&JaNvT<5zlXV^EW4In-{kZxG9L^E_o>rO;Dk%nHi8 zRv(58p1DsB%a138$=<_G1y_YhHDB(CvLUGww`QtoFea#Y+37DA7BLOi{y-$V_B`8Z zLYpAX?gIkCKZu0~!a`zid6ywu2-U!LZpP*5$*dI=F>iqKtR~m$9A%aOMD>o-(rD4?}O!26J;) z*IVa+vkh9s;uuPVEV<*VB4Hc8IQL~WY9>}Ki~Iw4v(7_pG&pDKG89Kc;AD-`8YGS_ zjc^2`MODlqa^fUz2+rafQ z8M)g=_uqgjjt+MToy!n$+W0?0S45E`2WmpOA(x8UM#|hM4C-Mb;mV}wz21&Rvq?!T z=~L;zQVNnTu_aE_VR`_Hn^Atb}`L0_U1U7HYQH zT{S$%o1=|`e8?#qCp}mW(#UHWAW!Dp)3E1lcYAWD*VoAn_0kyHk5$d)lCO z1y-L{{$BkM`{A~9eH8Y+f&b26etd467s5oOy-+DfK4P|2O@_`J?Uz)&L}wS{)K~=^ zDPy_g+11lD8VHS3T(qDl@)M93bL`aWt%A2}cogPSBi zgAgq_{0=un=VZ>$iJv6ie&C+Q^Cp;sI59L)MA<_V8-Yk~5F-v=IW&#p)?JJ|4IG@` z)vd<~UjH^6aYV)~$uJ8k2{`|)9Z_qXx+O_wTinMQ%{59t9O#W+@1cR@1V&WucTYi< zgyoP_q?k$aTDFjYr0WfGT(yz=|1KJS4l$D;xJATCM=*UI;*Z6^ELwe-Jlh0+X|s|1 z$AgCsu_GeD0_DjVwlY6X-~13IXMl5F)Zk(VB2TP{nQj$s&CR&#Yjc4iAsmRqtbjQX z18PVbCZrifbW}VNKY)u~o&Z0Fl#=RbEOQ>dCNz}MZIyOCE|1=#HwdNfz-3{DIQ#-n@x!_#o; zFmHwvJ_ETa31PG$Xu%pMoN(9>X;S1YGmM2`ev5mm$@+oCk8WYdbumX;U3uYHqUvF? zp2B$e-pS#w$n%j?0&%PsCpsA!x5XWc3r$qV>evf7i06QlB$z?BF@cY46oUL@vW@1R6a#%TibOmM=rPfdkpf1jg7DnPc24NDAP0jf;vV~HBmm#ZJ8VCJKWN+SdaH`& zr-ZPgB4)2b9S{kR!67U$kh9s=eY%ecD0&z`BveGU0ue~a++gh#nh2KW`a|(DSR#Hb z2nz1Q^f-UTC=kv{3`}G)#R-rumKpWDp(+(2Ig<4xZ$%a~E&=(@7%VhnM2R#?KV`x} z352pA1Xvk>|9^m6`3Wq{H_(Mg^t@2a8&#hjMaL!SC!B-FP>RR79>#Vtw8)LVSDaE~ z!5 z)4bJVJknBS5-|{!dxx{Iv1#*hXb04%AWR$-LXIGtLAtHtWDkhwDk|xc2#9;cQ z*7!)FlgF*gAMeYok;7Rspp$k_@ff(tJP9#EQ7+RLet*&3R&bH@Q7j@F3Kls%>;(Xz z^@ksw#Bc1x`M=~eWq!C%;0Q=uBUnpH6I9U)kiQd5EUyO!9tgE#hiT7<*?Kauh|p5? z!cR1)==ptiM{zojoL-JA2cF_lRl)DjW>G9VuN{#M7ms%A!7c3f6dA3&D!UE2D1304 z-7G9UKP;MM%fFYvk`Y0(Uyma**P_*Kz?{)masY^fa3lsNE|J4}B4e+6lwS=F4u-b# zsOG1b2wY=w)<`{|TGDbwV{}tgDYG*~)dJ!*_Le)4>v#&ifJyR}P#cA0xT; z_YP%Ye~=>#U^-IH9*r?L5d-~KL(pF;oli(eW#Dd<-XL>24pzm~ooGd~7m31Qu@zxL z6tB+sW#(osg>!aDW(&e^5eAS5)P(;XjxY&2N-UU#hH?!fK;p}o7i1MjlbIXzcXECx ze24Q(=D)zUC2$nbaHE4(h=$M&+;Bg*GnTh++~B|o32O24widxG@^zX^uXr}%I3enH=Yj`M)=q#VIEDmM|;wFFC4# zj4C$jUr16De1mWF2B1nC$Gk8RV3BS%h4$YQInH=37K2~t=$jmtBxRld8bptSU=Wby zkk6JClQGPvsxqt%QZZ~9_~|qm1APM)=gT6GJEade9fbRwST~QeL}PH6kVf&R)gA-m z(~8QA`W+|6G)bAW34c`aL`yD zsCS#~^T0lI_(b!;M`=5gf90~zD&dSWpwR<^_=;w;}#{T}P_870^ z2A!I~VWZk*zAR)6o;dR4@Wn#=Ob1}wxW|tVax3(a8jE{xf=B{VXhrz4W==i5s#qB$ z3I2QJ8Vl#*jT<*CJ#awO+37*dEJII-#vBdh4X_`LgCG(|F=KEMg$;KbLktXLHsHid zn|66JLj@#E4oWh#5X_U?iLQuy+KJh4_@O70`$ipJI*W9qkjzn|~Dyzlq>ed|Rpdct#(pS+~@!h|9T=|vGI zKJ?*12{qcF{i3+KI-|awm6es(@xC}%MTJ{zo$Opbg=bSFu;LGhAdq+w*PYTthu?>%L#rJ$&aIjtE2OUyhJJJ%18g>Qk3Ley>M-Q>v z6oCkBGnJ7*TFf`3!Z`J~ph*J__+=*xO>v}wBPaB^FT|T6o^Qfusv6h1kXVJSw6;}6 zEAPVM|FwV$c~U)?aJ@7ji{9J91j1N$!K}4`Fz}vX9fRocg7ooVPYJ2>AO~%xx)A&h z5pwX8W4T^Q2*#No&mEE1aG2h-l;6!iZ#Q)0h-6R5_`-n3=%?EU9R`(ALPqoV*9+M^ zX!xd#TI0cHb4Dyk8tv#wsUjV*oCVk=B0{E8!Edn@rmI}>Lil%)Iv1|{lODLVv*On3 zEeso8Yq)>-$0rmRz^nmvc+5;yg9Pm;U`d5-=vRj+k@>Vyh~y5mF~-Z$82)1<(k zhpC}KZ6wMdHKGTIVmc*-GBiq2_;&eqz9k^zaN+0E!tQ%j$CQ1S_)L%D-o;7mKv&|4)z=dkSfHfJ2oiZ^{I^M8~8$OBJS=1{ZrjI~dFlXt~HQb*7@2j3sDfAIPIS1065R_b;!h~4_n$!aD%+1lFL z&X8)6J{)!YR+g)UF#g8!X+PAZq+5+p&29+K4r(XjFJ4FVV+v2H^^g&UCMaS`)|{lV zQ5J37*sJ#GW%u)*Y}Pmwy30~B9OXev%;>vglI<*|t&|W+XAstQzWC*R8yrLY#4Qoh zYZ)#F7)7>z>XC%=>jr8A|6MNIhcBuA9U78wIVq{!rbl3S*6Ryi*YuQoOv__Mfg)@$ z467tlYNi|*YkV?x7QWsOQ+v_hu5x`7kTEUIJs!MU1vP<4x1y1Yi1w>uilf-v<`MqmvJOxaX#> zvaD@%dPDe&zW{pW3JZ->9F6$y(h5rzhe-eBIsb!{dv8ZpMcP8J&qQ6~3WxUN>!OLt zn@=b-JT6v{^(0gXnpl9~5iQ#fqz5c3TNod+D4%Yi;m+piI_-PYM>S%)1xI)OJbaBV zY_b!pW~MBiVTTPu{-vCp@j^|>@_i_PH?V>};p9m2P+aTaD2_tU;g1Og&yO)2`E353 zTko}RpRR|M5-w3A!CXz6+&+ za+|yP%p2;zD^yetIbfdK8B@u|4EzQS00PB7zr3l7m8GR3l$9W%Wf%+|Fd&O+?hl+E z@yxJ{c7K?QAmiAyls;FNBW{os1J6CzTUR|7SnI;@SyutHmlRR{=EA!XlLAt%N{{<} zpxO$t5J)L?I9FNA!!%Jhp+5Cl{r(+2B|TB3HG5mvu8c9aaFh|!KN}mAy!1%`5#gu- zb;w>9mv^$-hAHu%{8QU(XkyaIlOsu_70o`TeE$6T`kPLrkb1Y16aGp&jziQC_ z{@gwdz__b|_>+P-V?SVTJ1v8hs;D94Apf0mQD6SG819M`j5ey6&7)zRlTE*6`S zukARo0^v(y=&rH{)Y$zopcNk%#BZP)K)wTiFO*FH**Mba02-}a{j%%=L29an|Ct<2 zpn0xkgwklQ-MwlFwUCj`VQ*Uf4^BQO}v+s&wK<6R~Iy5Xsq(VtUGEu(C&9WN9H z1Rd-~N*p0Ul48aCfv|9LaX}w}@8Mp8w6>PP%(kMsUl2-CgN$My1BucPI$BCT=qXYcYPM(YWrq@6`0N`dS~f0+M?BRw@TQE*ss52{>)G92-#K&?c-S%mL`1 zB9DRQz9~IDor1w+R>~*bHD_~TlV9Uv10!@(#n@Y1m4_4e0H<@d9>EF{mhU)NAF z8iNi;5J3YZ8jL$}++JTS|FWUt#s(cxrG)FmfG73%R)2qGa4TghawD5VGx&%~KeYH! zl-tpuT27$iGOC+!^JdMC5qoDAN3%;y`P)lIF zWH2B_WFuT&8QNdwN|9psiESGV`);Gi2W8F|k@@w)qate6(nX8($Zi$lzk$?Wk3~dD zg}EBwjjljuLkmi1q(V!+2(m$My7N^XM?n_;JZXL}81l7T@&IhY0=OuEEP7#sm-SH_ zxbPQD`}TI5D*-W%k%% zZ9~nTMhMEytvx0nr-t5H{Vc0F)WhCXsHXI4rd;IgbxnSdKl}3BgH0KlMzPz5m||!h`hV|Ufs1ra)N>+L;x^dX4GZB=PiDau)I15 z76@5BwryMwVX@Pix+0*YBW|h?&e9DKQK7BlxTB(zcOm77LkYOCEXsJEVd%HSv1Ypv z4@7QG$xGD~@8ZRJDw&uZ@TqG>>3Rvhh31?wRd;2yC0Yx*M(|chPZVh_`TqCj=vUEO z4|d5@qy@f2B5|8BV)+Y8QT8D%%XK~F>71k$jKW!#^q44$dCr|XHWik!b2v?i-au0j zy}iMxe>S`fZb1uC{vs8A%6E~Oj9~H1@Q^rLejkSX@F%Gwm(b;TXG3IYXbT`?^~3ju z1L1ICWg{LAKjIK=t3PXe!5*enRK;CD7cL8L4nrINT?x)fG0w1EvgtxN^y@hQ-RM|C zjCR@(Ffu~qi20e`HTT2^+c_CZ1QO(qixz^XlELdG=rIkX3bby6x)S;!@vK-?4!KwzV%9Eup~R4h3E>thiMEW^MaxF`XRz7B z!#?r!KmGFRn2{RI#OY5w+IcTg++n}DiJIde(Pm1<%o#6Q*BYl0i&iq$q zOLgW~F23kCv4eR(ug+sPH}0-We84CM@&v$7>M^Li&33pYVPaHAfT-*oS`+bKR&$+))wNK z%T1DuMM5)%mCsWwysUIx_m7KKBToTKH37o5ccm6(CD{HGD|qA_ZK79;0+X|8m$Al+ zsdTAmL90?qaA(*6RbM9E6FBAj*~@BQ7l{L;Xd|B1 zXx!qQJ0k>AP{8Jx2xakLVxO}6wJqKc&U%N)NbtVR@n^Pc8Gk#XyKT1qp>_wy({6sK z*`WoXChi9{i4S1Yh+KHU+%3o2s4K9BqcgBPH1-oK)?DP!`z;O4-F_AUD0B0pk;@*R zQ-)bAW&T^vDSI8_TWh4=J30oC>;lOoTK#ws6bYIZjqdX<`c#HTw9V&-AD`tM4>V^@YMcKTIV z6-_XH^_tE^NIB~XdNNqz$1cNy(YB8Bt~-<74IEMOV4r%xbo z_0c;yyO5Z5J+tJ|q?*SFshDXcY^F=1I^soU5Iy~n^T=jVYJlfteuZ^R8Rx*9S2=Ri zAIwEO$QaSbJC}tIui???Rq){?s=~hK{cC|d@;9B@&JI0BesPfivp0MKns`5?`DT14 zCW!C~DXxc6wg-s@gD)@gMYwkwH~lAeLQ;sP!Fov%5Bf=ljoj0gpoo{?!f1~<;%&C1 z*{$v>G$|86ZwSR*{fKQ%`XFfno%3wz_09K$rbH zcasCjgB4_FgE+s^kow}}(A7i{(qucbw!@>^|Tlq{h&s)yyB zCp%j)abC5`aQw#MHLL%lS~&jsqC666|GC$c#J7@>ng!y*{5#LYAQrW)KGpJlPR)hk z7Fw&jl5N!}!v&_+wmIZY6Em7(%RUE8P}~yZBhQ~Z_mmZ`ki-0=2W_~1G--?bFQAvS z*y2+vQ!7gLD89p~-hWE~S<4zOJoV(dP%Ai8vJ=IZhm4`eOn{3c;~za@Xf4YR9`yu% zf5xN|*SL@&`&JZv-vSaxv3sydRr_rgaRQZO zN6i;(6kt>KsP+x1BjcfJ^0K<_i(x>?M3@-gpDB*+?i1tJOYurkAzr{v989KoF_*2* z9n(-}2)&c;sUQYRh8-oBZxv=VDQ_@!{0ed=U99h~WOv-Z{Q7kOXkzYfv%Y0ohm zqFNyiY|B^%GvaacX%mMxe4JR+X;A9aGQ5Y`_Lxk5{YRv_dIi^0N-QF~ zFkQ|L)zD}nQ#Ba@F#q^I`!aqsd6u^yQ)`Zvid1tNw+{B4^j`k;%rVS}vE2@0R zK3%*^iWQbWem!NDjCldt`8$7b>FGI_da>UOcP(wpk4qsyMNxW+c8nLZFgM@iGT<;Q zNm#9#u)1=7t=}qlD4C~B&bwICRebHwmF)cM{2#%?bX<+9aNeCC)T^3eHl~y3(1NQ~ z<4)kNG0CoL<_kk(6&T!?8JpU-w=py}j-mF#gf^5%s@(Y^j4k2cfIVhmGRPEGKwfyV zt!vabjIf7^#ZUV&KM~6%v~r9(iMrwuMQblBOpBJfc|R)l(rfLR`Jjcj(TFAAX=Q_e z*#kLmO%=$B8~NnUoGriOCz(dX&hv^msc(UGe-`DmRM|4%Tk-@rLAKf)WU32)V2^H8 zZTbCLpK1S2^U_lQ0R8tgfB%S+h2naWj1#L>4bA)Mj0@9tO$+CVpF+(hx4H7gDui6S ztMc1OB??T^LW)B0XDfBHN=Q=tZcsNrn}1POq{dphv3v*k^I&OyC`JAeg~QQm8$vh) zDq`%QDrkDVmPS zY6~(bZ5VbdGK?mKG1;8Bu#NgUp1*v^xk#3^c!aM;IAJq=mlfb3KeIW;Dn0Vr$w_*> z&!I`ph*}dxT~+`rJ3QIG=5up#jO1qHfB7&V?%7~sh}=m3Fic% zUlFIk6Dx*L+!*75V!nL&sXXPgCbKNg1UyviDQqzE{!?DT@axkb*0GCSM9(D6F*_Qk zMnx|iFaI^4z%CFOs}Ea2Jb?HK2q1YxCPlc*xcPmj9A^m18fWXn9L^jQZn!`^aMk7o3Xa?fdTxy@*%rx;n|%2Twgy{ zebfT(`8x`gX9TAI!<@}{e_Y%On1*WGG!`o*9h8*BBUL#4e^%Nh!oqO+&KC8%4B>^^ zfD2(6)Ypv)5_0K!)A%#6BIhft6Yi_OvNhA^k03oUgowQmkdU!6WE9U%YA_KLF)oKZ zC5=3vtmGp?`D0U(n#%KM619%`DKW4ml@Rd1nO|#FS#2EeY-wIXk$`*rPwc+1eWD`l z@r3iUVKUFGSm_vZLd#J~fmg4~3Yp^e2XV_+wfeJi3|F8FXBL6bnae`dswcHiJ_L_M z6yqFk)=Lo_q}U~mM#GeWU!tqg4C{r6%H5ulARDZ1)Fr2v*vAr~HU6DzTToxY=4|qR zCETJXRq1g~^xiNR&T9C0@7p!Hd;JXLDezZ2QdVw`dRCd42dzSM2j{%&2gybrSCiXb z@N;=*KL*U8H!W#;l}yABo$|wkIsH328`;tT4MUBJ?PFcSQR)UZu`7rdAZBAOrj^X4 zP{f89ML+0pNUp!BBYxtW7`(q6GK-h!#Snd0zJopkiflee61ThCr`tSrqnNV^HyKc4 zV%R#PgX167k86DNVz+Zamo}Sd8>OtSZU8{gi-u;`>Wk{?>e;{{%X{-gotL+S$Dnq{FUpJVFF4@c6E&w;PCDG=f6P#h zn-LJTtwW7%^rviLX`l6j`(>}p-ZW6q3hnA0oD0#sHoB5Az7-QNiE2iX=A^@Cqy?|z zYgcC(8dC2!9FAVm>GyG>ljD;t?+pRx5}&GvWo%cfwk*&N`^_#*{=`EFp~Dq!y}Yfk z?HMzDGA`g-O|!6aA1g76Vsir!0>~(~m`xPWzGg}32x<>EXA(E(?s?B;w<3%?$&NYa zPXr`s%|*lv1OP4ed}GvzdqVb=Rd9?s|C%xr(jFbES@Py;ss}D@#PdI@D7{<1a#%Rw zCxi0#NIk$gX$ZZB^Uv?$vLP8`G*`eep_2!PglKzoOQZ`^6`u+K>dz9A_~(E9>144P&z)>4&-c^UqA{5IHMgL^ z=M$qnh_nfjq9TD+WwqDR6X5+acQBjYNI)U^vzdv>24rOe+oM-k3kgK zr#V^(CPlx>NV1T(o$*y7^l`mfkbcI>1ufX%uj!{6p=Xj5f98muF}OP|sVcTP=XCBpBBm zF}*U5+>d!Pc6g_HyGt2DoH=^u=JgC!4rB1;>&1b{1RbNl!wYqXzrBn&Sd%Z`ReYd5 zOS+A_`>AS19wDn$-H>Ppdy9UCrzTo*5oC-(BJ(?@Gkx{`$MxO__4Bvonkb4dJwSl{ z;)!hVhOCm!%ADfVuS8;_F`8|ua+c}4P~|l9?v|^cptZMKQE(wZhZKKEbR^#sQcrz} z`8LSAECtFx>l14BjH-Q~wbJwH_NeXNcMj)xw?w-#&F);AQ3bfae_e5lNV2LLPz+kMpT`xEsb#Y`Zai#9Z z2Gi*UH*0Pf-KULy`N#3<%OgU@}QjFTXB5Tcxz4`H4xTfu)o zuK1m~et$0z)5Q-r&NDooL+~}S)^6)vRJ^R$7%pH3@2wvrhpC3;2P5H`{)~$C6XeR@BkM5RRWy(&Ti(z6pCHeO* zD(%}J3W{|Dcqy@$r$CS3ZvwGh=JF(%AK}Pk^5N|cTX&iIZRR6bpfCnn(+`MDiqNUB z4s7oiZEe$1cSCkn*+LSRsV*g`*kK4V^3f@>g?D8N$Q(CsxASLupf(MEg*EqpQ7?E3 zJRqp^9f*&)EdSzfY%3NTq4%pFSLB)LGc78;P4cF)$}N+EyJm*e4GGJjL5~Ckv>#Tm z$N5oRo@};njWfB-7O)lS0e@cm!SNZrfRFlMETap^XEkPwY%Gfg`j8aDc+y<(xJvGz4T9ycY$bSj8Z{*2h^@I`!@`BTKX>`XYbxW za#G9~d$~g2k9S@a!AXx^PJaK4d?X1Xu~5^*odOtDoG*n$CyPQr1`Y+qsftM(#%>e> zN))tY_)gNaa(4Tde>>}0-QO;vy!)RQfBj{7d)2B*>m52YGwY=m=-6cPr0GuSwhOt(~VGRqZhN(1x1fKTJ`p*s>+<@bO6o0iDwlO_ImiojEi{xw3VIrv5KT z2-e;ipm^g(_=h`&)gP=ZZx~Lj^Zsz9?rr$Z51B2+6R3L2%ORbnWi6hrywx<%W2^Sy z!Fwn|x6+yZir9V-eyO2*_FOgYm~;}V*hyx>`!f*M&Be^DTl?!{^MX1$->8^9VZr9p z3>%>R#*pJK#9SNW>%joDJx|FcTH+=O;HGi$@%Yt z4Y|Zs5UYD+HTj-{Odl^BnL6>L!MHO)4}Kj}KKtJNDdCCOLK6T?92`^$(qdX%96VPe zD=lSN$FyBJ$D6J7EWxCRldjSa|{bIROUcboy!ToRa_hi zd*mc3@I#Px8|4R8)zvwuR_D}Zlpi_|bowiU=AU!5-JqUNnml>Iirz*>VNWu=_fORP zyyaZUw*H567Z%dSTbFEI?(cXsKP+)t$mTvbZr+@V#dLW+0Nfyk==Tc<^*jMxuKM1N zDVowvOlo*`D74HxJbp_^NSHlP4U5nY#ktx&9;Sg)Lp7LJ=fg~Be*0i=Z|~j43l29& zFX8h>Xq$re!4h3=soh=qQ+<~nHknI%^;~FiG_~D)BrrsUCJGW8<)o)vYzUl~_0ld0 zr_tOk6oaLxO;%PWriipgoJDB}$_h?&uU@%R+2ct~P0joh+j8#Q8Du=m!C~H@{!1wuL#p4O#>RL|DRr-ki!>}4Q1iHHx9$;yf*Dz^uO2TiZuNUeiZ@m6aC5(iy z?~>7q*VibAuJgEO>i6o^#ku0ZSA&W)#_{`*^!3u$U-f4CoH-h99v<^(GP>(h!F)`HBdaK*=Ta&C&qB-G<3!fs za6rb%m#tp>22c$D5{%+-(FZ8QP+d-Ee4cXQs6p_I)a8CG>l*+9_p-E9?5nTP&s{SP zePQbOi9gu2<+TH>tkUJDuP0AsUbS2FThS8g!jh$#fxteQ?Am%Q0q>+B7X)$m`cg* zkTGh1fO@a{f2X(ARG#-_+>!L7`Q5+$ZLxxq;Y#8CPuoL6Li$~a{M!7Nd&@pYzaH#- zWB-OFdYUWFgcN4R9!Z+(4l1_C$2=x?He0|4#0GDVt6UmHJF9f!-ic$!OzFE6hNh1= z0)z3-`^v4EJPnPxJ|?80#X9Dq&%rN%#s?Zl?%8vsqGm1JNItj@quh7+n1%%bk*ib| zoOrd@+6YVpLW#^st9292vxByMtt+^g@$pxeHQoJq$9C;sc&(!yiD6qVloa~u?%T|@ zK<_q*5`NXsjuZLljkp8D`1P5y*O|wR^71m2CD9D9#mC{P`uG8&QvuJ4G=5WB>QwuF z*l(Z%8(~E_T!eF?-sQJ}1K$Sy$=h`-Vsc_-O{PQtS*ey6SFVsW&85BGlYg&L;j6i9~)5{|O>`KI+Z zPR};pU;GLX;BR24e0A=7m3bEr6rFR`qDGC`qE{HI`OmMH4>Rt@_9(TYq9R=b13$hN zR~+$g-u!7%E}9i-`zJa$_yJaw)vW5!vE%!o(c0$qiA!n5Mu9Ej3ffHJaL@y;(-56q z7I@{@+S|{~k5JcNF?SH)i`X#>R)XV0XJ=hKy-Z*{fwgFk-UjKmvMYF!#|dnkK686` zcsKW|hpMtF1i;ek>ZvU+Uc8vJb_F)ZDm{~ab}6o2AWjP)7jr1K6(Wm$XHJ~xY_yD& z!>^t@fBr*&?$)p{wJ0OUK%OtQAw5i}z8d3XVa|s_pVwI=zZ6p@F}VsWSB)QwdKnpn zE9Qp~lKkB!+$8wrY#C71P;`HC-z zLA`V5g&rF<{QsKj(Q?;)t!k4n@U5+ZflJwnJcta9>L z^D)#s$`gXwuvlAEUa-G;{-KH$Q`T8i%J=NvEg!H;`|G2rZj7oT`d`6wC9C$$ zlbfBLk7Z;;26i*txoDu;OKOBwr%yfHl2$TCYJzBj!o$qiJ3-rA7B8Ol_x?!6p8RRv z_iKs0(qqaSq1hq0W=BlB2%DBy_EwY(3)#JU-m1%A$aEZGGgsIC0<r|7*pWzjukDQi_gv13TPj=R_79siapFcE{j_WlaM`!ZYB88s zKefQJl8Yk*sRvN##B*d$#^M2MMx9fvyx)u<22`+Ql}fpp@P9|EecqDxCUoGyflr~; z->s~Xfu#)7ii3L}2Tu?yMWM#fD9qtLv6--`&zE-=&04fbs4I>*oR?AZ|B+13EG`K0 zwBM@6ralJJASm}=f95WVb{U590G(aM|1o9Xe(u#aP$@Uw<6%9p^))FV02Obd4xJO` zd#s?ch&@3=jy$(WtWUhGSGZ*N-o4i-lBU|(<+{B>@Fish`t27xtY^|I%wa?dNEDcQ z?%YXmha|4!`=FX`6|a>vm2;1zFPJw^b{(#K72zo=GzD2+N&iQoI^@Xdp}C)?4dlEz zI#sD#6RmJ7ct6S8X30hsvl*U?dn#=0SJeO#h2P67_0h}ElzcnnOVG5PHf`&87EaCb z`P}39^wg#b!a*YCi`*=VA~wAJ`$m-Vr?r3oP~CZcTw$=?AAh_ZJA!~B`nN9ku37Lv zyygsHJ9-rW&J}cidg}7#lzUfb)&&HjuP;{i_eEE6%%}AruiqLo{%FOdbC5G+%@O(R zYPg}>+e<%UiRjRk1Qq))>kPZwva=DuE*+>`s_La=fc*}@rLoH zST!}ZnRWA)__Z6E9dwK>mhBkC3wS`|+Oc$o*1B_*Eh24J)8&uiAr&eD1Ka0Y`)0_p zV>rZ@jU(p@mlE`4gy)5*s3x4bZYsoyhNb#_`rH|)Xs_)abveLwbvtWYFE1}_GdFmY z-Cb{JXqY6e5F5*jleBe8)2Mp(p`IB#Zrr@KZQCAxPA5NSReB^@EQtf?X002cF?!QU z=1SrH=YLge0Ci1*J{*~=t@Yj~CHB;*ojr7Pe&wSV+s(~&pX(b&ixYrg|0I*W(~R$dJbd{|KR=FOefty?<|on>qLC#@Yp za+s9WuEl(XB8rf`tW9 zF!6Il!^igD??trD>SedP4g5{TfnUjp|zGs@T&F9UaB;%9i`ZXB`b>E{}%uo!^1|sIRU4Uuc#3jEK2L2$bK#d2bHDH;~iD z@|FM20YT-lG5IbMLN3%kTzot7qDN&%$lJ%>%rLfpeNETcxT{gbo!31UYbtp>(In5s z#l@XWOC4f59PwYj&Oc&q-aX;yQ9;zO6>{+SbV8;W<}u1xSP!mT=x_U)|NqHP{T3wu zJ3BM4j@lL1=A+u*t@AwEM^B=Z zFlhPP_foR`#dG z^)qt3VM2C3<7hxFuB4*!KIt2 zftIxJtYRE^>hx(lN5|HI=8fqZPJ_v@8QP7hKub&|&L*VqVgB(wDBDp z_a~GWoG()lFAl@Xt6CjX@cxFhU#aa+1cZ894Fku4w zX8bKn+SpN`OmE*xQE}bO6KsQN4(vqk2_PHCpzSOqwu0GsS*-b4%h$5c{|h<8@vZ)U z2$9=gzy5vxf(2KJHd9BB-dO%O4aeS@Cl=5hih!hB`x}+Cl)d}(3G#UJSPK6j&+u1w zV_x}Mn!Z?6t@%B!oKIBqJfpVyL2erS)sL&vUHX>%_TbFM^2*Aa)Z%54>L%Kn6=yu{ zXy+TtTBxJf?%cToq7^pm8=OiRqU-kRwaakdnmduhwxWaq@Nc3}?Da~W_{1<^o!hBb zb_+Hu`F9R953B8?6#Qv5^t8U=8xqa`RU)_3P>EVp?L^g1pgW&vTD4H`>_)2y-g-G< zqGQf)k+n8?qw*TQvUy^q#Z&X|Pi9^by`rY|YMpOp^@%ezJsW%QJMA~WxF-{U7(r;>@~eqGo9_PG=_I@(dP6R)%o>QFAw z?wY{$rvFEnaK$*%tfuNwC!$@J$C)sjlx0>3g??P*xSg-WuX_HsgC3Wd_?PU$2iL8~QjaV`Bn9hFRT>p@^N5C{%K+# z*m$3O|hTN$;Kc98JI^(97s;`ovTyDD%G_Zd@c+e5& z8TIh+aO;=K#t116D1Ui2_sCMI?eHJD8bclhvgW>~}dT}VZ;y;&H2B)eV4$dZ0d0;op?H%3_FlSj<*>tuSAExhZo{B@GqVhF6p;a@ z41<8@W}}vq;^}fP4c}{iazs01vq)NqHQZ!8>jD{yh~)^IG?JK(UDJWQ(*_a+TnZ4n^0O-<&y8r+H literal 0 HcmV?d00001 diff --git a/docs/source/quick-container-vs-normal-timings.png b/docs/source/quick-container-vs-normal-timings.png new file mode 100644 index 0000000000000000000000000000000000000000..a28595cc4a8423b165d14f88d120b536feef9f12 GIT binary patch literal 79770 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ⅇ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 literal 0 HcmV?d00001 From d837b7561dd2bc281fec2b08b6709222285bf51b Mon Sep 17 00:00:00 2001 From: Kyle Krick Date: Tue, 5 Mar 2024 14:27:57 -0800 Subject: [PATCH 6/6] Updated headings to match previous --- docs/source/performance.rst | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/source/performance.rst b/docs/source/performance.rst index 333aa9c..797767d 100644 --- a/docs/source/performance.rst +++ b/docs/source/performance.rst @@ -37,12 +37,12 @@ The multi-GPU implementation of QUICK is based on MPI. In particular for larger See the following paper for more benchmarks of QUICK multi-GPU version: `Manathunga, M.; Jin, C; Cruzeiro, V.W.D.; Miao, Y.; Mu, D.; Arumugam, K.; Keipert, K.; Aktulga, H.M.; Merz, K.M.; Götz, A.W. Harnessing the Power of Multi-GPU Acceleration into the Quantum Interaction Computational Kernel Program, J. Chem. Theory Comput. 2021, 17, 7, 3955–3966. `_. -QUICK Container Performance -^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Performance of QUICK Container +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The following benchmark results were obtained using QUICK-23.08a. -QUICK Container Compared to Normal Installation Performance -""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +Performance of QUICK Container Compared to Normal Installation +"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" This section compares performance between containerized QUICK and a normal installation of QUICK on the same computer using A100 GPUs. Both versions of QUICK were timed on the following molecules & settings and were run on one and two GPUs for comparison. @@ -52,7 +52,7 @@ Both versions of QUICK were timed on the following molecules & settings and were - Taxol - DFT B3LYP BASIS=6-31G** cutoff=1.0e-7 denserms=1.0e-6 GRADIENT - Valinomycin - DFT B3LYP BASIS=6-31G** cutoff=1.0e-7 denserms=1.0e-6 GRADIENT -The results show the SCF, gradient and total time in seconds for each molecule. +The results show the SCF + gradient calculations and total runtime in seconds for each molecule. .. image:: quick-container-vs-normal-timings.png :width: 900px @@ -62,11 +62,11 @@ The results show the SCF, gradient and total time in seconds for each molecule. Overall, we found the performance difference to be minimal between containerized QUICK and a normal installation of QUICK. -QUICK Container Performance on Various GPUs -""""""""""""""""""""""""""""""""""""""""""" +Performance of QUICK Container on Various GPUs +"""""""""""""""""""""""""""""""""""""""""""""" This section compares containerized QUICK performance on various GPUs for the taxol molecule with same settings as above. -The results show the SCF, gradient and total time in seconds for each GPU. +The results show the SCF + gradient calculations and total runtime in seconds on each GPU. .. image:: quick-container-taxol-timings-various-gpus.png :width: 450px