[
  {
    "path": ".gitattributes",
    "content": "*.ipynb linguist-documentation\n"
  },
  {
    "path": ".github/workflows/cffconvert.yml",
    "content": "name: cffconvert\n\non:\n  push:\n    paths:\n      - CITATION.cff\n\njobs:\n  validate:\n    name: \"validate\"\n    runs-on: ubuntu-latest\n    steps:\n      - name: Check out a copy of the repository\n        uses: actions/checkout@v2\n\n      - name: Check whether the citation metadata from CITATION.cff is valid\n        uses: citation-file-format/cffconvert-github-action@2.0.0\n        with:\n          args: \"--validate\"\n"
  },
  {
    "path": ".github/workflows/docs.yml",
    "content": "# This is a basic workflow to help you get started with Actions\nname: Build documentation\n\n# Controls when the workflow will run\non:\n  # Triggers the workflow on push or pull request events but only for the master branch\n  push:\n    branches: [ master ]\n\n  # Allows you to run this workflow manually from the Actions tab\n  workflow_dispatch:\n\n# A workflow run is made up of one or more jobs that can run sequentially or in parallel\njobs:\n  # This workflow contains a single job called \"build\"\n  build:\n\n    # The type of runner that the job will run on\n    runs-on: ubuntu-latest\n\n    steps:\n      - name: Setup python\n        uses: actions/setup-python@v2\n        with:\n            python-version: '3.8'\n      - name: Checkout\n        uses: actions/checkout@v2\n        with:\n          fetch-depth: 0 # otherwise, you will failed to push refs to dest repo\n      - name: Setup dependencies\n        run: |\n          sudo apt-get update\n          sudo apt-get install python3-sphinx pandoc\n          python -m pip install --upgrade pip\n          python -m pip install sphinx_rtd_theme unidecode nbsphinx wheel sphinx_mdinclude myst-parser\n          python -m pip install .[doc]\n      - name: Build and commit\n        uses: sphinx-notes/pages@v2\n        with:\n          documentation_path: './docs'\n          requirements_path: 'requirements.txt'\n      - name: Push documentation\n        uses: ad-m/github-push-action@master\n        with:\n          github_token: ${{ secrets.GITHUB_TOKEN }}\n          branch: gh-pages\n"
  },
  {
    "path": ".github/workflows/python-action.yml",
    "content": "# This workflow will install Python dependencies, run tests and lint with a single version of Python\n# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions\n\nname: Build and Test\n\non:\n  workflow_call:\n    inputs:\n      python-version:\n        required: true\n        type: string\n\njobs:\n  build-and-test:\n    runs-on: ubuntu-latest\n    steps:\n    - uses: actions/checkout@v2\n    - name: Set up Python ${{ inputs.python-version }}\n      uses: actions/setup-python@v2\n      with:\n        python-version: ${{ inputs.python-version }}\n    - name: Install dependencies\n      run: |\n        python -m pip install --upgrade pip\n        pip install flake8 pytest\n        pip install .\n    - name: Lint with flake8\n      run: |\n        # stop the build if there are Python syntax errors or undefined names\n        flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics\n        # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide\n        flake8 . --count --exit-zero --max-complexity=20 --max-line-length=127 --statistics\n    - name: Test with pytest\n      run: |\n        pytest\n"
  },
  {
    "path": ".github/workflows/python-app.yml",
    "content": "# This workflow will install Python dependencies, run tests and lint with a single version of Python\n# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions\n\nname: Build and Test\n\non:\n  [push, pull_request]\n\njobs:\n  # Check for Python 3.8 first. If this one fails,\n  # there is no need to check other versions of Python\n  build-python-38:\n    uses: ./.github/workflows/python-action.yml\n    with:\n      python-version: \"3.8\"\n\n  build-python-39:\n    needs: build-python-38\n    uses: ./.github/workflows/python-action.yml\n    with:\n      python-version: \"3.9\"\n\n  build-python-310:\n    needs: build-python-38\n    uses: ./.github/workflows/python-action.yml\n    with:\n      python-version: \"3.10\"\n\n  build-python-311:\n    needs: build-python-38\n    uses: ./.github/workflows/python-action.yml\n    with:\n      python-version: \"3.11\"\n\n#  build-python-311:\n#    needs: build-python-38\n#    uses: ./.github/workflows/python-action.yml\n#    with:\n#      python-version: \"3.11\"\n"
  },
  {
    "path": ".github/workflows/python-format.yml",
    "content": "name: Lint with black\n\non: [push, pull_request]\n\njobs:\n  lint:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v2\n      - uses: psf/black@stable\n        with:\n          options: \"--check --verbose\"\n          src: \"./litstudy\"\n          jupyter: true\n          version: \"23.1.0\"\n"
  },
  {
    "path": ".gitignore",
    "content": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n\n# Distribution / packaging\n.Python\nbuild/\ndevelop-eggs/\ndist/\ndownloads/\neggs/\n.eggs/\nlib/\nlib64/\nparts/\nsdist/\nvar/\nwheels/\n*.egg-info/\n.installed.cfg\n*.egg\nMANIFEST\n\n# PyInstaller\n#  Usually these files are written by a python script from a template\n#  before PyInstaller builds the exe, so as to inject date/other infos into it.\n*.manifest\n*.spec\n\n# Installer logs\npip-log.txt\npip-delete-this-directory.txt\n\n# Unit test / coverage reports\nhtmlcov/\n.tox/\n.coverage\n.coverage.*\n.cache\nnosetests.xml\ncoverage.xml\n*.cover\n.hypothesis/\n.pytest_cache/\n\n# Translations\n*.mo\n*.pot\n\n# Django stuff:\n*.log\nlocal_settings.py\ndb.sqlite3\n\n# Flask stuff:\ninstance/\n.webassets-cache\n\n# Scrapy stuff:\n.scrapy\n\n# Sphinx documentation\ndocs/_build/\ndoc/_build/\n\n# PyBuilder\ntarget/\n\n# Jupyter Notebook\n.ipynb_checkpoints\n\n# pyenv\n.python-version\n\n# celery beat schedule file\ncelerybeat-schedule\n\n# SageMath parsed files\n*.sage.py\n\n# Environments\n.env\n.venv\nenv/\nvenv/\nENV/\nenv.bak/\nvenv.bak/\n\n# Spyder project settings\n.spyderproject\n.spyproject\n\n# Rope project settings\n.ropeproject\n\n# mkdocs documentation\n/site\n\n# mypy\n.mypy_cache/\n\n# notebooks\nnotebooks/*.eps\nnotebooks/.*\n\n# bibliometrix\n.crossref*\n.semantis*\n"
  },
  {
    "path": ".zenodo.json",
    "content": "{\n    \"creators\": [\n        {\n            \"name\": \"Heldens, S\",\n            \"orcid\": \"0000-0001-8792-6305\"\n        }\n    ],\n    \"license\": {\n        \"id\": \"Apache-2.0\"\n    },\n    \"title\": \"automated-literature-analysis\"\n}\n"
  },
  {
    "path": "CHANGELOG.md",
    "content": "# Changelog\nAll notable changes to this project will be documented in this file.\n\nThe format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),\nand this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).\n\n## [Unreleased]\n### Added\n### Changed\n- Fix unclear documentation of `search_semanticscholar` function, see PR #86 (thanks danibene!).\n\n### Removed\n### Fixed\n\n## [1.0.6] 2023-10-05\n### Added\n- Add support for loading CSV files exported from Scopus (see PR #45, Thanks tleedepriest!)\n\n### Changed\n### Removed\n### Fixed\n- Fix incorrect return type of `load_ris_file` (fixes #34)\n- Fix passing session as non-positional argument in `refine_semanticscholar`, see PR #35. (Thanks martinuray!)\n- Fix incorrect filtering in `Corpus` when building corpus from docs (fixes #38)\n- Fix error when calling `fetch_crossref` and `refine_crossref` with `session=None` as argument (fixes #40)\n- Fix KeyError when loading CSV files from IEEE that have an incorrect format (fixed #55)\n- Fix bug in nlp.py due to argument `square_distances` being removed in newer versions of sklearn, see PR #58 (Thanks rjavierch!)\n\n## [1.0.5] - 2023-03-28\n### Fixed\n- Fix wrong argument in call to `matplotlib.pyplot.grid(...)` due to change in their API\n- Fix semanticscholar backend not retrieving papers correctly\n\n## [1.0.4] - 2023-03-02\n### Added\n- Add `load_csv` function\n- Add `search_crossref` function\n\n### Fixed\n- Fix issue where CSV files could not be parsed due to BOM marker\n\n## [1.0.3] - 2022-09-21\n\n### Fixed\n\n- Fix bug in the semantic scholar backend that did not fetch papers correctly\n- Fix bug in `fetch_crossref` where document title was not extracted correctly\n\n## [1.0.2] - 2022-05-25\n\n### Changed\n- Remove dependency on fa2. The version of fa2 on pip is broken under Python 3.9+.\n\n### Fixed\n- `litstudy` now works under Python 3.9+.\n\n\n## [1.0.1] - 2022-05-16\n\n### Added\n- Support for the arXiv API (Thanks ksilo!)\n\n### Changed\n- Made project compatible with Python 3.6\n\n\n## [1.0.0] - 2022-02-17\n\n### Changed\n\n- Complete rewrite of litstudy project for 1.0 release.\n- Rename from \"automated-literature-analysis\" to \"litstudy\".\n\n## [0.0.1] - 2019-09-04\n\n### Added\nInitial release of litstudy\n\n"
  },
  {
    "path": "CITATION.cff",
    "content": "# This CITATION.cff file was generated with cffinit.\n# Visit https://bit.ly/cffinit to generate yours today!\n\ncff-version: 1.2.0\ntitle: litstudy\nmessage: >-\n  If you use this software, please cite it using the\n  metadata from this file.\ntype: software\nauthors:\n  - given-names: Stijn\n    family-names: Heldens\n    email: s.heldens@esciencecenter.nl\n    affiliation: Netherlands eScience Center\n    orcid: 'https://orcid.org/0000-0001-8792-6305'\n  - given-names: Alessio\n    family-names: Sclocco\n    email: a.sclocco@esciencecenter.nl\n    affiliation: Netherlands eScience Center\n    orcid: 'https://orcid.org/0000-0003-3278-0518'\n  - given-names: Henk\n    family-names: Dreuning\n    email: h.h.h.dreuning@vu.nl\n    affiliation: University of Amsterdam\nidentifiers:\n  - type: doi\n    value: 10.5281/zenodo.3386071\ndoi: 10.5281/zenodo.3386071\nrepository-code: 'https://github.com/NLeSC/litstudy/'\nurl: 'https://nlesc.github.io/litstudy/'\nkeywords:\n  - python\n  - jupyter\n  - literature-review\nlicense: Apache-2.0\n\n"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "content": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, we as\ncontributors and maintainers pledge to making participation in our project and\nour community a harassment-free experience for everyone, regardless of age, body\nsize, disability, ethnicity, gender identity and expression, level of experience,\neducation, socio-economic status, nationality, personal appearance, race,\nreligion, or sexual identity and orientation.\n\n## Our Standards\n\nExamples of behavior that contributes to creating a positive environment\ninclude:\n\n* Using welcoming and inclusive language\n* Being respectful of differing viewpoints and experiences\n* Gracefully accepting constructive criticism\n* Focusing on what is best for the community\n* Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n* The use of sexualized language or imagery and unwelcome sexual attention or\n  advances\n* Trolling, insulting/derogatory comments, and personal or political attacks\n* Public or private harassment\n* Publishing others' private information, such as a physical or electronic\n  address, without explicit permission\n* Other conduct which could reasonably be considered inappropriate in a\n  professional setting\n\n## Our Responsibilities\n\nProject maintainers are responsible for clarifying the standards of acceptable\nbehavior and are expected to take appropriate and fair corrective action in\nresponse to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit, or\nreject comments, commits, code, wiki edits, issues, and other contributions\nthat are not aligned to this Code of Conduct, or to ban temporarily or\npermanently any contributor for other behaviors that they deem inappropriate,\nthreatening, offensive, or harmful.\n\n## Scope\n\nThis Code of Conduct applies both within project spaces and in public spaces\nwhen an individual is representing the project or its community. Examples of\nrepresenting a project or community include using an official project e-mail\naddress, posting via an official social media account, or acting as an appointed\nrepresentative at an online or offline event. Representation of a project may be\nfurther defined and clarified by project maintainers.\n\n## Enforcement\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be\nreported by contacting the project team at s.heldens@esciencecenter.nl. All\ncomplaints will be reviewed and investigated and will result in a response that\nis deemed necessary and appropriate to the circumstances. The project team is\nobligated to maintain confidentiality with regard to the reporter of an incident.\nFurther details of specific enforcement policies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in good\nfaith may face temporary or permanent repercussions as determined by other\nmembers of the project's leadership.\n\n## Attribution\n\nThis Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org), version 1.4,\navailable at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contributing guidelines\n\nWe welcome any kind of contribution to our software, from simple comment or question to a full fledged [pull request](https://help.github.com/articles/about-pull-requests/). Please read and follow our [Code of Conduct](CODE_OF_CONDUCT.md).\n\nA contribution can be one of the following cases:\n\n1. you have a question;\n1. you think you may have found a bug (including unexpected behavior);\n1. you want to make some kind of change to the code base (e.g. to fix a bug, to add a new feature, to update documentation);\n1. you want to make a new release of the code base.\n\nThe sections below outline the steps in each case.\n\n## You have a question\n\n1. use the search functionality [here](https://github.com/nlesc/litstudy/issues) to see if someone already filed the same issue;\n2. if your issue search did not yield any relevant results, make a new issue;\n3. apply the \"Question\" label; apply other labels when relevant.\n\n## You think you may have found a bug\n\n1. use the search functionality [here](https://github.com/nlesc/litstudy/issues) to see if someone already filed the same issue;\n1. if your issue search did not yield any relevant results, make a new issue, making sure to provide enough information to the rest of the community to understand the cause and context of the problem. Depending on the issue, you may want to include:\n    - the [SHA hashcode](https://help.github.com/articles/autolinked-references-and-urls/#commit-shas) of the commit that is causing your problem;\n    - some identifying information (name and version number) for dependencies you're using;\n    - information about the operating system;\n1. apply relevant labels to the newly created issue.\n\n## You want to make some kind of change to the code base\n\n1. (**important**) announce your plan to the rest of the community *before you start working*. This announcement should be in the form of a (new) issue;\n1. (**important**) wait until some kind of consensus is reached about your idea being a good idea;\n1. if needed, fork the repository to your own Github profile and create your own feature branch off of the latest master commit. While working on your feature branch, make sure to stay up to date with the master branch by pulling in changes, possibly from the 'upstream' repository (follow the instructions [here](https://help.github.com/articles/configuring-a-remote-for-a-fork/) and [here](https://help.github.com/articles/syncing-a-fork/));\n1. make sure the existing tests still work by running ``pytest``;\n1. add your own tests (if necessary);\n1. update or expand the documentation;\n1. update the `CHANGELOG.md` file with change;\n1. push your feature branch to (your fork of) the litstudy repository on GitHub;\n1. create the pull request, e.g. following the instructions [here](https://help.github.com/articles/creating-a-pull-request/).\n\nIn case you feel like you've made a valuable contribution, but you don't know how to write or run tests for it, or how to generate the documentation: don't let this discourage you from making the pull request; we can help you! Just go ahead and submit the pull request, but keep in mind that you might be asked to append additional commits to your pull request.\n"
  },
  {
    "path": "LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "MANIFEST.in",
    "content": "include CITATION.cff\ninclude LICENSE\ninclude NOTICE\ninclude README.md\n"
  },
  {
    "path": "NOTICE",
    "content": "This product includes litstudy, software developed by\nNetherlands eScience Center.\n"
  },
  {
    "path": "README.md",
    "content": "# LitStudy\n\n![Logo](https://raw.githubusercontent.com/nlesc/litstudy/master/docs/logo.png#gh-light-mode-only)\n\n[![github](https://img.shields.io/badge/github-repo-000.svg?logo=github&labelColor=gray&color=blue)](https://github.com/NLeSC/litstudy/)\n[![DOI](https://zenodo.org/badge/206312286.svg)](https://zenodo.org/badge/latestdoi/206312286)\n[![License](https://img.shields.io/github/license/nlesc/litstudy)](https://github.com/NLeSC/litstudy/blob/master/LICENSE)\n[![Version](https://img.shields.io/pypi/v/litstudy)](https://pypi.org/project/litstudy/)\n[![Build and Test](https://github.com/NLeSC/litstudy/actions/workflows/python-app.yml/badge.svg)](https://github.com/NLeSC/litstudy/actions/)\n\n**LitStudy** is a Python package for analyzing scientific literature right from the comfort of a Jupyter Notebook. It lets you gather publications and explore their metadata through visualizations, network analysis, and natural-language processing.\n\nThe package offers five main features:\n\n* **Extract** metadata from scientific documents sourced from various locations. A uniform interface allows combining different data sources.\n* **Filter**, **select**, **deduplicate**, and **annotate** document collections.\n* Compute and plot general **statistics** for document sets (authors, venues, publication years, and more).\n* Generate and plot various **bibliographic networks** as interactive visualizations.\n* Discover topics using **natural-language processing** (NLP) to automatically identify popular themes.\n\n## Frequently Asked Questions\n\nIf you have any questions or run into an error, see the [_Frequently Asked Questions_](https://nlesc.github.io/litstudy/faq.html) section of the [documentation](https://nlesc.github.io/litstudy/).\nIf your question or error is not on the list, please check the [GitHub issue tracker](https://github.com/NLeSC/litstudy/issues) for a similar issue or\ncreate a [new issue](https://github.com/NLeSC/litstudy/issues/new).\n\n## Supported Source\n\nLitStudy supports the following data sources. The table below lists which metadata is fully (✓) or partially (*) provided by each source.\n\n| Name            | Title | Authors | Venue | Abstract | Citations      | References |\n|-----------------|-------|---------|-------|----------|----------------|------------|\n| [Scopus]          | ✓     | ✓       | ✓     | ✓        | ✓              | ✓\n| [SemanticScholar] | ✓     | ✓       | ✓     | ✓        | * <sup>(count only)</sup> | ✓\n| [CrossRef]        | ✓     | ✓       | ✓     | ✓        | * <sup>(count only)</sup> | ✓\n| [DBLP]            | ✓     | ✓       | ✓     |          |                |\n| [arXiv]           | ✓     | ✓       |       | ✓        |                |\n| [IEEE Xplore]     | ✓     | ✓       | ✓     | ✓        | * <sup>(count only)</sup> |\n| [Springer Link]   | ✓     | ✓       | ✓     | ✓        | * <sup>(count only)</sup> |\n| CSV file        | ✓     | ✓       | ✓     | ✓        |                |\n| bibtex file     | ✓     | ✓       | ✓     | ✓        |                |\n| RIS file        | ✓     | ✓       | ✓     | ✓        |                |\n\n[Scopus]: http://scopus.com/\n[SemanticScholar]: https://www.semanticscholar.org/\n[CrossRef]: https://www.crossref.org/\n[DBLP]: https://dblp.org/\n[arXiv]: https://arxiv.org/\n[IEEE Xplore]: https://ieeexplore.ieee.org/\n[Springer Link]: https://link.springer.com/\n\n## Example\n\nAn example notebook is available in `notebooks/example.ipynb` and [here](https://nlesc.github.io/litstudy/example.html).\n\n[![Example notebook](https://raw.githubusercontent.com/NLeSC/litstudy/master/docs/images/notebook.png)](https://github.com/NLeSC/litstudy/blob/master/notebooks/example.ipynb)\n\n## Installation Guide\n\nLitStudy is available on PyPI!\nFull installation guide is available [here](https://nlesc.github.io/litstudy/installation.html).\n\n```bash\npip install litstudy\n```\n\nOr install the latest development version directly from GitHub:\n\n```bash\npip install git+https://github.com/NLeSC/litstudy\n```\n\n## Documentation\n\nDocumentation is available [here](https://nlesc.github.io/litstudy/).\n\n## Requirements\n\nThe package has been tested for Python 3.7. Required packages are available in `requirements.txt`.\n\n`litstudy` supports several data sources.\nSome of these sources (such as semantic Scholar, CrossRef, and arXiv) are openly available.\nHowever to access the Scopus API, you (or your institute) requires a Scopus subscription and you need to request an Elsevier Developer API key (see [Elsevier Developers](https://dev.elsevier.com/index.jsp)).\nFor more information, see the [guide](https://pybliometrics.readthedocs.io/en/stable/access.html) by `pybliometrics`.\n\n## License\n\nApache 2.0. See [LICENSE](https://github.com/NLeSC/litstudy/blob/master/LICENSE).\n\n## Change log\n\nSee [CHANGELOG.md](https://github.com/NLeSC/litstudy/blob/master/CHANGELOG.md).\n\n## Contributing\n\nSee [CONTRIBUTING.md](https://github.com/NLeSC/litstudy/blob/master/CONTRIBUTING.md).\n\n## Citation\n\nIf you use LitStudy in your work, please cite the following publication:\n\n> S. Heldens, A. Sclocco, H. Dreuning, B. van Werkhoven, P. Hijma, J. Maassen & R.V. van Nieuwpoort (2022), \"litstudy: A Python package for literature reviews\", SoftwareX 20\n\nAs BibTeX:\n\n```Latex\n@article{litstudy,\n    title = {litstudy: A Python package for literature reviews},\n    journal = {SoftwareX},\n    volume = {20},\n    pages = {101207},\n    year = {2022},\n    issn = {2352-7110},\n    doi = {https://doi.org/10.1016/j.softx.2022.101207},\n    url = {https://www.sciencedirect.com/science/article/pii/S235271102200125X},\n    author = {S. Heldens and A. Sclocco and H. Dreuning and B. {van Werkhoven} and P. Hijma and J. Maassen and R. V. {van Nieuwpoort}},\n}\n```\n\n## Related work\n\nDon't forget to check out these other amazing software packages!\n\n* [ScientoPy](https://www.scientopy.com/): Open-source Python based scientometric analysis tool.\n* [pybliometrics](https://github.com/pybliometrics-dev/pybliometrics): API-Wrapper to access Scopus.\n* [ASReview](https://asreview.nl/): Active learning for systematic reviews.\n* [metaknowledge](https://github.com/UWNETLAB/metaknowledge): Python library for doing bibliometric and network analysis in science.\n* [tethne](https://github.com/diging/tethne): Python module for bibliographic network analysis.\n* [VOSviewer](https://www.vosviewer.com/): Software tool for constructing and visualizing bibliometric networks.\n"
  },
  {
    "path": "docs/Makefile",
    "content": "# Minimal makefile for Sphinx documentation\n#\n\n# You can set these variables from the command line.\nSPHINXOPTS    =\nSPHINXBUILD   = sphinx-build\nSOURCEDIR     = .\nBUILDDIR      = _build\n\n# Put it first so that \"make\" without argument is like \"make help\".\nhelp:\n\t@$(SPHINXBUILD) -M help \"$(SOURCEDIR)\" \"$(BUILDDIR)\" $(SPHINXOPTS) $(O)\n\n.PHONY: help Makefile\n\n# Catch-all target: route all unknown targets to Sphinx using the new\n# \"make mode\" option.  $(O) is meant as a shortcut for $(SPHINXOPTS).\n%: Makefile\n\t@$(SPHINXBUILD) -M $@ \"$(SOURCEDIR)\" \"$(BUILDDIR)\" $(SPHINXOPTS) $(O)"
  },
  {
    "path": "docs/_static/citation.html",
    "content": "<html>\n<head>\n<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.16.1/vis.css\" type=\"text/css\" />\n<script type=\"text/javascript\" src=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.16.1/vis-network.min.js\"> </script>\n<center>\n<h1></h1>\n</center>\n\n<!-- <link rel=\"stylesheet\" href=\"../node_modules/vis/dist/vis.min.css\" type=\"text/css\" />\n<script type=\"text/javascript\" src=\"../node_modules/vis/dist/vis.js\"> </script>-->\n\n<style type=\"text/css\">\n\n        #mynetwork {\n            width: 100%;\n            height: 1000px;\n            background-color: #ffffff;\n            border: 1px solid lightgray;\n            position: relative;\n            float: left;\n        }\n\n        \n        #loadingBar {\n            position:absolute;\n            top:0px;\n            left:0px;\n            width: 100%;\n            height: 1000px;\n            background-color:rgba(200,200,200,0.8);\n            -webkit-transition: all 0.5s ease;\n            -moz-transition: all 0.5s ease;\n            -ms-transition: all 0.5s ease;\n            -o-transition: all 0.5s ease;\n            transition: all 0.5s ease;\n            opacity:1;\n        }\n\n        #bar {\n            position:absolute;\n            top:0px;\n            left:0px;\n            width:20px;\n            height:20px;\n            margin:auto auto auto auto;\n            border-radius:11px;\n            border:2px solid rgba(30,30,30,0.05);\n            background: rgb(0, 173, 246); /* Old browsers */\n            box-shadow: 2px 0px 4px rgba(0,0,0,0.4);\n        }\n\n        #border {\n            position:absolute;\n            top:10px;\n            left:10px;\n            width:500px;\n            height:23px;\n            margin:auto auto auto auto;\n            box-shadow: 0px 0px 4px rgba(0,0,0,0.2);\n            border-radius:10px;\n        }\n\n        #text {\n            position:absolute;\n            top:8px;\n            left:530px;\n            width:30px;\n            height:50px;\n            margin:auto auto auto auto;\n            font-size:22px;\n            color: #000000;\n        }\n\n        div.outerBorder {\n            position:relative;\n            top:400px;\n            width:600px;\n            height:44px;\n            margin:auto auto auto auto;\n            border:8px solid rgba(0,0,0,0.1);\n            background: rgb(252,252,252); /* Old browsers */\n            background: -moz-linear-gradient(top,  rgba(252,252,252,1) 0%, rgba(237,237,237,1) 100%); /* FF3.6+ */\n            background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(252,252,252,1)), color-stop(100%,rgba(237,237,237,1))); /* Chrome,Safari4+ */\n            background: -webkit-linear-gradient(top,  rgba(252,252,252,1) 0%,rgba(237,237,237,1) 100%); /* Chrome10+,Safari5.1+ */\n            background: -o-linear-gradient(top,  rgba(252,252,252,1) 0%,rgba(237,237,237,1) 100%); /* Opera 11.10+ */\n            background: -ms-linear-gradient(top,  rgba(252,252,252,1) 0%,rgba(237,237,237,1) 100%); /* IE10+ */\n            background: linear-gradient(to bottom,  rgba(252,252,252,1) 0%,rgba(237,237,237,1) 100%); /* W3C */\n            filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fcfcfc', endColorstr='#ededed',GradientType=0 ); /* IE6-9 */\n            border-radius:72px;\n            box-shadow: 0px 0px 10px rgba(0,0,0,0.2);\n        }\n        \n\n        \n\n        \n</style>\n\n</head>\n\n<body>\n<div id = \"mynetwork\"></div>\n\n<div id=\"loadingBar\">\n    <div class=\"outerBorder\">\n        <div id=\"text\">0%</div>\n        <div id=\"border\">\n            <div id=\"bar\"></div>\n        </div>\n    </div>\n</div>\n\n\n<script type=\"text/javascript\">\n\n    // initialize global variables.\n    var edges;\n    var nodes;\n    var network; \n    var container;\n    var options, data;\n\n    \n    // This method is responsible for drawing the graph, returns the drawn network\n    function drawGraph() {\n        var container = document.getElementById('mynetwork');\n        \n        \n\n        // parsing and collecting nodes and edges from the python\n        nodes = new vis.DataSet([{\"id\": 13, \"label\": \"Extending OpenSHMEM\\nfor GPU computing\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Extending OpenSHMEM for GPU computing\", \"x\": 24.76389076112976, \"y\": 122.37293814381397}, {\"id\": 18, \"label\": \"Physis: An\\nimplicitly parallel\\nprogramming model\\nfor stencil\\ncomputations on\\nlarge-scale gpu-\\naccelerated\\nsupercomputers\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 27.352941513061523, \"title\": \"Physis: An implicitly parallel programming model for stencil computations on large-scale gpu-accelerated supercomputers\", \"x\": -18.7288326671725, \"y\": 8.611340066023798}, {\"id\": 34, \"label\": \"Compiling and\\nOptimizing Java 8\\nPrograms for GPU\\nExecution\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Compiling and Optimizing Java 8 Programs for GPU Execution\", \"x\": -33.01993303871408, \"y\": 28.518820586360636}, {\"id\": 51, \"label\": \"Selective GPU caches\\nto eliminate CPU-GPU\\nHW cache coherence\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Selective GPU caches to eliminate CPU-GPU HW cache coherence\", \"x\": -24.697750295334995, \"y\": 34.938700881655784}, {\"id\": 53, \"label\": \"PACXX: Towards a\\nunified programming\\nmodel for\\nprogramming\\naccelerators using\\nC++14\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"PACXX: Towards a unified programming model for programming accelerators using C++14\", \"x\": -137.55669543623773, \"y\": 153.10688317503357}, {\"id\": 60, \"label\": \"Accelerating gene\\nregulatory networks\\ninference through\\nGPU/CUDA programming\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Accelerating gene regulatory networks inference through GPU/CUDA programming\", \"x\": 16.119976757829036, \"y\": -42.8422717169076}, {\"id\": 64, \"label\": \"Exploring the\\nsuitability of\\nremote GPGPU\\nvirtualization for\\nthe OpenACC\\nprogramming model\\nusing rCUDA\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Exploring the suitability of remote GPGPU virtualization for the OpenACC programming model using rCUDA\", \"x\": -37.10419622799762, \"y\": -50.07899169322814}, {\"id\": 67, \"label\": \"DCUDA: Hardware\\nSupported Overlap of\\nComputation and\\nCommunication\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"DCUDA: Hardware Supported Overlap of Computation and Communication\", \"x\": -33.87332786054143, \"y\": 11.864933159981236}, {\"id\": 68, \"label\": \"GPU computing\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 100.0, \"title\": \"GPU computing\", \"x\": 6.329250718754571, \"y\": -34.18733911463281}, {\"id\": 91, \"label\": \"Designing a unified\\nprogramming model\\nfor heterogeneous\\nmachines\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 24.55882453918457, \"title\": \"Designing a unified programming model for heterogeneous machines\", \"x\": -57.81566497580839, \"y\": -12.091708299014202}, {\"id\": 92, \"label\": \"A case study of\\nOpenCL on an Android\\nmobile GPU\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"A case study of OpenCL on an Android mobile GPU\", \"x\": 3.936617293001404, \"y\": -44.37072024756895}, {\"id\": 106, \"label\": \"An evaluation of\\nunified memory\\ntechnology on NVIDIA\\nGPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"An evaluation of unified memory technology on NVIDIA GPUs\", \"x\": 4.322878604771536, \"y\": 25.792487247701676}, {\"id\": 115, \"label\": \"Achieving\\nportability and\\nperformance through\\nOpenACC\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Achieving portability and performance through OpenACC\", \"x\": 14.655810467394069, \"y\": -73.16158321439497}, {\"id\": 121, \"label\": \"An Enhanced\\nProfiling Framework\\nfor the Analysis and\\nDevelopment of\\nParallel Primitives\\nfor GPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"An Enhanced Profiling Framework for the Analysis and Development of Parallel Primitives for GPUs\", \"x\": -6.790233183944989, \"y\": 47.559438616441106}, {\"id\": 125, \"label\": \"GPU accelerated\\nLanczos algorithm\\nwith applications\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"GPU accelerated Lanczos algorithm with applications\", \"x\": 67.43624839486117, \"y\": -15.856550886523927}, {\"id\": 128, \"label\": \"VOCL: An optimized\\nenvironment for\\ntransparent\\nvirtualization of\\ngraphics processing\\nunits\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"VOCL: An optimized environment for transparent virtualization of graphics processing units\", \"x\": -27.147883565553244, \"y\": -40.42330677872908}, {\"id\": 134, \"label\": \"Parallel algorithms\\nfor approximate\\nstring matching with\\nk mismatches on CUDA\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Parallel algorithms for approximate string matching with k mismatches on CUDA\", \"x\": 24.027643499441634, \"y\": -3.5517468756445068}, {\"id\": 141, \"label\": \"Record setting\\nsoftware\\nimplementation of\\ndes using CUDA\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 18.97058868408203, \"title\": \"Record setting software implementation of des using CUDA\", \"x\": 43.10243901267682, \"y\": -50.668593214139456}, {\"id\": 146, \"label\": \"An investigation of\\nUnified Memory\\nAccess performance\\nin CUDA\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 24.55882453918457, \"title\": \"An investigation of Unified Memory Access performance in CUDA\", \"x\": 2.2677354694675125, \"y\": 19.53145343210315}, {\"id\": 155, \"label\": \"Towards achieving\\nperformance\\nportability using\\ndirectives for\\naccelerators\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Towards achieving performance portability using directives for accelerators\", \"x\": 41.05949316371812, \"y\": 6.748039881219046}, {\"id\": 181, \"label\": \"Self-adaptive OmpSs\\ntasks in\\nheterogeneous\\nenvironments\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Self-adaptive OmpSs tasks in heterogeneous environments\", \"x\": -73.93121825216481, \"y\": -9.764180678019299}, {\"id\": 182, \"label\": \"Design and\\nperformance\\nevaluation of image\\nprocessing\\nalgorithms on GPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 21.764705657958984, \"title\": \"Design and performance evaluation of image processing algorithms on GPUs\", \"x\": -89.64779293768946, \"y\": -0.014149852620478853}, {\"id\": 189, \"label\": \"Parallel computing\\nexperiences with\\nCUDA\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 44.11764907836914, \"title\": \"Parallel computing experiences with CUDA\", \"x\": 58.71554548426513, \"y\": -27.265589152526406}, {\"id\": 200, \"label\": \"Beyond the socket:\\nNUMA-aware GPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Beyond the socket: NUMA-aware GPUs\", \"x\": -11.522889031691046, \"y\": 41.99887434023165}, {\"id\": 202, \"label\": \"Early evaluation of\\ndirective-based GPU\\nprogramming models\\nfor productive\\nexascale computing\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 32.94117736816406, \"title\": \"Early evaluation of directive-based GPU programming models for productive exascale computing\", \"x\": -35.81135870727286, \"y\": -12.013049124173278}, {\"id\": 204, \"label\": \"Task scheduling for\\ngpu heterogeneous\\ncluster\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Task scheduling for gpu heterogeneous cluster\", \"x\": -43.08916620014689, \"y\": -18.10347665453183}, {\"id\": 222, \"label\": \"Analyzing CUDA\\nworkloads using a\\ndetailed GPU\\nsimulator\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 46.911766052246094, \"title\": \"Analyzing CUDA workloads using a detailed GPU simulator\", \"x\": -8.643175637062633, \"y\": 31.465316314064353}, {\"id\": 237, \"label\": \"Hybrid map task\\nscheduling for GPU-\\nbased heterogeneous\\nclusters\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Hybrid map task scheduling for GPU-based heterogeneous clusters\", \"x\": -5.105039961657392, \"y\": -31.30110458915556}, {\"id\": 245, \"label\": \"Stargazer: Automated\\nregression-based GPU\\ndesign space\\nexploration\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Stargazer: Automated regression-based GPU design space exploration\", \"x\": -14.85701484922424, \"y\": 35.488748315892266}, {\"id\": 249, \"label\": \"Empowering visual\\ncategorization with\\nthe GPU\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 24.55882453918457, \"title\": \"Empowering visual categorization with the GPU\", \"x\": 4.239864280021133, \"y\": -52.67611387008494}, {\"id\": 259, \"label\": \"StreamMR: An\\noptimized MapReduce\\nframework for AMD\\nGPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"StreamMR: An optimized MapReduce framework for AMD GPUs\", \"x\": 89.30230942900809, \"y\": 160.83049239566935}, {\"id\": 262, \"label\": \"Exploiting Task-\\nParallelism on GPU\\nClusters via OmpSs\\nand rCUDA\\nVirtualization\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Exploiting Task-Parallelism on GPU Clusters via OmpSs and rCUDA Virtualization\", \"x\": -34.48297340210872, \"y\": -52.42060344606631}, {\"id\": 267, \"label\": \"Unlocking bandwidth\\nfor GPUs in CC-NUMA\\nsystems\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Unlocking bandwidth for GPUs in CC-NUMA systems\", \"x\": -2.341847324234936, \"y\": 22.700120533832603}, {\"id\": 276, \"label\": \"OpenCL - An\\neffective\\nprogramming model\\nfor data parallel\\ncomputations at the\\nCell Broadband\\nEngine\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"OpenCL - An effective programming model for data parallel computations at the Cell Broadband Engine\", \"x\": -52.84143316139907, \"y\": 6.8604154729692635}, {\"id\": 277, \"label\": \"GraphReduce:\\nProcessing large-\\nscale graphs on\\naccelerator-based\\nsystems\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"GraphReduce: Processing large-scale graphs on accelerator-based systems\", \"x\": -157.0098718067881, \"y\": 185.76248211060502}, {\"id\": 289, \"label\": \"Can GPGPU\\nprogramming be\\nliberated from the\\ndata-parallel\\nbottleneck?\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Can GPGPU programming be liberated from the data-parallel bottleneck?\", \"x\": -100.17011306674146, \"y\": 12.015917840606194}, {\"id\": 293, \"label\": \"Massively parallel\\nnetwork coding on\\nGPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Massively parallel network coding on GPUs\", \"x\": -2.2374148817409494, \"y\": -37.13949126822989}, {\"id\": 311, \"label\": \"OpenMPC: Extended\\nOpenMP programming\\nand tuning for GPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 44.11764907836914, \"title\": \"OpenMPC: Extended OpenMP programming and tuning for GPUs\", \"x\": -41.58900065888275, \"y\": -1.8093634026342515}, {\"id\": 342, \"label\": \"Throughput-effective\\non-chip networks for\\nmanycore\\naccelerators\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Throughput-effective on-chip networks for manycore accelerators\", \"x\": -13.725111872890286, \"y\": 47.544673067902195}, {\"id\": 343, \"label\": \"An MDE approach for\\nautomatic code\\ngeneration from\\nUML/MARTE to openCL\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"An MDE approach for automatic code generation from UML/MARTE to openCL\", \"x\": -90.34240394269759, \"y\": -64.0955909622676}, {\"id\": 344, \"label\": \"Fast motion\\nestimation on\\ngraphics hardware\\nfor h.264 video\\nencoding\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Fast motion estimation on graphics hardware for h.264 video encoding\", \"x\": 92.16741901422802, \"y\": -62.21984092501383}, {\"id\": 347, \"label\": \"CuMAPz: A tool to\\nanalyze memory\\naccess patterns in\\nCUDA\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"CuMAPz: A tool to analyze memory access patterns in CUDA\", \"x\": -106.22225371359201, \"y\": 15.71489347352919}, {\"id\": 351, \"label\": \"Optimizing sparse\\nmatrix-vector\\nmultiplication on\\nCUDA\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Optimizing sparse matrix-vector multiplication on CUDA\", \"x\": -114.08883280843102, \"y\": 105.02225395466465}, {\"id\": 358, \"label\": \"A comparative study\\nof SYCL, OpenCL, and\\nOpenMP\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"A comparative study of SYCL, OpenCL, and OpenMP\", \"x\": 34.5704220565808, \"y\": 2.1910642545011623}, {\"id\": 361, \"label\": \"Implementation of\\nXcalableMP device\\nacceleration\\nextention with\\nOpenCL\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Implementation of XcalableMP device acceleration extention with OpenCL\", \"x\": 25.727119129471127, \"y\": 134.2974186952201}, {\"id\": 363, \"label\": \"Coordinated static\\nand dynamic cache\\nbypassing for GPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Coordinated static and dynamic cache bypassing for GPUs\", \"x\": -9.702073792609484, \"y\": 37.92453734809817}, {\"id\": 376, \"label\": \"A comparison of\\nperformance\\ntunabilities between\\nOpenCL and OpenACC\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"A comparison of performance tunabilities between OpenCL and OpenACC\", \"x\": -3.7488175460497764, \"y\": 45.514812614569315}, {\"id\": 378, \"label\": \"A comprehensive\\nperformance\\ncomparison of CUDA\\nand OpenCL\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 32.94117736816406, \"title\": \"A comprehensive performance comparison of CUDA and OpenCL\", \"x\": 21.30053879004295, \"y\": -9.838769904988158}, {\"id\": 385, \"label\": \"GasCL: A vertex-\\ncentric graph model\\nfor GPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"GasCL: A vertex-centric graph model for GPUs\", \"x\": -152.68282868026617, \"y\": 183.7421165431827}, {\"id\": 395, \"label\": \"Liszt: A domain\\nspecific language\\nfor building\\nportable mesh-based\\nPDE solvers\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Liszt: A domain specific language for building portable mesh-based PDE solvers\", \"x\": -78.97863881376998, \"y\": -54.85530529666192}, {\"id\": 402, \"label\": \"Scalable programming\\nmodels for massively\\nmulticore processors\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Scalable programming models for massively multicore processors\", \"x\": -6.076889811191757, \"y\": -10.602190939552877}, {\"id\": 419, \"label\": \"A comparative study\\nof GPU programming\\nmodels and\\narchitectures using\\nneural networks\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 18.97058868408203, \"title\": \"A comparative study of GPU programming models and architectures using neural networks\", \"x\": 68.02800802073645, \"y\": -23.68261777817171}, {\"id\": 423, \"label\": \"Porting and scaling\\nOpenACC applications\\non massively-\\nparallel, GPU-\\naccelerated\\nsupercomputers\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Porting and scaling OpenACC applications on massively-parallel, GPU-accelerated supercomputers\", \"x\": 22.428007077264574, \"y\": 132.8488076534428}, {\"id\": 424, \"label\": \"Providing source\\ncode level\\nportability between\\nCPU and GPU with\\nMapCG\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Providing source code level portability between CPU and GPU with MapCG\", \"x\": 94.81746377478484, \"y\": 165.83516704649634}, {\"id\": 426, \"label\": \"Accelerating\\nincompressible flow\\ncomputations with a\\nPthreads-CUDA\\nimplementation on\\nsmall-footprint\\nmulti-GPU platforms\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 18.97058868408203, \"title\": \"Accelerating incompressible flow computations with a Pthreads-CUDA implementation on small-footprint multi-GPU platforms\", \"x\": -8.560106741593499, \"y\": -63.2900076996156}, {\"id\": 429, \"label\": \"Optimizing linpack\\nbenchmark on GPU-\\naccelerated\\npetascale\\nsupercomputer\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Optimizing linpack benchmark on GPU-accelerated petascale supercomputer\", \"x\": 13.680509220475168, \"y\": -28.71944765940697}, {\"id\": 433, \"label\": \"An efficient\\nparallel\\ncollaborative\\nfiltering algorithm\\non multi-GPU\\nplatform\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"An efficient parallel collaborative filtering algorithm on multi-GPU platform\", \"x\": -28.011285265575538, \"y\": 9.01718653156487}, {\"id\": 440, \"label\": \"CUDA compatible GPU\\ncards as efficient\\nhardware\\naccelerators for\\nSmith-Waterman\\nsequence alignment\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 30.147058486938477, \"title\": \"CUDA compatible GPU cards as efficient hardware accelerators for Smith-Waterman sequence alignment\", \"x\": 139.98851437237437, \"y\": -17.0148749541904}, {\"id\": 442, \"label\": \"Parallel programing\\ntemplates for remote\\nsensing image\\nprocessing on GPU\\narchitectures:\\ndesign and\\nimplementation\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Parallel programing templates for remote sensing image processing on GPU architectures: design and implementation\", \"x\": 4.772212668768481, \"y\": -129.57867950398318}, {\"id\": 445, \"label\": \"Correlation\\nacceleration in GNSS\\nsoftware receivers\\nusing a CUDA-enabled\\nGPU\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Correlation acceleration in GNSS software receivers using a CUDA-enabled GPU\", \"x\": 9.761693107864195, \"y\": -130.57271298078822}, {\"id\": 447, \"label\": \"A compound\\nOpenMP/MPI program\\ndevelopment toolkit\\nfor hybrid CPU/GPU\\nclusters\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"A compound OpenMP/MPI program development toolkit for hybrid CPU/GPU clusters\", \"x\": 55.538507460794385, \"y\": 108.8698139947644}, {\"id\": 448, \"label\": \"Accelerating\\nMapReduce framework\\non multi-GPU systems\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Accelerating MapReduce framework on multi-GPU systems\", \"x\": 71.3413247818473, \"y\": 149.86015109232585}, {\"id\": 458, \"label\": \"MVAPICH2-GPU:\\nOptimized GPU to GPU\\ncommunication for\\nInfiniBand clusters\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 21.764705657958984, \"title\": \"MVAPICH2-GPU: Optimized GPU to GPU communication for InfiniBand clusters\", \"x\": 26.974759022032, \"y\": 108.43819247539349}, {\"id\": 459, \"label\": \"TH-1: China\\u0027s first\\npetaflop\\nsupercomputer\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"TH-1: China\\u0027s first petaflop supercomputer\", \"x\": -48.785587401637116, \"y\": -15.521845441139185}, {\"id\": 463, \"label\": \"SkelCL: A high-level\\nextension of OpenCL\\nfor multi-GPU\\nsystems\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"SkelCL: A high-level extension of OpenCL for multi-GPU systems\", \"x\": 50.329859835762434, \"y\": 88.19368847630268}, {\"id\": 466, \"label\": \"OpenMC: Towards\\nsimplifying\\nprogramming for\\ntianhe\\nsupercomputers\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"OpenMC: Towards simplifying programming for tianhe supercomputers\", \"x\": -47.953491604129894, \"y\": -48.79376392365089}, {\"id\": 470, \"label\": \"Strategies for\\nmaximizing\\nutilization on\\nmulti-CPU and multi-\\nGPU heterogeneous\\narchitectures\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 24.55882453918457, \"title\": \"Strategies for maximizing utilization on multi-CPU and multi-GPU heterogeneous architectures\", \"x\": 41.7858001289886, \"y\": 122.18182342678097}, {\"id\": 474, \"label\": \"Cardiac simulation\\non multi-GPU\\nplatform\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 18.97058868408203, \"title\": \"Cardiac simulation on multi-GPU platform\", \"x\": -0.9545893829756837, \"y\": -65.22843358686634}, {\"id\": 481, \"label\": \"MPtostream: An\\nOpenMP compiler for\\nCPU-GPU\\nheterogeneous\\nparallel systems\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"MPtostream: An OpenMP compiler for CPU-GPU heterogeneous parallel systems\", \"x\": -42.20258800179363, \"y\": -24.897835869134394}, {\"id\": 482, \"label\": \"Toward a software\\ntransactional memory\\nfor heterogeneous\\nCPU\\u2013GPU processors\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Toward a software transactional memory for heterogeneous CPU\\u2013GPU processors\", \"x\": 5.586652278027756, \"y\": 188.21561588764524}, {\"id\": 491, \"label\": \"CUDASW++ 3.0:\\naccelerating Smith-\\nWaterman protein\\ndatabase search by\\ncoupling CPU and GPU\\nSIMD instructions.\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 27.352941513061523, \"title\": \"CUDASW++ 3.0: accelerating Smith-Waterman protein database search by coupling CPU and GPU SIMD instructions.\", \"x\": 152.0715442875626, \"y\": -13.285821650501893}, {\"id\": 492, \"label\": \"DOPA: GPU-based\\nprotein alignment\\nusing database and\\nmemory access\\noptimizations\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"DOPA: GPU-based protein alignment using database and memory access optimizations\", \"x\": 159.42147533046034, \"y\": -4.816874283059061}, {\"id\": 496, \"label\": \"Addressing GPU on-\\nchip shared memory\\nbank conflicts using\\nelastic pipeline\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Addressing GPU on-chip shared memory bank conflicts using elastic pipeline\", \"x\": 38.034083602151355, \"y\": -9.608048099250405}, {\"id\": 499, \"label\": \"Scaling up\\nMapReduce-based Big\\nData Processing on\\nMulti-GPU systems\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 18.97058868408203, \"title\": \"Scaling up MapReduce-based Big Data Processing on Multi-GPU systems\", \"x\": 51.680062213930086, \"y\": 134.53362260164351}, {\"id\": 508, \"label\": \"Stencil computations\\non heterogeneous\\nplatforms for the\\nJacobi method: GPUs\\nversus Cell BE\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 27.352941513061523, \"title\": \"Stencil computations on heterogeneous platforms for the Jacobi method: GPUs versus Cell BE\", \"x\": -15.970573983939353, \"y\": -72.53740030776038}, {\"id\": 510, \"label\": \"Introducing and\\nimplementing the\\nallpairs skeleton\\nfor programming\\nmulti-GPU Systems\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Introducing and implementing the allpairs skeleton for programming multi-GPU Systems\", \"x\": -122.73135406335528, \"y\": 127.57000024244564}, {\"id\": 512, \"label\": \"Optimizing tensor\\ncontraction\\nexpressions for\\nhybrid CPU-GPU\\nexecution\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Optimizing tensor contraction expressions for hybrid CPU-GPU execution\", \"x\": -32.071114597693686, \"y\": 3.1914937580039604}, {\"id\": 539, \"label\": \"Offloading data\\nencryption to GPU in\\ndatabase systems\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Offloading data encryption to GPU in database systems\", \"x\": 51.68768333093016, \"y\": -51.16714152165434}, {\"id\": 546, \"label\": \"High-Level\\nProgramming for\\nMany-Cores Using\\nC++14 and the STL\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"High-Level Programming for Many-Cores Using C++14 and the STL\", \"x\": -94.52396666171657, \"y\": 112.74251670489994}, {\"id\": 547, \"label\": \"RT-CUDA: A Software\\nTool for CUDA Code\\nRestructuring\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"RT-CUDA: A Software Tool for CUDA Code Restructuring\", \"x\": -116.13964046101879, \"y\": 101.68110655465996}, {\"id\": 548, \"label\": \"Parallel data mining\\ntechniques on\\nGraphics Processing\\nUnit with Compute\\nUnified Device\\nArchitecture (CUDA)\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 32.94117736816406, \"title\": \"Parallel data mining techniques on Graphics Processing Unit with Compute Unified Device Architecture (CUDA)\", \"x\": 57.441349887496955, \"y\": -39.19685861767704}, {\"id\": 561, \"label\": \"A GPU implementation\\nof a structural-\\nsimilarity-based\\naerial-image\\nclassification\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 21.764705657958984, \"title\": \"A GPU implementation of a structural-similarity-based aerial-image classification\", \"x\": 38.932519705401624, \"y\": -44.156907568311944}, {\"id\": 564, \"label\": \"GPU-accelerated\\nlevel-set\\nsegmentation\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"GPU-accelerated level-set segmentation\", \"x\": 61.82166515644974, \"y\": -71.40638848623834}, {\"id\": 570, \"label\": \"Gene regulatory\\nnetworks inference\\nusing a multi-GPU\\nexhaustive search\\nalgorithm\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Gene regulatory networks inference using a multi-GPU exhaustive search algorithm\", \"x\": 73.37425240799887, \"y\": 114.69458746538966}, {\"id\": 604, \"label\": \"Extending OpenMP to\\nsurvive the\\nheterogeneous multi-\\ncore era\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Extending OpenMP to survive the heterogeneous multi-core era\", \"x\": -66.65381036265713, \"y\": -8.016984732642927}, {\"id\": 605, \"label\": \"Speeding up the\\nevaluation phase of\\nGP classification\\nalgorithms on GPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 18.97058868408203, \"title\": \"Speeding up the evaluation phase of GP classification algorithms on GPUs\", \"x\": 66.34991750796436, \"y\": -34.93620054791177}, {\"id\": 608, \"label\": \"Medical image\\nsegmentation with\\ndeformable models on\\ngraphics processing\\nunits\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 18.97058868408203, \"title\": \"Medical image segmentation with deformable models on graphics processing units\", \"x\": 54.891101029922936, \"y\": -57.74073845936723}, {\"id\": 609, \"label\": \"Correlating radio\\nastronomy signals\\nwith many-core\\nhardware\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Correlating radio astronomy signals with many-core hardware\", \"x\": 44.218821632857804, \"y\": 12.69723759751845}, {\"id\": 620, \"label\": \"High performance\\ndata clustering: A\\ncomparative analysis\\nof performance for\\nGPU, RASC, MPI, and\\nOpenMP\\nimplementations\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"High performance data clustering: A comparative analysis of performance for GPU, RASC, MPI, and OpenMP implementations\", \"x\": 67.3309120475585, \"y\": 112.88918721287439}, {\"id\": 633, \"label\": \"Adaptive fast\\nmultipole methods on\\nthe GPU\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Adaptive fast multipole methods on the GPU\", \"x\": -29.8689126742957, \"y\": -84.98851981439584}, {\"id\": 636, \"label\": \"Parallelization of\\nlarge vector\\nsimilarity\\ncomputations in a\\nhybrid CPU+GPU\\nenvironment\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Parallelization of large vector similarity computations in a hybrid CPU+GPU environment\", \"x\": 10.992900641315503, \"y\": 28.591738454512818}, {\"id\": 644, \"label\": \"GASAL2: A GPU\\naccelerated sequence\\nalignment library\\nfor high-throughput\\nNGS data\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"GASAL2: A GPU accelerated sequence alignment library for high-throughput NGS data\", \"x\": 160.28896666637868, \"y\": -14.551334859355702}, {\"id\": 655, \"label\": \"GPU-accelerated\\npreconditioned\\niterative linear\\nsolvers\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"GPU-accelerated preconditioned iterative linear solvers\", \"x\": -31.919275631758673, \"y\": -88.45959322419276}, {\"id\": 656, \"label\": \"GPU-based collision\\nanalysis between a\\nmulti-body system\\nand numerous\\nparticles\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"GPU-based collision analysis between a multi-body system and numerous particles\", \"x\": 120.52730488714306, \"y\": -24.818599022821363}, {\"id\": 660, \"label\": \"Hybrid multi-GPU\\ncomputing:\\naccelerated kernels\\nfor segmentation and\\nobject detection\\nwith medical image\\nprocessing\\napplications\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Hybrid multi-GPU computing: accelerated kernels for segmentation and object detection with medical image processing applications\", \"x\": -108.93643894444878, \"y\": -1.767799391573767}, {\"id\": 666, \"label\": \"A parallel pattern\\nfor iterative\\nstencil + reduce\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"A parallel pattern for iterative stencil + reduce\", \"x\": -109.21997335920058, \"y\": 102.31076950788147}, {\"id\": 670, \"label\": \"Parallelization of\\nFull Search Motion\\nEstimation algorithm\\nfor parallel and\\ndistributed\\nplatforms\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Parallelization of Full Search Motion Estimation algorithm for parallel and distributed platforms\", \"x\": 112.91299287397852, \"y\": -86.65823167839001}, {\"id\": 685, \"label\": \"Design Flow for GPU\\nand Multicore\\nExecution of Dynamic\\nDataflow Programs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Design Flow for GPU and Multicore Execution of Dynamic Dataflow Programs\", \"x\": 12.183590994410205, \"y\": -53.324658941928575}, {\"id\": 705, \"label\": \"Effective naive\\nBayes nearest\\nneighbor based image\\nclassification on\\nGPU\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Effective naive Bayes nearest neighbor based image classification on GPU\", \"x\": 63.85284676586857, \"y\": 145.09473959759873}, {\"id\": 711, \"label\": \"Enhancing GPU\\nparallelism in\\nnature-inspired\\nalgorithms\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Enhancing GPU parallelism in nature-inspired algorithms\", \"x\": 70.73540033371225, \"y\": -30.664432655226168}, {\"id\": 739, \"label\": \"On GPU\\u2013CUDA as\\npreprocessing of\\nfuzzy-rough data\\nreduction by means\\nof singular value\\ndecomposition\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"On GPU\\u2013CUDA as preprocessing of fuzzy-rough data reduction by means of singular value decomposition\", \"x\": 4.323703892809986, \"y\": -4.135094352734839}, {\"id\": 741, \"label\": \"MilkyWay-2\\nsupercomputer:\\nSystem and\\napplication\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 18.97058868408203, \"title\": \"MilkyWay-2 supercomputer: System and application\", \"x\": -47.47611118530658, \"y\": -58.84040628735832}, {\"id\": 756, \"label\": \"High performance\\nevaluation of\\nevolutionary-mined\\nassociation rules on\\nGPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"High performance evaluation of evolutionary-mined association rules on GPUs\", \"x\": 69.81864380109309, \"y\": -39.45019128602855}, {\"id\": 762, \"label\": \"Energy cost\\nevaluation of\\nparallel algorithms\\nfor multiprocessor\\nsystems\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Energy cost evaluation of parallel algorithms for multiprocessor systems\", \"x\": -13.310295668762771, \"y\": 10.753777440927363}, {\"id\": 771, \"label\": \"Simultaneous CPU\\u2013GPU\\nExecution of Data\\nParallel Algorithmic\\nSkeletons\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Simultaneous CPU\\u2013GPU Execution of Data Parallel Algorithmic Skeletons\", \"x\": -97.70404645512019, \"y\": 105.90164122992417}, {\"id\": 786, \"label\": \"CUDASW++2.0:\\nEnhanced Smith-\\nWaterman protein\\ndatabase search on\\nCUDA-enabled GPUs\\nbased on SIMT and\\nvirtualized SIMD\\nabstractions\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 21.764705657958984, \"title\": \"CUDASW++2.0: Enhanced Smith-Waterman protein database search on CUDA-enabled GPUs based on SIMT and virtualized SIMD abstractions\", \"x\": 134.4972719871022, \"y\": -17.228311976859647}, {\"id\": 788, \"label\": \"Solving finite\\ndifference linear\\nsystems on GPUs:\\nCUDA based parallel\\nexplicit\\npreconditioned\\nbiconjugate\\nconjugate gradient\\ntype methods\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 18.97058868408203, \"title\": \"Solving finite difference linear systems on GPUs: CUDA based parallel explicit preconditioned biconjugate conjugate gradient type methods\", \"x\": -4.402681918762127, \"y\": -61.38878285147453}, {\"id\": 789, \"label\": \"Data layout\\ntransformation\\nexploiting memory-\\nlevel parallelism in\\nstructured grid\\nmany-core\\napplications\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Data layout transformation exploiting memory-level parallelism in structured grid many-core applications\", \"x\": -114.00574457651189, \"y\": 22.561438369418816}, {\"id\": 792, \"label\": \"A framework for\\naccelerating local\\nfeature extraction\\nwith OpenCL on\\nmulti-core CPUs and\\nco-processors\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"A framework for accelerating local feature extraction with OpenCL on multi-core CPUs and co-processors\", \"x\": 121.24990689915224, \"y\": -93.99324846212228}, {\"id\": 825, \"label\": \"PPModel: A modeling\\ntool for source code\\nmaintenance and\\noptimization of\\nparallel programs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"PPModel: A modeling tool for source code maintenance and optimization of parallel programs\", \"x\": -91.67219424116392, \"y\": -60.795848769406845}, {\"id\": 852, \"label\": \"A view of\\nprogramming scalable\\ndata analysis: from\\nclouds to exascale\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"A view of programming scalable data analysis: from clouds to exascale\", \"x\": 26.415483684681806, \"y\": -70.6538457878514}, {\"id\": 854, \"label\": \"SkePU 2: Flexible\\nand Type-Safe\\nSkeleton Programming\\nfor Heterogeneous\\nParallel Systems\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 27.352941513061523, \"title\": \"SkePU 2: Flexible and Type-Safe Skeleton Programming for Heterogeneous Parallel Systems\", \"x\": -102.73055459157142, \"y\": 92.12197437434445}, {\"id\": 855, \"label\": \"Generating custom\\ncode for efficient\\nquery execution on\\nheterogeneous\\nprocessors\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Generating custom code for efficient query execution on heterogeneous processors\", \"x\": -41.076312009304395, \"y\": 35.280506100159016}, {\"id\": 862, \"label\": \"Dawning nebulae: A\\nPetaFLOPS\\nsupercomputer with a\\nheterogeneous\\nstructure\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Dawning nebulae: A PetaFLOPS supercomputer with a heterogeneous structure\", \"x\": -44.39410934008284, \"y\": -35.44785477992093}, {\"id\": 875, \"label\": \"Fast and accurate\\nprotein substructure\\nsearching with\\nsimulated annealing\\nand GPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 18.97058868408203, \"title\": \"Fast and accurate protein substructure searching with simulated annealing and GPUs\", \"x\": 149.08617606343037, \"y\": -18.794137195145904}, {\"id\": 878, \"label\": \"Parallel mutual\\ninformation\\nestimation for\\ninferring gene\\nregulatory networks\\non GPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Parallel mutual information estimation for inferring gene regulatory networks on GPUs\", \"x\": 18.37011471492788, \"y\": -39.818400820136304}, {\"id\": 883, \"label\": \"Performance\\nevaluation of\\nUnified Memory with\\nprefetching and\\noversubscription for\\nselected parallel\\nCUDA applications on\\nNVIDIA Pascal and\\nVolta GPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Performance evaluation of Unified Memory with prefetching and oversubscription for selected parallel CUDA applications on NVIDIA Pascal and Volta GPUs\", \"x\": 7.689577836099897, \"y\": -111.27399025400528}, {\"id\": 895, \"label\": \"Accelerating large-\\nscale protein\\nstructure alignments\\nwith graphics\\nprocessing units\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Accelerating large-scale protein structure alignments with graphics processing units\", \"x\": 155.43935533196031, \"y\": -20.96795900713483}, {\"id\": 913, \"label\": \"Performance\\nevaluation of\\nunified memory and\\ndynamic parallelism\\nfor selected\\nparallel CUDA\\napplications\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Performance evaluation of unified memory and dynamic parallelism for selected parallel CUDA applications\", \"x\": 4.3004964807575625, \"y\": 29.527732043204335}, {\"id\": 920, \"label\": \"A preliminary\\nevaluation of\\nOpenACC\\nimplementations\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"A preliminary evaluation of OpenACC implementations\", \"x\": 47.034685295115565, \"y\": -12.802539590182695}, {\"id\": 921, \"label\": \"Optimizing the\\nMatrix\\nMultiplication Using\\nStrassen and\\nWinograd Algorithms\\nwith Limited\\nRecursions on Many-\\nCore\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Optimizing the Matrix Multiplication Using Strassen and Winograd Algorithms with Limited Recursions on Many-Core\", \"x\": -111.46927725753929, \"y\": 98.77787186707079}, {\"id\": 926, \"label\": \"Protein alignment\\nalgorithms with an\\nefficient\\nbacktracking routine\\non multiple GPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 21.764705657958984, \"title\": \"Protein alignment algorithms with an efficient backtracking routine on multiple GPUs\", \"x\": 147.36538001505247, \"y\": -9.666702338626086}, {\"id\": 935, \"label\": \"A scalable and fast\\nOPTICS for\\nclustering\\ntrajectory big data\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"A scalable and fast OPTICS for clustering trajectory big data\", \"x\": 18.59955379592442, \"y\": -52.61744421494949}, {\"id\": 939, \"label\": \"Virtualizing high-\\nend GPGPUs on ARM\\nclusters for the\\nnext generation of\\nhigh performance\\ncloud computing\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Virtualizing high-end GPGPUs on ARM clusters for the next generation of high performance cloud computing\", \"x\": 115.07099598172069, \"y\": -21.6762741226937}, {\"id\": 946, \"label\": \"A parallel algorithm\\nfor the Riesz\\nfractional reaction-\\ndiffusion equation\\nwith explicit finite\\ndifference method\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 18.97058868408203, \"title\": \"A parallel algorithm for the Riesz fractional reaction-diffusion equation with explicit finite difference method\", \"x\": -39.08759703174296, \"y\": -80.6772540534114}, {\"id\": 947, \"label\": \"Formalised\\nComposition and\\nInteraction for\\nHeterogeneous\\nStructured\\nParallelism\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Formalised Composition and Interaction for Heterogeneous Structured Parallelism\", \"x\": -98.56343268368649, \"y\": 98.1720562616151}, {\"id\": 951, \"label\": \"Toward fault-\\ntolerant hybrid\\nprogramming over\\nlarge-scale\\nheterogeneous\\nclusters via checkpo\\ninting/restart\\noptimization\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Toward fault-tolerant hybrid programming over large-scale heterogeneous clusters via checkpointing/restart optimization\", \"x\": 1.6600122227860346, \"y\": 188.37721167803048}, {\"id\": 957, \"label\": \"Efficient scheduling\\nof streams on GPGPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Efficient scheduling of streams on GPGPUs\", \"x\": 8.22802763999975, \"y\": -126.12783868888795}, {\"id\": 963, \"label\": \"Accelerating MRI\\nreconstruction via\\nthree-dimensional\\ndual-dictionary\\nlearning using CUDA\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Accelerating MRI reconstruction via three-dimensional dual-dictionary learning using CUDA\", \"x\": -107.73396898045155, \"y\": 3.1544760512260845}, {\"id\": 966, \"label\": \"CUDASW++: Optimizing\\nSmith-Waterman\\nsequence database\\nsearches for CUDA-\\nenabled graphics\\nprocessing units\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 21.764705657958984, \"title\": \"CUDASW++: Optimizing Smith-Waterman sequence database searches for CUDA-enabled graphics processing units\", \"x\": 143.8882629608313, \"y\": -16.34871914778348}, {\"id\": 972, \"label\": \"A Hybrid Task Graph\\nScheduler for High\\nPerformance Image\\nProcessing Workflows\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"A Hybrid Task Graph Scheduler for High Performance Image Processing Workflows\", \"x\": 12.83386949053449, \"y\": -61.59554885680468}, {\"id\": 990, \"label\": \"Optimizing Monte\\nCarlo radiosity on\\ngraphics hardware\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Optimizing Monte Carlo radiosity on graphics hardware\", \"x\": -1.4008314048889217, \"y\": -41.96140127049525}, {\"id\": 991, \"label\": \"Parallel refinement\\nof slanted 3D\\nreconstruction using\\ndense stereo induced\\nfrom symmetry\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Parallel refinement of slanted 3D reconstruction using dense stereo induced from symmetry\", \"x\": -104.4184196384963, \"y\": 0.36334046894470023}, {\"id\": 992, \"label\": \"Fast network\\ncentrality analysis\\nusing GPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Fast network centrality analysis using GPUs\", \"x\": -157.21441204511777, \"y\": 180.9843178891049}, {\"id\": 998, \"label\": \"A survey on\\nplatforms for big\\ndata analytics\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"A survey on platforms for big data analytics\", \"x\": 22.39363609422927, \"y\": -60.16096070733966}, {\"id\": 1010, \"label\": \"A statistical\\nperformance analyzer\\nframework for OpenCL\\nkernels on Nvidia\\nGPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"A statistical performance analyzer framework for OpenCL kernels on Nvidia GPUs\", \"x\": -15.490595926809672, \"y\": 39.5777748604004}, {\"id\": 1016, \"label\": \"Simulation of one-\\nlayer shallow water\\nsystems on multicore\\nand CUDA\\narchitectures\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Simulation of one-layer shallow water systems on multicore and CUDA architectures\", \"x\": 14.797675547772858, \"y\": -19.66472382629069}, {\"id\": 1029, \"label\": \"The TianHe-1A\\nsupercomputer: Its\\nhardware and\\nsoftware\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 41.32352828979492, \"title\": \"The TianHe-1A supercomputer: Its hardware and software\", \"x\": -34.819639072740465, \"y\": -30.192367096646926}, {\"id\": 1041, \"label\": \"Energy efficiency of\\nload balancing for\\ndata-parallel\\napplications in\\nheterogeneous\\nsystems\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Energy efficiency of load balancing for data-parallel applications in heterogeneous systems\", \"x\": 3.163226368944035, \"y\": 174.59036584695892}, {\"id\": 1087, \"label\": \"Hybrid\\nstatic\\u2013dynamic\\nselection of\\nimplementation\\nalternatives in\\nheterogeneous\\nenvironments\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Hybrid static\\u2013dynamic selection of implementation alternatives in heterogeneous environments\", \"x\": 6.264895738573001, \"y\": 194.05804935921628}, {\"id\": 1092, \"label\": \"The Fraunhofer\\nvirtual machine: A\\ncommunication\\nlibrary and runtime\\nsystem based on the\\nRDMA model\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"The Fraunhofer virtual machine: A communication library and runtime system based on the RDMA model\", \"x\": 24.504875905181667, \"y\": 117.60150858306433}, {\"id\": 1113, \"label\": \"Optimizing an APSP\\nimplementation for\\nNVIDIA GPUs using\\nkernel\\ncharacterization\\ncriteria\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Optimizing an APSP implementation for NVIDIA GPUs using kernel characterization criteria\", \"x\": -150.99232124041473, \"y\": 175.39653681516148}, {\"id\": 1147, \"label\": \"Prediction models\\nfor performance,\\npower, and energy\\nefficiency of\\nsoftware executed on\\nheterogeneous\\nhardware\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Prediction models for performance, power, and energy efficiency of software executed on heterogeneous hardware\", \"x\": 2.0923515159185126, \"y\": 193.71791590168144}, {\"id\": 1148, \"label\": \"The 2D wavelet\\ntransform on\\nemerging\\narchitectures: GPUs\\nand multicores\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"The 2D wavelet transform on emerging architectures: GPUs and multicores\", \"x\": 17.674311466524934, \"y\": -32.42904711149508}, {\"id\": 1150, \"label\": \"High-performance\\noptimizations on\\ntiled many-core\\nembedded systems: A\\nmatrix\\nmultiplication case\\nstudy\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"High-performance optimizations on tiled many-core embedded systems: A matrix multiplication case study\", \"x\": 50.18366022207218, \"y\": 106.19189835106421}, {\"id\": 1160, \"label\": \"Applications of the\\nMapReduce\\nprogramming\\nframework to\\nclinical big data\\nanalysis: Current\\nlandscape and future\\ntrends\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Applications of the MapReduce programming framework to clinical big data analysis: Current landscape and future trends\", \"x\": 40.58791008761934, \"y\": 127.73466258171474}, {\"id\": 1189, \"label\": \"Message-passing\\nprogramming for\\nembedded multicore\\nsignal-processing\\nplatforms\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Message-passing programming for embedded multicore signal-processing platforms\", \"x\": -74.35588544553528, \"y\": -14.16311871607837}, {\"id\": 1207, \"label\": \"Automatic code\\ngeneration and\\ntuning for stencil\\nkernels on modern\\nshared memory\\narchitectures\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Automatic code generation and tuning for stencil kernels on modern shared memory architectures\", \"x\": -23.679792379725473, \"y\": -16.614420820944737}, {\"id\": 1220, \"label\": \"Simultaneous\\nmultiprocessing in a\\nsoftware-defined\\nheterogeneous FPGA\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 21.764705657958984, \"title\": \"Simultaneous multiprocessing in a software-defined heterogeneous FPGA\", \"x\": 10.871510177586414, \"y\": 177.40391397409473}, {\"id\": 1262, \"label\": \"An efficient\\nparallel solution\\nfor Caputo\\nfractional reaction-\\ndiffusion equation\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"An efficient parallel solution for Caputo fractional reaction-diffusion equation\", \"x\": -49.26363444944581, \"y\": -76.66234249030828}, {\"id\": 1302, \"label\": \"HAT: History-based\\nauto-tuning\\nMapReduce in\\nheterogeneous\\nenvironments\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"HAT: History-based auto-tuning MapReduce in heterogeneous environments\", \"x\": 96.6905203562153, \"y\": 161.3642568387199}, {\"id\": 1309, \"label\": \"Efficient\\ncomputation of motif\\ndiscovery on Intel\\nMany Integrated Core\\n(MIC) Architecture\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Efficient computation of motif discovery on Intel Many Integrated Core (MIC) Architecture\", \"x\": -57.65868746214322, \"y\": -67.3003661721655}, {\"id\": 1311, \"label\": \"pocl: A Performance-\\nPortable OpenCL\\nImplementation\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"pocl: A Performance-Portable OpenCL Implementation\", \"x\": 118.60740866980356, \"y\": -96.35879241515582}]);\n        edges = new vis.DataSet([{\"from\": 13, \"title\": \"2\", \"to\": 458, \"width\": 2}, {\"from\": 13, \"title\": \"1\", \"to\": 1092, \"width\": 1}, {\"from\": 13, \"title\": \"1\", \"to\": 361, \"width\": 1}, {\"from\": 13, \"title\": \"1\", \"to\": 423, \"width\": 1}, {\"from\": 18, \"title\": \"1\", \"to\": 458, \"width\": 1}, {\"from\": 18, \"title\": \"2\", \"to\": 311, \"width\": 2}, {\"from\": 18, \"title\": \"1\", \"to\": 202, \"width\": 1}, {\"from\": 18, \"title\": \"1\", \"to\": 402, \"width\": 1}, {\"from\": 18, \"title\": \"1\", \"to\": 68, \"width\": 1}, {\"from\": 18, \"title\": \"1\", \"to\": 433, \"width\": 1}, {\"from\": 18, \"title\": \"1\", \"to\": 512, \"width\": 1}, {\"from\": 18, \"title\": \"1\", \"to\": 762, \"width\": 1}, {\"from\": 34, \"title\": \"1\", \"to\": 311, \"width\": 1}, {\"from\": 34, \"title\": \"1\", \"to\": 855, \"width\": 1}, {\"from\": 34, \"title\": \"1\", \"to\": 51, \"width\": 1}, {\"from\": 34, \"title\": \"1\", \"to\": 222, \"width\": 1}, {\"from\": 51, \"title\": \"1\", \"to\": 222, \"width\": 1}, {\"from\": 53, \"title\": \"1\", \"to\": 1113, \"width\": 1}, {\"from\": 53, \"title\": \"1\", \"to\": 510, \"width\": 1}, {\"from\": 60, \"title\": \"1\", \"to\": 68, \"width\": 1}, {\"from\": 60, \"title\": \"1\", \"to\": 878, \"width\": 1}, {\"from\": 64, \"title\": \"1\", \"to\": 128, \"width\": 1}, {\"from\": 64, \"title\": \"1\", \"to\": 262, \"width\": 1}, {\"from\": 67, \"title\": \"1\", \"to\": 222, \"width\": 1}, {\"from\": 67, \"title\": \"2\", \"to\": 311, \"width\": 2}, {\"from\": 68, \"title\": \"1\", \"to\": 92, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 141, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 237, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 548, \"width\": 1}, {\"from\": 68, \"title\": \"4\", \"to\": 189, \"width\": 4}, {\"from\": 68, \"title\": \"1\", \"to\": 293, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 609, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 990, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 1029, \"width\": 1}, {\"from\": 68, \"title\": \"2\", \"to\": 429, \"width\": 2}, {\"from\": 68, \"title\": \"1\", \"to\": 402, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 1207, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 311, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 202, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 508, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 788, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 474, \"width\": 1}, {\"from\": 68, \"title\": \"2\", \"to\": 249, \"width\": 2}, {\"from\": 68, \"title\": \"1\", \"to\": 426, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 878, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 1148, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 685, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 972, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 935, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 998, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 128, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 182, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 883, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 378, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 1016, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 739, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 146, \"width\": 1}, {\"from\": 91, \"title\": \"2\", \"to\": 311, \"width\": 2}, {\"from\": 91, \"title\": \"1\", \"to\": 604, \"width\": 1}, {\"from\": 91, \"title\": \"1\", \"to\": 1189, \"width\": 1}, {\"from\": 91, \"title\": \"1\", \"to\": 181, \"width\": 1}, {\"from\": 91, \"title\": \"1\", \"to\": 459, \"width\": 1}, {\"from\": 91, \"title\": \"1\", \"to\": 1029, \"width\": 1}, {\"from\": 91, \"title\": \"1\", \"to\": 202, \"width\": 1}, {\"from\": 106, \"title\": \"1\", \"to\": 222, \"width\": 1}, {\"from\": 106, \"title\": \"2\", \"to\": 913, \"width\": 2}, {\"from\": 106, \"title\": \"3\", \"to\": 146, \"width\": 3}, {\"from\": 106, \"title\": \"1\", \"to\": 636, \"width\": 1}, {\"from\": 115, \"title\": \"1\", \"to\": 972, \"width\": 1}, {\"from\": 121, \"title\": \"1\", \"to\": 376, \"width\": 1}, {\"from\": 121, \"title\": \"1\", \"to\": 222, \"width\": 1}, {\"from\": 125, \"title\": \"1\", \"to\": 189, \"width\": 1}, {\"from\": 128, \"title\": \"1\", \"to\": 202, \"width\": 1}, {\"from\": 128, \"title\": \"1\", \"to\": 262, \"width\": 1}, {\"from\": 134, \"title\": \"1\", \"to\": 378, \"width\": 1}, {\"from\": 141, \"title\": \"1\", \"to\": 608, \"width\": 1}, {\"from\": 141, \"title\": \"1\", \"to\": 561, \"width\": 1}, {\"from\": 141, \"title\": \"1\", \"to\": 548, \"width\": 1}, {\"from\": 141, \"title\": \"1\", \"to\": 539, \"width\": 1}, {\"from\": 146, \"title\": \"2\", \"to\": 267, \"width\": 2}, {\"from\": 146, \"title\": \"3\", \"to\": 222, \"width\": 3}, {\"from\": 146, \"title\": \"2\", \"to\": 913, \"width\": 2}, {\"from\": 146, \"title\": \"1\", \"to\": 636, \"width\": 1}, {\"from\": 146, \"title\": \"1\", \"to\": 739, \"width\": 1}, {\"from\": 155, \"title\": \"1\", \"to\": 358, \"width\": 1}, {\"from\": 181, \"title\": \"1\", \"to\": 604, \"width\": 1}, {\"from\": 181, \"title\": \"1\", \"to\": 1189, \"width\": 1}, {\"from\": 182, \"title\": \"1\", \"to\": 289, \"width\": 1}, {\"from\": 182, \"title\": \"1\", \"to\": 347, \"width\": 1}, {\"from\": 182, \"title\": \"1\", \"to\": 660, \"width\": 1}, {\"from\": 182, \"title\": \"1\", \"to\": 963, \"width\": 1}, {\"from\": 182, \"title\": \"1\", \"to\": 991, \"width\": 1}, {\"from\": 189, \"title\": \"1\", \"to\": 609, \"width\": 1}, {\"from\": 189, \"title\": \"1\", \"to\": 1029, \"width\": 1}, {\"from\": 189, \"title\": \"1\", \"to\": 429, \"width\": 1}, {\"from\": 189, \"title\": \"1\", \"to\": 756, \"width\": 1}, {\"from\": 189, \"title\": \"2\", \"to\": 605, \"width\": 2}, {\"from\": 189, \"title\": \"2\", \"to\": 548, \"width\": 2}, {\"from\": 189, \"title\": \"1\", \"to\": 786, \"width\": 1}, {\"from\": 189, \"title\": \"1\", \"to\": 440, \"width\": 1}, {\"from\": 189, \"title\": \"1\", \"to\": 939, \"width\": 1}, {\"from\": 189, \"title\": \"1\", \"to\": 711, \"width\": 1}, {\"from\": 189, \"title\": \"1\", \"to\": 419, \"width\": 1}, {\"from\": 189, \"title\": \"1\", \"to\": 344, \"width\": 1}, {\"from\": 200, \"title\": \"2\", \"to\": 222, \"width\": 2}, {\"from\": 200, \"title\": \"1\", \"to\": 342, \"width\": 1}, {\"from\": 200, \"title\": \"1\", \"to\": 363, \"width\": 1}, {\"from\": 202, \"title\": \"6\", \"to\": 311, \"width\": 6}, {\"from\": 202, \"title\": \"1\", \"to\": 459, \"width\": 1}, {\"from\": 202, \"title\": \"2\", \"to\": 1029, \"width\": 2}, {\"from\": 202, \"title\": \"1\", \"to\": 1207, \"width\": 1}, {\"from\": 202, \"title\": \"1\", \"to\": 481, \"width\": 1}, {\"from\": 202, \"title\": \"1\", \"to\": 512, \"width\": 1}, {\"from\": 204, \"title\": \"1\", \"to\": 1029, \"width\": 1}, {\"from\": 204, \"title\": \"1\", \"to\": 311, \"width\": 1}, {\"from\": 222, \"title\": \"4\", \"to\": 267, \"width\": 4}, {\"from\": 222, \"title\": \"1\", \"to\": 378, \"width\": 1}, {\"from\": 222, \"title\": \"4\", \"to\": 363, \"width\": 4}, {\"from\": 222, \"title\": \"1\", \"to\": 376, \"width\": 1}, {\"from\": 222, \"title\": \"1\", \"to\": 1010, \"width\": 1}, {\"from\": 222, \"title\": \"1\", \"to\": 913, \"width\": 1}, {\"from\": 222, \"title\": \"1\", \"to\": 342, \"width\": 1}, {\"from\": 222, \"title\": \"1\", \"to\": 245, \"width\": 1}, {\"from\": 249, \"title\": \"1\", \"to\": 508, \"width\": 1}, {\"from\": 249, \"title\": \"1\", \"to\": 788, \"width\": 1}, {\"from\": 249, \"title\": \"1\", \"to\": 474, \"width\": 1}, {\"from\": 249, \"title\": \"1\", \"to\": 426, \"width\": 1}, {\"from\": 249, \"title\": \"1\", \"to\": 561, \"width\": 1}, {\"from\": 249, \"title\": \"1\", \"to\": 378, \"width\": 1}, {\"from\": 259, \"title\": \"1\", \"to\": 1302, \"width\": 1}, {\"from\": 259, \"title\": \"1\", \"to\": 424, \"width\": 1}, {\"from\": 259, \"title\": \"1\", \"to\": 448, \"width\": 1}, {\"from\": 267, \"title\": \"1\", \"to\": 378, \"width\": 1}, {\"from\": 276, \"title\": \"1\", \"to\": 311, \"width\": 1}, {\"from\": 277, \"title\": \"1\", \"to\": 385, \"width\": 1}, {\"from\": 277, \"title\": \"1\", \"to\": 1113, \"width\": 1}, {\"from\": 277, \"title\": \"1\", \"to\": 992, \"width\": 1}, {\"from\": 289, \"title\": \"1\", \"to\": 347, \"width\": 1}, {\"from\": 311, \"title\": \"1\", \"to\": 604, \"width\": 1}, {\"from\": 311, \"title\": \"2\", \"to\": 1029, \"width\": 2}, {\"from\": 311, \"title\": \"1\", \"to\": 459, \"width\": 1}, {\"from\": 311, \"title\": \"1\", \"to\": 1207, \"width\": 1}, {\"from\": 311, \"title\": \"1\", \"to\": 854, \"width\": 1}, {\"from\": 311, \"title\": \"1\", \"to\": 512, \"width\": 1}, {\"from\": 342, \"title\": \"1\", \"to\": 363, \"width\": 1}, {\"from\": 343, \"title\": \"1\", \"to\": 825, \"width\": 1}, {\"from\": 343, \"title\": \"1\", \"to\": 395, \"width\": 1}, {\"from\": 344, \"title\": \"1\", \"to\": 670, \"width\": 1}, {\"from\": 347, \"title\": \"1\", \"to\": 789, \"width\": 1}, {\"from\": 351, \"title\": \"1\", \"to\": 666, \"width\": 1}, {\"from\": 351, \"title\": \"1\", \"to\": 854, \"width\": 1}, {\"from\": 351, \"title\": \"1\", \"to\": 921, \"width\": 1}, {\"from\": 351, \"title\": \"1\", \"to\": 547, \"width\": 1}, {\"from\": 358, \"title\": \"1\", \"to\": 378, \"width\": 1}, {\"from\": 361, \"title\": \"1\", \"to\": 423, \"width\": 1}, {\"from\": 378, \"title\": \"1\", \"to\": 496, \"width\": 1}, {\"from\": 378, \"title\": \"1\", \"to\": 920, \"width\": 1}, {\"from\": 378, \"title\": \"1\", \"to\": 561, \"width\": 1}, {\"from\": 378, \"title\": \"1\", \"to\": 1016, \"width\": 1}, {\"from\": 385, \"title\": \"1\", \"to\": 1113, \"width\": 1}, {\"from\": 385, \"title\": \"1\", \"to\": 992, \"width\": 1}, {\"from\": 395, \"title\": \"1\", \"to\": 1029, \"width\": 1}, {\"from\": 395, \"title\": \"1\", \"to\": 825, \"width\": 1}, {\"from\": 419, \"title\": \"1\", \"to\": 920, \"width\": 1}, {\"from\": 419, \"title\": \"1\", \"to\": 605, \"width\": 1}, {\"from\": 419, \"title\": \"1\", \"to\": 711, \"width\": 1}, {\"from\": 419, \"title\": \"1\", \"to\": 548, \"width\": 1}, {\"from\": 426, \"title\": \"1\", \"to\": 508, \"width\": 1}, {\"from\": 426, \"title\": \"1\", \"to\": 788, \"width\": 1}, {\"from\": 426, \"title\": \"1\", \"to\": 474, \"width\": 1}, {\"from\": 429, \"title\": \"1\", \"to\": 1029, \"width\": 1}, {\"from\": 429, \"title\": \"1\", \"to\": 1148, \"width\": 1}, {\"from\": 433, \"title\": \"1\", \"to\": 512, \"width\": 1}, {\"from\": 440, \"title\": \"9\", \"to\": 966, \"width\": 9}, {\"from\": 440, \"title\": \"6\", \"to\": 786, \"width\": 6}, {\"from\": 440, \"title\": \"3\", \"to\": 491, \"width\": 3}, {\"from\": 440, \"title\": \"2\", \"to\": 875, \"width\": 2}, {\"from\": 440, \"title\": \"1\", \"to\": 895, \"width\": 1}, {\"from\": 440, \"title\": \"1\", \"to\": 644, \"width\": 1}, {\"from\": 440, \"title\": \"1\", \"to\": 939, \"width\": 1}, {\"from\": 440, \"title\": \"2\", \"to\": 926, \"width\": 2}, {\"from\": 442, \"title\": \"1\", \"to\": 957, \"width\": 1}, {\"from\": 442, \"title\": \"1\", \"to\": 445, \"width\": 1}, {\"from\": 442, \"title\": \"1\", \"to\": 883, \"width\": 1}, {\"from\": 445, \"title\": \"1\", \"to\": 957, \"width\": 1}, {\"from\": 445, \"title\": \"1\", \"to\": 883, \"width\": 1}, {\"from\": 447, \"title\": \"1\", \"to\": 1150, \"width\": 1}, {\"from\": 447, \"title\": \"1\", \"to\": 470, \"width\": 1}, {\"from\": 447, \"title\": \"1\", \"to\": 463, \"width\": 1}, {\"from\": 447, \"title\": \"1\", \"to\": 620, \"width\": 1}, {\"from\": 448, \"title\": \"1\", \"to\": 705, \"width\": 1}, {\"from\": 448, \"title\": \"1\", \"to\": 499, \"width\": 1}, {\"from\": 458, \"title\": \"1\", \"to\": 1092, \"width\": 1}, {\"from\": 458, \"title\": \"1\", \"to\": 1160, \"width\": 1}, {\"from\": 458, \"title\": \"1\", \"to\": 499, \"width\": 1}, {\"from\": 458, \"title\": \"1\", \"to\": 470, \"width\": 1}, {\"from\": 459, \"title\": \"1\", \"to\": 1029, \"width\": 1}, {\"from\": 463, \"title\": \"1\", \"to\": 1150, \"width\": 1}, {\"from\": 463, \"title\": \"1\", \"to\": 470, \"width\": 1}, {\"from\": 463, \"title\": \"1\", \"to\": 609, \"width\": 1}, {\"from\": 466, \"title\": \"1\", \"to\": 1029, \"width\": 1}, {\"from\": 466, \"title\": \"1\", \"to\": 741, \"width\": 1}, {\"from\": 470, \"title\": \"1\", \"to\": 1160, \"width\": 1}, {\"from\": 470, \"title\": \"1\", \"to\": 499, \"width\": 1}, {\"from\": 470, \"title\": \"1\", \"to\": 1150, \"width\": 1}, {\"from\": 470, \"title\": \"1\", \"to\": 1220, \"width\": 1}, {\"from\": 474, \"title\": \"1\", \"to\": 508, \"width\": 1}, {\"from\": 474, \"title\": \"1\", \"to\": 788, \"width\": 1}, {\"from\": 481, \"title\": \"1\", \"to\": 1029, \"width\": 1}, {\"from\": 482, \"title\": \"1\", \"to\": 1147, \"width\": 1}, {\"from\": 482, \"title\": \"1\", \"to\": 1220, \"width\": 1}, {\"from\": 482, \"title\": \"1\", \"to\": 1087, \"width\": 1}, {\"from\": 482, \"title\": \"1\", \"to\": 951, \"width\": 1}, {\"from\": 491, \"title\": \"2\", \"to\": 966, \"width\": 2}, {\"from\": 491, \"title\": \"1\", \"to\": 875, \"width\": 1}, {\"from\": 491, \"title\": \"1\", \"to\": 895, \"width\": 1}, {\"from\": 491, \"title\": \"1\", \"to\": 644, \"width\": 1}, {\"from\": 491, \"title\": \"1\", \"to\": 492, \"width\": 1}, {\"from\": 491, \"title\": \"2\", \"to\": 926, \"width\": 2}, {\"from\": 491, \"title\": \"1\", \"to\": 786, \"width\": 1}, {\"from\": 492, \"title\": \"1\", \"to\": 926, \"width\": 1}, {\"from\": 496, \"title\": \"1\", \"to\": 920, \"width\": 1}, {\"from\": 499, \"title\": \"1\", \"to\": 1160, \"width\": 1}, {\"from\": 499, \"title\": \"1\", \"to\": 705, \"width\": 1}, {\"from\": 508, \"title\": \"1\", \"to\": 788, \"width\": 1}, {\"from\": 508, \"title\": \"1\", \"to\": 946, \"width\": 1}, {\"from\": 508, \"title\": \"1\", \"to\": 633, \"width\": 1}, {\"from\": 508, \"title\": \"1\", \"to\": 655, \"width\": 1}, {\"from\": 510, \"title\": \"1\", \"to\": 854, \"width\": 1}, {\"from\": 539, \"title\": \"1\", \"to\": 608, \"width\": 1}, {\"from\": 539, \"title\": \"1\", \"to\": 561, \"width\": 1}, {\"from\": 539, \"title\": \"1\", \"to\": 548, \"width\": 1}, {\"from\": 546, \"title\": \"1\", \"to\": 771, \"width\": 1}, {\"from\": 547, \"title\": \"1\", \"to\": 666, \"width\": 1}, {\"from\": 547, \"title\": \"1\", \"to\": 854, \"width\": 1}, {\"from\": 547, \"title\": \"1\", \"to\": 921, \"width\": 1}, {\"from\": 548, \"title\": \"1\", \"to\": 756, \"width\": 1}, {\"from\": 548, \"title\": \"2\", \"to\": 605, \"width\": 2}, {\"from\": 548, \"title\": \"1\", \"to\": 608, \"width\": 1}, {\"from\": 548, \"title\": \"1\", \"to\": 561, \"width\": 1}, {\"from\": 548, \"title\": \"1\", \"to\": 711, \"width\": 1}, {\"from\": 561, \"title\": \"1\", \"to\": 608, \"width\": 1}, {\"from\": 564, \"title\": \"1\", \"to\": 608, \"width\": 1}, {\"from\": 570, \"title\": \"1\", \"to\": 620, \"width\": 1}, {\"from\": 604, \"title\": \"1\", \"to\": 1189, \"width\": 1}, {\"from\": 605, \"title\": \"2\", \"to\": 756, \"width\": 2}, {\"from\": 605, \"title\": \"1\", \"to\": 711, \"width\": 1}, {\"from\": 633, \"title\": \"1\", \"to\": 946, \"width\": 1}, {\"from\": 633, \"title\": \"1\", \"to\": 655, \"width\": 1}, {\"from\": 636, \"title\": \"1\", \"to\": 913, \"width\": 1}, {\"from\": 655, \"title\": \"1\", \"to\": 946, \"width\": 1}, {\"from\": 656, \"title\": \"1\", \"to\": 939, \"width\": 1}, {\"from\": 660, \"title\": \"1\", \"to\": 963, \"width\": 1}, {\"from\": 660, \"title\": \"1\", \"to\": 991, \"width\": 1}, {\"from\": 666, \"title\": \"1\", \"to\": 854, \"width\": 1}, {\"from\": 666, \"title\": \"1\", \"to\": 921, \"width\": 1}, {\"from\": 670, \"title\": \"1\", \"to\": 792, \"width\": 1}, {\"from\": 670, \"title\": \"1\", \"to\": 1311, \"width\": 1}, {\"from\": 685, \"title\": \"1\", \"to\": 972, \"width\": 1}, {\"from\": 741, \"title\": \"1\", \"to\": 946, \"width\": 1}, {\"from\": 741, \"title\": \"1\", \"to\": 1262, \"width\": 1}, {\"from\": 741, \"title\": \"2\", \"to\": 1029, \"width\": 2}, {\"from\": 741, \"title\": \"1\", \"to\": 1309, \"width\": 1}, {\"from\": 771, \"title\": \"1\", \"to\": 854, \"width\": 1}, {\"from\": 786, \"title\": \"6\", \"to\": 966, \"width\": 6}, {\"from\": 786, \"title\": \"1\", \"to\": 939, \"width\": 1}, {\"from\": 786, \"title\": \"1\", \"to\": 926, \"width\": 1}, {\"from\": 792, \"title\": \"1\", \"to\": 1311, \"width\": 1}, {\"from\": 852, \"title\": \"1\", \"to\": 998, \"width\": 1}, {\"from\": 854, \"title\": \"1\", \"to\": 921, \"width\": 1}, {\"from\": 854, \"title\": \"1\", \"to\": 947, \"width\": 1}, {\"from\": 862, \"title\": \"1\", \"to\": 1029, \"width\": 1}, {\"from\": 875, \"title\": \"2\", \"to\": 966, \"width\": 2}, {\"from\": 875, \"title\": \"1\", \"to\": 895, \"width\": 1}, {\"from\": 875, \"title\": \"1\", \"to\": 926, \"width\": 1}, {\"from\": 883, \"title\": \"1\", \"to\": 957, \"width\": 1}, {\"from\": 895, \"title\": \"1\", \"to\": 966, \"width\": 1}, {\"from\": 926, \"title\": \"2\", \"to\": 966, \"width\": 2}, {\"from\": 935, \"title\": \"1\", \"to\": 998, \"width\": 1}, {\"from\": 946, \"title\": \"1\", \"to\": 1262, \"width\": 1}, {\"from\": 951, \"title\": \"1\", \"to\": 1147, \"width\": 1}, {\"from\": 951, \"title\": \"1\", \"to\": 1220, \"width\": 1}, {\"from\": 951, \"title\": \"1\", \"to\": 1087, \"width\": 1}, {\"from\": 963, \"title\": \"1\", \"to\": 991, \"width\": 1}, {\"from\": 992, \"title\": \"1\", \"to\": 1113, \"width\": 1}, {\"from\": 1041, \"title\": \"1\", \"to\": 1220, \"width\": 1}, {\"from\": 1087, \"title\": \"1\", \"to\": 1147, \"width\": 1}, {\"from\": 1087, \"title\": \"1\", \"to\": 1220, \"width\": 1}, {\"from\": 1147, \"title\": \"1\", \"to\": 1220, \"width\": 1}]);\n\n        // adding nodes and edges to the graph\n        data = {nodes: nodes, edges: edges};\n\n        var options = {\"configure\": {\"enabled\": false}, \"nodes\": {\"font\": {\"size\": 7}}, \"edges\": {\"smooth\": true, \"color\": {\"opacity\": 0.25}}, \"physics\": {\"enabled\": true, \"forceAtlas2Based\": {\"springLength\": 100}, \"solver\": \"forceAtlas2Based\"}};\n        \n        \n\n        \n\n        network = new vis.Network(container, data, options);\n\t \n        \n\n\n        \n        network.on(\"stabilizationProgress\", function(params) {\n      \t\tdocument.getElementById('loadingBar').removeAttribute(\"style\");\n\t        var maxWidth = 496;\n\t        var minWidth = 20;\n\t        var widthFactor = params.iterations/params.total;\n\t        var width = Math.max(minWidth,maxWidth * widthFactor);\n\n\t        document.getElementById('bar').style.width = width + 'px';\n\t        document.getElementById('text').innerHTML = Math.round(widthFactor*100) + '%';\n\t    });\n\t    network.once(\"stabilizationIterationsDone\", function() {\n\t        document.getElementById('text').innerHTML = '100%';\n\t        document.getElementById('bar').style.width = '496px';\n\t        document.getElementById('loadingBar').style.opacity = 0;\n\t        // really clean the dom element\n\t        setTimeout(function () {document.getElementById('loadingBar').style.display = 'none';}, 500);\n\t    });\n        \n\n        return network;\n\n    }\n\n    drawGraph();\n\n</script>\n</body>\n</html>"
  },
  {
    "path": "docs/_static/css/style.css",
    "content": "@import 'theme.css';\n\nhtml.writer-html4 .rst-content dl:not(.docutils) .property,\nhtml.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .property {\n    /* Fixes strange layout of class properties. */\n    display: inline;\n}\n"
  },
  {
    "path": "docs/api/index.rst",
    "content": "API reference\n====================================\n\nThis page provides the API documentation of litstudy.\nAll public functions are re-exported under the global `litstudy` namespace for convenience.\nHowever, the code is structured hierachical meaning the documentation shows the hierarchical names.\nFor example:\n\n.. code-block:: python\n\n    docs = litstudy.sources.scopus.search_scopus(\"example\")\n    litstudy.plot.plot_author_histogram(docs)\n\n    # Is equivalent to\n\n    docs = litstudy.search_scopus(\"example\")\n    litstudy.plot_author_histogram(docs)\n\n\nThe package is divided into 6 modules:\n\n* Core data types such as `Document` and `DocumentSet`.\n* Functions to retrieve or load scientific citations.\n* Compute general statistics.\n* Generate bibliographic networks.\n* Automatic topic detection using natural language processing (NLP).\n* Plot results. These functions are mostly useful inside a notebook.\n\n.. toctree::\n   :maxdepth: 2\n   :caption: Contents\n\n   types\n   sources\n   stats\n   network\n   nlp\n   plot\n"
  },
  {
    "path": "docs/api/network.rst",
    "content": "Network Analysis\n------------------------------------------\n.. automodule:: litstudy.network\n  :members:\n"
  },
  {
    "path": "docs/api/nlp.rst",
    "content": "Language Processing\n------------------------------------------\n.. automodule:: litstudy.nlp\n  :members:\n"
  },
  {
    "path": "docs/api/plot.rst",
    "content": "Plotting Statistics\n------------------------------------------\n.. automodule:: litstudy.plot\n  :members:\n"
  },
  {
    "path": "docs/api/sources.rst",
    "content": "Literature Databases\n====================\n\n\nScopus\n------\n.. automodule:: litstudy\n  :members: search_scopus, refine_scopus, load_scopus_csv\n\nSemanticScholar\n---------------\n.. automodule:: litstudy\n  :members: fetch_semanticscholar, refine_semanticscholar, search_semanticscholar\n\nCrossRef\n---------------\n.. automodule:: litstudy\n  :members: fetch_crossref, refine_crossref, search_crossref\n\nCSV\n---------------\n.. automodule:: litstudy\n  :members: load_csv\n\nIEEE Xplore\n---------------\n.. automodule:: litstudy\n  :members: load_ieee_csv\n\nSpringer Link\n---------------\n.. automodule:: litstudy\n  :members: load_springer_csv\n\nbibtex\n---------------\n.. automodule:: litstudy\n  :members: load_bibtex\n\nRIS\n---------------\n.. automodule:: litstudy\n  :members: load_ris_file\n\n\ndblp\n---------------\n.. automodule:: litstudy\n  :members: search_dblp\n\narXiv\n---------------\n.. automodule:: litstudy\n  :members: search_arxiv\n\n"
  },
  {
    "path": "docs/api/stats.rst",
    "content": "Calculating Statistics\n------------------------------------------\n.. automodule:: litstudy.stats\n  :members:\n"
  },
  {
    "path": "docs/api/types.rst",
    "content": "Data Types\n------------------------------------------\n\nThere are two core datatypes in litstudy: `Document` and `DocumentSet`.\n\n`Document` is an abstract base class (ABC) that provides access to the metadata of documents in a unified way.\nDifferent backends provide their own implements of this class (for example, `ScopusDocument`, `BibTexDocument`, etc.)\n\n`DocumentSet` is set of `Document` objects.\nAll set operations are supported, making it possible to create a new set from existing sets.\nFor instance, it is possible to load documents from two sources (obtaining two `DocumentSets`) and merge them (obtaining one large `DocumentSet`).\n\n\n.. automodule:: litstudy.types\n  :members:\n\n"
  },
  {
    "path": "docs/citation.html",
    "content": "<html>\n<head>\n<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.16.1/vis.css\" type=\"text/css\" />\n<script type=\"text/javascript\" src=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.16.1/vis-network.min.js\"> </script>\n<center>\n<h1></h1>\n</center>\n\n<!-- <link rel=\"stylesheet\" href=\"../node_modules/vis/dist/vis.min.css\" type=\"text/css\" />\n<script type=\"text/javascript\" src=\"../node_modules/vis/dist/vis.js\"> </script>-->\n\n<style type=\"text/css\">\n\n        #mynetwork {\n            width: 100%;\n            height: 1000px;\n            background-color: #ffffff;\n            border: 1px solid lightgray;\n            position: relative;\n            float: left;\n        }\n\n        \n        #loadingBar {\n            position:absolute;\n            top:0px;\n            left:0px;\n            width: 100%;\n            height: 1000px;\n            background-color:rgba(200,200,200,0.8);\n            -webkit-transition: all 0.5s ease;\n            -moz-transition: all 0.5s ease;\n            -ms-transition: all 0.5s ease;\n            -o-transition: all 0.5s ease;\n            transition: all 0.5s ease;\n            opacity:1;\n        }\n\n        #bar {\n            position:absolute;\n            top:0px;\n            left:0px;\n            width:20px;\n            height:20px;\n            margin:auto auto auto auto;\n            border-radius:11px;\n            border:2px solid rgba(30,30,30,0.05);\n            background: rgb(0, 173, 246); /* Old browsers */\n            box-shadow: 2px 0px 4px rgba(0,0,0,0.4);\n        }\n\n        #border {\n            position:absolute;\n            top:10px;\n            left:10px;\n            width:500px;\n            height:23px;\n            margin:auto auto auto auto;\n            box-shadow: 0px 0px 4px rgba(0,0,0,0.2);\n            border-radius:10px;\n        }\n\n        #text {\n            position:absolute;\n            top:8px;\n            left:530px;\n            width:30px;\n            height:50px;\n            margin:auto auto auto auto;\n            font-size:22px;\n            color: #000000;\n        }\n\n        div.outerBorder {\n            position:relative;\n            top:400px;\n            width:600px;\n            height:44px;\n            margin:auto auto auto auto;\n            border:8px solid rgba(0,0,0,0.1);\n            background: rgb(252,252,252); /* Old browsers */\n            background: -moz-linear-gradient(top,  rgba(252,252,252,1) 0%, rgba(237,237,237,1) 100%); /* FF3.6+ */\n            background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(252,252,252,1)), color-stop(100%,rgba(237,237,237,1))); /* Chrome,Safari4+ */\n            background: -webkit-linear-gradient(top,  rgba(252,252,252,1) 0%,rgba(237,237,237,1) 100%); /* Chrome10+,Safari5.1+ */\n            background: -o-linear-gradient(top,  rgba(252,252,252,1) 0%,rgba(237,237,237,1) 100%); /* Opera 11.10+ */\n            background: -ms-linear-gradient(top,  rgba(252,252,252,1) 0%,rgba(237,237,237,1) 100%); /* IE10+ */\n            background: linear-gradient(to bottom,  rgba(252,252,252,1) 0%,rgba(237,237,237,1) 100%); /* W3C */\n            filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fcfcfc', endColorstr='#ededed',GradientType=0 ); /* IE6-9 */\n            border-radius:72px;\n            box-shadow: 0px 0px 10px rgba(0,0,0,0.2);\n        }\n        \n\n        \n\n        \n</style>\n\n</head>\n\n<body>\n<div id = \"mynetwork\"></div>\n\n<div id=\"loadingBar\">\n    <div class=\"outerBorder\">\n        <div id=\"text\">0%</div>\n        <div id=\"border\">\n            <div id=\"bar\"></div>\n        </div>\n    </div>\n</div>\n\n\n<script type=\"text/javascript\">\n\n    // initialize global variables.\n    var edges;\n    var nodes;\n    var network; \n    var container;\n    var options, data;\n\n    \n    // This method is responsible for drawing the graph, returns the drawn network\n    function drawGraph() {\n        var container = document.getElementById('mynetwork');\n        \n        \n\n        // parsing and collecting nodes and edges from the python\n        nodes = new vis.DataSet([{\"id\": 13, \"label\": \"Extending OpenSHMEM\\nfor GPU computing\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Extending OpenSHMEM for GPU computing\", \"x\": 24.76389076112976, \"y\": 122.37293814381397}, {\"id\": 18, \"label\": \"Physis: An\\nimplicitly parallel\\nprogramming model\\nfor stencil\\ncomputations on\\nlarge-scale gpu-\\naccelerated\\nsupercomputers\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 27.352941513061523, \"title\": \"Physis: An implicitly parallel programming model for stencil computations on large-scale gpu-accelerated supercomputers\", \"x\": -18.7288326671725, \"y\": 8.611340066023798}, {\"id\": 34, \"label\": \"Compiling and\\nOptimizing Java 8\\nPrograms for GPU\\nExecution\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Compiling and Optimizing Java 8 Programs for GPU Execution\", \"x\": -33.01993303871408, \"y\": 28.518820586360636}, {\"id\": 51, \"label\": \"Selective GPU caches\\nto eliminate CPU-GPU\\nHW cache coherence\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Selective GPU caches to eliminate CPU-GPU HW cache coherence\", \"x\": -24.697750295334995, \"y\": 34.938700881655784}, {\"id\": 53, \"label\": \"PACXX: Towards a\\nunified programming\\nmodel for\\nprogramming\\naccelerators using\\nC++14\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"PACXX: Towards a unified programming model for programming accelerators using C++14\", \"x\": -137.55669543623773, \"y\": 153.10688317503357}, {\"id\": 60, \"label\": \"Accelerating gene\\nregulatory networks\\ninference through\\nGPU/CUDA programming\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Accelerating gene regulatory networks inference through GPU/CUDA programming\", \"x\": 16.119976757829036, \"y\": -42.8422717169076}, {\"id\": 64, \"label\": \"Exploring the\\nsuitability of\\nremote GPGPU\\nvirtualization for\\nthe OpenACC\\nprogramming model\\nusing rCUDA\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Exploring the suitability of remote GPGPU virtualization for the OpenACC programming model using rCUDA\", \"x\": -37.10419622799762, \"y\": -50.07899169322814}, {\"id\": 67, \"label\": \"DCUDA: Hardware\\nSupported Overlap of\\nComputation and\\nCommunication\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"DCUDA: Hardware Supported Overlap of Computation and Communication\", \"x\": -33.87332786054143, \"y\": 11.864933159981236}, {\"id\": 68, \"label\": \"GPU computing\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 100.0, \"title\": \"GPU computing\", \"x\": 6.329250718754571, \"y\": -34.18733911463281}, {\"id\": 91, \"label\": \"Designing a unified\\nprogramming model\\nfor heterogeneous\\nmachines\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 24.55882453918457, \"title\": \"Designing a unified programming model for heterogeneous machines\", \"x\": -57.81566497580839, \"y\": -12.091708299014202}, {\"id\": 92, \"label\": \"A case study of\\nOpenCL on an Android\\nmobile GPU\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"A case study of OpenCL on an Android mobile GPU\", \"x\": 3.936617293001404, \"y\": -44.37072024756895}, {\"id\": 106, \"label\": \"An evaluation of\\nunified memory\\ntechnology on NVIDIA\\nGPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"An evaluation of unified memory technology on NVIDIA GPUs\", \"x\": 4.322878604771536, \"y\": 25.792487247701676}, {\"id\": 115, \"label\": \"Achieving\\nportability and\\nperformance through\\nOpenACC\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Achieving portability and performance through OpenACC\", \"x\": 14.655810467394069, \"y\": -73.16158321439497}, {\"id\": 121, \"label\": \"An Enhanced\\nProfiling Framework\\nfor the Analysis and\\nDevelopment of\\nParallel Primitives\\nfor GPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"An Enhanced Profiling Framework for the Analysis and Development of Parallel Primitives for GPUs\", \"x\": -6.790233183944989, \"y\": 47.559438616441106}, {\"id\": 125, \"label\": \"GPU accelerated\\nLanczos algorithm\\nwith applications\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"GPU accelerated Lanczos algorithm with applications\", \"x\": 67.43624839486117, \"y\": -15.856550886523927}, {\"id\": 128, \"label\": \"VOCL: An optimized\\nenvironment for\\ntransparent\\nvirtualization of\\ngraphics processing\\nunits\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"VOCL: An optimized environment for transparent virtualization of graphics processing units\", \"x\": -27.147883565553244, \"y\": -40.42330677872908}, {\"id\": 134, \"label\": \"Parallel algorithms\\nfor approximate\\nstring matching with\\nk mismatches on CUDA\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Parallel algorithms for approximate string matching with k mismatches on CUDA\", \"x\": 24.027643499441634, \"y\": -3.5517468756445068}, {\"id\": 141, \"label\": \"Record setting\\nsoftware\\nimplementation of\\ndes using CUDA\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 18.97058868408203, \"title\": \"Record setting software implementation of des using CUDA\", \"x\": 43.10243901267682, \"y\": -50.668593214139456}, {\"id\": 146, \"label\": \"An investigation of\\nUnified Memory\\nAccess performance\\nin CUDA\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 24.55882453918457, \"title\": \"An investigation of Unified Memory Access performance in CUDA\", \"x\": 2.2677354694675125, \"y\": 19.53145343210315}, {\"id\": 155, \"label\": \"Towards achieving\\nperformance\\nportability using\\ndirectives for\\naccelerators\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Towards achieving performance portability using directives for accelerators\", \"x\": 41.05949316371812, \"y\": 6.748039881219046}, {\"id\": 181, \"label\": \"Self-adaptive OmpSs\\ntasks in\\nheterogeneous\\nenvironments\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Self-adaptive OmpSs tasks in heterogeneous environments\", \"x\": -73.93121825216481, \"y\": -9.764180678019299}, {\"id\": 182, \"label\": \"Design and\\nperformance\\nevaluation of image\\nprocessing\\nalgorithms on GPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 21.764705657958984, \"title\": \"Design and performance evaluation of image processing algorithms on GPUs\", \"x\": -89.64779293768946, \"y\": -0.014149852620478853}, {\"id\": 189, \"label\": \"Parallel computing\\nexperiences with\\nCUDA\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 44.11764907836914, \"title\": \"Parallel computing experiences with CUDA\", \"x\": 58.71554548426513, \"y\": -27.265589152526406}, {\"id\": 200, \"label\": \"Beyond the socket:\\nNUMA-aware GPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Beyond the socket: NUMA-aware GPUs\", \"x\": -11.522889031691046, \"y\": 41.99887434023165}, {\"id\": 202, \"label\": \"Early evaluation of\\ndirective-based GPU\\nprogramming models\\nfor productive\\nexascale computing\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 32.94117736816406, \"title\": \"Early evaluation of directive-based GPU programming models for productive exascale computing\", \"x\": -35.81135870727286, \"y\": -12.013049124173278}, {\"id\": 204, \"label\": \"Task scheduling for\\ngpu heterogeneous\\ncluster\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Task scheduling for gpu heterogeneous cluster\", \"x\": -43.08916620014689, \"y\": -18.10347665453183}, {\"id\": 222, \"label\": \"Analyzing CUDA\\nworkloads using a\\ndetailed GPU\\nsimulator\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 46.911766052246094, \"title\": \"Analyzing CUDA workloads using a detailed GPU simulator\", \"x\": -8.643175637062633, \"y\": 31.465316314064353}, {\"id\": 237, \"label\": \"Hybrid map task\\nscheduling for GPU-\\nbased heterogeneous\\nclusters\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Hybrid map task scheduling for GPU-based heterogeneous clusters\", \"x\": -5.105039961657392, \"y\": -31.30110458915556}, {\"id\": 245, \"label\": \"Stargazer: Automated\\nregression-based GPU\\ndesign space\\nexploration\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Stargazer: Automated regression-based GPU design space exploration\", \"x\": -14.85701484922424, \"y\": 35.488748315892266}, {\"id\": 249, \"label\": \"Empowering visual\\ncategorization with\\nthe GPU\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 24.55882453918457, \"title\": \"Empowering visual categorization with the GPU\", \"x\": 4.239864280021133, \"y\": -52.67611387008494}, {\"id\": 259, \"label\": \"StreamMR: An\\noptimized MapReduce\\nframework for AMD\\nGPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"StreamMR: An optimized MapReduce framework for AMD GPUs\", \"x\": 89.30230942900809, \"y\": 160.83049239566935}, {\"id\": 262, \"label\": \"Exploiting Task-\\nParallelism on GPU\\nClusters via OmpSs\\nand rCUDA\\nVirtualization\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Exploiting Task-Parallelism on GPU Clusters via OmpSs and rCUDA Virtualization\", \"x\": -34.48297340210872, \"y\": -52.42060344606631}, {\"id\": 267, \"label\": \"Unlocking bandwidth\\nfor GPUs in CC-NUMA\\nsystems\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Unlocking bandwidth for GPUs in CC-NUMA systems\", \"x\": -2.341847324234936, \"y\": 22.700120533832603}, {\"id\": 276, \"label\": \"OpenCL - An\\neffective\\nprogramming model\\nfor data parallel\\ncomputations at the\\nCell Broadband\\nEngine\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"OpenCL - An effective programming model for data parallel computations at the Cell Broadband Engine\", \"x\": -52.84143316139907, \"y\": 6.8604154729692635}, {\"id\": 277, \"label\": \"GraphReduce:\\nProcessing large-\\nscale graphs on\\naccelerator-based\\nsystems\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"GraphReduce: Processing large-scale graphs on accelerator-based systems\", \"x\": -157.0098718067881, \"y\": 185.76248211060502}, {\"id\": 289, \"label\": \"Can GPGPU\\nprogramming be\\nliberated from the\\ndata-parallel\\nbottleneck?\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Can GPGPU programming be liberated from the data-parallel bottleneck?\", \"x\": -100.17011306674146, \"y\": 12.015917840606194}, {\"id\": 293, \"label\": \"Massively parallel\\nnetwork coding on\\nGPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Massively parallel network coding on GPUs\", \"x\": -2.2374148817409494, \"y\": -37.13949126822989}, {\"id\": 311, \"label\": \"OpenMPC: Extended\\nOpenMP programming\\nand tuning for GPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 44.11764907836914, \"title\": \"OpenMPC: Extended OpenMP programming and tuning for GPUs\", \"x\": -41.58900065888275, \"y\": -1.8093634026342515}, {\"id\": 342, \"label\": \"Throughput-effective\\non-chip networks for\\nmanycore\\naccelerators\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Throughput-effective on-chip networks for manycore accelerators\", \"x\": -13.725111872890286, \"y\": 47.544673067902195}, {\"id\": 343, \"label\": \"An MDE approach for\\nautomatic code\\ngeneration from\\nUML/MARTE to openCL\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"An MDE approach for automatic code generation from UML/MARTE to openCL\", \"x\": -90.34240394269759, \"y\": -64.0955909622676}, {\"id\": 344, \"label\": \"Fast motion\\nestimation on\\ngraphics hardware\\nfor h.264 video\\nencoding\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Fast motion estimation on graphics hardware for h.264 video encoding\", \"x\": 92.16741901422802, \"y\": -62.21984092501383}, {\"id\": 347, \"label\": \"CuMAPz: A tool to\\nanalyze memory\\naccess patterns in\\nCUDA\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"CuMAPz: A tool to analyze memory access patterns in CUDA\", \"x\": -106.22225371359201, \"y\": 15.71489347352919}, {\"id\": 351, \"label\": \"Optimizing sparse\\nmatrix-vector\\nmultiplication on\\nCUDA\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Optimizing sparse matrix-vector multiplication on CUDA\", \"x\": -114.08883280843102, \"y\": 105.02225395466465}, {\"id\": 358, \"label\": \"A comparative study\\nof SYCL, OpenCL, and\\nOpenMP\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"A comparative study of SYCL, OpenCL, and OpenMP\", \"x\": 34.5704220565808, \"y\": 2.1910642545011623}, {\"id\": 361, \"label\": \"Implementation of\\nXcalableMP device\\nacceleration\\nextention with\\nOpenCL\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Implementation of XcalableMP device acceleration extention with OpenCL\", \"x\": 25.727119129471127, \"y\": 134.2974186952201}, {\"id\": 363, \"label\": \"Coordinated static\\nand dynamic cache\\nbypassing for GPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Coordinated static and dynamic cache bypassing for GPUs\", \"x\": -9.702073792609484, \"y\": 37.92453734809817}, {\"id\": 376, \"label\": \"A comparison of\\nperformance\\ntunabilities between\\nOpenCL and OpenACC\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"A comparison of performance tunabilities between OpenCL and OpenACC\", \"x\": -3.7488175460497764, \"y\": 45.514812614569315}, {\"id\": 378, \"label\": \"A comprehensive\\nperformance\\ncomparison of CUDA\\nand OpenCL\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 32.94117736816406, \"title\": \"A comprehensive performance comparison of CUDA and OpenCL\", \"x\": 21.30053879004295, \"y\": -9.838769904988158}, {\"id\": 385, \"label\": \"GasCL: A vertex-\\ncentric graph model\\nfor GPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"GasCL: A vertex-centric graph model for GPUs\", \"x\": -152.68282868026617, \"y\": 183.7421165431827}, {\"id\": 395, \"label\": \"Liszt: A domain\\nspecific language\\nfor building\\nportable mesh-based\\nPDE solvers\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Liszt: A domain specific language for building portable mesh-based PDE solvers\", \"x\": -78.97863881376998, \"y\": -54.85530529666192}, {\"id\": 402, \"label\": \"Scalable programming\\nmodels for massively\\nmulticore processors\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Scalable programming models for massively multicore processors\", \"x\": -6.076889811191757, \"y\": -10.602190939552877}, {\"id\": 419, \"label\": \"A comparative study\\nof GPU programming\\nmodels and\\narchitectures using\\nneural networks\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 18.97058868408203, \"title\": \"A comparative study of GPU programming models and architectures using neural networks\", \"x\": 68.02800802073645, \"y\": -23.68261777817171}, {\"id\": 423, \"label\": \"Porting and scaling\\nOpenACC applications\\non massively-\\nparallel, GPU-\\naccelerated\\nsupercomputers\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Porting and scaling OpenACC applications on massively-parallel, GPU-accelerated supercomputers\", \"x\": 22.428007077264574, \"y\": 132.8488076534428}, {\"id\": 424, \"label\": \"Providing source\\ncode level\\nportability between\\nCPU and GPU with\\nMapCG\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Providing source code level portability between CPU and GPU with MapCG\", \"x\": 94.81746377478484, \"y\": 165.83516704649634}, {\"id\": 426, \"label\": \"Accelerating\\nincompressible flow\\ncomputations with a\\nPthreads-CUDA\\nimplementation on\\nsmall-footprint\\nmulti-GPU platforms\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 18.97058868408203, \"title\": \"Accelerating incompressible flow computations with a Pthreads-CUDA implementation on small-footprint multi-GPU platforms\", \"x\": -8.560106741593499, \"y\": -63.2900076996156}, {\"id\": 429, \"label\": \"Optimizing linpack\\nbenchmark on GPU-\\naccelerated\\npetascale\\nsupercomputer\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Optimizing linpack benchmark on GPU-accelerated petascale supercomputer\", \"x\": 13.680509220475168, \"y\": -28.71944765940697}, {\"id\": 433, \"label\": \"An efficient\\nparallel\\ncollaborative\\nfiltering algorithm\\non multi-GPU\\nplatform\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"An efficient parallel collaborative filtering algorithm on multi-GPU platform\", \"x\": -28.011285265575538, \"y\": 9.01718653156487}, {\"id\": 440, \"label\": \"CUDA compatible GPU\\ncards as efficient\\nhardware\\naccelerators for\\nSmith-Waterman\\nsequence alignment\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 30.147058486938477, \"title\": \"CUDA compatible GPU cards as efficient hardware accelerators for Smith-Waterman sequence alignment\", \"x\": 139.98851437237437, \"y\": -17.0148749541904}, {\"id\": 442, \"label\": \"Parallel programing\\ntemplates for remote\\nsensing image\\nprocessing on GPU\\narchitectures:\\ndesign and\\nimplementation\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Parallel programing templates for remote sensing image processing on GPU architectures: design and implementation\", \"x\": 4.772212668768481, \"y\": -129.57867950398318}, {\"id\": 445, \"label\": \"Correlation\\nacceleration in GNSS\\nsoftware receivers\\nusing a CUDA-enabled\\nGPU\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Correlation acceleration in GNSS software receivers using a CUDA-enabled GPU\", \"x\": 9.761693107864195, \"y\": -130.57271298078822}, {\"id\": 447, \"label\": \"A compound\\nOpenMP/MPI program\\ndevelopment toolkit\\nfor hybrid CPU/GPU\\nclusters\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"A compound OpenMP/MPI program development toolkit for hybrid CPU/GPU clusters\", \"x\": 55.538507460794385, \"y\": 108.8698139947644}, {\"id\": 448, \"label\": \"Accelerating\\nMapReduce framework\\non multi-GPU systems\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Accelerating MapReduce framework on multi-GPU systems\", \"x\": 71.3413247818473, \"y\": 149.86015109232585}, {\"id\": 458, \"label\": \"MVAPICH2-GPU:\\nOptimized GPU to GPU\\ncommunication for\\nInfiniBand clusters\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 21.764705657958984, \"title\": \"MVAPICH2-GPU: Optimized GPU to GPU communication for InfiniBand clusters\", \"x\": 26.974759022032, \"y\": 108.43819247539349}, {\"id\": 459, \"label\": \"TH-1: China\\u0027s first\\npetaflop\\nsupercomputer\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"TH-1: China\\u0027s first petaflop supercomputer\", \"x\": -48.785587401637116, \"y\": -15.521845441139185}, {\"id\": 463, \"label\": \"SkelCL: A high-level\\nextension of OpenCL\\nfor multi-GPU\\nsystems\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"SkelCL: A high-level extension of OpenCL for multi-GPU systems\", \"x\": 50.329859835762434, \"y\": 88.19368847630268}, {\"id\": 466, \"label\": \"OpenMC: Towards\\nsimplifying\\nprogramming for\\ntianhe\\nsupercomputers\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"OpenMC: Towards simplifying programming for tianhe supercomputers\", \"x\": -47.953491604129894, \"y\": -48.79376392365089}, {\"id\": 470, \"label\": \"Strategies for\\nmaximizing\\nutilization on\\nmulti-CPU and multi-\\nGPU heterogeneous\\narchitectures\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 24.55882453918457, \"title\": \"Strategies for maximizing utilization on multi-CPU and multi-GPU heterogeneous architectures\", \"x\": 41.7858001289886, \"y\": 122.18182342678097}, {\"id\": 474, \"label\": \"Cardiac simulation\\non multi-GPU\\nplatform\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 18.97058868408203, \"title\": \"Cardiac simulation on multi-GPU platform\", \"x\": -0.9545893829756837, \"y\": -65.22843358686634}, {\"id\": 481, \"label\": \"MPtostream: An\\nOpenMP compiler for\\nCPU-GPU\\nheterogeneous\\nparallel systems\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"MPtostream: An OpenMP compiler for CPU-GPU heterogeneous parallel systems\", \"x\": -42.20258800179363, \"y\": -24.897835869134394}, {\"id\": 482, \"label\": \"Toward a software\\ntransactional memory\\nfor heterogeneous\\nCPU\\u2013GPU processors\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Toward a software transactional memory for heterogeneous CPU\\u2013GPU processors\", \"x\": 5.586652278027756, \"y\": 188.21561588764524}, {\"id\": 491, \"label\": \"CUDASW++ 3.0:\\naccelerating Smith-\\nWaterman protein\\ndatabase search by\\ncoupling CPU and GPU\\nSIMD instructions.\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 27.352941513061523, \"title\": \"CUDASW++ 3.0: accelerating Smith-Waterman protein database search by coupling CPU and GPU SIMD instructions.\", \"x\": 152.0715442875626, \"y\": -13.285821650501893}, {\"id\": 492, \"label\": \"DOPA: GPU-based\\nprotein alignment\\nusing database and\\nmemory access\\noptimizations\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"DOPA: GPU-based protein alignment using database and memory access optimizations\", \"x\": 159.42147533046034, \"y\": -4.816874283059061}, {\"id\": 496, \"label\": \"Addressing GPU on-\\nchip shared memory\\nbank conflicts using\\nelastic pipeline\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Addressing GPU on-chip shared memory bank conflicts using elastic pipeline\", \"x\": 38.034083602151355, \"y\": -9.608048099250405}, {\"id\": 499, \"label\": \"Scaling up\\nMapReduce-based Big\\nData Processing on\\nMulti-GPU systems\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 18.97058868408203, \"title\": \"Scaling up MapReduce-based Big Data Processing on Multi-GPU systems\", \"x\": 51.680062213930086, \"y\": 134.53362260164351}, {\"id\": 508, \"label\": \"Stencil computations\\non heterogeneous\\nplatforms for the\\nJacobi method: GPUs\\nversus Cell BE\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 27.352941513061523, \"title\": \"Stencil computations on heterogeneous platforms for the Jacobi method: GPUs versus Cell BE\", \"x\": -15.970573983939353, \"y\": -72.53740030776038}, {\"id\": 510, \"label\": \"Introducing and\\nimplementing the\\nallpairs skeleton\\nfor programming\\nmulti-GPU Systems\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Introducing and implementing the allpairs skeleton for programming multi-GPU Systems\", \"x\": -122.73135406335528, \"y\": 127.57000024244564}, {\"id\": 512, \"label\": \"Optimizing tensor\\ncontraction\\nexpressions for\\nhybrid CPU-GPU\\nexecution\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Optimizing tensor contraction expressions for hybrid CPU-GPU execution\", \"x\": -32.071114597693686, \"y\": 3.1914937580039604}, {\"id\": 539, \"label\": \"Offloading data\\nencryption to GPU in\\ndatabase systems\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Offloading data encryption to GPU in database systems\", \"x\": 51.68768333093016, \"y\": -51.16714152165434}, {\"id\": 546, \"label\": \"High-Level\\nProgramming for\\nMany-Cores Using\\nC++14 and the STL\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"High-Level Programming for Many-Cores Using C++14 and the STL\", \"x\": -94.52396666171657, \"y\": 112.74251670489994}, {\"id\": 547, \"label\": \"RT-CUDA: A Software\\nTool for CUDA Code\\nRestructuring\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"RT-CUDA: A Software Tool for CUDA Code Restructuring\", \"x\": -116.13964046101879, \"y\": 101.68110655465996}, {\"id\": 548, \"label\": \"Parallel data mining\\ntechniques on\\nGraphics Processing\\nUnit with Compute\\nUnified Device\\nArchitecture (CUDA)\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 32.94117736816406, \"title\": \"Parallel data mining techniques on Graphics Processing Unit with Compute Unified Device Architecture (CUDA)\", \"x\": 57.441349887496955, \"y\": -39.19685861767704}, {\"id\": 561, \"label\": \"A GPU implementation\\nof a structural-\\nsimilarity-based\\naerial-image\\nclassification\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 21.764705657958984, \"title\": \"A GPU implementation of a structural-similarity-based aerial-image classification\", \"x\": 38.932519705401624, \"y\": -44.156907568311944}, {\"id\": 564, \"label\": \"GPU-accelerated\\nlevel-set\\nsegmentation\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"GPU-accelerated level-set segmentation\", \"x\": 61.82166515644974, \"y\": -71.40638848623834}, {\"id\": 570, \"label\": \"Gene regulatory\\nnetworks inference\\nusing a multi-GPU\\nexhaustive search\\nalgorithm\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Gene regulatory networks inference using a multi-GPU exhaustive search algorithm\", \"x\": 73.37425240799887, \"y\": 114.69458746538966}, {\"id\": 604, \"label\": \"Extending OpenMP to\\nsurvive the\\nheterogeneous multi-\\ncore era\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Extending OpenMP to survive the heterogeneous multi-core era\", \"x\": -66.65381036265713, \"y\": -8.016984732642927}, {\"id\": 605, \"label\": \"Speeding up the\\nevaluation phase of\\nGP classification\\nalgorithms on GPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 18.97058868408203, \"title\": \"Speeding up the evaluation phase of GP classification algorithms on GPUs\", \"x\": 66.34991750796436, \"y\": -34.93620054791177}, {\"id\": 608, \"label\": \"Medical image\\nsegmentation with\\ndeformable models on\\ngraphics processing\\nunits\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 18.97058868408203, \"title\": \"Medical image segmentation with deformable models on graphics processing units\", \"x\": 54.891101029922936, \"y\": -57.74073845936723}, {\"id\": 609, \"label\": \"Correlating radio\\nastronomy signals\\nwith many-core\\nhardware\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Correlating radio astronomy signals with many-core hardware\", \"x\": 44.218821632857804, \"y\": 12.69723759751845}, {\"id\": 620, \"label\": \"High performance\\ndata clustering: A\\ncomparative analysis\\nof performance for\\nGPU, RASC, MPI, and\\nOpenMP\\nimplementations\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"High performance data clustering: A comparative analysis of performance for GPU, RASC, MPI, and OpenMP implementations\", \"x\": 67.3309120475585, \"y\": 112.88918721287439}, {\"id\": 633, \"label\": \"Adaptive fast\\nmultipole methods on\\nthe GPU\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Adaptive fast multipole methods on the GPU\", \"x\": -29.8689126742957, \"y\": -84.98851981439584}, {\"id\": 636, \"label\": \"Parallelization of\\nlarge vector\\nsimilarity\\ncomputations in a\\nhybrid CPU+GPU\\nenvironment\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Parallelization of large vector similarity computations in a hybrid CPU+GPU environment\", \"x\": 10.992900641315503, \"y\": 28.591738454512818}, {\"id\": 644, \"label\": \"GASAL2: A GPU\\naccelerated sequence\\nalignment library\\nfor high-throughput\\nNGS data\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"GASAL2: A GPU accelerated sequence alignment library for high-throughput NGS data\", \"x\": 160.28896666637868, \"y\": -14.551334859355702}, {\"id\": 655, \"label\": \"GPU-accelerated\\npreconditioned\\niterative linear\\nsolvers\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"GPU-accelerated preconditioned iterative linear solvers\", \"x\": -31.919275631758673, \"y\": -88.45959322419276}, {\"id\": 656, \"label\": \"GPU-based collision\\nanalysis between a\\nmulti-body system\\nand numerous\\nparticles\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"GPU-based collision analysis between a multi-body system and numerous particles\", \"x\": 120.52730488714306, \"y\": -24.818599022821363}, {\"id\": 660, \"label\": \"Hybrid multi-GPU\\ncomputing:\\naccelerated kernels\\nfor segmentation and\\nobject detection\\nwith medical image\\nprocessing\\napplications\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Hybrid multi-GPU computing: accelerated kernels for segmentation and object detection with medical image processing applications\", \"x\": -108.93643894444878, \"y\": -1.767799391573767}, {\"id\": 666, \"label\": \"A parallel pattern\\nfor iterative\\nstencil + reduce\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"A parallel pattern for iterative stencil + reduce\", \"x\": -109.21997335920058, \"y\": 102.31076950788147}, {\"id\": 670, \"label\": \"Parallelization of\\nFull Search Motion\\nEstimation algorithm\\nfor parallel and\\ndistributed\\nplatforms\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Parallelization of Full Search Motion Estimation algorithm for parallel and distributed platforms\", \"x\": 112.91299287397852, \"y\": -86.65823167839001}, {\"id\": 685, \"label\": \"Design Flow for GPU\\nand Multicore\\nExecution of Dynamic\\nDataflow Programs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Design Flow for GPU and Multicore Execution of Dynamic Dataflow Programs\", \"x\": 12.183590994410205, \"y\": -53.324658941928575}, {\"id\": 705, \"label\": \"Effective naive\\nBayes nearest\\nneighbor based image\\nclassification on\\nGPU\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Effective naive Bayes nearest neighbor based image classification on GPU\", \"x\": 63.85284676586857, \"y\": 145.09473959759873}, {\"id\": 711, \"label\": \"Enhancing GPU\\nparallelism in\\nnature-inspired\\nalgorithms\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Enhancing GPU parallelism in nature-inspired algorithms\", \"x\": 70.73540033371225, \"y\": -30.664432655226168}, {\"id\": 739, \"label\": \"On GPU\\u2013CUDA as\\npreprocessing of\\nfuzzy-rough data\\nreduction by means\\nof singular value\\ndecomposition\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"On GPU\\u2013CUDA as preprocessing of fuzzy-rough data reduction by means of singular value decomposition\", \"x\": 4.323703892809986, \"y\": -4.135094352734839}, {\"id\": 741, \"label\": \"MilkyWay-2\\nsupercomputer:\\nSystem and\\napplication\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 18.97058868408203, \"title\": \"MilkyWay-2 supercomputer: System and application\", \"x\": -47.47611118530658, \"y\": -58.84040628735832}, {\"id\": 756, \"label\": \"High performance\\nevaluation of\\nevolutionary-mined\\nassociation rules on\\nGPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"High performance evaluation of evolutionary-mined association rules on GPUs\", \"x\": 69.81864380109309, \"y\": -39.45019128602855}, {\"id\": 762, \"label\": \"Energy cost\\nevaluation of\\nparallel algorithms\\nfor multiprocessor\\nsystems\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Energy cost evaluation of parallel algorithms for multiprocessor systems\", \"x\": -13.310295668762771, \"y\": 10.753777440927363}, {\"id\": 771, \"label\": \"Simultaneous CPU\\u2013GPU\\nExecution of Data\\nParallel Algorithmic\\nSkeletons\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Simultaneous CPU\\u2013GPU Execution of Data Parallel Algorithmic Skeletons\", \"x\": -97.70404645512019, \"y\": 105.90164122992417}, {\"id\": 786, \"label\": \"CUDASW++2.0:\\nEnhanced Smith-\\nWaterman protein\\ndatabase search on\\nCUDA-enabled GPUs\\nbased on SIMT and\\nvirtualized SIMD\\nabstractions\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 21.764705657958984, \"title\": \"CUDASW++2.0: Enhanced Smith-Waterman protein database search on CUDA-enabled GPUs based on SIMT and virtualized SIMD abstractions\", \"x\": 134.4972719871022, \"y\": -17.228311976859647}, {\"id\": 788, \"label\": \"Solving finite\\ndifference linear\\nsystems on GPUs:\\nCUDA based parallel\\nexplicit\\npreconditioned\\nbiconjugate\\nconjugate gradient\\ntype methods\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 18.97058868408203, \"title\": \"Solving finite difference linear systems on GPUs: CUDA based parallel explicit preconditioned biconjugate conjugate gradient type methods\", \"x\": -4.402681918762127, \"y\": -61.38878285147453}, {\"id\": 789, \"label\": \"Data layout\\ntransformation\\nexploiting memory-\\nlevel parallelism in\\nstructured grid\\nmany-core\\napplications\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Data layout transformation exploiting memory-level parallelism in structured grid many-core applications\", \"x\": -114.00574457651189, \"y\": 22.561438369418816}, {\"id\": 792, \"label\": \"A framework for\\naccelerating local\\nfeature extraction\\nwith OpenCL on\\nmulti-core CPUs and\\nco-processors\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"A framework for accelerating local feature extraction with OpenCL on multi-core CPUs and co-processors\", \"x\": 121.24990689915224, \"y\": -93.99324846212228}, {\"id\": 825, \"label\": \"PPModel: A modeling\\ntool for source code\\nmaintenance and\\noptimization of\\nparallel programs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"PPModel: A modeling tool for source code maintenance and optimization of parallel programs\", \"x\": -91.67219424116392, \"y\": -60.795848769406845}, {\"id\": 852, \"label\": \"A view of\\nprogramming scalable\\ndata analysis: from\\nclouds to exascale\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"A view of programming scalable data analysis: from clouds to exascale\", \"x\": 26.415483684681806, \"y\": -70.6538457878514}, {\"id\": 854, \"label\": \"SkePU 2: Flexible\\nand Type-Safe\\nSkeleton Programming\\nfor Heterogeneous\\nParallel Systems\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 27.352941513061523, \"title\": \"SkePU 2: Flexible and Type-Safe Skeleton Programming for Heterogeneous Parallel Systems\", \"x\": -102.73055459157142, \"y\": 92.12197437434445}, {\"id\": 855, \"label\": \"Generating custom\\ncode for efficient\\nquery execution on\\nheterogeneous\\nprocessors\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Generating custom code for efficient query execution on heterogeneous processors\", \"x\": -41.076312009304395, \"y\": 35.280506100159016}, {\"id\": 862, \"label\": \"Dawning nebulae: A\\nPetaFLOPS\\nsupercomputer with a\\nheterogeneous\\nstructure\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Dawning nebulae: A PetaFLOPS supercomputer with a heterogeneous structure\", \"x\": -44.39410934008284, \"y\": -35.44785477992093}, {\"id\": 875, \"label\": \"Fast and accurate\\nprotein substructure\\nsearching with\\nsimulated annealing\\nand GPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 18.97058868408203, \"title\": \"Fast and accurate protein substructure searching with simulated annealing and GPUs\", \"x\": 149.08617606343037, \"y\": -18.794137195145904}, {\"id\": 878, \"label\": \"Parallel mutual\\ninformation\\nestimation for\\ninferring gene\\nregulatory networks\\non GPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Parallel mutual information estimation for inferring gene regulatory networks on GPUs\", \"x\": 18.37011471492788, \"y\": -39.818400820136304}, {\"id\": 883, \"label\": \"Performance\\nevaluation of\\nUnified Memory with\\nprefetching and\\noversubscription for\\nselected parallel\\nCUDA applications on\\nNVIDIA Pascal and\\nVolta GPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Performance evaluation of Unified Memory with prefetching and oversubscription for selected parallel CUDA applications on NVIDIA Pascal and Volta GPUs\", \"x\": 7.689577836099897, \"y\": -111.27399025400528}, {\"id\": 895, \"label\": \"Accelerating large-\\nscale protein\\nstructure alignments\\nwith graphics\\nprocessing units\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Accelerating large-scale protein structure alignments with graphics processing units\", \"x\": 155.43935533196031, \"y\": -20.96795900713483}, {\"id\": 913, \"label\": \"Performance\\nevaluation of\\nunified memory and\\ndynamic parallelism\\nfor selected\\nparallel CUDA\\napplications\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Performance evaluation of unified memory and dynamic parallelism for selected parallel CUDA applications\", \"x\": 4.3004964807575625, \"y\": 29.527732043204335}, {\"id\": 920, \"label\": \"A preliminary\\nevaluation of\\nOpenACC\\nimplementations\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"A preliminary evaluation of OpenACC implementations\", \"x\": 47.034685295115565, \"y\": -12.802539590182695}, {\"id\": 921, \"label\": \"Optimizing the\\nMatrix\\nMultiplication Using\\nStrassen and\\nWinograd Algorithms\\nwith Limited\\nRecursions on Many-\\nCore\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Optimizing the Matrix Multiplication Using Strassen and Winograd Algorithms with Limited Recursions on Many-Core\", \"x\": -111.46927725753929, \"y\": 98.77787186707079}, {\"id\": 926, \"label\": \"Protein alignment\\nalgorithms with an\\nefficient\\nbacktracking routine\\non multiple GPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 21.764705657958984, \"title\": \"Protein alignment algorithms with an efficient backtracking routine on multiple GPUs\", \"x\": 147.36538001505247, \"y\": -9.666702338626086}, {\"id\": 935, \"label\": \"A scalable and fast\\nOPTICS for\\nclustering\\ntrajectory big data\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"A scalable and fast OPTICS for clustering trajectory big data\", \"x\": 18.59955379592442, \"y\": -52.61744421494949}, {\"id\": 939, \"label\": \"Virtualizing high-\\nend GPGPUs on ARM\\nclusters for the\\nnext generation of\\nhigh performance\\ncloud computing\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Virtualizing high-end GPGPUs on ARM clusters for the next generation of high performance cloud computing\", \"x\": 115.07099598172069, \"y\": -21.6762741226937}, {\"id\": 946, \"label\": \"A parallel algorithm\\nfor the Riesz\\nfractional reaction-\\ndiffusion equation\\nwith explicit finite\\ndifference method\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 18.97058868408203, \"title\": \"A parallel algorithm for the Riesz fractional reaction-diffusion equation with explicit finite difference method\", \"x\": -39.08759703174296, \"y\": -80.6772540534114}, {\"id\": 947, \"label\": \"Formalised\\nComposition and\\nInteraction for\\nHeterogeneous\\nStructured\\nParallelism\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Formalised Composition and Interaction for Heterogeneous Structured Parallelism\", \"x\": -98.56343268368649, \"y\": 98.1720562616151}, {\"id\": 951, \"label\": \"Toward fault-\\ntolerant hybrid\\nprogramming over\\nlarge-scale\\nheterogeneous\\nclusters via checkpo\\ninting/restart\\noptimization\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Toward fault-tolerant hybrid programming over large-scale heterogeneous clusters via checkpointing/restart optimization\", \"x\": 1.6600122227860346, \"y\": 188.37721167803048}, {\"id\": 957, \"label\": \"Efficient scheduling\\nof streams on GPGPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Efficient scheduling of streams on GPGPUs\", \"x\": 8.22802763999975, \"y\": -126.12783868888795}, {\"id\": 963, \"label\": \"Accelerating MRI\\nreconstruction via\\nthree-dimensional\\ndual-dictionary\\nlearning using CUDA\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Accelerating MRI reconstruction via three-dimensional dual-dictionary learning using CUDA\", \"x\": -107.73396898045155, \"y\": 3.1544760512260845}, {\"id\": 966, \"label\": \"CUDASW++: Optimizing\\nSmith-Waterman\\nsequence database\\nsearches for CUDA-\\nenabled graphics\\nprocessing units\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 21.764705657958984, \"title\": \"CUDASW++: Optimizing Smith-Waterman sequence database searches for CUDA-enabled graphics processing units\", \"x\": 143.8882629608313, \"y\": -16.34871914778348}, {\"id\": 972, \"label\": \"A Hybrid Task Graph\\nScheduler for High\\nPerformance Image\\nProcessing Workflows\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"A Hybrid Task Graph Scheduler for High Performance Image Processing Workflows\", \"x\": 12.83386949053449, \"y\": -61.59554885680468}, {\"id\": 990, \"label\": \"Optimizing Monte\\nCarlo radiosity on\\ngraphics hardware\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Optimizing Monte Carlo radiosity on graphics hardware\", \"x\": -1.4008314048889217, \"y\": -41.96140127049525}, {\"id\": 991, \"label\": \"Parallel refinement\\nof slanted 3D\\nreconstruction using\\ndense stereo induced\\nfrom symmetry\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Parallel refinement of slanted 3D reconstruction using dense stereo induced from symmetry\", \"x\": -104.4184196384963, \"y\": 0.36334046894470023}, {\"id\": 992, \"label\": \"Fast network\\ncentrality analysis\\nusing GPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Fast network centrality analysis using GPUs\", \"x\": -157.21441204511777, \"y\": 180.9843178891049}, {\"id\": 998, \"label\": \"A survey on\\nplatforms for big\\ndata analytics\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"A survey on platforms for big data analytics\", \"x\": 22.39363609422927, \"y\": -60.16096070733966}, {\"id\": 1010, \"label\": \"A statistical\\nperformance analyzer\\nframework for OpenCL\\nkernels on Nvidia\\nGPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"A statistical performance analyzer framework for OpenCL kernels on Nvidia GPUs\", \"x\": -15.490595926809672, \"y\": 39.5777748604004}, {\"id\": 1016, \"label\": \"Simulation of one-\\nlayer shallow water\\nsystems on multicore\\nand CUDA\\narchitectures\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Simulation of one-layer shallow water systems on multicore and CUDA architectures\", \"x\": 14.797675547772858, \"y\": -19.66472382629069}, {\"id\": 1029, \"label\": \"The TianHe-1A\\nsupercomputer: Its\\nhardware and\\nsoftware\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 41.32352828979492, \"title\": \"The TianHe-1A supercomputer: Its hardware and software\", \"x\": -34.819639072740465, \"y\": -30.192367096646926}, {\"id\": 1041, \"label\": \"Energy efficiency of\\nload balancing for\\ndata-parallel\\napplications in\\nheterogeneous\\nsystems\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Energy efficiency of load balancing for data-parallel applications in heterogeneous systems\", \"x\": 3.163226368944035, \"y\": 174.59036584695892}, {\"id\": 1087, \"label\": \"Hybrid\\nstatic\\u2013dynamic\\nselection of\\nimplementation\\nalternatives in\\nheterogeneous\\nenvironments\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Hybrid static\\u2013dynamic selection of implementation alternatives in heterogeneous environments\", \"x\": 6.264895738573001, \"y\": 194.05804935921628}, {\"id\": 1092, \"label\": \"The Fraunhofer\\nvirtual machine: A\\ncommunication\\nlibrary and runtime\\nsystem based on the\\nRDMA model\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"The Fraunhofer virtual machine: A communication library and runtime system based on the RDMA model\", \"x\": 24.504875905181667, \"y\": 117.60150858306433}, {\"id\": 1113, \"label\": \"Optimizing an APSP\\nimplementation for\\nNVIDIA GPUs using\\nkernel\\ncharacterization\\ncriteria\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Optimizing an APSP implementation for NVIDIA GPUs using kernel characterization criteria\", \"x\": -150.99232124041473, \"y\": 175.39653681516148}, {\"id\": 1147, \"label\": \"Prediction models\\nfor performance,\\npower, and energy\\nefficiency of\\nsoftware executed on\\nheterogeneous\\nhardware\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Prediction models for performance, power, and energy efficiency of software executed on heterogeneous hardware\", \"x\": 2.0923515159185126, \"y\": 193.71791590168144}, {\"id\": 1148, \"label\": \"The 2D wavelet\\ntransform on\\nemerging\\narchitectures: GPUs\\nand multicores\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"The 2D wavelet transform on emerging architectures: GPUs and multicores\", \"x\": 17.674311466524934, \"y\": -32.42904711149508}, {\"id\": 1150, \"label\": \"High-performance\\noptimizations on\\ntiled many-core\\nembedded systems: A\\nmatrix\\nmultiplication case\\nstudy\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"High-performance optimizations on tiled many-core embedded systems: A matrix multiplication case study\", \"x\": 50.18366022207218, \"y\": 106.19189835106421}, {\"id\": 1160, \"label\": \"Applications of the\\nMapReduce\\nprogramming\\nframework to\\nclinical big data\\nanalysis: Current\\nlandscape and future\\ntrends\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Applications of the MapReduce programming framework to clinical big data analysis: Current landscape and future trends\", \"x\": 40.58791008761934, \"y\": 127.73466258171474}, {\"id\": 1189, \"label\": \"Message-passing\\nprogramming for\\nembedded multicore\\nsignal-processing\\nplatforms\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Message-passing programming for embedded multicore signal-processing platforms\", \"x\": -74.35588544553528, \"y\": -14.16311871607837}, {\"id\": 1207, \"label\": \"Automatic code\\ngeneration and\\ntuning for stencil\\nkernels on modern\\nshared memory\\narchitectures\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Automatic code generation and tuning for stencil kernels on modern shared memory architectures\", \"x\": -23.679792379725473, \"y\": -16.614420820944737}, {\"id\": 1220, \"label\": \"Simultaneous\\nmultiprocessing in a\\nsoftware-defined\\nheterogeneous FPGA\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 21.764705657958984, \"title\": \"Simultaneous multiprocessing in a software-defined heterogeneous FPGA\", \"x\": 10.871510177586414, \"y\": 177.40391397409473}, {\"id\": 1262, \"label\": \"An efficient\\nparallel solution\\nfor Caputo\\nfractional reaction-\\ndiffusion equation\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"An efficient parallel solution for Caputo fractional reaction-diffusion equation\", \"x\": -49.26363444944581, \"y\": -76.66234249030828}, {\"id\": 1302, \"label\": \"HAT: History-based\\nauto-tuning\\nMapReduce in\\nheterogeneous\\nenvironments\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"HAT: History-based auto-tuning MapReduce in heterogeneous environments\", \"x\": 96.6905203562153, \"y\": 161.3642568387199}, {\"id\": 1309, \"label\": \"Efficient\\ncomputation of motif\\ndiscovery on Intel\\nMany Integrated Core\\n(MIC) Architecture\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Efficient computation of motif discovery on Intel Many Integrated Core (MIC) Architecture\", \"x\": -57.65868746214322, \"y\": -67.3003661721655}, {\"id\": 1311, \"label\": \"pocl: A Performance-\\nPortable OpenCL\\nImplementation\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"pocl: A Performance-Portable OpenCL Implementation\", \"x\": 118.60740866980356, \"y\": -96.35879241515582}]);\n        edges = new vis.DataSet([{\"from\": 13, \"title\": \"2\", \"to\": 458, \"width\": 2}, {\"from\": 13, \"title\": \"1\", \"to\": 1092, \"width\": 1}, {\"from\": 13, \"title\": \"1\", \"to\": 361, \"width\": 1}, {\"from\": 13, \"title\": \"1\", \"to\": 423, \"width\": 1}, {\"from\": 18, \"title\": \"1\", \"to\": 458, \"width\": 1}, {\"from\": 18, \"title\": \"2\", \"to\": 311, \"width\": 2}, {\"from\": 18, \"title\": \"1\", \"to\": 202, \"width\": 1}, {\"from\": 18, \"title\": \"1\", \"to\": 402, \"width\": 1}, {\"from\": 18, \"title\": \"1\", \"to\": 68, \"width\": 1}, {\"from\": 18, \"title\": \"1\", \"to\": 433, \"width\": 1}, {\"from\": 18, \"title\": \"1\", \"to\": 512, \"width\": 1}, {\"from\": 18, \"title\": \"1\", \"to\": 762, \"width\": 1}, {\"from\": 34, \"title\": \"1\", \"to\": 311, \"width\": 1}, {\"from\": 34, \"title\": \"1\", \"to\": 855, \"width\": 1}, {\"from\": 34, \"title\": \"1\", \"to\": 51, \"width\": 1}, {\"from\": 34, \"title\": \"1\", \"to\": 222, \"width\": 1}, {\"from\": 51, \"title\": \"1\", \"to\": 222, \"width\": 1}, {\"from\": 53, \"title\": \"1\", \"to\": 1113, \"width\": 1}, {\"from\": 53, \"title\": \"1\", \"to\": 510, \"width\": 1}, {\"from\": 60, \"title\": \"1\", \"to\": 68, \"width\": 1}, {\"from\": 60, \"title\": \"1\", \"to\": 878, \"width\": 1}, {\"from\": 64, \"title\": \"1\", \"to\": 128, \"width\": 1}, {\"from\": 64, \"title\": \"1\", \"to\": 262, \"width\": 1}, {\"from\": 67, \"title\": \"1\", \"to\": 222, \"width\": 1}, {\"from\": 67, \"title\": \"2\", \"to\": 311, \"width\": 2}, {\"from\": 68, \"title\": \"1\", \"to\": 92, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 141, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 237, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 548, \"width\": 1}, {\"from\": 68, \"title\": \"4\", \"to\": 189, \"width\": 4}, {\"from\": 68, \"title\": \"1\", \"to\": 293, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 609, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 990, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 1029, \"width\": 1}, {\"from\": 68, \"title\": \"2\", \"to\": 429, \"width\": 2}, {\"from\": 68, \"title\": \"1\", \"to\": 402, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 1207, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 311, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 202, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 508, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 788, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 474, \"width\": 1}, {\"from\": 68, \"title\": \"2\", \"to\": 249, \"width\": 2}, {\"from\": 68, \"title\": \"1\", \"to\": 426, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 878, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 1148, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 685, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 972, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 935, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 998, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 128, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 182, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 883, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 378, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 1016, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 739, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 146, \"width\": 1}, {\"from\": 91, \"title\": \"2\", \"to\": 311, \"width\": 2}, {\"from\": 91, \"title\": \"1\", \"to\": 604, \"width\": 1}, {\"from\": 91, \"title\": \"1\", \"to\": 1189, \"width\": 1}, {\"from\": 91, \"title\": \"1\", \"to\": 181, \"width\": 1}, {\"from\": 91, \"title\": \"1\", \"to\": 459, \"width\": 1}, {\"from\": 91, \"title\": \"1\", \"to\": 1029, \"width\": 1}, {\"from\": 91, \"title\": \"1\", \"to\": 202, \"width\": 1}, {\"from\": 106, \"title\": \"1\", \"to\": 222, \"width\": 1}, {\"from\": 106, \"title\": \"2\", \"to\": 913, \"width\": 2}, {\"from\": 106, \"title\": \"3\", \"to\": 146, \"width\": 3}, {\"from\": 106, \"title\": \"1\", \"to\": 636, \"width\": 1}, {\"from\": 115, \"title\": \"1\", \"to\": 972, \"width\": 1}, {\"from\": 121, \"title\": \"1\", \"to\": 376, \"width\": 1}, {\"from\": 121, \"title\": \"1\", \"to\": 222, \"width\": 1}, {\"from\": 125, \"title\": \"1\", \"to\": 189, \"width\": 1}, {\"from\": 128, \"title\": \"1\", \"to\": 202, \"width\": 1}, {\"from\": 128, \"title\": \"1\", \"to\": 262, \"width\": 1}, {\"from\": 134, \"title\": \"1\", \"to\": 378, \"width\": 1}, {\"from\": 141, \"title\": \"1\", \"to\": 608, \"width\": 1}, {\"from\": 141, \"title\": \"1\", \"to\": 561, \"width\": 1}, {\"from\": 141, \"title\": \"1\", \"to\": 548, \"width\": 1}, {\"from\": 141, \"title\": \"1\", \"to\": 539, \"width\": 1}, {\"from\": 146, \"title\": \"2\", \"to\": 267, \"width\": 2}, {\"from\": 146, \"title\": \"3\", \"to\": 222, \"width\": 3}, {\"from\": 146, \"title\": \"2\", \"to\": 913, \"width\": 2}, {\"from\": 146, \"title\": \"1\", \"to\": 636, \"width\": 1}, {\"from\": 146, \"title\": \"1\", \"to\": 739, \"width\": 1}, {\"from\": 155, \"title\": \"1\", \"to\": 358, \"width\": 1}, {\"from\": 181, \"title\": \"1\", \"to\": 604, \"width\": 1}, {\"from\": 181, \"title\": \"1\", \"to\": 1189, \"width\": 1}, {\"from\": 182, \"title\": \"1\", \"to\": 289, \"width\": 1}, {\"from\": 182, \"title\": \"1\", \"to\": 347, \"width\": 1}, {\"from\": 182, \"title\": \"1\", \"to\": 660, \"width\": 1}, {\"from\": 182, \"title\": \"1\", \"to\": 963, \"width\": 1}, {\"from\": 182, \"title\": \"1\", \"to\": 991, \"width\": 1}, {\"from\": 189, \"title\": \"1\", \"to\": 609, \"width\": 1}, {\"from\": 189, \"title\": \"1\", \"to\": 1029, \"width\": 1}, {\"from\": 189, \"title\": \"1\", \"to\": 429, \"width\": 1}, {\"from\": 189, \"title\": \"1\", \"to\": 756, \"width\": 1}, {\"from\": 189, \"title\": \"2\", \"to\": 605, \"width\": 2}, {\"from\": 189, \"title\": \"2\", \"to\": 548, \"width\": 2}, {\"from\": 189, \"title\": \"1\", \"to\": 786, \"width\": 1}, {\"from\": 189, \"title\": \"1\", \"to\": 440, \"width\": 1}, {\"from\": 189, \"title\": \"1\", \"to\": 939, \"width\": 1}, {\"from\": 189, \"title\": \"1\", \"to\": 711, \"width\": 1}, {\"from\": 189, \"title\": \"1\", \"to\": 419, \"width\": 1}, {\"from\": 189, \"title\": \"1\", \"to\": 344, \"width\": 1}, {\"from\": 200, \"title\": \"2\", \"to\": 222, \"width\": 2}, {\"from\": 200, \"title\": \"1\", \"to\": 342, \"width\": 1}, {\"from\": 200, \"title\": \"1\", \"to\": 363, \"width\": 1}, {\"from\": 202, \"title\": \"6\", \"to\": 311, \"width\": 6}, {\"from\": 202, \"title\": \"1\", \"to\": 459, \"width\": 1}, {\"from\": 202, \"title\": \"2\", \"to\": 1029, \"width\": 2}, {\"from\": 202, \"title\": \"1\", \"to\": 1207, \"width\": 1}, {\"from\": 202, \"title\": \"1\", \"to\": 481, \"width\": 1}, {\"from\": 202, \"title\": \"1\", \"to\": 512, \"width\": 1}, {\"from\": 204, \"title\": \"1\", \"to\": 1029, \"width\": 1}, {\"from\": 204, \"title\": \"1\", \"to\": 311, \"width\": 1}, {\"from\": 222, \"title\": \"4\", \"to\": 267, \"width\": 4}, {\"from\": 222, \"title\": \"1\", \"to\": 378, \"width\": 1}, {\"from\": 222, \"title\": \"4\", \"to\": 363, \"width\": 4}, {\"from\": 222, \"title\": \"1\", \"to\": 376, \"width\": 1}, {\"from\": 222, \"title\": \"1\", \"to\": 1010, \"width\": 1}, {\"from\": 222, \"title\": \"1\", \"to\": 913, \"width\": 1}, {\"from\": 222, \"title\": \"1\", \"to\": 342, \"width\": 1}, {\"from\": 222, \"title\": \"1\", \"to\": 245, \"width\": 1}, {\"from\": 249, \"title\": \"1\", \"to\": 508, \"width\": 1}, {\"from\": 249, \"title\": \"1\", \"to\": 788, \"width\": 1}, {\"from\": 249, \"title\": \"1\", \"to\": 474, \"width\": 1}, {\"from\": 249, \"title\": \"1\", \"to\": 426, \"width\": 1}, {\"from\": 249, \"title\": \"1\", \"to\": 561, \"width\": 1}, {\"from\": 249, \"title\": \"1\", \"to\": 378, \"width\": 1}, {\"from\": 259, \"title\": \"1\", \"to\": 1302, \"width\": 1}, {\"from\": 259, \"title\": \"1\", \"to\": 424, \"width\": 1}, {\"from\": 259, \"title\": \"1\", \"to\": 448, \"width\": 1}, {\"from\": 267, \"title\": \"1\", \"to\": 378, \"width\": 1}, {\"from\": 276, \"title\": \"1\", \"to\": 311, \"width\": 1}, {\"from\": 277, \"title\": \"1\", \"to\": 385, \"width\": 1}, {\"from\": 277, \"title\": \"1\", \"to\": 1113, \"width\": 1}, {\"from\": 277, \"title\": \"1\", \"to\": 992, \"width\": 1}, {\"from\": 289, \"title\": \"1\", \"to\": 347, \"width\": 1}, {\"from\": 311, \"title\": \"1\", \"to\": 604, \"width\": 1}, {\"from\": 311, \"title\": \"2\", \"to\": 1029, \"width\": 2}, {\"from\": 311, \"title\": \"1\", \"to\": 459, \"width\": 1}, {\"from\": 311, \"title\": \"1\", \"to\": 1207, \"width\": 1}, {\"from\": 311, \"title\": \"1\", \"to\": 854, \"width\": 1}, {\"from\": 311, \"title\": \"1\", \"to\": 512, \"width\": 1}, {\"from\": 342, \"title\": \"1\", \"to\": 363, \"width\": 1}, {\"from\": 343, \"title\": \"1\", \"to\": 825, \"width\": 1}, {\"from\": 343, \"title\": \"1\", \"to\": 395, \"width\": 1}, {\"from\": 344, \"title\": \"1\", \"to\": 670, \"width\": 1}, {\"from\": 347, \"title\": \"1\", \"to\": 789, \"width\": 1}, {\"from\": 351, \"title\": \"1\", \"to\": 666, \"width\": 1}, {\"from\": 351, \"title\": \"1\", \"to\": 854, \"width\": 1}, {\"from\": 351, \"title\": \"1\", \"to\": 921, \"width\": 1}, {\"from\": 351, \"title\": \"1\", \"to\": 547, \"width\": 1}, {\"from\": 358, \"title\": \"1\", \"to\": 378, \"width\": 1}, {\"from\": 361, \"title\": \"1\", \"to\": 423, \"width\": 1}, {\"from\": 378, \"title\": \"1\", \"to\": 496, \"width\": 1}, {\"from\": 378, \"title\": \"1\", \"to\": 920, \"width\": 1}, {\"from\": 378, \"title\": \"1\", \"to\": 561, \"width\": 1}, {\"from\": 378, \"title\": \"1\", \"to\": 1016, \"width\": 1}, {\"from\": 385, \"title\": \"1\", \"to\": 1113, \"width\": 1}, {\"from\": 385, \"title\": \"1\", \"to\": 992, \"width\": 1}, {\"from\": 395, \"title\": \"1\", \"to\": 1029, \"width\": 1}, {\"from\": 395, \"title\": \"1\", \"to\": 825, \"width\": 1}, {\"from\": 419, \"title\": \"1\", \"to\": 920, \"width\": 1}, {\"from\": 419, \"title\": \"1\", \"to\": 605, \"width\": 1}, {\"from\": 419, \"title\": \"1\", \"to\": 711, \"width\": 1}, {\"from\": 419, \"title\": \"1\", \"to\": 548, \"width\": 1}, {\"from\": 426, \"title\": \"1\", \"to\": 508, \"width\": 1}, {\"from\": 426, \"title\": \"1\", \"to\": 788, \"width\": 1}, {\"from\": 426, \"title\": \"1\", \"to\": 474, \"width\": 1}, {\"from\": 429, \"title\": \"1\", \"to\": 1029, \"width\": 1}, {\"from\": 429, \"title\": \"1\", \"to\": 1148, \"width\": 1}, {\"from\": 433, \"title\": \"1\", \"to\": 512, \"width\": 1}, {\"from\": 440, \"title\": \"9\", \"to\": 966, \"width\": 9}, {\"from\": 440, \"title\": \"6\", \"to\": 786, \"width\": 6}, {\"from\": 440, \"title\": \"3\", \"to\": 491, \"width\": 3}, {\"from\": 440, \"title\": \"2\", \"to\": 875, \"width\": 2}, {\"from\": 440, \"title\": \"1\", \"to\": 895, \"width\": 1}, {\"from\": 440, \"title\": \"1\", \"to\": 644, \"width\": 1}, {\"from\": 440, \"title\": \"1\", \"to\": 939, \"width\": 1}, {\"from\": 440, \"title\": \"2\", \"to\": 926, \"width\": 2}, {\"from\": 442, \"title\": \"1\", \"to\": 957, \"width\": 1}, {\"from\": 442, \"title\": \"1\", \"to\": 445, \"width\": 1}, {\"from\": 442, \"title\": \"1\", \"to\": 883, \"width\": 1}, {\"from\": 445, \"title\": \"1\", \"to\": 957, \"width\": 1}, {\"from\": 445, \"title\": \"1\", \"to\": 883, \"width\": 1}, {\"from\": 447, \"title\": \"1\", \"to\": 1150, \"width\": 1}, {\"from\": 447, \"title\": \"1\", \"to\": 470, \"width\": 1}, {\"from\": 447, \"title\": \"1\", \"to\": 463, \"width\": 1}, {\"from\": 447, \"title\": \"1\", \"to\": 620, \"width\": 1}, {\"from\": 448, \"title\": \"1\", \"to\": 705, \"width\": 1}, {\"from\": 448, \"title\": \"1\", \"to\": 499, \"width\": 1}, {\"from\": 458, \"title\": \"1\", \"to\": 1092, \"width\": 1}, {\"from\": 458, \"title\": \"1\", \"to\": 1160, \"width\": 1}, {\"from\": 458, \"title\": \"1\", \"to\": 499, \"width\": 1}, {\"from\": 458, \"title\": \"1\", \"to\": 470, \"width\": 1}, {\"from\": 459, \"title\": \"1\", \"to\": 1029, \"width\": 1}, {\"from\": 463, \"title\": \"1\", \"to\": 1150, \"width\": 1}, {\"from\": 463, \"title\": \"1\", \"to\": 470, \"width\": 1}, {\"from\": 463, \"title\": \"1\", \"to\": 609, \"width\": 1}, {\"from\": 466, \"title\": \"1\", \"to\": 1029, \"width\": 1}, {\"from\": 466, \"title\": \"1\", \"to\": 741, \"width\": 1}, {\"from\": 470, \"title\": \"1\", \"to\": 1160, \"width\": 1}, {\"from\": 470, \"title\": \"1\", \"to\": 499, \"width\": 1}, {\"from\": 470, \"title\": \"1\", \"to\": 1150, \"width\": 1}, {\"from\": 470, \"title\": \"1\", \"to\": 1220, \"width\": 1}, {\"from\": 474, \"title\": \"1\", \"to\": 508, \"width\": 1}, {\"from\": 474, \"title\": \"1\", \"to\": 788, \"width\": 1}, {\"from\": 481, \"title\": \"1\", \"to\": 1029, \"width\": 1}, {\"from\": 482, \"title\": \"1\", \"to\": 1147, \"width\": 1}, {\"from\": 482, \"title\": \"1\", \"to\": 1220, \"width\": 1}, {\"from\": 482, \"title\": \"1\", \"to\": 1087, \"width\": 1}, {\"from\": 482, \"title\": \"1\", \"to\": 951, \"width\": 1}, {\"from\": 491, \"title\": \"2\", \"to\": 966, \"width\": 2}, {\"from\": 491, \"title\": \"1\", \"to\": 875, \"width\": 1}, {\"from\": 491, \"title\": \"1\", \"to\": 895, \"width\": 1}, {\"from\": 491, \"title\": \"1\", \"to\": 644, \"width\": 1}, {\"from\": 491, \"title\": \"1\", \"to\": 492, \"width\": 1}, {\"from\": 491, \"title\": \"2\", \"to\": 926, \"width\": 2}, {\"from\": 491, \"title\": \"1\", \"to\": 786, \"width\": 1}, {\"from\": 492, \"title\": \"1\", \"to\": 926, \"width\": 1}, {\"from\": 496, \"title\": \"1\", \"to\": 920, \"width\": 1}, {\"from\": 499, \"title\": \"1\", \"to\": 1160, \"width\": 1}, {\"from\": 499, \"title\": \"1\", \"to\": 705, \"width\": 1}, {\"from\": 508, \"title\": \"1\", \"to\": 788, \"width\": 1}, {\"from\": 508, \"title\": \"1\", \"to\": 946, \"width\": 1}, {\"from\": 508, \"title\": \"1\", \"to\": 633, \"width\": 1}, {\"from\": 508, \"title\": \"1\", \"to\": 655, \"width\": 1}, {\"from\": 510, \"title\": \"1\", \"to\": 854, \"width\": 1}, {\"from\": 539, \"title\": \"1\", \"to\": 608, \"width\": 1}, {\"from\": 539, \"title\": \"1\", \"to\": 561, \"width\": 1}, {\"from\": 539, \"title\": \"1\", \"to\": 548, \"width\": 1}, {\"from\": 546, \"title\": \"1\", \"to\": 771, \"width\": 1}, {\"from\": 547, \"title\": \"1\", \"to\": 666, \"width\": 1}, {\"from\": 547, \"title\": \"1\", \"to\": 854, \"width\": 1}, {\"from\": 547, \"title\": \"1\", \"to\": 921, \"width\": 1}, {\"from\": 548, \"title\": \"1\", \"to\": 756, \"width\": 1}, {\"from\": 548, \"title\": \"2\", \"to\": 605, \"width\": 2}, {\"from\": 548, \"title\": \"1\", \"to\": 608, \"width\": 1}, {\"from\": 548, \"title\": \"1\", \"to\": 561, \"width\": 1}, {\"from\": 548, \"title\": \"1\", \"to\": 711, \"width\": 1}, {\"from\": 561, \"title\": \"1\", \"to\": 608, \"width\": 1}, {\"from\": 564, \"title\": \"1\", \"to\": 608, \"width\": 1}, {\"from\": 570, \"title\": \"1\", \"to\": 620, \"width\": 1}, {\"from\": 604, \"title\": \"1\", \"to\": 1189, \"width\": 1}, {\"from\": 605, \"title\": \"2\", \"to\": 756, \"width\": 2}, {\"from\": 605, \"title\": \"1\", \"to\": 711, \"width\": 1}, {\"from\": 633, \"title\": \"1\", \"to\": 946, \"width\": 1}, {\"from\": 633, \"title\": \"1\", \"to\": 655, \"width\": 1}, {\"from\": 636, \"title\": \"1\", \"to\": 913, \"width\": 1}, {\"from\": 655, \"title\": \"1\", \"to\": 946, \"width\": 1}, {\"from\": 656, \"title\": \"1\", \"to\": 939, \"width\": 1}, {\"from\": 660, \"title\": \"1\", \"to\": 963, \"width\": 1}, {\"from\": 660, \"title\": \"1\", \"to\": 991, \"width\": 1}, {\"from\": 666, \"title\": \"1\", \"to\": 854, \"width\": 1}, {\"from\": 666, \"title\": \"1\", \"to\": 921, \"width\": 1}, {\"from\": 670, \"title\": \"1\", \"to\": 792, \"width\": 1}, {\"from\": 670, \"title\": \"1\", \"to\": 1311, \"width\": 1}, {\"from\": 685, \"title\": \"1\", \"to\": 972, \"width\": 1}, {\"from\": 741, \"title\": \"1\", \"to\": 946, \"width\": 1}, {\"from\": 741, \"title\": \"1\", \"to\": 1262, \"width\": 1}, {\"from\": 741, \"title\": \"2\", \"to\": 1029, \"width\": 2}, {\"from\": 741, \"title\": \"1\", \"to\": 1309, \"width\": 1}, {\"from\": 771, \"title\": \"1\", \"to\": 854, \"width\": 1}, {\"from\": 786, \"title\": \"6\", \"to\": 966, \"width\": 6}, {\"from\": 786, \"title\": \"1\", \"to\": 939, \"width\": 1}, {\"from\": 786, \"title\": \"1\", \"to\": 926, \"width\": 1}, {\"from\": 792, \"title\": \"1\", \"to\": 1311, \"width\": 1}, {\"from\": 852, \"title\": \"1\", \"to\": 998, \"width\": 1}, {\"from\": 854, \"title\": \"1\", \"to\": 921, \"width\": 1}, {\"from\": 854, \"title\": \"1\", \"to\": 947, \"width\": 1}, {\"from\": 862, \"title\": \"1\", \"to\": 1029, \"width\": 1}, {\"from\": 875, \"title\": \"2\", \"to\": 966, \"width\": 2}, {\"from\": 875, \"title\": \"1\", \"to\": 895, \"width\": 1}, {\"from\": 875, \"title\": \"1\", \"to\": 926, \"width\": 1}, {\"from\": 883, \"title\": \"1\", \"to\": 957, \"width\": 1}, {\"from\": 895, \"title\": \"1\", \"to\": 966, \"width\": 1}, {\"from\": 926, \"title\": \"2\", \"to\": 966, \"width\": 2}, {\"from\": 935, \"title\": \"1\", \"to\": 998, \"width\": 1}, {\"from\": 946, \"title\": \"1\", \"to\": 1262, \"width\": 1}, {\"from\": 951, \"title\": \"1\", \"to\": 1147, \"width\": 1}, {\"from\": 951, \"title\": \"1\", \"to\": 1220, \"width\": 1}, {\"from\": 951, \"title\": \"1\", \"to\": 1087, \"width\": 1}, {\"from\": 963, \"title\": \"1\", \"to\": 991, \"width\": 1}, {\"from\": 992, \"title\": \"1\", \"to\": 1113, \"width\": 1}, {\"from\": 1041, \"title\": \"1\", \"to\": 1220, \"width\": 1}, {\"from\": 1087, \"title\": \"1\", \"to\": 1147, \"width\": 1}, {\"from\": 1087, \"title\": \"1\", \"to\": 1220, \"width\": 1}, {\"from\": 1147, \"title\": \"1\", \"to\": 1220, \"width\": 1}]);\n\n        // adding nodes and edges to the graph\n        data = {nodes: nodes, edges: edges};\n\n        var options = {\"configure\": {\"enabled\": false}, \"nodes\": {\"font\": {\"size\": 7}}, \"edges\": {\"smooth\": true, \"color\": {\"opacity\": 0.25}}, \"physics\": {\"enabled\": true, \"forceAtlas2Based\": {\"springLength\": 100}, \"solver\": \"forceAtlas2Based\"}};\n        \n        \n\n        \n\n        network = new vis.Network(container, data, options);\n\t \n        \n\n\n        \n        network.on(\"stabilizationProgress\", function(params) {\n      \t\tdocument.getElementById('loadingBar').removeAttribute(\"style\");\n\t        var maxWidth = 496;\n\t        var minWidth = 20;\n\t        var widthFactor = params.iterations/params.total;\n\t        var width = Math.max(minWidth,maxWidth * widthFactor);\n\n\t        document.getElementById('bar').style.width = width + 'px';\n\t        document.getElementById('text').innerHTML = Math.round(widthFactor*100) + '%';\n\t    });\n\t    network.once(\"stabilizationIterationsDone\", function() {\n\t        document.getElementById('text').innerHTML = '100%';\n\t        document.getElementById('bar').style.width = '496px';\n\t        document.getElementById('loadingBar').style.opacity = 0;\n\t        // really clean the dom element\n\t        setTimeout(function () {document.getElementById('loadingBar').style.display = 'none';}, 500);\n\t    });\n        \n\n        return network;\n\n    }\n\n    drawGraph();\n\n</script>\n</body>\n</html>"
  },
  {
    "path": "docs/conf.py",
    "content": "# -*- coding: utf-8 -*-\n#\n# Configuration file for the Sphinx documentation builder.\n#\n# This file does only contain a selection of the most common options. For a\n# full list see the documentation:\n# http://www.sphinx-doc.org/en/master/config\n\n# -- Path setup --------------------------------------------------------------\n\n# If extensions (or modules to document with autodoc) are in another directory,\n# add these directories to sys.path here. If the directory is relative to the\n# documentation root, use os.path.abspath to make it absolute, like shown here.\n#\nimport os\nimport sys\nsys.path.insert(0, os.path.abspath('..'))\n\n\n# -- Project information -----------------------------------------------------\n\nproject = 'litstudy'\ncopyright = '2022, S. Heldens, H. Dreuning, A. Sclocco'\nauthor = 'S. Heldens, H. Dreuning, A. Sclocco'\n\n# The short X.Y version\nversion = ''\n# The full version, including alpha/beta/rc tags\nrelease = '0.1'\n\n\n# -- General configuration ---------------------------------------------------\n\n# If your documentation needs a minimal Sphinx version, state it here.\n#\n# needs_sphinx = '1.0'\n\n# Add any Sphinx extension module names here, as strings. They can be\n# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom\n# ones.\nextensions = [\n    'nbsphinx',\n    'sphinx.ext.autodoc',\n    'sphinx.ext.githubpages',\n    'sphinx_mdinclude',\n]\n\n# Add any paths that contain templates here, relative to this directory.\ntemplates_path = ['_templates']\n\n# The suffix(es) of source filenames.\n# You can specify multiple suffix as a list of string:\n#\n# source_suffix = ['.rst', '.md']\nsource_suffix = '.rst'\n\n# The master toctree document.\nmaster_doc = 'index'\n\n# The language for content autogenerated by Sphinx. Refer to documentation\n# for a list of supported languages.\n#\n# This is also used if you do content translation via gettext catalogs.\n# Usually you set \"language\" from the command line for these cases.\nlanguage = \"english\"\n\n# List of patterns, relative to source directory, that match files and\n# directories to ignore when looking for source files.\n# This pattern also affects html_static_path and html_extra_path.\nexclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']\n\n# The name of the Pygments (syntax highlighting) style to use.\npygments_style = None\n\n\n# -- Options for HTML output -------------------------------------------------\n\n# The theme to use for HTML and HTML Help pages.  See the documentation for\n# a list of builtin themes.\n#\nhtml_theme = 'sphinx_rtd_theme'\n\n# Theme options are theme-specific and customize the look and feel of a theme\n# further.  For a list of options available for each theme, see the\n# documentation.\n#\n# html_theme_options = {}\n\n# Add any paths that contain custom static files (such as style sheets) here,\n# relative to this directory. They are copied after the builtin static files,\n# so a file named \"default.css\" will overwrite the builtin \"default.css\".\nhtml_static_path = ['_static']\nhtml_extra_path = ['citation.html']\n\n# Custom sidebar templates, must be a dictionary that maps document names\n# to template names.\n#\n# The default sidebars (for documents that don't match any pattern) are\n# defined by theme itself.  Builtin themes are using these templates by\n# default: ``['localtoc.html', 'relations.html', 'sourcelink.html',\n# 'searchbox.html']``.\n#\n# html_sidebars = {}\n\nhtml_style = \"css/style.css\"\n\n# -- Options for HTMLHelp output ---------------------------------------------\n\n# Output file base name for HTML help builder.\nhtmlhelp_basename = 'litstudydoc'\n\n\n# -- Options for LaTeX output ------------------------------------------------\n\nlatex_elements = {\n    # The paper size ('letterpaper' or 'a4paper').\n    #\n    # 'papersize': 'letterpaper',\n\n    # The font size ('10pt', '11pt' or '12pt').\n    #\n    # 'pointsize': '10pt',\n\n    # Additional stuff for the LaTeX preamble.\n    #\n    # 'preamble': '',\n\n    # Latex figure (float) alignment\n    #\n    # 'figure_align': 'htbp',\n}\n\n# Grouping the document tree into LaTeX files. List of tuples\n# (source start file, target name, title,\n#  author, documentclass [howto, manual, or own class]).\nlatex_documents = [\n    (master_doc, 'litstudy.tex', 'litstudy Documentation',\n     'S. Heldens, H. Dreuning, A. Sclocco', 'manual'),\n]\n\n\n# -- Options for manual page output ------------------------------------------\n\n# One entry per manual page. List of tuples\n# (source start file, name, description, authors, manual section).\nman_pages = [\n    (master_doc, 'litstudy', 'litstudy Documentation',\n     [author], 1)\n]\n\n\n# -- Options for Texinfo output ----------------------------------------------\n\n# Grouping the document tree into Texinfo files. List of tuples\n# (source start file, target name, title, author,\n#  dir menu entry, description, category)\ntexinfo_documents = [\n    (master_doc, 'litstudy', 'litstudy Documentation',\n     author, 'litstudy', 'One line description of project.',\n     'Miscellaneous'),\n]\n\n\n# -- Options for Epub output -------------------------------------------------\n\n# Bibliographic Dublin Core info.\nepub_title = project\n\n# The unique identifier of the text. This can be a ISBN number\n# or the project homepage.\n#\n# epub_identifier = ''\n\n# A unique identification for the text.\n#\n# epub_uid = ''\n\n# A list of files that should not be packed into the epub file.\nepub_exclude_files = ['search.html']\n\n\n# -- Extension configuration -------------------------------------------------\nautodoc_member_order = 'bysource'\n"
  },
  {
    "path": "docs/faq.rst",
    "content": "Frequently Asked Questions\n==========================\n\nThis pages lists answers to several common issues that can occur when working with LitStudy.\nIf your question is not in this list, please create an issue on the `GitHub issue tracker <https://github.com/NLeSC/litstudy/issues>`_.\n\n\nHow to use Scopus?\n---------------------\nTo use the Scopus API, you will need two things:\n\n * An Elsevier API key obtainable through the `Elsevier Developer Portal <https://dev.elsevier.com/>`_. You or (your institute) must require a Scopus subscription.\n * Be connected to the network of your University or Research Institute for which you obtained the API key.\n\nLitStudy will ask for the API key on the first time that it launches.\nFor more information, see the [guide](https://pybliometrics.readthedocs.io/en/stable/access.html) by pybliometrics.\n\n\n\nI'm having trouble connecting to Scopus!\n----------------------------------------\n\nLitStudy internally uses the Python package `pybliometrics <https://pybliometrics.readthedocs.io/en/stable/configuration.html>`_ to communicate with the Scopus API.\nSee the page on `pybliometrics configuration <https://pybliometrics.readthedocs.io/en/stable/configuration.html>`_ for more information.\n\nAlternatively, you can use one of the free alternatives to Scopus (see :doc:`api/sources`) such as, for example, SemanticScholar (``litstudy.search_semanticscholar``) or CrossRef (``litstudy.search_crossref``).\n\n\nScopus400Error: ``Exceeds the maximum number allowed for the service level``\n----------------------------------------------------------------------------\nYou Scopus query returns too many results. Please limit your query, for example, by restricting the publication year using ``... AND PUBYEAR > 2020``.\nIt could also be the case that your Scopus API key is invalid, in which case see `How to use Scopus?`\n\n\nScopus401Error: ``The requestor is not authorized to access the requested view or fields of the resource``\n----------------------------------------------------------------------------------------------------------\nIt is likely that your Scopus API key is invalid, in which case see `How to use Scopus?`\n\n\nMy question is not in this list?\n--------------------------------\nIf your question is not in this list, please create a new issue on `GitHub <https://github.com/NLeSC/litstudy/issues/new>`_.\n"
  },
  {
    "path": "docs/index.rst",
    "content": ".. litstudy documentation master file, created by\n   sphinx-quickstart on Tue Jan  4 13:31:10 2022.\n   You can adapt this file completely to your liking, but it should at least\n   contain the root `toctree` directive.\n\nThe LitStudy documentation\n====================================\n\n.. mdinclude:: ../README.md\n\n\n.. toctree::\n   :maxdepth: 2\n   :hidden:\n   :caption: Contents:\n\n   Introduction <self>\n   installation\n   example\n   faq\n   api/index\n   license\n   Github repository <https://github.com/NLeSC/litstudy>\n\n\n\n\n\n\n\n\nIndices and tables\n==================\n\n* :ref:`genindex`\n* :ref:`modindex`\n* :ref:`search`\n"
  },
  {
    "path": "docs/installation.rst",
    "content": "Installation Guide\n==================\n\nlitStudy is available on pip! If you have Python installed (version 3.6 or greater), just use the following command to install litstudy.\n\n\n.. code-block:: bash\n\n    pip install litstudy\n\n\nJupyter\n-------\n\nTo use LitStudy from a Jupyter notebook, use the following command:\n\n.. code-block:: bash\n\n    pip install notebook\n    jupyter notebook\n\n\nVirtual environment\n-------------------\n\nIt is recommended to use a virtual environment for Python.\nWe suggest to use `miniconda <https://docs.conda.io/en/latest/miniconda.html>`_.\n"
  },
  {
    "path": "docs/license.rst",
    "content": "License\n=======\n\n.. include:: ../LICENSE\n"
  },
  {
    "path": "docs/make.bat",
    "content": "@ECHO OFF\r\n\r\npushd %~dp0\r\n\r\nREM Command file for Sphinx documentation\r\n\r\nif \"%SPHINXBUILD%\" == \"\" (\r\n\tset SPHINXBUILD=sphinx-build\r\n)\r\nset SOURCEDIR=.\r\nset BUILDDIR=_build\r\n\r\nif \"%1\" == \"\" goto help\r\n\r\n%SPHINXBUILD% >NUL 2>NUL\r\nif errorlevel 9009 (\r\n\techo.\r\n\techo.The 'sphinx-build' command was not found. Make sure you have Sphinx\r\n\techo.installed, then set the SPHINXBUILD environment variable to point\r\n\techo.to the full path of the 'sphinx-build' executable. Alternatively you\r\n\techo.may add the Sphinx directory to PATH.\r\n\techo.\r\n\techo.If you don't have Sphinx installed, grab it from\r\n\techo.http://sphinx-doc.org/\r\n\texit /b 1\r\n)\r\n\r\n%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%\r\ngoto end\r\n\r\n:help\r\n%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%\r\n\r\n:end\r\npopd\r\n"
  },
  {
    "path": "litstudy/__init__.py",
    "content": "from .sources import (\n    fetch_crossref,\n    fetch_scopus,\n    fetch_semanticscholar,\n    load_bibtex,\n    load_csv,\n    load_ieee_csv,\n    load_ris_file,\n    load_scopus_csv,\n    load_springer_csv,\n    refine_crossref,\n    refine_scopus,\n    refine_semanticscholar,\n    search_arxiv,\n    search_crossref,\n    search_dblp,\n    search_scopus,\n    search_semanticscholar,\n)\nfrom .stats import (\n    compute_year_histogram,\n    compute_author_histogram,\n    compute_author_affiliation_histogram,\n    compute_language_histogram,\n    compute_number_authors_histogram,\n    compute_source_histogram,\n    compute_source_type_histogram,\n    compute_affiliation_histogram,\n    compute_country_histogram,\n    compute_groups_histogram,\n)  # noqa: F401\nfrom .plot import (\n    plot_year_histogram,\n    plot_author_histogram,\n    plot_number_authors_histogram,\n    plot_author_affiliation_histogram,\n    plot_language_histogram,\n    plot_source_histogram,\n    plot_source_type_histogram,\n    plot_affiliation_histogram,\n    plot_country_histogram,\n    plot_continent_histogram,\n    plot_groups_histogram,\n    plot_word_distribution,\n    plot_topic_clouds,\n    plot_document_topics,\n    plot_embedding,\n)  # noqa: F401\nfrom .network import (\n    build_citation_network,\n    build_coauthor_network,\n    build_cocitation_network,\n    build_coupling_network,\n    plot_citation_network,\n    plot_coauthor_network,\n    plot_cocitation_network,\n    plot_coupling_network,\n    plot_network,\n)  # noqa: F401\nfrom .nlp import (\n    build_corpus,\n    train_nmf_model,\n    train_lda_model,\n    train_elda_model,\n    compute_word_distribution,\n    calculate_embedding,\n)  # noqa: F401\nfrom .types import (\n    Document,\n    DocumentSet,\n    DocumentIdentifier,\n    Affiliation,\n    Author,\n)  # noqa: F401\n\n__all__ = [\n    \"compute_year_histogram\",\n    \"compute_author_histogram\",\n    \"compute_author_affiliation_histogram\",\n    \"compute_language_histogram\",\n    \"compute_number_authors_histogram\",\n    \"compute_source_histogram\",\n    \"compute_source_type_histogram\",\n    \"compute_affiliation_histogram\",\n    \"compute_country_histogram\",\n    \"compute_groups_histogram\",\n    \"plot_year_histogram\",\n    \"plot_author_histogram\",\n    \"plot_number_authors_histogram\",\n    \"plot_author_affiliation_histogram\",\n    \"plot_language_histogram\",\n    \"plot_source_histogram\",\n    \"plot_source_type_histogram\",\n    \"plot_affiliation_histogram\",\n    \"plot_country_histogram\",\n    \"plot_continent_histogram\",\n    \"plot_groups_histogram\",\n    \"plot_word_distribution\",\n    \"plot_topic_clouds\",\n    \"plot_document_topics\",\n    \"plot_embedding\",\n    \"build_citation_network\",\n    \"build_coauthor_network\",\n    \"build_cocitation_network\",\n    \"build_coupling_network\",\n    \"plot_citation_network\",\n    \"plot_coauthor_network\",\n    \"plot_cocitation_network\",\n    \"plot_coupling_network\",\n    \"plot_network\",\n    \"build_corpus\",\n    \"train_nmf_model\",\n    \"train_lda_model\",\n    \"compute_word_distribution\",\n    \"calculate_embedding\",\n    \"fetch_crossref\",\n    \"fetch_scopus\",\n    \"fetch_semanticscholar\",\n    \"load_bibtex\",\n    \"load_csv\",\n    \"load_ieee_csv\",\n    \"load_ris_file\",\n    \"load_springer_csv\",\n    \"refine_crossref\",\n    \"refine_scopus\",\n    \"refine_semanticscholar\",\n    \"search_arxiv\",\n    \"search_crossref\",\n    \"search_dblp\",\n    \"search_scopus\",\n    \"search_semanticscholar\",\n    \"Affiliation\",\n    \"Author\",\n    \"Document\",\n    \"DocumentIdentifier\",\n    \"DocumentSet\",\n]\n"
  },
  {
    "path": "litstudy/clean.py",
    "content": "from collections import Counter\nfrom .common import canonical\n\n\ndef generate_mapping(tokens, stopwords):\n    stopwords = set(stopwords)\n    mapping = dict()\n    result = dict()\n\n    for token, _count in Counter(tokens).most_common():\n        key = canonical(token, aggresive=True, stopwords=stopwords)\n\n        if key not in mapping:\n            mapping[key] = token\n        else:\n            result[token] = mapping[key]\n\n    return result\n"
  },
  {
    "path": "litstudy/common.py",
    "content": "import re\nimport io\nimport locale\nfrom codecs import BOM_UTF8, BOM_UTF16_BE, BOM_UTF16_LE\nfrom unidecode import unidecode\n\ntry:\n    from tqdm import tqdm\n\n    def progress_bar(it):\n        return tqdm(it)\n\nexcept ImportError:\n\n    def progress_bar(it):\n        return it\n\n\nSTOPWORDS = set(\n    [\n        \"\",\n        \"and\",\n        \"at\",\n        \"for\",\n        \"in\",\n        \"into\",\n        \"of\",\n        \"on\",\n        \"onto\",\n        \"over\",\n        \"the\",\n        \"to\",\n        \"ltd\",\n        \"corporation\",\n        \"corp\",\n    ]\n)\n\n\ndef canonical(key, aggresive=True, stopwords=None):\n    if stopwords is None:\n        stopwords = STOPWORDS\n\n    if aggresive:\n        key = unidecode(key).lower()\n\n    tokens = re.split(r\"[\\W]+\", key)\n    new_tokens = []\n\n    for token in tokens:\n        if not token or token[0].isdigit():\n            continue\n\n        if aggresive and (token in stopwords or len(token) <= 1):\n            continue\n\n        new_tokens.append(token)\n\n    return \" \".join(new_tokens)\n\n\ndef fuzzy_match(lhs, rhs):\n    if lhs is None or rhs is None:\n        return False\n\n    return canonical(lhs) == canonical(rhs)\n\n\nclass FuzzyMatcher:\n    def __init__(self, initial=None):\n        mapping = dict()\n        unmapping = dict()\n\n        if initial is not None:\n            for src, dst in initial.items():\n                key = canonical(src)\n                dst_key = canonical(dst)\n\n                mapping[dst_key] = key\n                mapping[key] = key\n                unmapping[key] = dst\n\n        self.mapping = mapping\n        self.unmapping = unmapping\n\n    def get(self, name):\n        key = canonical(name)\n\n        if key in self.mapping:\n            return self.unmapping[self.mapping[key]]\n\n        nice_name = canonical(name, False)\n        self.mapping[key] = key\n        self.unmapping[key] = nice_name\n        return nice_name\n\n\ndef robust_open(path, errors=\"replace\"):\n    \"\"\"This function can be used as a drop-in replacement when using\n    `with open(path) as f:` to read a file. However, the normal `open` function\n    is fragile since it attempts to open the file using the default system\n    character encoding and fails immediately when a character cannot be\n    decoded. This function is more robust in that it attempts to figure out\n    the encoding of the given file and ignores decoding errors.\n    \"\"\"\n    if hasattr(path, \"read\"):\n        return path\n    elif isinstance(path, bytes):\n        content = path\n    else:\n        with open(path, \"rb\") as f:\n            content = f.read()\n\n    # use the following options:\n    # - UTF-8 BOM: decode as UTF-8\n    # - UTF-16 BE BOM: decode as UTF-16-BE\n    # - UTF-16 LE BOM: decode as UTF-16-LE\n    # - otherwise, decode as utf-8 with strict errors\n    # - if that fails, decode using default charset\n    # - if that fails, decode using utf-8 but ignore errors\n    if content.startswith(BOM_UTF8):\n        n = len(BOM_UTF8)\n        result = content[n:].decode(errors=errors)\n    elif content.startswith(BOM_UTF16_BE):\n        n = len(BOM_UTF16_BE)\n        result = content[n:].decode(\"utf_16_be\", errors=errors)\n    elif content.startswith(BOM_UTF16_LE):\n        n = len(BOM_UTF16_LE)\n        result = content[n:].decode(\"utf_16_le\", errors=errors)\n    else:\n        try:\n            result = content.decode(\"utf-8\", errors=\"strict\")\n        except UnicodeError:\n            try:\n                default_charset = locale.getpreferredencoding()\n                result = content.decode(default_charset, errors=errors)\n            except UnicodeError:\n                result = content.decode(\"utf-8\", errors=errors)\n\n    return io.StringIO(result)\n"
  },
  {
    "path": "litstudy/continent.py",
    "content": "COUNTRY_TO_CONTINENT = {\n    \"afghanistan\": \"Asia\",\n    \"albania\": \"Europe\",\n    \"algeria\": \"Africa\",\n    \"american samoa\": \"Oceania\",\n    \"andorra\": \"Europe\",\n    \"angola\": \"Africa\",\n    \"anguilla\": \"North America\",\n    \"antigua and barbuda\": \"North America\",\n    \"argentina\": \"South America\",\n    \"armenia\": \"Asia\",\n    \"aruba\": \"North America\",\n    \"australia\": \"Oceania\",\n    \"austria\": \"Europe\",\n    \"azerbaijan\": \"Asia\",\n    \"bahamas\": \"North America\",\n    \"bahrain\": \"Asia\",\n    \"bangladesh\": \"Asia\",\n    \"barbados\": \"North America\",\n    \"belarus\": \"Europe\",\n    \"belgium\": \"Europe\",\n    \"belize\": \"North America\",\n    \"benin\": \"Africa\",\n    \"bermuda\": \"North America\",\n    \"bhutan\": \"Asia\",\n    \"bolivia, plurinational state of\": \"South America\",\n    \"bolivia\": \"South America\",\n    \"bonaire, sint eustatius and saba\": \"North America\",\n    \"bonaire\": \"North America\",\n    \"sint eustatius\": \"North America\",\n    \"saba\": \"North America\",\n    \"bosnia and herzegovina\": \"Europe\",\n    \"botswana\": \"Africa\",\n    \"brazil\": \"South America\",\n    \"british indian ocean territory\": \"Asia\",\n    \"brunei darussalam\": \"Asia\",\n    \"bulgaria\": \"Europe\",\n    \"burkina faso\": \"Africa\",\n    \"burundi\": \"Africa\",\n    \"cabo verde\": \"Africa\",\n    \"cambodia\": \"Asia\",\n    \"cameroon\": \"Africa\",\n    \"canada\": \"North America\",\n    \"cayman islands\": \"North America\",\n    \"cayman island\": \"North America\",\n    \"central african republic\": \"Africa\",\n    \"chad\": \"Africa\",\n    \"chile\": \"South America\",\n    \"china\": \"Asia\",\n    \"christmas island\": \"Asia\",\n    \"cocos (keeling) islands\": \"Asia\",\n    \"cocos keeling islands\": \"Asia\",\n    \"cocos islands\": \"Asia\",\n    \"colombia\": \"South America\",\n    \"comoros\": \"Africa\",\n    \"congo\": \"Africa\",\n    \"cook islands\": \"Oceania\",\n    \"costa rica\": \"North America\",\n    \"croatia\": \"Europe\",\n    \"cuba\": \"North America\",\n    \"curaçao\": \"North America\",\n    \"curacao\": \"North America\",\n    \"cyprus\": \"Asia\",\n    \"czechia\": \"Europe\",\n    \"côte d'ivoire\": \"Africa\",\n    \"denmark\": \"Europe\",\n    \"djibouti\": \"Africa\",\n    \"dominica\": \"North America\",\n    \"dominican republic\": \"North America\",\n    \"ecuador\": \"South America\",\n    \"egypt\": \"Africa\",\n    \"el salvador\": \"North America\",\n    \"equatorial guinea\": \"Africa\",\n    \"eritrea\": \"Africa\",\n    \"estonia\": \"Europe\",\n    \"eswatini\": \"Africa\",\n    \"ethiopia\": \"Africa\",\n    \"falkland islands (malvinas)\": \"South America\",\n    \"faroe islands\": \"Europe\",\n    \"fiji\": \"Oceania\",\n    \"finland\": \"Europe\",\n    \"france\": \"Europe\",\n    \"french guiana\": \"South America\",\n    \"french polynesia\": \"Oceania\",\n    \"gabon\": \"Africa\",\n    \"gambia\": \"Africa\",\n    \"georgia\": \"Asia\",\n    \"germany\": \"Europe\",\n    \"ghana\": \"Africa\",\n    \"gibraltar\": \"Europe\",\n    \"greece\": \"Europe\",\n    \"greenland\": \"North America\",\n    \"grenada\": \"North America\",\n    \"guadeloupe\": \"North America\",\n    \"guam\": \"Oceania\",\n    \"guatemala\": \"North America\",\n    \"guernsey\": \"Europe\",\n    \"guinea\": \"Africa\",\n    \"guinea-bissau\": \"Africa\",\n    \"guyana\": \"South America\",\n    \"haiti\": \"North America\",\n    \"honduras\": \"North America\",\n    \"hong kong\": \"Asia\",\n    \"hungary\": \"Europe\",\n    \"iceland\": \"Europe\",\n    \"india\": \"Asia\",\n    \"indonesia\": \"Asia\",\n    \"iran, islamic republic of\": \"Asia\",\n    \"iran\": \"Asia\",\n    \"repulic of iran\": \"Asia\",\n    \"iraq\": \"Asia\",\n    \"ireland\": \"Europe\",\n    \"isle of man\": \"Europe\",\n    \"israel\": \"Asia\",\n    \"italy\": \"Europe\",\n    \"jamaica\": \"North America\",\n    \"japan\": \"Asia\",\n    \"jersey\": \"Europe\",\n    \"jordan\": \"Asia\",\n    \"kazakhstan\": \"Asia\",\n    \"kenya\": \"Africa\",\n    \"kiribati\": \"Oceania\",\n    \"korea, democratic people's republic of\": \"Asia\",\n    \"democratic people's republic of korea\": \"Asia\",\n    \"korea, republic of\": \"Asia\",\n    \"korea\": \"Asia\",\n    \"republic of korea\": \"Asia\",\n    \"kuwait\": \"Asia\",\n    \"kyrgyzstan\": \"Asia\",\n    \"lao people's democratic republic\": \"Asia\",\n    \"latvia\": \"Europe\",\n    \"lebanon\": \"Asia\",\n    \"lesotho\": \"Africa\",\n    \"liberia\": \"Africa\",\n    \"libya\": \"Africa\",\n    \"liechtenstein\": \"Europe\",\n    \"lithuania\": \"Europe\",\n    \"luxembourg\": \"Europe\",\n    \"macao\": \"Asia\",\n    \"madagascar\": \"Africa\",\n    \"malawi\": \"Africa\",\n    \"malaysia\": \"Asia\",\n    \"maldives\": \"Asia\",\n    \"mali\": \"Africa\",\n    \"malta\": \"Europe\",\n    \"marshall islands\": \"Oceania\",\n    \"martinique\": \"North America\",\n    \"mauritania\": \"Africa\",\n    \"mauritius\": \"Africa\",\n    \"mayotte\": \"Africa\",\n    \"mexico\": \"North America\",\n    \"micronesia, federated states of\": \"Oceania\",\n    \"micronesia\": \"Oceania\",\n    \"moldova, republic of\": \"Europe\",\n    \"moldova\": \"Europe\",\n    \"monaco\": \"Europe\",\n    \"mongolia\": \"Asia\",\n    \"montenegro\": \"Europe\",\n    \"montserrat\": \"North America\",\n    \"morocco\": \"Africa\",\n    \"mozambique\": \"Africa\",\n    \"myanmar\": \"Asia\",\n    \"namibia\": \"Africa\",\n    \"nauru\": \"Oceania\",\n    \"nepal\": \"Asia\",\n    \"netherlands\": \"Europe\",\n    \"new caledonia\": \"Oceania\",\n    \"new zealand\": \"Oceania\",\n    \"nicaragua\": \"North America\",\n    \"niger\": \"Africa\",\n    \"nigeria\": \"Africa\",\n    \"niue\": \"Oceania\",\n    \"norfolk island\": \"Oceania\",\n    \"north macedonia\": \"Europe\",\n    \"northern mariana islands\": \"Oceania\",\n    \"norway\": \"Europe\",\n    \"oman\": \"Asia\",\n    \"pakistan\": \"Asia\",\n    \"palau\": \"Oceania\",\n    \"palestine, state of\": \"Asia\",\n    \"palestine\": \"Asia\",\n    \"panama\": \"North America\",\n    \"papua new guinea\": \"Oceania\",\n    \"paraguay\": \"South America\",\n    \"peru\": \"South America\",\n    \"philippines\": \"Asia\",\n    \"poland\": \"Europe\",\n    \"portugal\": \"Europe\",\n    \"puerto rico\": \"North America\",\n    \"qatar\": \"Asia\",\n    \"romania\": \"Europe\",\n    \"russian federation\": \"Europe\",\n    \"rwanda\": \"Africa\",\n    \"réunion\": \"Africa\",\n    \"saint barthélemy\": \"North America\",\n    \"saint helena, ascension and tristan da cunha\": \"Africa\",\n    \"saint kitts and nevis\": \"North America\",\n    \"saint lucia\": \"North America\",\n    \"saint martin (french part)\": \"North America\",\n    \"saint pierre and miquelon\": \"North America\",\n    \"saint vincent and the grenadines\": \"North America\",\n    \"samoa\": \"Oceania\",\n    \"san marino\": \"Europe\",\n    \"sao tome and principe\": \"Africa\",\n    \"saudi arabia\": \"Asia\",\n    \"senegal\": \"Africa\",\n    \"serbia\": \"Europe\",\n    \"seychelles\": \"Africa\",\n    \"sierra leone\": \"Africa\",\n    \"singapore\": \"Asia\",\n    \"slovakia\": \"Europe\",\n    \"slovenia\": \"Europe\",\n    \"solomon islands\": \"Oceania\",\n    \"somalia\": \"Africa\",\n    \"south africa\": \"Africa\",\n    \"south georgia and the south sandwich islands\": \"South America\",\n    \"south sudan\": \"Africa\",\n    \"spain\": \"Europe\",\n    \"sri lanka\": \"Asia\",\n    \"sudan\": \"Africa\",\n    \"suriname\": \"South America\",\n    \"svalbard and jan mayen\": \"Europe\",\n    \"sweden\": \"Europe\",\n    \"switzerland\": \"Europe\",\n    \"syrian arab republic\": \"Asia\",\n    \"taiwan, province of china\": \"Asia\",\n    \"taiwan\": \"Asia\",\n    \"tajikistan\": \"Asia\",\n    \"tanzania, united republic of\": \"Africa\",\n    \"tanzania\": \"Africa\",\n    \"thailand\": \"Asia\",\n    \"togo\": \"Africa\",\n    \"tokelau\": \"Oceania\",\n    \"tonga\": \"Oceania\",\n    \"trinidad and tobago\": \"North America\",\n    \"tunisia\": \"Africa\",\n    \"turkey\": \"Asia\",\n    \"turkmenistan\": \"Asia\",\n    \"turks and caicos islands\": \"North America\",\n    \"tuvalu\": \"Oceania\",\n    \"uganda\": \"Africa\",\n    \"ukraine\": \"Europe\",\n    \"united arab emirates\": \"Asia\",\n    \"united kingdom\": \"Europe\",\n    \"united states\": \"North America\",\n    \"uruguay\": \"South America\",\n    \"uzbekistan\": \"Asia\",\n    \"vanuatu\": \"Oceania\",\n    \"venezuela, bolivarian republic of\": \"South America\",\n    \"venezuela\": \"South America\",\n    \"viet nam\": \"Asia\",\n    \"vietnam\": \"Asia\",\n    \"virgin islands, british\": \"North America\",\n    \"virgin islands, u.s.\": \"North America\",\n    \"wallis and futuna\": \"Oceania\",\n    \"yemen\": \"Asia\",\n    \"zambia\": \"Africa\",\n    \"zimbabwe\": \"Africa\",\n    \"åland islands\": \"Europe\",\n    \"aland islands\": \"Europe\",\n}\n"
  },
  {
    "path": "litstudy/network.py",
    "content": "from .types import DocumentMapping, DocumentSet\nfrom collections import defaultdict\nfrom matplotlib.colors import to_hex\nimport seaborn as sns\nimport json\nimport numpy as np\nimport networkx as nx\nimport pyvis\nimport textwrap\n\n\ndef calculate_layout(g, iterations=1000, gravity=1):\n    try:\n        from fa2 import ForceAtlas2\n\n        model = ForceAtlas2(\n            verbose=True,\n            scalingRatio=1,\n            gravity=gravity,\n        )\n\n        matrix = nx.to_scipy_sparse_matrix(g, dtype=\"f\", format=\"lil\", weight=\"weight\")\n        pos = model.forceatlas2(matrix, iterations=iterations)\n\n        return dict(zip(g.nodes(), pos))\n\n    except ImportError:\n        return nx.drawing.layout.spring_layout(g)\n\n\ndef plot_network(\n    g: nx.Graph,\n    *,\n    height=\"1000px\",\n    smooth_edges=None,\n    max_node_size=100,\n    min_node_size=5,\n    largest_component=True,\n    interactive=True,\n    controls=False,\n    scale=1,\n    iterations=1000,\n    gravity=1,\n    file_name=\"network.html\"\n):\n    \"\"\"Plot a `networkx.Graph` generated by one of the `build_X_graph`\n    functions in this module. Plotting is done using the `pyvis` library.\n\n\n    :param height: Height of the plot.\n    :param smooth_edges: Enables curved ('smooth') edges. Looks nice but is\n                         heavy on performance.\n    :param min_node_size: The radius of the smallest node.\n    :param max_node_size: The radius of the largest node.\n    :param largest_component: Only plot the largest connected component of\n                              the graph.\n    :param file_name: The name of the file where the plot will be saved.\n    \"\"\"\n    isolates = list(nx.isolates(g))\n    if isolates:\n        g = g.copy()\n        g.remove_nodes_from(isolates)\n\n    if len(g.edges) == 0:\n        print(\"no edges given\")\n        return\n\n    directed = nx.is_directed(g)\n\n    if largest_component:\n        if directed:\n            cc = nx.weakly_connected_components(g)\n        else:\n            cc = nx.connected_components(g)\n\n        cc = sorted(cc, key=len, reverse=True)\n        g = g.subgraph(cc[0])\n\n    v = pyvis.network.Network(notebook=True, width=\"100%\", height=height, directed=directed)\n\n    sizes = [attr.get(\"size\") or attr.get(\"weight\") for (_, attr) in g.nodes.items()]\n\n    if all(s is not None for s in sizes):\n        sizes = np.array(sizes)\n    elif directed:\n        sizes = [g for (_, g) in g.in_degree]\n    else:\n        sizes = [g for (_, g) in g.degree]\n\n    layout = calculate_layout(g, gravity=gravity, iterations=iterations)\n    sizes = np.array(sizes, dtype=np.float32)\n    ratio = (max_node_size - min_node_size) / np.amax(sizes)\n    sizes = ratio * sizes + min_node_size\n\n    for id, size in zip(g, sizes):\n        attr = g.nodes[id]\n        kwargs = dict(labelHighlightBold=True)\n\n        kwargs[\"shape\"] = attr.get(\"shape\", \"dot\")\n        kwargs[\"title\"] = attr[\"title\"]\n        kwargs[\"label\"] = textwrap.fill(attr[\"title\"], width=20)\n        kwargs[\"size\"] = float(size)\n\n        if layout is not None:\n            pos = layout[id]\n            kwargs[\"x\"] = pos[0] * scale\n            kwargs[\"y\"] = pos[1] * scale\n\n        color = attr.get(\"color\")\n        if color is not None:\n            kwargs[\"color\"] = to_hex(color)\n\n        v.add_node(id, **kwargs)\n\n    for src, dst in g.edges():\n        weight = g[src][dst].get(\"weight\")\n        if weight is not None:\n            width = weight\n            label = str(weight)\n        else:\n            width = None\n            label = \"\"\n\n        v.add_edge(src, dst, width=width, title=label)\n\n    if smooth_edges is None:\n        smooth_edges = len(g.edges()) < 1000\n\n    v.set_options(\n        json.dumps(\n            {\n                \"configure\": {\n                    \"enabled\": controls,\n                },\n                \"nodes\": {\n                    \"font\": {\n                        \"size\": 7,\n                    },\n                },\n                \"edges\": {\n                    \"smooth\": smooth_edges,\n                    \"color\": {\n                        \"opacity\": 0.25,\n                    },\n                },\n                \"physics\": {\n                    \"enabled\": interactive,\n                    \"forceAtlas2Based\": {\n                        \"springLength\": 100,\n                    },\n                    \"solver\": \"forceAtlas2Based\",\n                },\n            }\n        )\n    )\n\n    return v.show(file_name)\n\n\ndef build_base_network(\n    docs, directed, colors=None, cmap=None, shapes=None, sizes=None, node_props=None\n):\n    def extract_column(docs, expr):\n        if not docs:\n            result = []\n        elif not isinstance(expr, str):\n            result = list(expr)\n        elif expr in docs.data:\n            result = docs.data[expr]\n        else:\n            result = docs.data.eval(expr)\n\n        assert len(result) == len(docs)\n        return result\n\n    g = nx.DiGraph() if directed else nx.Graph()\n    mapping = DocumentMapping()\n\n    if node_props is None:\n        node_props = docs.data.columns\n\n    for i, doc in enumerate(docs):\n        attr = dict()\n\n        for prop in node_props:\n            attr[prop] = docs.data[prop][i]\n\n        g.add_node(i, title=doc.title, doc=doc, **attr)\n        mapping.add(doc.id, i)\n\n    # Custom colors\n    if colors is not None:\n        colors = extract_column(docs, colors)\n\n        if all(isinstance(c, float) for c in colors):\n            begin, end = min(colors), max(colors)\n            cmap = sns.color_palette(cmap, as_cmap=True)\n            colors = [cmap(float(c - begin) / (end - begin)) for c in colors]\n        # if all(isinstance(c, int) for c in colors):\n        else:\n            groups = dict((c, i) for i, c in enumerate(sorted(set(colors))))\n            cmap = sns.color_palette(cmap, n_colors=len(groups))\n            colors = [cmap[groups[c]] for c in colors]\n\n        for i, c in enumerate(colors):\n            g.nodes[i][\"color\"] = c\n\n    # Custom sizes\n    if sizes is not None:\n        sizes = extract_column(docs, sizes)\n\n        for i, size in enumerate(sizes):\n            g.nodes[i][\"size\"] = size\n\n    if shapes is not None:\n        shapes = extract_column(docs, shapes)\n\n        for i, shape in enumerate(sizes):\n            g.nodes[i][\"shape\"] = shape\n\n    return g, mapping\n\n\ndef split_kwargs(*names, **kwargs):\n    names = list(names) + [\"colors\", \"cmap\"]\n    left, right = dict(), dict()\n\n    for k, v in kwargs.items():\n        if k in names:\n            left[k] = v\n        else:\n            right[k] = v\n\n    return left, right\n\n\ndef build_citation_network(docs: DocumentSet, **kwargs) -> nx.Graph:\n    \"\"\"Builds a citation network: a directed graph where each node\n    corresponds to a document and each directed edge indicates that\n    one document cites the other.\"\"\"\n    g, mapping = build_base_network(docs, True, **kwargs)\n\n    for i, doc in enumerate(docs):\n        for ref in doc.references or []:\n            j = mapping.get(ref)\n\n            if j is not None:\n                g.add_edge(i, j)\n\n    return g\n\n\ndef plot_citation_network(docs: DocumentSet, **kwargs):\n    \"\"\"Plot a citation network.\n\n    This is a shorthand for `plot_network(build_citation_network(docs))`.\"\"\"\n    b, p = split_kwargs(**kwargs)\n    return plot_network(build_citation_network(docs, **b), **p)\n\n\ndef build_cocitation_network(docs: DocumentSet, *, max_edges=None, **kwargs) -> nx.Graph:\n    \"\"\"Builds a co-citation network: a undirected graph where each node\n    corresponds to a document and the edge weights stores the cocitation\n    strengths (i.e., the number of times two documents have been cited\n    together).\n\n    :param max_edges: Select only the top edges. This is useful since\n        cocitation networks are often dense and only the strongest edges\n        are usually important.\n    \"\"\"\n    max_edges = max_edges or len(docs) * 2\n\n    g, mapping = build_base_network(docs, False, **kwargs)\n    strength = defaultdict(int)\n\n    for doc in docs:\n        refs = []\n\n        for ref in doc.references or []:\n            j = mapping.get(ref)\n\n            if j is not None:\n                refs.append(j)\n\n        for i in refs:\n            for j in refs:\n                if i < j:\n                    strength[i, j] += 1\n\n    edges = list(strength.items())\n\n    if len(edges) > max_edges:\n        edges.sort(key=lambda p: p[1], reverse=True)\n        edges = edges[:max_edges]\n\n    for (i, j), weight in edges:\n        g.add_edge(i, j, weight=weight)\n\n    return g\n\n\ndef plot_cocitation_network(docs: DocumentSet, *, max_edges=None, node_size=10, **kwargs):\n    \"\"\"Plot a citation network.\n\n    This is a shorthand for `plot_network(build_cocitation_network(docs))`.\"\"\"\n    b, p = split_kwargs(**kwargs)\n    return plot_network(\n        build_cocitation_network(docs, max_edges=max_edges, **b),\n        # min_node_size=node_size,\n        # max_node_size=node_size,\n        **p\n    )\n\n\ndef build_coupling_network(docs: DocumentSet, max_edges=1000, **kwargs) -> nx.Graph:\n    \"\"\"Builds a bibligraphic coupling network: an undirected graph where\n    nodes indicate documents and edge weights store the bibliographic\n    coupling strength. This strength measures how similar two documents\n    view related work. It is measured as the number of shared references\n    between two documents.\n\n    :param max_edges: Select only the top edges. This is useful since these\n        networks are often dense and only the strongest edges are usually\n        important.\n    \"\"\"\n\n    g, mapping = build_base_network(docs, False, **kwargs)\n    n = len(g)\n    doc_refs = []\n\n    for doc in docs:\n        refs = []\n\n        for ref in doc.references or []:\n            i = mapping.get(ref)\n\n            if i is None:\n                mapping.add(ref, n)\n                n += 1\n                i = n\n\n            if i is not None:\n                refs.append(i)\n\n        doc_refs.append(set(refs))\n\n    strength = defaultdict(int)\n\n    for i, a in enumerate(doc_refs):\n        for j, b in enumerate(doc_refs[:i]):\n            common = a & b\n\n            if common:\n                strength[i, j] = len(common)\n\n    edges = list(strength.items())\n\n    if len(edges) > max_edges:\n        edges.sort(key=lambda p: p[1], reverse=True)\n        edges = edges[:max_edges]\n\n    for (i, j), weight in edges:\n        g.add_edge(i, j, weight=weight, score=weight)\n\n    return g\n\n\ndef plot_coupling_network(docs: DocumentSet, *, max_edges=None, node_size=10, **kwargs):\n    \"\"\"Plot a bibliographic coupling network.\n\n    This is a shorthand for `plot_network(build_coupling_network(docs))`.\"\"\"\n    b, p = split_kwargs(**kwargs)\n    return plot_network(\n        build_coupling_network(docs, max_edges, **b),\n        min_node_size=node_size,\n        max_node_size=node_size,\n        **p\n    )\n\n\ndef build_coauthor_network(docs: DocumentSet, *, max_authors=None) -> nx.Graph:\n    \"\"\"Builds a co-author network: an undirected graph where nodes indicate\n    authors and edge weight indicate the number of shared publications\n    between two authors.\n\n    :param max_authors: Select only the top X authors.\n    \"\"\"\n    g = nx.DiGraph()\n    count = defaultdict(int)\n\n    for doc in docs:\n        authors = []\n\n        for author in doc.authors or []:\n            name = author.name\n\n            if name:\n                count[name] += 1\n\n    authors = list(count.keys())\n\n    if max_authors is not None and len(authors) > max_authors:\n        authors.sort(key=lambda name: count[name], reverse=True)\n        authors = authors[:max_authors]\n\n    mapping = dict()\n    for i, author in enumerate(authors):\n        g.add_node(i, title=author)\n        mapping[author] = i\n\n    edges = defaultdict(int)\n\n    for doc in docs:\n        authors = [a.name for a in doc.authors or [] if a.name]\n\n        for i, left in enumerate(authors):\n            for right in authors[:i]:\n                if left in mapping and right in mapping:\n                    edges[mapping[left], mapping[right]] += 1\n\n    for (left, right), weight in edges.items():\n        g.add_edge(left, right, weight=weight)\n\n    return g\n\n\ndef plot_coauthor_network(docs: DocumentSet, *, max_authors=None, **kwargs):\n    \"\"\"Plot a co-author network.\n\n    This is a shorthand for `plot_network(build_coauthor_network(docs))`.\"\"\"\n    b, p = split_kwargs(**kwargs)\n    return plot_network(build_coauthor_network(docs, max_authors=max_authors, **b), **p)\n"
  },
  {
    "path": "litstudy/nlp.py",
    "content": "from collections import defaultdict\nfrom gensim.matutils import corpus2dense\nfrom typing import List\nimport gensim\nimport matplotlib.pyplot as plt\nimport numpy as np\nimport pandas as pd\nimport wordcloud\n\nfrom .stopwords import STOPWORDS\nfrom .types import DocumentSet\n\n\ndef filter_tokens(texts, predicate):\n    for text in texts:\n        yield [token for token in text if predicate(token)]\n\n\ndef preprocess_remove_short(texts, min_length=3):\n    yield from filter_tokens(texts, lambda token: len(token) >= min_length)\n\n\ndef preprocess_remove_words(texts, remove_words):\n    remove_words = set(w.strip() for w in remove_words)\n    yield from filter_tokens(texts, lambda token: token not in remove_words)\n\n\ndef preprocess_stopwords(texts):\n    yield from preprocess_remove_words(texts, STOPWORDS)\n\n\ndef preprocess_replace_words(texts, replace_words):\n    for text in texts:\n        yield [replace_words.get(token, token) for token in text]\n\n\ndef preprocess_merge_bigrams(texts, bigrams):\n    for text in texts:\n        prev = None\n        new_text = []\n\n        for current in text:\n            replacement = bigrams.get((prev, current))\n\n            if replacement is not None:\n                new_text.append(replacement)\n                prev = None\n            else:\n                if prev is not None:\n                    new_text.append(prev)\n                prev = current\n\n        yield new_text\n\n\ndef preprocess_merge_ngrams(texts, threshold):\n    texts = list(texts)\n    phrases = gensim.models.phrases.Phrases(texts, threshold=threshold, scoring=\"npmi\")\n\n    for text in texts:\n        for word, score in phrases.analyze_sentence(text):\n            if score is not None:\n                text.append(word)\n\n        yield text\n\n\ndef preprocess_outliers(texts, min_docs, max_docs):\n    texts = list(texts)\n    count = defaultdict(int)\n\n    for text in texts:\n        for token in set(text):\n            count[token] += 1\n\n    unwanted = set()\n    for token, num_docs in count.items():\n        if num_docs < min_docs or num_docs > max_docs:\n            unwanted.add(token)\n\n    yield from preprocess_remove_words(texts, unwanted)\n\n\ndef preprocess_smart_stemming(texts):\n    texts = list(texts)\n    stemmer = gensim.parsing.PorterStemmer()\n    count = defaultdict(int)\n\n    for text in texts:\n        for token in text:\n            count[token] += 1\n\n    sorted_count = sorted(count.items(), key=lambda p: p[1], reverse=True)\n    unstemming = dict()\n    mapping = dict()\n\n    for token, _ in sorted_count:\n        stem = stemmer.stem(token)\n        if stem in unstemming:\n            mapping[token] = unstemming[stem]\n        else:\n            unstemming[stem] = token\n            mapping[token] = token\n\n    for text in texts:\n        yield [mapping[token] for token in text]\n\n\nclass Corpus:\n    \"\"\"Contains the word-frequency vectors for a set of documents. See\n    `build_corpus` for more information.\n    \"\"\"\n\n    def __init__(self, docs, filters, max_tokens):\n        corpus = []\n\n        for doc in docs:\n            text = (doc.title or \"\") + \" \" + (doc.abstract or \" \")\n            tokens = gensim.utils.tokenize(text, lowercase=True, deacc=True)\n\n            corpus.append(list(tokens))\n\n        for f in filters:\n            corpus = f(corpus)\n\n        corpus = list(corpus)\n        dic = gensim.corpora.Dictionary(corpus)\n        dic.filter_extremes(keep_n=max_tokens)\n\n        self.dictionary = dic\n        \"\"\" The dictionary that maps indices to words\n            (`gensim.corpora.Dictionary`).\n        \"\"\"\n\n        self.frequencies = [dic.doc2bow(x) for x in corpus]\n        \"\"\" List of word frequency vectors. Each vector corresponds to one\n        document and consists of `(word_index, frequency)` tuples.\n        \"\"\"\n\n\ndef build_corpus(\n    docs: DocumentSet,\n    *,\n    remove_words=None,\n    min_word_length=3,\n    min_docs=5,\n    max_docs_ratio=0.75,\n    max_tokens=5000,\n    replace_words=None,\n    custom_bigrams=None,\n    ngram_threshold=None\n) -> Corpus:\n    \"\"\"Build a `Corpus` object.\n\n    This function takes the words from the title/abstract of the given\n    documents, preprocesses the tokens, and returns a corpus consisting of a\n    word frequency vector for each document. This preprocessing stage is\n    highly customizable, thus it is advised to experiment with the many\n    parameters.\n\n    Please notice that a small document set with no Abstracts available, might\n    not yield a Corpus, since there is a higher chance of words not achieving\n    a ocorrency in more than one document.\n\n    :param remove_words: list of words that should be ignored while building\n                         the word frequency vectors.\n    :param min_word_length: Words shorter than this are ignored.\n    :param min_docs: Words that occur in fewer than this many documents are\n                     ignored.\n    :param max_docs_ratio: Words that occur in more than this document are\n                           ignored. Should be ratio between 0 and 1.\n    :param max_tokens: Only the top most common tokens are preserved.\n    :param replace_words: Replace words by other words. Must be a `dict`\n                          containing *original word* to *replacement word*\n                          pairs.\n    :param custom_bigrams: Add custom bigrams. Must be a `dict` where keys\n                           are `(first, second)` tuples and values are\n                           replacements. For example, the key can be\n                           `(\"Big\", \"Data\")` and the value `\"BigData\"`.\n    :param ngram_threshold: Threshold used for n-gram detection. Is passed\n                            to `gensim.models.phrases.Phrases` to detect\n                            common n-grams.\n    :returns: a `Corpus object`.\n    \"\"\"\n\n    filters = []\n    if custom_bigrams:\n        filters.append(lambda w: preprocess_merge_bigrams(w, custom_bigrams))\n\n    if remove_words:\n        filters.append(lambda w: preprocess_remove_words(w, remove_words))\n\n    if replace_words:\n        filters.append(lambda w: preprocess_replace_words(w, replace_words))\n\n    if min_word_length:\n        filters.append(lambda w: preprocess_remove_short(w, min_length=min_word_length))\n\n    filters.append(preprocess_stopwords)\n\n    if ngram_threshold is not None:\n        filters.append(lambda w: preprocess_merge_ngrams(w, ngram_threshold))\n\n    filters.append(preprocess_smart_stemming)\n\n    if min_docs > 1 or max_docs_ratio < 1.0:\n        max_docs = int(len(docs) * max_docs_ratio)\n        filters.append(lambda w: preprocess_outliers(w, min_docs, max_docs))\n\n    return Corpus(docs, filters, max_tokens)\n\n\nclass TopicModel:\n    \"\"\"Topic model trained by one of the `train_*_model` functions.\"\"\"\n\n    def __init__(self, dictionary, doc2topic, topic2token):\n        self.dictionary = dictionary\n\n        self.doc2topic = doc2topic\n        \"\"\" `N x T` matrix that stores the weights towards each of the T\n        topics for the N documents.\n        \"\"\"\n\n        self.topic2token = topic2token\n        \"\"\" `T x M` matrix that stores the weights towards each of the M\n        tokens for each of the T topics\n        \"\"\"\n\n        self.num_topics = len(topic2token)\n\n    def best_documents_for_topic(self, topic_id: int, limit=5) -> List[int]:\n        \"\"\"Returns the documents that most strongly belong to the given\n        topic.\n        \"\"\"\n        return np.argsort(self.doc2topic[:, topic_id])[::-1][:limit]\n\n    def document_topics(self, doc_id: int):\n        \"\"\"Returns a numpy array indicating the weights towards the different\n        topic for the given document. These weight sum up to one.\n        \"\"\"\n        return self.doc2topic[doc_id]\n\n    def best_token_weights_for_topic(self, topic_id: int, limit=5):\n        \"\"\"Returns a list of `(token, weight)` tuples for the tokens that\n        most strongly belong to the given topic.\n        \"\"\"\n        dic = self.dictionary\n        weights = self.topic2token[topic_id]\n\n        indices = np.argsort(self.topic2token[topic_id])[::-1][:limit]\n        return [(dic[i], weights[i]) for i in indices]\n\n    def best_tokens_for_topic(self, topic_id: int, limit=5):\n        \"\"\"Returns the top tokens that most strongly belong to the given\n        topic.\"\"\"\n        results = self.best_token_weights_for_topic(topic_id, limit=limit)\n        return [w for w, _ in results]\n\n    def best_token_for_topic(self, topic_id: int) -> str:\n        \"\"\"Returns the token that most strongly belongs to the given\n        topic.\"\"\"\n        return self.best_tokens_for_topic(topic_id, limit=1)[0]\n\n    def best_topic_for_token(self, token) -> int:\n        \"\"\"Returns the topic index that most strongly belongs to the given\n        token.\"\"\"\n        index = self.dictionary.token2id[token]\n        return np.argmax(self.topic2token[:, index])\n\n    def best_topic_for_documents(self) -> List[int]:\n        \"\"\"Returns the topic for each document that most strongly belongs\n        to that document.\n        \"\"\"\n        return np.argmax(self.doc2topic, axis=1)\n\n\ndef train_nmf_model(corpus: Corpus, num_topics: int, seed=0, max_iter=500) -> TopicModel:\n    \"\"\"Train a topic model using NMF.\n\n    :param num_topics: The number of topics to train.\n    :param seed: The seed used for random number generation.\n    :param max_iter: The maximum number of iterations to use for training.\n                     More iterations mean better results, but longer training\n                     times.\n    \"\"\"\n    import gensim.models.nmf\n\n    dic = corpus.dictionary\n    freqs = corpus.frequencies\n\n    tfidf = gensim.models.tfidfmodel.TfidfModel(dictionary=dic)\n    model = gensim.models.nmf.Nmf(\n        list(tfidf[freqs]),\n        num_topics=num_topics,\n        passes=max_iter,\n        random_state=seed,\n        w_stop_condition=1e-9,\n        h_stop_condition=1e-9,\n        w_max_iter=50,\n        h_max_iter=50,\n    )\n\n    doc2topic = corpus2dense(model[freqs], num_topics).T\n    topic2token = model.get_topics()\n\n    return TopicModel(dic, doc2topic, topic2token)\n\n\ndef train_lda_model(corpus: Corpus, num_topics, seed=0, **kwargs) -> TopicModel:\n    \"\"\"Train a topic model using LDA.\n\n    :param num_topics: The number of topics to train.\n    :param seed: The seed used for random number generation.\n    :param kwargs: Arguments passed to `gensim.models.lda.LdaModel` (gensim3)\n                   or `gensim.models.ldamodel.LdaModel` (gensim4).\n    \"\"\"\n\n    dic = corpus.dictionary\n    freqs = corpus.frequencies\n\n    from importlib.metadata import version\n\n    gensim_mayor = int(version(\"gensim\").split(\".\")[0])\n\n    if gensim_mayor == 3:\n        from gensim.models.lda import LdaModel\n\n        model = LdaModel(list(corpus), **kwargs)\n    elif gensim_mayor == 4:\n        from gensim.models.ldamodel import LdaModel\n\n        model = LdaModel(freqs, id2word=dic, num_topics=num_topics, **kwargs)\n    else:\n        from sys import exit\n\n        exit(\"LdaModel could not be imported from gensim 3 or 4.\")\n\n    doc2topic = corpus2dense(model[freqs], num_topics).T\n    topic2token = model.get_topics()\n\n    return TopicModel(dic, doc2topic, topic2token)\n\n\ndef train_elda_model(corpus: Corpus, num_topics, num_models=4, seed=0, **kwargs) -> TopicModel:\n    \"\"\"Train a topic model using ensemble LDA.\n\n    :param num_topics: The number of topics to train.\n    :param num_models: The number of models to train.\n    :param seed: The seed used for random number generation.\n    :param kwargs: Arguments passed to `gensim.models.ensemblelda.EnsembleLda` (gensim4).\n    \"\"\"\n\n    from importlib.metadata import version\n\n    gensim_mayor = int(version(\"gensim\").split(\".\")[0])\n\n    if gensim_mayor <= 3:\n        from sys import exit\n\n        exit(\"EnsembleLda requires at least gensim 4.\")\n\n    dic = corpus.dictionary\n    freqs = corpus.frequencies\n\n    from gensim.models.ensemblelda import EnsembleLda\n\n    model = EnsembleLda(\n        topic_model_class=\"ldamulticore\",\n        corpus=freqs,\n        id2word=dic,\n        num_topics=num_topics,\n        num_models=num_models,\n        **kwargs\n    )\n\n    doc2topic = corpus2dense(model[freqs], num_topics).T\n    topic2token = model.get_topics()\n\n    return TopicModel(dic, doc2topic, topic2token)\n\n\ndef compute_word_distribution(corpus: Corpus, *, limit=None) -> pd.DataFrame:\n    \"\"\"Returns dataframe that indicates, for each word, the number of\n    documents that mention that word.\n    \"\"\"\n    counter = defaultdict(int)\n    dic = corpus.dictionary\n\n    for vector in corpus.frequencies:\n        for i, _ in vector:\n            counter[i] += 1\n\n    keys = sorted(counter, key=lambda k: counter[k], reverse=True)[:limit]\n    if limit is not None:\n        keys = keys[:limit]\n\n    return pd.DataFrame(index=[dic[i] for i in keys], data=dict(count=[counter[i] for i in keys]))\n\n\ndef generate_topic_cloud(\n    model: TopicModel, topic_id: int, cmap=None, max_font_size=75, background_color=\"white\"\n) -> wordcloud.WordCloud:\n    \"\"\"Generate a word cloud for the given topic from the given topic model.\n\n    :param cmap: The color map used to color the words.\n    :param max_font_size: Size of the word which most strongly belongs to the\n                          topic. The other words are scaled accordingly.\n    :param background_color: Background color.\n    \"\"\"\n    if cmap is None:\n        cmap = \"Blues\"\n\n    cmap = plt.get_cmap(cmap)\n\n    dic = model.dictionary\n    vec = model.topic2token[topic_id]\n    maximum = np.amax(vec)\n    words = dict()\n\n    for i in np.argsort(vec)[-100:]:\n        if vec[i] > 0:\n            words[dic[i]] = vec[i] / maximum\n\n    def get_color(word, **kwargs):\n        weight = kwargs[\"font_size\"] / 75.0 * 0.7 + 0.3\n        r, g, b = np.array(cmap(weight)[:3]) * 255\n        return \"rgb({}, {}, {})\".format(int(r), int(g), int(b))\n\n    wc = wordcloud.WordCloud(\n        prefer_horizontal=True,\n        max_font_size=max_font_size,\n        background_color=background_color,\n        color_func=get_color,\n        scale=2,\n        relative_scaling=0.5,\n    )\n\n    wc.fit_words(words)\n\n    return wc\n\n\ndef calculate_embedding(corpus: Corpus, *, rank=2, svd_dims=50, perplexity=30, seed=0):\n    \"\"\"Calculate a document embedding that assigns each document in the\n    corpus a N-d position based on the word usage.\n\n    :returns: A list of N-d tuples for the documents in the corpus.\n    \"\"\"\n    from gensim.models.tfidfmodel import TfidfModel\n    from sklearn.decomposition import TruncatedSVD\n    from sklearn.manifold import TSNE\n\n    dic = corpus.dictionary\n    freqs = corpus.frequencies\n    tfidf = corpus2dense(TfidfModel(dictionary=dic)[freqs], len(dic)).T\n\n    if svd_dims is not None:\n        svd = TruncatedSVD(n_components=svd_dims, random_state=seed)\n        components = svd.fit_transform(tfidf)\n    else:\n        components = tfidf\n\n    model = TSNE(rank, metric=\"cosine\", perplexity=perplexity, random_state=seed)\n    return model.fit_transform(components)\n"
  },
  {
    "path": "litstudy/plot.py",
    "content": "from .stats import (\n    compute_year_histogram,\n    compute_author_histogram,\n    compute_author_affiliation_histogram,\n    compute_language_histogram,\n    compute_number_authors_histogram,\n    compute_source_histogram,\n    compute_source_type_histogram,\n    compute_affiliation_histogram,\n    compute_country_histogram,\n    compute_continent_histogram,\n    compute_groups_histogram,\n)\nfrom .nlp import (\n    generate_topic_cloud,\n    calculate_embedding,\n    compute_word_distribution,\n    TopicModel,\n    Corpus,\n)\nfrom .types import DocumentSet\nimport inspect\nimport math\nimport matplotlib.pyplot as plt\nimport numpy as np\nimport seaborn\nimport pandas as pd\n\n\ndef plot_histogram(\n    data: pd.DataFrame,\n    keys=None,\n    title=\"\",\n    xlabel=\"\",\n    ylabel=\"\",\n    label_rotation=None,\n    vertical=False,\n    bar_width=0.8,\n    max_label_length=100,\n    stacked=False,\n    legend=True,\n    relative_to=None,\n    ax=None,\n):\n    \"\"\"\n    This is the general function to plot a histogram (bar plot). All other\n    `plot_*_histogram` functions in this module will call this function.\n\n    This function takes a pandas `DataFrame`. Each column represents one\n    group and a sequence of bars that will be plotted. The names in the index\n    are placed as labels on the axis.\n\n    For instance, a possible input could be\n    data frame where the columns are different authors, rows are different\n    years, and values are the number of publications per year per author.\n\n    :param ax: The `matplotlib` `Axes` instance the plot will be drawn on. If\n               `None`, the current `Axes` instance is used (`plt.gca()`).\n    :param vertical: Default bars are horizontal (left to right). Set\n                     `vertical=True` for vertical bars (bottom to top).\n    :param bar_width: Width of bars. Should be at most `1.0` for 100%.\n    :param label_rotation: Rotates the xlabels. This is useful if\n                           `vertical=True` since it can be used to place the\n                           labels horziontal (`label_rotation=0`), vertical\n                           (`label_rotation=90`), or diagonal\n                           (`label_rotation=45`).\n    :param max_label_length: Labels longer than this length are shortened.\n    :param stacked: By default, different groups are drawn next to each other.\n                    If `True`, the different groups are stacked on top of each\n                    other instead.\n    :param legend: Show legend.\n    :param relative_to: If not `None`, all bars will be plotted as a\n                        percentage relative to this value.\n    :param title: Title of plot (set using `ax.set_title`).\n    :param xlabel: Title on the X axis (or Y axis if `vertical=True`).\n    :param ylabel: Title on the Y axis (or X axis if `vertical=True`).\n    \"\"\"\n    if ax is None:\n        ax = plt.gca()\n\n    if label_rotation is None:\n        if vertical:\n            label_rotation = 90\n        else:\n            label_rotation = 0\n\n    if not ylabel:\n        if relative_to is not None:\n            ylabel = \"% of documents\"\n        else:\n            ylabel = \"No. of documents\"\n\n    if not vertical:\n        ax.grid(visible=False, which=\"both\", axis=\"y\")\n        xlabel, ylabel = ylabel, xlabel\n    else:\n        ax.grid(visible=False, which=\"both\", axis=\"x\")\n\n    if title:\n        ax.set_title(title)\n\n    if xlabel:\n        ax.set_xlabel(xlabel)\n\n    if ylabel:\n        ax.set_ylabel(ylabel)\n\n    if keys is None:\n        keys = list(data.index)\n\n    n = len(keys)\n    groups = list(data)\n\n    if not groups or not keys:\n        return\n\n    bar_bottom = np.array([0] * len(keys))\n\n    for i, group in enumerate(groups):\n        ys = data[group]\n        bottom = bar_bottom\n\n        if relative_to is not None:\n            ys = ys / relative_to * 100\n\n        if stacked:\n            bar_bottom = bar_bottom + ys\n            xs = np.arange(n) - 0.5 * bar_width\n            bin_width = bar_width\n        else:\n            bin_width = bar_width / len(groups)\n            xs = np.arange(n) + i * bin_width - 0.5 * bar_width\n\n        if not vertical:\n            ax.barh(xs, ys, label=group, height=bin_width, left=bottom, align=\"edge\")\n        else:\n            ax.bar(xs, ys, label=group, width=bin_width, bottom=bottom, align=\"edge\")\n\n    if legend and len(groups) > 1:\n        ax.legend()\n\n    def shorten(label):\n        label = str(label)\n        n = max_label_length\n        return label[:n] + \"...\" if len(label) > n else label\n\n    labels = list(map(shorten, keys))\n\n    if not vertical:\n        ax.set_ylim((n - 0.5, -0.5))\n        ax.set_yticks(range(n))\n        ax.set_yticklabels(labels, rotation=label_rotation)\n    else:\n        ax.set_xlim((-0.5, n - 0.5))\n        ax.set_xticks(range(n))\n        ax.set_xticklabels(labels, rotation=label_rotation, ha=\"right\")\n\n    return ax\n\n\ndef wrapper(docs, fun, default, **kwargs):\n    for key, value in default.items():\n        kwargs.setdefault(key, value)\n\n    plot_kwargs = dict()\n    params = inspect.signature(plot_histogram).parameters\n\n    for key in list(kwargs):\n        if key in params:\n            plot_kwargs[key] = kwargs.pop(key)\n\n    if kwargs.pop(\"relative\", False):\n        plot_kwargs[\"relative_to\"] = len(docs)\n\n    data = fun(docs, **kwargs)\n    return plot_histogram(data, **plot_kwargs)\n\n\ndef plot_groups_histogram(docs, **kwargs):\n    \"\"\" \"\"\"\n\n    def fun(docs, **kwargs):\n        return compute_groups_histogram(docs, **kwargs).T\n\n    default = dict(title=\"Categories\")\n    return wrapper(docs, fun, default, **kwargs)\n\n\ndef plot_year_histogram(docs: DocumentSet, **kwargs):\n    \"\"\"Plot histogram of the number of documents published in each year.\n\n    :param kwargs: Passed to `plot_histogram`.\n    \"\"\"\n    default = dict(title=\"Year of publications\")\n    return wrapper(docs, compute_year_histogram, default, **kwargs)\n\n\ndef plot_author_histogram(docs: DocumentSet, **kwargs):\n    \"\"\"Plot histogram of the number of documents published per author.\n\n    :param kwargs: Passed to `plot_histogram`.\n    \"\"\"\n    default = dict(title=\"Authors\", limit=25)\n    return wrapper(docs, compute_author_histogram, default, **kwargs)\n\n\ndef plot_number_authors_histogram(docs: DocumentSet, **kwargs):\n    \"\"\"Plot histogram of the number of authors per document.\n\n    :param kwargs: Passed to `plot_histogram`.\n    \"\"\"\n    default = dict(title=\"No. of authors\")\n    return wrapper(docs, compute_number_authors_histogram, default, **kwargs)\n\n\ndef plot_author_affiliation_histogram(docs: DocumentSet, **kwargs):\n    \"\"\"Plot histogram of the number of documents published per author\n    affiliation.\n\n    :param kwargs: Passed to `plot_histogram`.\n    \"\"\"\n    default = dict(title=\"Author + Affiliation\", limit=25)\n    return wrapper(docs, compute_author_affiliation_histogram, default, **kwargs)\n\n\ndef plot_language_histogram(docs: DocumentSet, **kwargs):\n    \"\"\"Plot histogram of the number of documents by language.\"\"\"\n    default = dict(title=\"Language\")\n    return wrapper(docs, compute_language_histogram, default, **kwargs)\n\n\ndef plot_source_histogram(docs: DocumentSet, **kwargs):\n    \"\"\"Plot histogram of the number of documents by publication source.\"\"\"\n    default = dict(title=\"Publication source\", limit=25)\n    return wrapper(docs, compute_source_histogram, default, **kwargs)\n\n\ndef plot_source_type_histogram(docs: DocumentSet, **kwargs):\n    \"\"\"Plot histogram of the number of documents by publication source\n    type.\n\n    :param kwargs: Passed to `plot_histogram`.\n    \"\"\"\n    default = dict(title=\"Publication source type\", limit=25)\n    return wrapper(docs, compute_source_type_histogram, default, **kwargs)\n\n\ndef plot_affiliation_histogram(docs: DocumentSet, **kwargs):\n    \"\"\"Plot histogram of the number of documents by author affiliation.\n\n    :param kwargs: Passed to `plot_histogram`.\n    \"\"\"\n    default = dict(title=\"Affiliations\", limit=25)\n    return wrapper(docs, compute_affiliation_histogram, default, **kwargs)\n\n\ndef plot_country_histogram(docs: DocumentSet, **kwargs):\n    \"\"\"Plot histogram of the number of documents by country of author\n    affiliation\n\n    :param kwargs: Passed to `plot_histogram`.\n    \"\"\"\n    default = dict(title=\"Countries\", limit=25)\n    return wrapper(docs, compute_country_histogram, default, **kwargs)\n\n\ndef plot_continent_histogram(docs: DocumentSet, **kwargs):\n    \"\"\"Plot histogram of the number of documents by continent of author\n    affiliation.\n\n    :param kwargs: Passed to `plot_histogram`.\n    \"\"\"\n    default = dict(title=\"Continents\", limit=25)\n    return wrapper(docs, compute_continent_histogram, default, **kwargs)\n\n\ndef plot_word_distribution(corpus: Corpus, *, limit=25, **kwargs):\n    \"\"\"Plot the frequency of the top words in the given corpus.\n\n    :param kwargs: Passed to `plot_histogram`.\n    \"\"\"\n    n = len(corpus.frequencies)\n    data = compute_word_distribution(corpus, limit=limit)\n    return plot_histogram(data, relative_to=n, **kwargs)\n\n\ndef plot_embedding(corpus: Corpus, model: TopicModel, layout=None, ax=None):\n    \"\"\"TODO\"\"\"\n    if ax is None:\n        ax = plt.gca()\n\n    if layout is None:\n        layout = calculate_embedding(corpus)\n\n    num_topics = len(model.topic2token)\n    best_topic = np.argmax(model.doc2topic.T, axis=0)\n\n    colors = seaborn.color_palette(\"hls\", num_topics)\n    colors = np.array(colors)[:, :3] * 0.9  # Mute colors a bit\n\n    for i in range(num_topics):\n        indices = best_topic == i\n        # label = 'ABCDEFGHIJLMNOPQRSTUVWXYZ'[i]\n        label = i + 1\n\n        for j in np.argwhere(indices)[:, 0]:\n            x, y = layout[j]\n            ax.scatter(\n                x,\n                y,\n                marker=\"o\",\n                s=150,\n                linewidth=0.5,\n                color=colors[i],\n                zorder=2 * j,\n            )\n\n            ax.text(\n                x,\n                y,\n                label,\n                fontsize=6,\n                color=\"1\",\n                va=\"center\",\n                ha=\"center\",\n                fontweight=\"bold\",\n                zorder=2 * j + 1,\n            )\n\n        top_items = model.best_tokens_for_topic(i, limit=3)\n        label = f\"Topic {label}:\" + \", \".join(top_items)\n\n        center = np.median(layout[indices], axis=0)\n        ax.text(\n            center[0],\n            center[1],\n            label,\n            va=\"center\",\n            ha=\"center\",\n            color=\"1\",\n            backgroundcolor=(0, 0, 0, 0.75),\n            zorder=10 * len(best_topic),\n        )\n\n    ax.set_aspect(\"equal\")\n    ax.set_xticks([])\n    ax.set_yticks([])\n\n\ndef plot_topic_clouds(model: TopicModel, *, fig=None, ncols=3, **kwargs):\n    \"\"\"Plot word clouds for each of the topics from the given topic model.\"\"\"\n    if fig is None:\n        plt.clf()\n        fig = plt.gcf()\n\n    nrows = math.ceil(model.num_topics / float(ncols))\n\n    for i in range(model.num_topics):\n        ax = fig.add_subplot(nrows, ncols, i + 1)\n        plot_topic_cloud(model, i, ax=ax, **kwargs)\n\n\ndef plot_topic_cloud(model: TopicModel, topic_id: int, *, ax=None, **kwargs):\n    \"\"\"Plot a word cloud for the given topic from the given topic model.\"\"\"\n    if ax is None:\n        ax = plt.gca()\n\n    ax.set_xticks([])\n    ax.set_yticks([])\n\n    im = generate_topic_cloud(model, topic_id, **kwargs).to_array()\n    ax.set_title(f\"Topic {topic_id + 1}\")\n    ax.imshow(im, interpolation=\"bilinear\")\n\n\ndef plot_document_topics(model: TopicModel, document_id: int, *, ax=None):\n    if ax is None:\n        ax = plt.gca()\n\n    weights = model.document_topics(document_id)\n\n    ax.bar(np.arange(model.num_topics), model.document_topics(document_id))\n    ax.set_ylim(0, 1)\n    ax.set_ylabel(\"Relevance\")\n    ax.set_ylabel(\"Topics\")\n\n    for i, w in enumerate(weights):\n        if w > 0.01:\n            plt.text(i, w, str(i + 1), ha=\"center\", va=\"bottom\")\n"
  },
  {
    "path": "litstudy/sources/__init__.py",
    "content": "from .scopus import search_scopus, refine_scopus, fetch_scopus\nfrom .bibtex import load_bibtex\nfrom .semanticscholar import fetch_semanticscholar, search_semanticscholar, refine_semanticscholar\nfrom .crossref import fetch_crossref, refine_crossref, search_crossref\nfrom .ieee import load_ieee_csv\nfrom .springer import load_springer_csv\nfrom .dblp import search_dblp\nfrom .ris import load_ris_file\nfrom .arxiv import search_arxiv\nfrom .csv import load_csv\nfrom .scopus_csv import load_scopus_csv\n\n__all__ = [\n    \"fetch_crossref\",\n    \"fetch_scopus\",\n    \"fetch_semanticscholar\",\n    \"load_bibtex\",\n    \"load_csv\",\n    \"load_ieee_csv\",\n    \"load_ris_file\",\n    \"load_scopus_csv\",\n    \"load_springer_csv\",\n    \"refine_crossref\",\n    \"refine_scopus\",\n    \"refine_semanticscholar\",\n    \"search_arxiv\",\n    \"search_crossref\",\n    \"search_dblp\",\n    \"search_scopus\",\n    \"search_semanticscholar\",\n]\n"
  },
  {
    "path": "litstudy/sources/arxiv.py",
    "content": "from litstudy.types import Document, DocumentSet, DocumentIdentifier, Author\nfrom typing import Optional, List\nimport feedparser  # type: ignore\nfrom datetime import datetime\nfrom urllib.parse import urlencode\nimport time\n\n\nclass ArXivAuthor(Author):\n    def __init__(self, entry):\n        self.entry = entry\n\n    @property\n    def name(self):\n        return self.entry\n\n\nclass ArXivDocument(Document):\n    def __init__(self, entry):\n        identifier = DocumentIdentifier(\n            entry.title,\n        )\n\n        super().__init__(identifier)\n        self.entry = entry\n\n    @property\n    def doi(self) -> Optional[str]:\n        return self.entry.get(\"arxiv_doi\", None)\n\n    @property\n    def title(self) -> str:\n        return self.entry.get(\"title\")\n\n    @property\n    def authors(self) -> List:\n        return [ArXivAuthor(name.get(\"name\")) for name in self.entry.get(\"authors\")]\n\n    @property\n    def journal_ref(self) -> Optional[str]:\n        return self.entry.get(\"arxiv_journal_ref\", None)\n\n    @property\n    def publication_date(self):\n        publication_date = datetime.strptime(self.entry.get(\"published\"), \"%Y-%m-%dT%H:%M:%SZ\")\n        return publication_date.date()\n\n    @property\n    def abstract(self) -> Optional[str]:\n        return self.entry.get(\"summary\", None)\n\n    @property\n    def language(self) -> Optional[str]:\n        return self.entry.get(\"language\", None)\n\n    @property\n    def category(self) -> Optional[List[str]]:\n        \"\"\"returns arxiv category for article\"\"\"\n        return self.entry.get(\"tags\", None)[0].get(\"term\", None)\n\n\n# Base api query url\nARXIV_SEARCH_URL = \"http://export.arxiv.org/api/query\"\n\n\ndef search_arxiv(\n    query,\n    start=0,\n    max_results=2000,\n    batch_size=100,\n    sort_order=\"descending\",\n    sort_by=\"submittedDate\",\n    sleep_time=3,\n) -> DocumentSet:\n    \"\"\"Search `arXiv <https://arxiv.org/>`_.\n\n    Each returned document contains the following attributes:\n    title, authors, doi, journal_ref, publication_date, abstract, language, and category\n\n    :param query: The query as described in the\n                  `arXiv API use manual <https://info.arxiv.org/help/api/user-manual.html#query_details>`_.\n    :param max_results: The maximum number of results to return.\n    :param start: Skip the first ``start`` documents from the results.\n    :param batch_size: The number documents to fetch per request.\n    :param sleep_time: The time to wait in seconds between each HTTP requests.\n    \"\"\"\n\n    docs = list()\n    start = int(start)\n    max_results = int(max_results)\n    batch_size = int(batch_size)\n\n    while len(docs) < max_results:\n        url_query = urlencode(\n            dict(\n                search_query=query,\n                start=start,\n                max_results=min(max_results - len(docs), batch_size),\n                sortOrder=sort_order,\n                sortBy=sort_by,\n            )\n        )\n\n        url = f\"{ARXIV_SEARCH_URL}?{url_query}\"\n        data = feedparser.parse(url)\n\n        if not data.entries:\n            break\n\n        start += len(data.entries)\n\n        for entry in data.entries:\n            docs.append(ArXivDocument(entry))\n\n        time.sleep(sleep_time)\n\n    return DocumentSet(docs)\n"
  },
  {
    "path": "litstudy/sources/bibtex.py",
    "content": "from ..types import Document, DocumentSet, DocumentIdentifier, Author\nfrom ..common import robust_open\n\n# from bibtexparser.customization import convert_to_unicode\nfrom bibtexparser.latexenc import latex_to_unicode\nimport bibtexparser\nfrom datetime import date\nimport re\n\nMONTHS = dict(\n    jan=1,\n    january=1,\n    feb=2,\n    feburary=2,\n    mar=3,\n    march=3,\n    apr=4,\n    april=4,\n    may=5,\n    jun=6,\n    june=6,\n    jul=7,\n    july=7,\n    aug=8,\n    august=8,\n    sep=9,\n    september=9,\n    oct=10,\n    october=10,\n    nov=11,\n    november=11,\n    dec=12,\n    december=12,\n)\n\n\ndef find_doi(entry):\n    def extract(val):\n        if isinstance(val, str):\n            # The following regex is recommended by crossref to detect DOIs\n            # http://crossref.org/blog/dois-and-matching-regular-expressions/\n            #   /^10.\\d{4,9}/[-._;()/:A-Z0-9]+$/i\n            pattern = \"10[.][0-9]{4,9}/[-._;()/:a-zA-Z0-9]{5,}\"\n\n            match = re.search(pattern, val)\n            if match:\n                return match[0]\n\n        return None\n\n    result = entry.get(\"doi\", \"\").strip()\n    if result:\n        doi = result\n    else:\n        doi = None\n\n        for key in [\"doi\", \"link\", \"url\", \"howpublished\"]:\n            if key in entry:\n                doi = extract(entry[key])\n                if doi:\n                    break\n\n        if not doi:\n            return None\n\n    # Remove URL prefix\n    prefix = \"https://doi.org/\"\n    if doi.startswith(prefix):\n        n = len(prefix)\n        doi = doi[n:]\n\n    return doi\n\n\nclass BibDocument(Document):\n    def __init__(self, entry):\n        title = entry[\"title\"]\n        attr = dict(\n            doi=find_doi(entry),\n            pubmed=entry.get(\"pmid\"),\n        )\n\n        super().__init__(DocumentIdentifier(title, **attr))\n        self.entry = entry\n\n    @property\n    def key(self) -> str:\n        return self.entry[\"ID\"]\n\n    @property\n    def title(self) -> str:\n        return self.entry.get(\"title\").strip(\"{}\")\n\n    @property\n    def authors(self):\n        content = self.entry.get(\"author\")\n        if not content:\n            return None\n\n        content = re.sub(\"[ \\r\\n\\t]+\", \" \", content)\n        names = re.split(\" (?:and|And|AND) \", content)\n\n        if not names:\n            return None\n\n        # remove \"other\" from the list\n        if names[-1] == \"others\":\n            names = names[:-1]\n\n        return [BibAuthor(name) for name in names]\n\n    @property\n    def publisher(self):\n        return self.entry.get(\"publisher\")\n\n    @property\n    def language(self):\n        return self.entry.get(\"language\")\n\n    @property\n    def publication_date(self):\n        year = self.publication_year\n        month = self.publication_month or 1\n\n        if year is None:\n            return None\n\n        return date(year, month, 1)\n\n    @property\n    def publication_year(self):\n        try:\n            year = int(self.entry[\"year\"])\n        except Exception:\n            return None\n\n        # Sometimes year is in 19xx format.\n        if year < 100:\n            year += 1900\n\n        return year\n\n    @property\n    def publication_month(self):\n        key = self.entry.get(\"month\", \"\").lower()\n        return MONTHS.get(key)  # name -> number\n\n    @property\n    def publication_source(self):\n        result = self.entry.get(\"journal\")\n        if result:\n            return result\n\n        result = self.entry.get(\"booktitle\")\n        if result:\n            return result\n\n        return None\n\n    @property\n    def keywords(self):\n        content = self.entry.get(\"keywords\")\n        if not content:\n            return None\n\n        return [w.strip().lower() for w in re.split(\"[;,\\n\\r]+\", content) if w]\n\n    @property\n    def abstract(self):\n        return self.entry.get(\"abstract\")\n\n\nclass BibAuthor(Author):\n    def __init__(self, name):\n        self._name = name\n\n    @property\n    def name(self):\n        return self._name\n\n    def __repr__(self):\n        return f\"<{self._name}>\"\n\n\ndef load_bibtex(path: str) -> DocumentSet:\n    \"\"\"Load the bibtex file at the given `path` as a `DocumentSet`.\"\"\"\n\n    def decode(entry):\n        if isinstance(entry, list):\n            return [decode(e) for e in entry]\n        elif isinstance(entry, dict):\n            return dict((k, decode(v)) for k, v in entry.items())\n        else:\n            # TODO: latex_to_unicode sometimes fails with exception. I do\n            # not understand why, but let's just sweep it under the rug\n            # for now ok? Great.\n            try:\n                return latex_to_unicode(entry)\n            except Exception:\n                return entry\n\n    parser = bibtexparser.bparser.BibTexParser(common_strings=True)\n    parser.customization = decode\n\n    with robust_open(path) as f:\n        data = bibtexparser.load(f, parser=parser)\n\n    docs = [BibDocument(e) for e in data.entries if e.get(\"title\")]\n    return DocumentSet(docs)\n"
  },
  {
    "path": "litstudy/sources/crossref.py",
    "content": "from ..common import progress_bar\nfrom datetime import date\nfrom time import sleep\nfrom typing import Tuple, Optional\nfrom urllib.parse import quote_plus, urlencode\nimport logging\nimport re\nimport requests\nimport shelve\n\nfrom ..types import Document, Author, DocumentSet, DocumentIdentifier, Affiliation\n\n\nclass CrossRefAuthor(Author):\n    def __init__(self, entry):\n        self.entry = entry\n\n    @property\n    def name(self):\n        given = self.entry.get(\"given\", \"\")\n        family = self.entry.get(\"family\", \"\")\n\n        if not given and not family:\n            return None\n\n        return f\"{given} {family}\".strip()\n\n    @property\n    def orcid(self):\n        return self.entry.get(\"ORCID\")\n\n    @property\n    def affiliations(self):\n        entries = self.entry.get(\"affiliation\")\n        if entries:\n            return [CrossRefAffiliation(e) for e in entries]\n        else:\n            return None\n\n\nclass CrossRefAffiliation(Affiliation):\n    def __init__(self, entry):\n        self.entry = entry\n\n    @property\n    def name(self) -> str:\n        return self.entry[\"name\"]\n\n\ndef _extract_title(entry):\n    # CrossRef returns list of titles from some reason?\n    titles = entry.get(\"title\")\n\n    if titles:\n        return re.sub(r\"[\\s]+\", \" \", \" \".join(titles))\n    else:\n        return None\n\n\nclass CrossRefDocument(Document):\n    def __init__(self, entry):\n        self.entry = entry\n        title = _extract_title(entry)\n        doi = entry.get(\"DOI\")\n\n        super().__init__(DocumentIdentifier(title, doi=doi))\n\n    @property\n    def title(self) -> str:\n        return _extract_title(self.entry)\n\n    @property\n    def authors(self):\n        authors = self.entry.get(\"author\", [])\n        return [CrossRefAuthor(a) for a in authors]\n\n    @property\n    def publisher(self):\n        return self.entry.get(\"publisher\")\n\n    @property\n    def language(self):\n        return self.get(\"language\")\n\n    @property\n    def publication_date(self):\n        try:\n            parts = self.entry[\"published-print\"][\"date-parts\"]\n            year = int(parts[0])\n            month = int(parts[1])\n            return date(year, month, 1)\n        except Exception:\n            return None\n\n    @property\n    def publication_year(self):\n        try:\n            return int(self.entry[\"published-print\"][\"date-parts\"][0])\n        except Exception:\n            return None\n\n    @property\n    def publication_source(self):\n        source = self.entry.get(\"container-title\")\n        if source:\n            return source[0]\n        else:\n            return None\n\n    @property\n    def abstract(self):\n        return self.entry.get(\"abstract\")\n\n    @property\n    def citation_count(self):\n        try:\n            return int(self.entry[\"is-referenced-by-count\"])\n        except Exception:\n            return None\n\n    @property\n    def references(self):\n        output = []\n\n        for ref in self.entry.get(\"reference\", []):\n            title = ref.get(\"unstructured\")\n            doi = ref.get(\"DOI\")\n\n            if title or doi:\n                output.append(DocumentIdentifier(title, doi=doi))\n\n        return output\n\n    def __repr__(self):\n        return f\"<{self.title}>\"\n\n    @staticmethod\n    def load(doi):\n        return fetch_crossref(doi)\n\n\nCACHE_FILE = \".crossref\"\nCROSSREF_URL = \"https://api.crossref.org/works/\"\n\n\ndef fetch_crossref(doi: str, *, timeout=0.5, session=None) -> Optional[Document]:\n    \"\"\"Fetch the metadata for the given DOI from CrossRef.\n\n    :param timeout: The timeout between each HTTP request in seconds.\n    :param session: The `requests.Session` to use for HTTP requests.\n    :returns: The `Document` or `None` if the DOI was not available.\n    \"\"\"\n\n    if session is None:\n        session = requests.Session()\n\n    def request():\n        if not doi:\n            return None\n\n        with shelve.open(CACHE_FILE) as cache:\n            if doi in cache:\n                return cache[doi]\n\n            url = CROSSREF_URL + quote_plus(doi)\n\n            try:\n                response = session.get(url)\n            except Exception as e:\n                logging.warn(f\"failed to retrieve {doi}: {e}\")\n                return None\n\n            sleep(timeout)\n\n            code = response.status_code\n            if code == 200:\n                try:\n                    data = response.json()[\"message\"]\n                except Exception as e:\n                    logging.warn(f\"invalid output from {url}: {e}\")\n                    return None\n            elif code == 404:\n                logging.warn(f\"failed to retrieve {doi}: resource not found\")\n                data = None\n            else:\n                logging.warn(f\"failed to retrieve {doi} ({code}): {response.text}\")\n                return None\n\n            cache[doi] = data\n            return data\n\n    data = request()\n    return CrossRefDocument(data) if data else None\n\n\ndef refine_crossref(\n    docs: DocumentSet, *, timeout=0.5, session=None\n) -> Tuple[DocumentSet, DocumentSet]:\n    \"\"\"Attempts to fetch metadata from CrossRef for each document in the given\n    set. Returns a tuple of two sets: the documents retrieved from CrossRef\n    and the remaining documents (i.e., without DOI or not found).\n\n    :param timeout: Timeout in seconds between each request to throttle server communication.\n    :param session: The `requests.Session` to use for HTTP requests.\n    \"\"\"\n\n    if session is None:\n        session = requests.Session()\n\n    def callback(doc):\n        if isinstance(doc, CrossRefDocument):\n            return doc\n\n        return fetch_crossref(doc.id.doi, timeout=timeout, session=session)\n\n    return docs._refine_docs(callback)\n\n\ndef _fetch_dois(params: dict, timeout: float, limit: int, session):\n    dois = []\n\n    params = dict(params)\n    params[\"cursor\"] = \"*\"  # The cursor should be * on first request\n    params[\"rows\"] = 100  # Fetch 100 results per request\n\n    while True:\n        query_string = urlencode(params)\n        url = CROSSREF_URL + \"?\" + query_string\n\n        response = session.get(url).json()\n\n        # Status should be \"ok\"\n        if response[\"status\"] != \"ok\":\n            raise ValueError(f\"failed to retrieve {url}: {response}\")\n\n        sleep(timeout)\n\n        data = response[\"message\"]\n        items = data[\"items\"]\n        params[\"cursor\"] = data[\"next-cursor\"]\n\n        # If no more items are found, break from loop\n        if not items:\n            break\n\n        # Append to dois\n        for item in items:\n            doi = item[\"DOI\"]\n            dois.append(doi)\n\n        # If hit limit, break from loop\n        if limit and len(dois) > limit:\n            dois = dois[:limit]\n            break\n\n    return dois\n\n\ndef search_crossref(\n    query: str, *, limit: int = None, timeout: float = 0.5, options: dict = dict(), session=None\n) -> DocumentSet:\n    \"\"\"Submit the query to the CrossRef API.\n\n    :param query: The search query.\n    :param limit: Maximum number of results to retrieve. ``None`` is unlimited.\n    :param timeout: Timeout in seconds between each request to throttle\n                    server communication\n    :param options: Additional parameters that are passed to the ``/works``\n                    endpoint of CrossRef (see `CrossRef API`\n                    <https://api.crossref.org>`_). Options are `sort` and\n                    `filter`.\n    :param session: The `requests.Session` to use for HTTP requests.\n    \"\"\"\n    if not query:\n        return DocumentSet()\n\n    if session is None:\n        session = requests.Session()\n\n    params = dict()\n    params[\"query\"] = query\n    params[\"select\"] = \"DOI\"\n\n    for key, value in options.items():\n        params[key] = value\n\n    cache_params = dict(params)\n    cache_params[\"limit\"] = limit\n    cache_key = urlencode(cache_params)\n\n    with shelve.open(CACHE_FILE) as cache:\n        if cache_key not in cache:\n            dois = _fetch_dois(params, timeout, limit, session)\n            cache[cache_key] = dois\n        else:\n            dois = cache[cache_key]\n\n    docs = []\n    for doi in progress_bar(dois):\n        docs.append(fetch_crossref(doi, session=session, timeout=timeout))\n\n    return DocumentSet(docs)\n"
  },
  {
    "path": "litstudy/sources/csv.py",
    "content": "import csv\nimport datetime\n\nfrom ..types import Author, Document, DocumentSet, DocumentIdentifier\nfrom ..common import robust_open, fuzzy_match\n\n\nclass CsvAuthor(Author):\n    def __init__(self, name):\n        self._name = name\n\n    @property\n    def name(self):\n        return self._name\n\n\nclass CsvDocument(Document):\n    def __init__(self, record, fields):\n        self.fields = fields\n        self.record = record\n\n        id = DocumentIdentifier(self.title, doi=self._field(\"doi\"), pubmed=self._field(\"pubmed\"))\n        super().__init__(id)\n\n    def __getitem__(self, key):\n        return self.record[key]\n\n    def __setitem__(self, key, value):\n        self.record[key] = value\n\n    def __iter__(self):\n        return iter(self.record)\n\n    def _field(self, field_name):\n        key = self.fields[field_name]\n        return self.record.get(key) or None\n\n    @property\n    def title(self):\n        return self._field(\"title\")\n\n    @property\n    def abstract(self):\n        return self._field(\"abstract\")\n\n    @property\n    def publication_source(self):\n        return self._field(\"source\")\n\n    @property\n    def language(self):\n        return self._field(\"language\")\n\n    @property\n    def publisher(self):\n        return self._field(\"publisher\")\n\n    @property\n    def citation_count(self):\n        try:\n            return int(self._field(\"citation\"))\n        except Exception:\n            return None\n\n    @property\n    def keywords(self):\n        text = self._field(\"keywords\")\n        if not text:\n            return None\n\n        # Try to split on something\n        for delim in \";|\\t, \":\n            if delim in text:\n                return [t.strip() for t in text.split(delim)]\n\n        return [text]\n\n    @property\n    def publication_date(self):\n        text = self._field(\"date\")\n        if not text:\n            return None\n\n        # Is it a year?\n        try:\n            year = int(text)\n            if year > 1500 and year < 2500:\n                return datetime.date(year, 1, 1)\n            else:\n                return None\n        except Exception:\n            pass\n\n        # Is it an iso date?\n        try:\n            return datetime.date.fromisoformat(text)\n        except Exception:\n            pass\n\n        # Is it one of these formats?\n        formats = [\n            \"%c\",\n            \"%x\",\n            \"%d/%m/%y\",\n            \"%d/%m/%Y\",\n            \"%m/%d/%y\",\n            \"%m/%d/%Y\",\n            \"%d.%m.%y\",\n            \"%d.%m.%Y\",\n            \"%Y-%m-%d\",\n            \"%y-%m-%d\",\n            \"%Y-%d\",\n            \"%d-%Y\",\n            \"%y-%d\",\n        ]\n\n        for fmt in formats:\n            try:\n                return datetime.datetime.strptime(text, fmt)\n            except Exception:\n                pass\n\n        # I give up, failed to parse date\n        return None\n\n    @property\n    def publication_year(self):\n        date = self.publication_date\n        if not date:\n            return None\n\n        return date.year\n\n    @property\n    def authors(self):\n        text = self._field(\"authors\")\n        if not text:\n            return None\n\n        for delim in [\";\", \"|\", \" and \", \",\"]:\n            if delim in text:\n                names = text.split(delim)\n                names = [name.strip() for name in names]\n                names = [name for name in names if name]\n                return [CsvAuthor(name) for name in names]\n\n        # Just one author?\n        return [CsvAuthor(text)]\n\n\ndef find_field(columns, possible_names):\n    PREFIXES = [\"\", \"document\", \"article\", \"paper\", \"item\", \"publication\"]\n\n    for a in possible_names:\n        for b in columns:\n            for prefix in PREFIXES:\n                if fuzzy_match(f\"{prefix} {a}\", b):\n                    return b\n\n\ndef load_csv(\n    path: str,\n    dialect: \"csv.Dialect\" = None,\n    title_field: str = None,\n    authors_field: str = None,\n    abstract_field: str = None,\n    citation_field: str = None,\n    date_field: str = None,\n    source_field: str = None,\n    doi_field: str = None,\n    filter=None,\n) -> DocumentSet:\n    \"\"\"Load an abitrary CSV file and parse its contents as a ``DocumentSet``\n    on a best effort basis.\n\n    An attempt is made to guess the purpose of the fields of the CSV file\n    based on their names. For example, the date of publication is likely\n    given by a field named something like \"Publication Date\",\n    \"Year of Publication\", or \"Published Year\". In case the field name\n    cannot be determined, it is possible to explicitly set the purpose of\n    field names by passing additional parameters. For example, ``date_field``\n    explicit sets name of the date field.\n\n    The CSV is parsed using the given ``dialect``. If not dialect is given, an\n    attempt is made to guess the dialect based on the file's content.\n\n    :param path: Name of CSV file.\n    :param dialect: Used to read the CSV file.\n    :param title_field: Field name for ``title``.\n    :param authors_field: Field name for ``authors``.\n    :param abstract_field: Field name for ``abstract``.\n    :param citation_field: Field name for ``citation_count``.\n    :param date_field: Field name for ``publication_date`` or\n    :param source_field: Field name for ``source``.\n    :param doi_field: Field name for ``doi``.\n    :param filter: Optional function applied to each loaded record. This\n                   function can be used to, for example, add or delete fields.\n\n    Example::\n\n        docs = litstudy.load_csv(\"my_data.csv\",\n                                 title_field=\"Document Title\",\n                                 date_field=\"Pub Date\")\n    \"\"\"\n    with robust_open(path) as f:\n        text = f.read()\n\n        # If file is empty, exit now\n        if not text:\n            return DocumentSet([])\n\n        # Guess CSV dialect\n        if dialect is None:\n            dialect = csv.Sniffer().sniff(text)\n            f.seek(0)\n\n        # Read the records\n        records = []\n        for record in csv.DictReader(f):\n            if filter:\n                record = filter(record)\n\n            if record:\n                records.append(record)\n\n    # No records, exit now\n    if not records:\n        return DocumentSet([])\n\n    # Get the colum names\n    columns = list(records[0].keys())\n\n    # Guess the field names\n    fields = dict(\n        title=title_field\n        or find_field(\n            columns,\n            [\n                \"title\",\n            ],\n        ),\n        authors=authors_field\n        or find_field(\n            columns,\n            [\n                \"authors\",\n                \"author(s)\",\n                \"author\",\n                \"names\",\n                \"people\",\n                \"person\",\n                \"persons\",\n            ],\n        ),\n        abstract=abstract_field\n        or find_field(\n            columns,\n            [\n                \"abstract\",\n                \"description\",\n                \"content\",\n                \"text\",\n                \"short text\",\n                \"body\",\n            ],\n        ),\n        citation=citation_field\n        or find_field(\n            columns,\n            [\n                \"citation count\",\n                \"citations count\",\n                \"number of citations\",\n                \"number citations\",\n                \"cited by\",\n                \"citations\",\n                \"cited\",\n            ],\n        ),\n        date=date_field\n        or find_field(\n            columns,\n            [\n                \"pub date\",\n                \"datum\",\n                \"date of publication\",\n                \"published date\",\n                \"publishing date\",\n                \"pub year\",\n                \"year of publication\",\n                \"published year\",\n                \"publishing year\",\n                \"date\",\n                \"year\",\n            ],\n        ),\n        source=source_field\n        or find_field(\n            columns,\n            [\n                \"source title\",\n                \"source name\",\n                \"source\",\n                \"conference name\",\n            ],\n        ),\n        pubmed=find_field(\n            columns,\n            [\n                \"pubmed\",\n                \"pubmedid\",\n                \"pubmed id\",\n            ],\n        ),\n        doi=doi_field\n        or find_field(\n            columns,\n            [\n                \"doi\",\n                \"object identifier\",\n                \"object identification\",\n            ],\n        ),\n        keywords=find_field(\n            columns,\n            [\n                \"keywords\",\n                \"tags\",\n                \"categories\",\n                \"keys\",\n                \"indices\",\n                \"author keywords\",\n                \"author tags\",\n            ],\n        ),\n        publisher=find_field(\n            columns,\n            [\n                \"publisher\",\n                \"publisher name\",\n            ],\n        ),\n        language=find_field(\n            columns,\n            [\n                \"language\",\n                \"lang\",\n                \"original language\",\n            ],\n        ),\n    )\n\n    docs = [CsvDocument(record, fields) for record in records]\n\n    return DocumentSet(docs)\n"
  },
  {
    "path": "litstudy/sources/dblp.py",
    "content": "from ..types import Document, DocumentSet, DocumentIdentifier, Author\nimport requests\nimport shelve\nimport logging\n\n\nclass DBLPDocument(Document):\n    def __init__(self, entry, authors):\n        id = DocumentIdentifier(entry[\"title\"], doi=entry.get(\"doi\"))\n        super().__init__(id)\n\n        self.entry = entry\n        self._authors = authors\n\n    @property\n    def title(self):\n        return self.entry.get(\"title\")\n\n    @property\n    def publication_year(self):\n        try:\n            return int(self.entry.get(\"year\"))\n        except Exception:\n            return None\n\n    @property\n    def publication_type(self):\n        return self.entry.get(\"type\")\n\n    @property\n    def publication_source(self):\n        return self.entry.get(\"venue\")\n\n    @property\n    def publisher(self):\n        return self.entry.get(\"publisher\")\n\n    @property\n    def authors(self):\n        return self._authors\n\n    def __repr__(self):\n        return f\"<{self.title}>\"\n\n\nclass DBLPAuthor(Author):\n    def __init__(self, pid, name):\n        self._pid = pid\n        self._name = name\n\n    @property\n    def pid(self):\n        return self._pid\n\n    @property\n    def name(self):\n        return self._name\n\n    def __repr__(self):\n        return f\"<{self.name}>\"\n\n\ndef process_authors(entry, author_cache):\n    # Sometimes, authors is not a valid key\n    if \"authors\" not in entry:\n        return None\n\n    inputs = entry[\"authors\"][\"author\"]\n    outputs = []\n\n    # Sometimes, inputs is nothing? (empty str or null)\n    if not inputs:\n        return None\n\n    # Sometimes, inputs is str? (single author name)\n    if isinstance(inputs, str):\n        return [DBLPAuthor(None, inputs)]\n\n    # Sometimes, input is dict? (single-item list)\n    if isinstance(inputs, dict):\n        inputs = [inputs]\n\n    # Sometimes inputs is list\n    for author in inputs:\n        pid = author[\"@pid\"]\n        name = author[\"text\"]\n\n        if pid not in author_cache:\n            author_cache[pid] = DBLPAuthor(pid, name)\n\n        outputs.append(author_cache[pid])\n\n    return outputs\n\n\nCACHE_FILE = \".dblp\"\nDBLP_URL = \"http://dblp.org/search/publ/api\"\n\n\ndef search_dblp(query: str, *, limit=None) -> DocumentSet:\n    \"\"\"Perform the given `query` on the DBLP API and return the results\n    as a `DocumentSet`.\n\n    :param limit: The maximum number of documents to retrieve.\n    \"\"\"\n\n    attr = dict(format=\"json\", h=100, q=query, f=0)\n    offset = 0\n\n    docs = []\n    author_cache = dict()\n\n    with shelve.open(CACHE_FILE) as cache:\n        while True:\n            key = f\"{query};{offset}\"\n\n            if key not in cache:\n                attr[\"f\"] = offset\n                req = requests.get(DBLP_URL, params=attr)\n                cache[key] = req.json().get(\"result\")\n\n            data = cache[key]\n\n            if not data:\n                break\n\n            status = data.get(\"status\").get(\"text\")\n            if status != \"OK\":\n                logging.warning(f\"expecting status OK, got status {status}\")\n                break\n\n            if \"hits\" not in data or \"hit\" not in data[\"hits\"]:\n                break\n\n            entries = data[\"hits\"][\"hit\"]\n            offset += len(entries)\n\n            if not entries:\n                break\n\n            for entry in entries:\n                entry = entry[\"info\"]\n\n                authors = process_authors(entry, author_cache)\n                docs.append(DBLPDocument(entry, authors))\n\n            if limit is not None and len(docs) >= limit:\n                break\n\n    return DocumentSet(docs)\n"
  },
  {
    "path": "litstudy/sources/ieee.py",
    "content": "from ..types import Document, Author, DocumentSet, DocumentIdentifier, Affiliation\nfrom ..common import robust_open\nimport csv\nimport logging\n\n\nclass IEEEDocument(Document):\n    def __init__(self, entry):\n        doi = entry[\"DOI\"] or None\n        title = entry[\"Document Title\"]\n\n        super().__init__(DocumentIdentifier(title, doi=doi))\n        self.entry = entry\n\n    @property\n    def title(self) -> str:\n        return self.entry.get(\"Document Title\")\n\n    @property\n    def authors(self):\n        authors = self.entry.get(\"Authors\", \"\").split(\"; \")\n        affs = self.entry.get(\"Author Affiliations\", \"\").split(\"; \")\n\n        # Bug fix #55:\n        # In some cases, the number of affiliations does not match the number of authors\n        # given by the CSV file. Since there is no way of knowing which affiliations belong\n        # to which authors, we just ignore all affiliations in this case.\n        if len(authors) != len(affs):\n            logging.warn(\n                (\n                    f\"affiliations for entry '{self.title}' are invalid: the number of authors \"\n                    f\"({len(authors)}) does not match the number of author affilications ({len(affs)})\"\n                )\n            )\n\n            affs = [None] * len(authors)\n\n        return [IEEEAuthor(a, b) for a, b in zip(authors, affs)]\n\n    @property\n    def affiliations(self):\n        affs = self.entry.get(\"Author Affiliations\", \"\").split(\"; \")\n        return [IEEEAffiliation(a) for a in affs]\n\n    @property\n    def publisher(self):\n        return self.entry.get(\"Publisher\")\n\n    @property\n    def publication_year(self):\n        try:\n            return int(self.entry[\"Publication Year\"])\n        except Exception:\n            return None\n\n    @property\n    def keywords(self):\n        # There are several sources of keywords. Should we only include\n        # author keywords maybe? Or all possible keywords?\n        keys = [\n            \"Author Keywords\",\n            \"IEEE Terms\",\n            \"INSPEC Controlled Terms\",\n            \"INSPEC Non-Controlled Terms\",\n            \"Mesh_Terms\",\n        ]\n\n        keywords = []\n        for key in keys:\n            for word in self.entry.get(key, \"\").split(\";\"):\n                if word:\n                    keywords.append(word)\n\n        return keywords\n\n    @property\n    def abstract(self):\n        return self.entry.get(\"Abstract\") or None\n\n    @property\n    def citation_count(self):\n        try:\n            return int(self.entry[\"Article Citation Count\"])\n        except Exception:\n            return None\n\n\nclass IEEEAffiliation(Affiliation):\n    def __init__(self, name):\n        self._name = name\n\n    @property\n    def name(self):\n        return self._name\n\n\nclass IEEEAuthor(Author):\n    def __init__(self, name, affiliation):\n        self._name = name\n        self._affiliation = affiliation\n\n    @property\n    def name(self):\n        return self._name\n\n    @property\n    def affiliations(self):\n        # Handle special case where affiliation is NA (not applicable)\n        if not self._affiliation or self._affiliation == \"NA\":\n            return None\n\n        return [IEEEAffiliation(self._affiliation)]\n\n\ndef load_ieee_csv(path: str) -> DocumentSet:\n    \"\"\"Import CSV file exported from\n    `IEEE Xplore <https://ieeexplore.ieee.org/search/searchresult.jsp>`_.\n    \"\"\"\n    with robust_open(path) as f:\n        lines = csv.DictReader(f)\n        docs = [IEEEDocument(line) for line in lines]\n        return DocumentSet(docs)\n"
  },
  {
    "path": "litstudy/sources/ris.py",
    "content": "from ..types import Document, Author, DocumentSet, DocumentIdentifier\nfrom ..common import robust_open\nimport logging\n\n\ndef extract_title(attr):\n    return attr.get(\"TI\") or attr.get(\"T1\") or attr.get(\"T2\") or attr.get(\"T3\") or attr.get(\"TT\")\n\n\nclass RISDocument(Document):\n    def __init__(self, attr, keywords, authors):\n        title = extract_title(attr)\n        doi = attr.get(\"DO\") or None\n\n        super().__init__(DocumentIdentifier(title, doi=doi))\n        self.attr = attr\n        self.keyword_list = keywords\n        self.author_list = authors\n\n    @property\n    def title(self) -> str:\n        return extract_title(self.attr)\n\n    @property\n    def authors(self):\n        return self.author_list\n\n    @property\n    def affiliations(self):\n        return None\n\n    @property\n    def publisher(self):\n        return self.attr.get(\"PB\")\n\n    @property\n    def language(self):\n        return self.attr.get(\"LA\")\n\n    @property\n    def publication_year(self):\n        try:\n            return int(self.attr[\"PY\"])\n        except Exception:\n            return None\n\n    @property\n    def publication_source(self):\n        return None\n\n    @property\n    def keywords(self):\n        return self.keyword_list\n\n    @property\n    def abstract(self):\n        return self.attr.get(\"AB\")\n\n\nclass RISAuthor(Author):\n    def __init__(self, name):\n        self._name = name\n\n    @property\n    def name(self):\n        return self._name\n\n\ndef load_ris_file(path: str) -> DocumentSet:\n    \"\"\"Load the RIS file at the given `path` as a `DocumentSet`.\"\"\"\n    docs = []\n\n    with robust_open(path) as f:\n        authors = []\n        keywords = []\n        attr = dict()\n\n        for line in f:\n            line = line.strip()\n            if not line:  # ignore empty lines?\n                continue\n\n            if len(line) < 5 or line[2:5] != \"  -\":\n                raise Exception(f\"invalid RIS line: {line}\")\n\n            key = line[:2]\n            value = line[5:].strip()\n\n            if key == \"ER\":\n                docs.append(RISDocument(attr, keywords, authors))\n                attr = dict()\n                authors = []\n                keywords = []\n            elif key == \"KW\":\n                keywords.append(value)\n            elif key in [\"A1\", \"A2\", \"A3\", \"A4\", \"AU\"]:\n                authors.append(RISAuthor(value))\n            elif key in attr:\n                logging.warn(\n                    f\"Tag {key} appears multiple times \" + f'(\"{value}\" and \"{attr[key]}\")'\n                )\n            else:\n                attr[key] = value\n\n    # Last document in RIS file\n    if attr:\n        docs.append(RISDocument(attr, keywords, authors))\n\n    return DocumentSet(docs)\n"
  },
  {
    "path": "litstudy/sources/scopus.py",
    "content": "from ..common import progress_bar, canonical\nfrom ..types import Document, DocumentSet, DocumentIdentifier, Author, Affiliation\nfrom collections import defaultdict\nfrom datetime import date\nfrom typing import Tuple, Optional\nimport logging\nimport random\nimport shelve\n\n\nSCOPUS_CACHE = \".scopus\"\n\n\nclass ScopusAuthor(Author):\n    def __init__(self, name, affiliations):\n        self._name = name\n        self._affiliations = affiliations\n\n    @property\n    def name(self):\n        return self._name\n\n    @property\n    def affiliations(self):\n        return self._affiliations\n\n\nclass ScopusAffiliation(Affiliation):\n    def __init__(self, affiliation):\n        self._affiliation = affiliation\n\n    @property\n    def name(self) -> str:\n        return self._affiliation.organization\n\n    @property\n    def country(self):\n        return self._affiliation.country or None\n\n    def __repr__(self):\n        return f\"<{self.name}>\"\n\n\nclass ScopusDocument(Document):\n    @staticmethod\n    def from_identifier(id, id_type, view=\"FULL\"):\n        from pybliometrics.scopus import AbstractRetrieval\n        from pybliometrics.scopus.exception import Scopus404Error\n\n        with shelve.open(SCOPUS_CACHE) as cache:\n            key = id + \"_found\"\n            if cache.get(key) is False:\n                raise Scopus404Error()\n\n            try:\n                result = AbstractRetrieval(id, id_type=id_type, view=view)\n                return ScopusDocument(result)\n            except Scopus404Error:\n                cache[key] = False\n                raise\n\n    @staticmethod\n    def from_eid(eid, **kwargs):\n        return ScopusDocument.from_identifier(eid, \"eid\", **kwargs)\n\n    @staticmethod\n    def from_doi(doi, **kwargs):\n        return ScopusDocument.from_identifier(doi, \"doi\", **kwargs)\n\n    def __init__(self, doc):\n        identifier = DocumentIdentifier(\n            doc.title,\n            doi=doc.doi,\n            pubmed=doc.pubmed_id,\n            eid=doc.eid,\n        )\n\n        super().__init__(identifier)\n        self.doc = doc\n\n    @property\n    def title(self):\n        return self.doc.title or None\n\n    @property\n    def authors(self):\n        if self.doc.authorgroup is not None:\n            items = defaultdict(list)\n\n            for aff in self.doc.authorgroup:\n                name = f\"{aff.indexed_name} (AUID: {aff.auid})\"\n                items[name].append(ScopusAffiliation(aff))\n\n            return [ScopusAuthor(a, f) for a, f in items.items()]\n\n        if self.doc.authors is not None:\n            at = self.doc.authors\n            return [ScopusAuthor(a.indexed_name, None) for a in at]\n\n        return None\n\n    @property\n    def publisher(self):\n        return self.doc.publisher or None\n\n    @property\n    def language(self):\n        return self.doc.language or None\n\n    @property\n    def keywords(self):\n        return self.doc.authkeywords or []\n\n    @property\n    def abstract(self):\n        return self.doc.abstract or self.doc.description or None\n\n    @property\n    def citation_count(self):\n        if self.doc.citedby_count is not None:\n            return int(self.doc.citedby_count)\n        return None\n\n    @property\n    def references(self):\n        refs = []\n\n        if not self.doc.references:\n            return None\n\n        for ref in self.doc.references:\n            refs.append(\n                DocumentIdentifier(\n                    ref.title,\n                    eid=ref.id,\n                    doi=ref.doi,\n                )\n            )\n\n        return refs\n\n    @property\n    def publication_source(self):\n        return self.doc.confname or self.doc.publicationName or None\n\n    @property\n    def source_type(self):\n        return self.doc.aggregationType\n\n    @property\n    def publication_date(self):\n        if self.doc.confdate:\n            year, month, day = self.doc.confdate[0]\n            return date(year, month, day)\n\n        if self.doc.coverDate:\n            try:\n                year, month, day = self.doc.coverDate.split(\"-\")\n                return date(int(year), int(month), int(day))\n            except Exception:\n                pass\n\n        return None\n\n    def __repr__(self):\n        return f\"<{self.title}>\"\n\n\ndef fetch_scopus(key: str) -> Optional[Document]:\n    \"\"\"Fetch the document on Scopus for the given key. The key can be one of\n    the following options:\n\n    * DOI\n    * Scopus EID or Scopus ID\n    * PII\n    * Pubmed-ID\n    \"\"\"\n    return ScopusDocument.from_identifier(key, None)\n\n\ndef search_scopus(query: str, *, limit: int = None) -> DocumentSet:\n    \"\"\"Submit the given query to the Scopus API.\n\n    :param limit: Restrict results the first `limit` documents.\n    \"\"\"\n    from pybliometrics.scopus import ScopusSearch\n\n    search = ScopusSearch(query, view=\"STANDARD\")\n    eids = list(search.get_eids())\n    docs = []\n\n    if limit is not None and len(eids) > limit:\n        random.seed(0)\n        random.shuffle(eids)\n        eids = eids[:limit]\n\n    for eid in progress_bar(eids):\n        doc = ScopusDocument.from_eid(eid)\n        docs.append(doc)\n\n    return DocumentSet(docs)\n\n\ndef refine_scopus(docs: DocumentSet, *, search_title=True) -> Tuple[DocumentSet, DocumentSet]:\n    \"\"\"Attempt to fetch Scopus metadata for each document in the given\n    set. Returns a tuple containing two sets: the documents available on\n    Scopus and the remaining documents not found on Scopus.\n\n\n    Documents are retrieved based on their identifier (DOI, Pubmed ID, or\n    Scopus ID). Documents without a unique identifier are retrieved by\n    performing a fuzzy search based on their title. This is not ideal\n    and can lead to false positives (i.e., another document is found having\n    the same title), thus it can be disabled if necessary.\n\n    :param search_title: Flag to toggle searching by title.\n    \"\"\"\n    from pybliometrics.scopus import ScopusSearch\n\n    def callback(doc):\n        id = doc.id\n        if isinstance(doc, ScopusDocument):\n            return doc\n\n        doi = id.doi\n        if doi:\n            try:\n                return ScopusDocument.from_doi(doi)\n            except Exception as e:\n                logging.warn(f\"no document found for DOI {doi}: {e}\")\n                return None\n\n        title = canonical(id.title)\n        if len(title) > 10 and search_title:\n            query = f\"TITLE({title})\"\n            response = ScopusSearch(query, view=\"STANDARD\", download=False)\n            nresults = response.get_results_size()\n\n            if nresults > 0 and nresults < 10:\n                response = ScopusSearch(query, view=\"STANDARD\")\n\n                for record in response.results or []:\n                    if canonical(record.title) == title:\n                        return ScopusDocument.from_eid(record.eid)\n\n        return None\n\n    return docs._refine_docs(callback)\n"
  },
  {
    "path": "litstudy/sources/scopus_csv.py",
    "content": "\"\"\"\nsupport loading Scopus CSV export.\n\"\"\"\n\nfrom typing import List, Optional\nfrom ..types import Document, Author, DocumentSet, DocumentIdentifier, Affiliation\nfrom ..common import robust_open\nimport csv\n\n\nclass ScopusCsvAffiliation(Affiliation):\n    def __init__(self, name):\n        self._name = name\n\n    @property\n    def name(self):\n        return self._name\n\n\nclass ScopusCsvAuthor(Author):\n    def __init__(self, name, affiliation):\n        self._name = name\n        self._affiliation = affiliation\n\n    @property\n    def name(self):\n        return self._name\n\n    @property\n    def affiliations(self):\n        return [ScopusCsvAffiliation(self._affiliation)]\n\n\nclass ScopusCsvDocument(Document):\n    def __init__(self, entry):\n        doi = entry.get(\"DOI\")\n        title = entry.get(\"Title\")\n        pubmed_id = entry.get(\"PubMed ID\")\n        eid = entry.get(\"EID\")\n        identifier = DocumentIdentifier(title, doi=doi, pubmed=pubmed_id, eid=eid)\n        super().__init__(identifier)\n        self.entry = entry\n\n    @property\n    def title(self) -> Optional[str]:\n        return self.entry.get(\"Title\") or None\n\n    @property\n    def authors(self) -> List[ScopusCsvAuthor]:\n        auths_affs = self.entry.get(\"Authors with affiliations\")\n        auths_id = self.entry.get(\"Author(s) ID\", \"\")\n        # author_last, first initial, affiliation; .....\n        if not auths_affs:\n            return []\n        auths_affs = auths_affs.split(\"; \")\n        auths = [\", \".join(auth_aff.split(\", \")[0:2]) for auth_aff in auths_affs]\n        affs = [\", \".join(auth_aff.split(\", \")[2:]) for auth_aff in auths_affs]\n        # try to add id to author name\n        auths_id = auths_id.split(\";\")[:-1]  # remove empty string last el\n        if len(auths) == len(auths_id):\n            auths = [f\"{name} (ID: {auth_id})\" for name, auth_id in zip(auths, auths_id)]\n        return [ScopusCsvAuthor(a, b) for a, b in zip(auths, affs)]\n\n    @property\n    def publisher(self) -> Optional[str]:\n        return self.entry.get(\"Publisher\") or None\n\n    @property\n    def publication_year(self) -> Optional[int]:\n        year = self.entry.get(\"Year\")\n        if not year:\n            return None\n\n        try:\n            return int(year)\n        except:\n            return None\n\n    @property\n    def keywords(self) -> Optional[List[str]]:\n        keywords = self.entry.get(\"Author Keywords\")\n        if not keywords:\n            return None\n        return keywords.split(\"; \")\n\n    @property\n    def abstract(self) -> Optional[str]:\n        abstract = self.entry.get(\"Abstract\")\n        if not abstract:\n            return None\n        return abstract\n\n    @property\n    def citation_count(self) -> Optional[int]:\n        citation_count = self.entry.get(\"Cited by\")\n        if not citation_count:\n            return None\n        return int(citation_count)\n\n    @property\n    def language(self) -> Optional[str]:\n        return self.entry.get(\"Language of Original Document\") or None\n\n    @property\n    def publication_source(self) -> Optional[str]:\n        return self.entry.get(\"Source title\") or None\n\n    @property\n    def source_type(self) -> Optional[str]:\n        return self.entry.get(\"Document Type\") or None\n\n\ndef load_scopus_csv(path: str) -> DocumentSet:\n    \"\"\"Import CSV file exported from Scopus\"\"\"\n    with robust_open(path) as f:\n        lines = csv.DictReader(f)\n        docs = [ScopusCsvDocument(line) for line in lines]\n        return DocumentSet(docs)\n"
  },
  {
    "path": "litstudy/sources/semanticscholar.py",
    "content": "from time import sleep\nfrom typing import Tuple, Optional\nfrom urllib.parse import urlencode, quote_plus\nimport logging\nimport requests\nimport shelve\n\nfrom ..common import progress_bar\nfrom ..types import Document, Author, DocumentSet, DocumentIdentifier\n\n\ndef extract_id(item):\n    if item is None or not item.get(\"title\"):\n        return None\n\n    return DocumentIdentifier(\n        item[\"title\"],\n        doi=item.get(\"doi\"),\n        arxivid=item.get(\"arxivId\"),\n        s2id=item.get(\"paperId\"),\n    )\n\n\ndef extract_ids(items):\n    if not items:\n        return None\n\n    return list(filter(None, map(extract_id, items)))\n\n\nclass ScholarAuthor(Author):\n    def __init__(self, entry):\n        self.entry = entry\n\n    @property\n    def name(self):\n        return self.entry.get(\"name\")\n\n    @property\n    def orcid(self):\n        return None\n\n\nclass ScholarDocument(Document):\n    def __init__(self, entry):\n        super().__init__(extract_id(entry))\n        self.entry = entry\n\n    @property\n    def title(self) -> str:\n        return self.entry.get(\"title\")\n\n    @property\n    def authors(self):\n        authors = self.entry.get(\"authors\")\n        if not authors:\n            return None\n\n        return [ScholarAuthor(a) for a in authors if a]\n\n    @property\n    def publication_year(self):\n        return self.entry.get(\"year\")\n\n    @property\n    def publication_source(self):\n        return self.entry.get(\"venue\")\n\n    @property\n    def abstract(self):\n        return self.entry.get(\"abstract\")\n\n    @property\n    def citations(self):\n        return extract_ids(self.entry.get(\"citations\"))\n\n    @property\n    def citation_count(self):\n        return self.entry.get(\"numCitedBy\")\n\n    @property\n    def references(self):\n        return extract_ids(self.entry.get(\"references\"))\n\n    def __repr__(self):\n        return f\"<{self.title}>\"\n\n    @staticmethod\n    def load(id):\n        return fetch_semanticscholar(id)\n\n\nS2_PAPER_URL = \"https://api.semanticscholar.org/v1/paper/\"\nS2_QUERY_URL = \"https://api.semanticscholar.org/graph/v1/paper/search\"\nCACHE_FILE = \".semantischolar\"\nDEFAULT_TIMEOUT = 3.05  # 100 requests per 5 minutes\n\n\ndef request_query(query, offset, limit, cache, session, timeout=DEFAULT_TIMEOUT):\n    params = urlencode(dict(query=query, offset=offset, limit=limit))\n    url = f\"{S2_QUERY_URL}?{params}\"\n\n    if url in cache:\n        return cache[url]\n\n    reply = session.get(url)\n    response = reply.json()\n\n    if \"data\" not in response:\n        msg = response.get(\"error\") or response.get(\"message\") or \"unknown\"\n        raise Exception(f\"error while fetching {reply.url}: {msg}\")\n\n    cache[url] = response\n    return response\n\n\ndef request_paper(key, cache, session, timeout=DEFAULT_TIMEOUT):\n    url = S2_PAPER_URL + quote_plus(key)\n\n    if url in cache:\n        return cache[url]\n\n    try:\n        sleep(timeout)\n        data = session.get(url).json()\n    except Exception as e:\n        logging.warning(f\"failed to retrieve {key}: {e}\")\n        return None\n\n    if \"paperId\" not in data:\n        msg = data.get(\"error\") or data.get(\"message\") or \"unknown error\"\n        logging.warning(f\"failed to retrieve {key}: {msg}\")\n        return None\n\n    cache[url] = data\n    return data\n\n\ndef fetch_semanticscholar(key: set, *, session=None) -> Optional[Document]:\n    \"\"\"Fetch SemanticScholar metadata for the given key. The key can be\n    one of the following (see `API reference\n    <https://www.semanticscholar.org/product/api>`_):\n\n    * DOI\n    * S2 paper ID\n    * ArXiv ID (example format: `arXiv:1705.10311`)\n    * MAG ID (example format: `MAG:112218234`)\n    * ACL ID (example format: `ACL:W12-3903`)\n    * PubMed ID (example format: `PMID:19872477`)\n    * Corpus ID (example format: `CorpusID:37220927`)\n\n    :param session: The `requests.Session` to use for HTTP requests.\n    :returns: The `Document` if it was found and `None` otherwise.\n    \"\"\"\n\n    if key is None:\n        return None\n\n    if session is None:\n        session = requests.Session()\n\n    with shelve.open(CACHE_FILE) as cache:\n        if isinstance(key, DocumentIdentifier):\n            data = None\n            if data is None and key.s2id:\n                data = request_paper(key.s2id, cache, session)\n\n            if data is None and key.doi:\n                data = request_paper(key.doi, cache, session)\n\n            if data is None and key.pubmed:\n                data = request_paper(f\"PMID:{key.pubmed}\", cache, session)\n\n            if data is None and key.arxivid:\n                data = request_paper(f\"arXiv:{key.arxivid}\", cache, session)\n        else:\n            data = request_paper(key, cache, session)\n\n    if data is None:\n        return None\n\n    return ScholarDocument(data)\n\n\ndef refine_semanticscholar(docs: DocumentSet, *, session=None) -> Tuple[DocumentSet, DocumentSet]:\n    \"\"\"Attempt to fetch SemanticScholar metadata for each document in the\n    given set based on their DOIs. Returns a tuple containing two sets: the\n    documents available on SemanticScholar and the remaining documents that\n    were not found or do not have a DOI.\n\n    :param session: The `requests.Session` to use for HTTP requests.\n    :returns: The documents available on SemanticScholar and the remaining documents.\n    \"\"\"\n\n    def callback(doc):\n        if isinstance(doc, ScholarDocument):\n            return doc\n\n        return fetch_semanticscholar(doc.id, session=session)\n\n    return docs._refine_docs(callback)\n\n\ndef search_semanticscholar(\n    query: str, *, limit: int = None, batch_size: int = 100, session=None\n) -> DocumentSet:\n    \"\"\"Submit the given query to SemanticScholar API and return the results\n    as a `DocumentSet`. The query is a string containg keywords (see `API reference\n    <https://www.semanticscholar.org/product/api%2Ftutorial#using-search-query-operators>`_).\n\n    :param query: The search query to submit.\n    :param limit: The maximum number of results to return.\n    :param batch_size: The number of results to retrieve per request. Must be at most 100.\n    :param session: The `requests.Session` to use for HTTP requests.\n    \"\"\"\n\n    if not query:\n        raise Exception(\"no query specified in `search_semanticscholar`\")\n\n    if session is None:\n        session = requests.Session()\n\n    docs = []\n\n    with shelve.open(CACHE_FILE) as cache:\n        paper_ids = []\n\n        while True:\n            offset = len(paper_ids)\n\n            response = request_query(query, offset, batch_size, cache, session)\n            if not response:\n                break\n\n            records = response[\"data\"]\n            total = response[\"total\"]\n\n            for record in records:\n                paper_ids.append(record[\"paperId\"])\n\n            # Check if we reached the total number of papers\n            if len(paper_ids) >= total:\n                break\n\n            # Check if we exceeded the user-defined limit\n            if limit is not None and len(paper_ids) >= limit:\n                paper_ids = paper_ids[:limit]\n                break\n\n        for paper_id in progress_bar(paper_ids):\n            doc = request_paper(paper_id, cache, session)\n\n            if doc:\n                docs.append(ScholarDocument(doc))\n            else:\n                logging.warn(f\"could not find paper id {paper_id}\")\n\n    return DocumentSet(docs)\n"
  },
  {
    "path": "litstudy/sources/springer.py",
    "content": "import csv\nfrom ..types import Document, DocumentSet, DocumentIdentifier\nfrom ..common import robust_open\n\n\nclass SpringerDocument(Document):\n    def __init__(self, entry):\n        doi = entry[\"Item DOI\"] or None\n        title = entry[\"Item Title\"]\n\n        super().__init__(DocumentIdentifier(title, doi=doi))\n        self.entry = entry\n\n    @property\n    def title(self) -> str:\n        return self.entry[\"Item Title\"]\n\n    @property\n    def authors(self):\n        # While Springer does provide an authors field, all names are\n        # concatenated into one long string without seperators, making\n        # it impossible to seperate them. Too bad.\n        # authors = self.entry.get('Authors')\n        return None\n\n    @property\n    def publisher(self):\n        return \"springer\"\n\n    @property\n    def publication_year(self):\n        try:\n            return int(self.entry[\"Publication Year\"])\n        except Exception:\n            return None\n\n\ndef load_springer_csv(path: str) -> DocumentSet:\n    \"\"\"Load CSV file exported from\n    `Springer Link <https://link.springer.com/>`_.\n    \"\"\"\n    with robust_open(path) as f:\n        lines = csv.DictReader(f)\n        docs = [SpringerDocument(line) for line in lines]\n        return DocumentSet(docs)\n"
  },
  {
    "path": "litstudy/stats.py",
    "content": "from .common import FuzzyMatcher\nfrom collections import defaultdict, OrderedDict\nfrom .types import DocumentSet\nimport pandas as pd\n\n\ndef compute_histogram(docs, fun, keys=None, sort_by_key=False, groups=None, limit=None):\n    if isinstance(groups, list):\n        groups = dict((v, v) for v in groups)\n\n    if isinstance(groups, dict):\n        data = dict()\n\n        for name, value in groups.items():\n            if isinstance(value, str):\n                data[name] = docs.data.eval(value)\n            else:\n                values = list(value)\n                assert len(values) == len(docs)\n                data[name] = values\n\n        groups = pd.DataFrame(data)\n    elif groups is None:\n        groups = pd.DataFrame(index=range(len(docs)))\n    elif isinstance(groups, pd.DataFrame):\n        pass\n\n    assert len(groups) == len(docs)\n    totals = defaultdict(lambda: 0)\n    counts = defaultdict(lambda: 0)\n\n    for doc, row in zip(docs, groups.itertuples()):\n        for item in fun(doc):\n            if item is None:\n                continue\n\n            totals[item] += 1\n\n            for index, weight in enumerate(row[1:]):\n                if weight:\n                    counts[item, index] += weight\n\n    if keys is None:\n        totals = pd.Series(totals)\n        totals = totals.sort_values(ascending=False)\n\n        if limit is not None:\n            totals = totals[:limit]\n\n        if sort_by_key:\n            totals = totals.sort_index()\n    else:\n        totals = OrderedDict((k, totals[k]) for k in keys)\n        totals = pd.Series(totals)\n\n    columns = groups.columns\n    if len(columns):\n        data = [[counts[item, index] for index in range(len(columns))] for item in totals.index]\n    else:\n        columns = [\"Frequency\"]\n        data = totals\n\n    return pd.DataFrame(\n        data,\n        index=totals.index,\n        columns=columns,\n    )\n\n\ndef compute_groups_histogram(docs: DocumentSet, **kwargs) -> pd.DataFrame:\n    return compute_histogram(docs, lambda _: [\"Frequency\"], **kwargs).T\n\n\ndef compute_year_histogram(docs: DocumentSet, **kwargs) -> pd.DataFrame:\n    \"\"\"Compute a histogram of the number of documents published in each\n    year.\"\"\"\n    years = [doc.publication_year for doc in docs]\n    min_year = min(year for year in years if year)\n    max_year = max(year for year in years if year)\n    keys = list(range(min_year, max_year + 1))\n\n    def extract(doc):\n        yield doc.publication_year\n\n    return compute_histogram(docs, extract, keys=keys, **kwargs)\n\n\ndef compute_number_authors_histogram(docs: DocumentSet, max_authors=10, **kwargs) -> pd.DataFrame:\n    \"\"\"Compute a histogram of the number of authors per document.\n\n    :param max_authors: If a document has more than `max_author` authors, it\n                        is it is listed as a special \"max authors\" category.\n    \"\"\"\n    keys = [\"NA\"] + list(range(1, max_authors + 1)) + [f\">{max_authors}\"]\n\n    def extract(doc):\n        n = len(doc.authors or [])\n        if n == 0:\n            yield \"NA\"\n        elif n > max_authors:\n            yield \">{max_authors}\"\n        else:\n            yield n\n\n    return compute_histogram(docs, extract, keys=keys, **kwargs)\n\n\ndef compute_language_histogram(docs: DocumentSet, **kwargs) -> pd.DataFrame:\n    \"\"\"Compute a histogram of number of documents by language.\"\"\"\n\n    def extract(doc):\n        if doc.language:\n            yield doc.language\n\n    return compute_histogram(docs, extract, **kwargs)\n\n\ndef default_mapper(mapper):\n    if mapper is None:\n        return FuzzyMatcher()\n    elif type(mapper) is dict:\n        return FuzzyMatcher(mapper)\n    else:\n        return mapper\n\n\ndef compute_source_histogram(docs: DocumentSet, mapper=None, **kwargs) -> pd.DataFrame:\n    \"\"\"Compute a histogram of number of documents by publication source.\"\"\"\n    mapper = default_mapper(mapper)\n\n    def extract(doc):\n        source = doc.publication_source\n        yield mapper.get(source) if source else \"(unknown)\"\n\n    return compute_histogram(docs, extract, **kwargs)\n\n\ndef compute_source_type_histogram(docs: DocumentSet, **kwargs) -> pd.DataFrame:\n    \"\"\"Compute a histogram of number of documents by source type.\"\"\"\n\n    def extract(doc):\n        yield doc.source_type or \"(unknown)\"\n\n    return compute_histogram(docs, extract, **kwargs)\n\n\ndef compute_author_histogram(docs: DocumentSet, **kwargs) -> pd.DataFrame:\n    \"\"\"Compute a histogram of number of documents by author name.\"\"\"\n\n    def extract(doc):\n        for author in doc.authors or []:\n            yield author.name\n\n    return compute_histogram(docs, extract, **kwargs)\n\n\ndef compute_author_affiliation_histogram(docs: DocumentSet, **kwargs) -> pd.DataFrame:\n    \"\"\"Compute a histogram of number of documents by (author name,\n    affiliation name) combinations. This can help reduce conflicts where there\n    are many authors of the same name working for different affiliations.\"\"\"\n\n    def extract(doc):\n        for author in doc.authors or []:\n            for affiliation in author.affiliations or []:\n                if author.name and affiliation.name:\n                    yield f\"{author.name}, {affiliation.name}\"\n\n    return compute_histogram(docs, extract, **kwargs)\n\n\ndef compute_affiliation_histogram(docs: DocumentSet, mapper=None, **kwargs) -> pd.DataFrame:\n    \"\"\"Compute a histogram of number of documents by affiliation name.\"\"\"\n    mapper = default_mapper(mapper)\n\n    def extract(doc):\n        result = set()\n        for author in doc.authors or []:\n            for aff in author.affiliations or []:\n                if aff.name:\n                    result.add(mapper.get(aff.name))\n\n        return result\n\n    return compute_histogram(docs, extract, **kwargs)\n\n\ndef extract_country(aff):\n    from .continent import COUNTRY_TO_CONTINENT\n\n    # Sometimes affiliation has given country\n    country = aff.country\n    if country:\n        return country\n\n    # Sometimes the country is in the affiliation name\n    name = aff.name\n    if name:\n        for country in COUNTRY_TO_CONTINENT.keys():\n            if country in name:\n                return country\n\n    return None\n\n\ndef compute_country_histogram(docs: DocumentSet, **kwargs) -> pd.DataFrame:\n    \"\"\"Compute a histogram of number of documents by affiliation country.\"\"\"\n\n    def extract(doc):\n        result = set()\n        for author in doc.authors or []:\n            for aff in author.affiliations or []:\n                country = extract_country(aff)\n                if country:\n                    result.add(country)\n\n        return result\n\n    return compute_histogram(docs, extract, **kwargs)\n\n\ndef compute_continent_histogram(docs: DocumentSet, **kwargs) -> pd.DataFrame:\n    \"\"\"Compute a histogram of number of documents by affiliation\n    continent.\n    \"\"\"\n    from .continent import COUNTRY_TO_CONTINENT\n\n    def extract(doc):\n        result = set()\n        for author in doc.authors or []:\n            for aff in author.affiliations or []:\n                country = extract_country(aff)\n                if country:\n                    country = country.strip().lower()\n\n                    if country.startswith(\"the \"):\n                        country = country[4:]\n\n                    continent = COUNTRY_TO_CONTINENT.get(country)\n                    if continent:\n                        result.add(continent)\n                    else:\n                        result.add(\"Other\")\n\n        return result\n\n    return compute_histogram(docs, extract, **kwargs)\n"
  },
  {
    "path": "litstudy/stopwords.py",
    "content": "STOPWORDS = [\n    \"'d\",\n    \"'ll\",\n    \"'m\",\n    \"'re\",\n    \"'s\",\n    \"'ve\",\n    \"a\",\n    \"about\",\n    \"above\",\n    \"achieve\",\n    \"acm\",\n    \"across\",\n    \"after\",\n    \"afterwards\",\n    \"again\",\n    \"against\",\n    \"ain\",\n    \"all\",\n    \"almost\",\n    \"alone\",\n    \"along\",\n    \"already\",\n    \"also\",\n    \"although\",\n    \"always\",\n    \"am\",\n    \"among\",\n    \"amongst\",\n    \"amoungst\",\n    \"amount\",\n    \"an\",\n    \"and\",\n    \"another\",\n    \"any\",\n    \"anyhow\",\n    \"anyone\",\n    \"anything\",\n    \"anyway\",\n    \"anywhere\",\n    \"appproach\",\n    \"approach\",\n    \"are\",\n    \"aren\",\n    \"aren't\",\n    \"around\",\n    \"as\",\n    \"at\",\n    \"available\",\n    \"back\",\n    \"based\",\n    \"be\",\n    \"became\",\n    \"because\",\n    \"become\",\n    \"becomes\",\n    \"becoming\",\n    \"been\",\n    \"before\",\n    \"beforehand\",\n    \"behind\",\n    \"being\",\n    \"below\",\n    \"beside\",\n    \"besides\",\n    \"between\",\n    \"beyond\",\n    \"bill\",\n    \"both\",\n    \"bottom\",\n    \"but\",\n    \"by\",\n    \"ca\",\n    \"call\",\n    \"can\",\n    \"cannot\",\n    \"cant\",\n    \"co\",\n    \"combination\",\n    \"computer\",\n    \"con\",\n    \"copyright\",\n    \"could\",\n    \"couldn\",\n    \"couldn't\",\n    \"couldnt\",\n    \"cry\",\n    \"current\",\n    \"d\",\n    \"de\",\n    \"describe\",\n    \"detail\",\n    \"did\",\n    \"didn\",\n    \"didn't\",\n    \"discuss\",\n    \"do\",\n    \"does\",\n    \"doesn\",\n    \"doesn't\",\n    \"doing\",\n    \"don\",\n    \"don't\",\n    \"done\",\n    \"down\",\n    \"due\",\n    \"during\",\n    \"each\",\n    \"eg\",\n    \"eight\",\n    \"either\",\n    \"eleven\",\n    \"else\",\n    \"elsewhere\",\n    \"empty\",\n    \"enough\",\n    \"etc\",\n    \"even\",\n    \"ever\",\n    \"every\",\n    \"everyone\",\n    \"everything\",\n    \"everywhere\",\n    \"except\",\n    \"few\",\n    \"fifteen\",\n    \"fifty\",\n    \"fill\",\n    \"find\",\n    \"fire\",\n    \"first\",\n    \"five\",\n    \"for\",\n    \"former\",\n    \"formerly\",\n    \"forty\",\n    \"found\",\n    \"four\",\n    \"from\",\n    \"front\",\n    \"full\",\n    \"further\",\n    \"get\",\n    \"give\",\n    \"go\",\n    \"had\",\n    \"hadn\",\n    \"hadn't\",\n    \"has\",\n    \"hasn\",\n    \"hasn't\",\n    \"hasnt\",\n    \"have\",\n    \"haven\",\n    \"haven't\",\n    \"having\",\n    \"he\",\n    \"hence\",\n    \"her\",\n    \"here\",\n    \"hereafter\",\n    \"hereby\",\n    \"herein\",\n    \"hereupon\",\n    \"hers\",\n    \"herself\",\n    \"high\",\n    \"him\",\n    \"himself\",\n    \"his\",\n    \"how\",\n    \"however\",\n    \"hpc\",\n    \"hundred\",\n    \"i\",\n    \"ie\",\n    \"ieee\",\n    \"if\",\n    \"impact\",\n    \"in\",\n    \"inc\",\n    \"increase\",\n    \"indeed\",\n    \"interest\",\n    \"into\",\n    \"is\",\n    \"isn\",\n    \"isn't\",\n    \"it\",\n    \"it's\",\n    \"its\",\n    \"itself\",\n    \"just\",\n    \"keep\",\n    \"key\",\n    \"kg\",\n    \"km\",\n    \"large\",\n    \"last\",\n    \"latter\",\n    \"latterly\",\n    \"least\",\n    \"less\",\n    \"ll\",\n    \"ltd\",\n    \"m\",\n    \"ma\",\n    \"made\",\n    \"make\",\n    \"many\",\n    \"may\",\n    \"me\",\n    \"meanwhile\",\n    \"method\",\n    \"might\",\n    \"mightn\",\n    \"mightn't\",\n    \"mill\",\n    \"mine\",\n    \"more\",\n    \"moreover\",\n    \"most\",\n    \"mostly\",\n    \"move\",\n    \"much\",\n    \"must\",\n    \"mustn\",\n    \"mustn't\",\n    \"my\",\n    \"myself\",\n    \"n't\",\n    \"name\",\n    \"namely\",\n    \"need\",\n    \"needn\",\n    \"needn't\",\n    \"neither\",\n    \"never\",\n    \"nevertheless\",\n    \"new\",\n    \"next\",\n    \"nine\",\n    \"no\",\n    \"nobody\",\n    \"none\",\n    \"noone\",\n    \"nor\",\n    \"not\",\n    \"nothing\",\n    \"now\",\n    \"nowhere\",\n    \"n‘t\",\n    \"n’t\",\n    \"o\",\n    \"of\",\n    \"off\",\n    \"often\",\n    \"on\",\n    \"once\",\n    \"one\",\n    \"only\",\n    \"onto\",\n    \"or\",\n    \"other\",\n    \"others\",\n    \"otherwise\",\n    \"our\",\n    \"ours\",\n    \"ourselves\",\n    \"out\",\n    \"over\",\n    \"own\",\n    \"paper\",\n    \"part\",\n    \"per\",\n    \"perhaps\",\n    \"please\",\n    \"present\",\n    \"propose\",\n    \"proposed\",\n    \"provide\",\n    \"put\",\n    \"quite\",\n    \"rather\",\n    \"re\",\n    \"real\",\n    \"really\",\n    \"regarding\",\n    \"results\",\n    \"s\",\n    \"same\",\n    \"say\",\n    \"see\",\n    \"seem\",\n    \"seemed\",\n    \"seeming\",\n    \"seems\",\n    \"serious\",\n    \"set\",\n    \"several\",\n    \"shan\",\n    \"shan't\",\n    \"she\",\n    \"she's\",\n    \"should\",\n    \"should've\",\n    \"shouldn\",\n    \"shouldn't\",\n    \"show\",\n    \"side\",\n    \"significant\",\n    \"since\",\n    \"sincere\",\n    \"six\",\n    \"sixty\",\n    \"size\",\n    \"so\",\n    \"some\",\n    \"somehow\",\n    \"someone\",\n    \"something\",\n    \"sometime\",\n    \"sometimes\",\n    \"somewhere\",\n    \"springer\",\n    \"still\",\n    \"such\",\n    \"system\",\n    \"t\",\n    \"take\",\n    \"ten\",\n    \"than\",\n    \"that\",\n    \"that'll\",\n    \"the\",\n    \"their\",\n    \"theirs\",\n    \"them\",\n    \"themselves\",\n    \"then\",\n    \"thence\",\n    \"there\",\n    \"thereafter\",\n    \"thereby\",\n    \"therefore\",\n    \"therein\",\n    \"thereupon\",\n    \"these\",\n    \"they\",\n    \"thick\",\n    \"thin\",\n    \"third\",\n    \"this\",\n    \"those\",\n    \"though\",\n    \"three\",\n    \"through\",\n    \"throughout\",\n    \"thru\",\n    \"thus\",\n    \"time\",\n    \"to\",\n    \"today\",\n    \"together\",\n    \"too\",\n    \"top\",\n    \"toward\",\n    \"towards\",\n    \"twelve\",\n    \"twenty\",\n    \"two\",\n    \"un\",\n    \"under\",\n    \"unless\",\n    \"until\",\n    \"up\",\n    \"upon\",\n    \"us\",\n    \"use\",\n    \"used\",\n    \"using\",\n    \"various\",\n    \"ve\",\n    \"verlag\",\n    \"very\",\n    \"via\",\n    \"was\",\n    \"wasn\",\n    \"wasn't\",\n    \"we\",\n    \"well\",\n    \"were\",\n    \"weren\",\n    \"weren't\",\n    \"what\",\n    \"whatever\",\n    \"when\",\n    \"whence\",\n    \"whenever\",\n    \"where\",\n    \"whereafter\",\n    \"whereas\",\n    \"whereby\",\n    \"wherein\",\n    \"whereupon\",\n    \"wherever\",\n    \"whether\",\n    \"which\",\n    \"while\",\n    \"whither\",\n    \"who\",\n    \"whoever\",\n    \"whole\",\n    \"whom\",\n    \"whose\",\n    \"why\",\n    \"will\",\n    \"with\",\n    \"within\",\n    \"without\",\n    \"won\",\n    \"won't\",\n    \"work\",\n    \"would\",\n    \"wouldn\",\n    \"wouldn't\",\n    \"y\",\n    \"yet\",\n    \"you\",\n    \"you'd\",\n    \"you'll\",\n    \"you're\",\n    \"you've\",\n    \"your\",\n    \"yours\",\n    \"yourself\",\n    \"yourselves\",\n    \"‘d\",\n    \"‘ll\",\n    \"‘m\",\n    \"‘re\",\n    \"‘s\",\n    \"‘ve\",\n    \"’d\",\n    \"’ll\",\n    \"’m\",\n    \"’re\",\n    \"’s\",\n    \"’ve\",\n]\n"
  },
  {
    "path": "litstudy/types.py",
    "content": "from abc import ABC, abstractmethod\nfrom datetime import date\nfrom typing import Optional, List\nimport numpy as np\nimport pandas as pd\nimport random\nimport re\n\nfrom .common import fuzzy_match, canonical, progress_bar\n\n\nclass DocumentSet:\n    \"\"\"Represents a set of documents.\n\n    `DocumentSet` stores a list of `Document` objects. Optionally, a pandas\n    data frame can be provided which stores additional properties on the\n    documents.\n\n    All set operations are accepted by `DocumentSet` (union, intersection,\n    difference), allowing for new sets to be created from existing sets.\n\n    Note that a `DocumentSet` is immutable and its content cannot be changed.\n    Instead, most methods below return a new `DocumentSet` instead of\n    performing modifications in-place.\n    \"\"\"\n\n    def __init__(self, docs, data=None):\n        \"\"\"Construct a new `DocumentSet`.\n\n        :param docs: A list (or iterator) of `Document` objects.\n        :param data: Additional metadata associated with the documents. This\n                     can be either a `pandas.DataFrame` or something which\n                     is accepted by the pandas DataFrame constructor.\n        \"\"\"\n        docs = list(docs)\n\n        if data is None:\n            data = pd.DataFrame(index=range(len(docs)))\n        else:\n            data = pd.DataFrame(data)\n\n        assert len(data) == len(docs)\n        self.data = data\n        self.docs = docs\n\n    def _refine_docs(self, callback):\n        new_indices = []\n        new_docs = []\n        old_indices = []\n        old_docs = []\n\n        for i, doc in enumerate(progress_bar(self.docs)):\n            new_doc = callback(doc)\n\n            if new_doc is not None:\n                new_indices.append(i)\n                new_docs.append(new_doc)\n            else:\n                old_indices.append(i)\n                old_docs.append(doc)\n\n        new_data = self.data.iloc[new_indices]\n        old_data = self.data.iloc[old_indices]\n\n        # FIX: not forget to reset the index\n        new_data.reset_index(drop=True, inplace=True)\n        old_data.reset_index(drop=True, inplace=True)\n\n        return DocumentSet(new_docs, new_data), DocumentSet(old_docs, old_data)\n\n    def add_property(self, name: str, values) -> \"DocumentSet\":\n        \"\"\"Returns a new set which has an additional property added.\n\n        :param name: Name of the new property.\n        :param values: List of values. Should be the same length as the\n                       number of documents in this set.\n        :returns: The new document set.\n        \"\"\"\n        data = self.data.copy(deep=False)\n        data[name] = values\n        return DocumentSet(self.docs, data)\n\n    def remove_property(self, name: str) -> \"DocumentSet\":\n        \"\"\"Returns a new set which has the given property removed.\n\n        :param name: Name of the property.\n        :returns: The new document set.\n        \"\"\"\n        data = self.data.copy(deep=False)\n        data.drop(name)\n        return DocumentSet(self.docs, data)\n\n    def filter_docs(self, predicate) -> \"DocumentSet\":\n        \"\"\"Returns a new set for which the provided predicate returned `True`.\n\n        :param predicate: A function `Document -> bool`.\n        :returns: The new document set.\n        \"\"\"\n        return self.filter(lambda doc, _: predicate(doc))\n\n    def filter(self, predicate) -> \"DocumentSet\":\n        \"\"\"Returns a new set for which the provided predicate returned `True`.\n\n        :param predicate: A function `Document, dict -> bool`. The provided\n                          dict stores the properties of the document.\n        :returns: The new document set.\n        \"\"\"\n        indices = []\n\n        for doc, record in zip(self.docs, self.data.itertuples()):\n            if predicate(doc, record):\n                indices.append(record.Index)\n\n        return self.select(indices)\n\n    def select(self, indices) -> \"DocumentSet\":\n        \"\"\"Returns a new set which contains only the documents at the\n        provided indices.\n\n        :param indices: Any input accepted by `pandas.DataFrame.iloc` such\n                        as a list of integer.\n        :returns: The new document set.\n        \"\"\"\n\n        data = self.data.iloc[indices]\n        docs = [self.docs[i] for i in data.index]\n        data = data.reset_index(drop=True)\n        return DocumentSet(docs, data)\n\n    def _intersect_indices(self, other):\n        haystack = [d.id for d in other]\n        left = []\n        right = []\n\n        for i, doc in enumerate(self):\n            needle = doc.id\n\n            for j, id in enumerate(haystack):\n                if id.matches(needle):\n                    left.append(i)\n                    right.append(j)\n                    break\n\n        return left, right\n\n    def _zip_with(self, left, other, right):\n        assert len(left) == len(right)\n        data = dict()\n\n        for key, column in self.data.iloc[left].items():\n            column = column.copy().reset_index(drop=True)\n            data[key] = column\n\n        for key, column in other.data.iloc[right].items():\n            column = column.copy().reset_index(drop=True)\n\n            if key in data:\n                data[key] = np.maximum(data[key], column)\n            else:\n                data[key] = column\n\n        return pd.DataFrame(index=range(len(left)), data=data)\n\n    def intersect(self, other: \"DocumentSet\") -> \"DocumentSet\":\n        \"\"\"Returns a new set which contains the documents provided in\n        both `self` and `other`. This is also available as the `&` operator.\n\n        :returns: The new document set.\n        \"\"\"\n        if not self or not other:\n            return DocumentSet([])\n\n        left, right = DocumentSet._intersect_indices(self, other)\n\n        docs = [self.docs[i] for i in left]  # Select docs from left?\n        data = DocumentSet._zip_with(self, left, other, right)\n        return DocumentSet(docs, data)\n\n    def difference(self, other: \"DocumentSet\") -> \"DocumentSet\":\n        \"\"\"Returns a new set which contains the documents provided in\n        `self` but not in `other`. This is also available as the `-` operator.\n\n        :returns: The new document set.\n        \"\"\"\n        if not other or not self:\n            return self\n\n        indices, _ = DocumentSet._intersect_indices(self, other)\n        return self.select(sorted(set(range(len(self))) - set(indices)))\n\n    def union(self, other: \"DocumentSet\") -> \"DocumentSet\":\n        \"\"\"Returns a new set which contains the documents provided in\n        either `self` and `other`. Duplicate documents in `other` that also\n        appear in `self` are discarded. This is also available as the `|`\n        operator.\n\n        :returns: The new document set.\n        \"\"\"\n        if not other:\n            return self\n        if not self:\n            return other\n\n        left, right = DocumentSet._intersect_indices(self, other)\n        if not left:\n            return DocumentSet.concat(self, other)\n\n        docs = [self.docs[i] for i in left]  # Select docs from left?\n        data = DocumentSet._zip_with(self, left, other, right)\n        middle = DocumentSet(docs, data)\n\n        left = self.select(sorted(set(range(len(self))) - set(left)))\n        right = other.select(sorted(set(range(len(other))) - set(right)))\n\n        return DocumentSet.concat(middle, DocumentSet.concat(left, right))\n\n    def concat(self, other: \"DocumentSet\") -> \"DocumentSet\":\n        \"\"\"Returns a new set which does contain the documents provided in\n        either `self` and `other`. Duplicate documents are not removed, see\n        `union` instead. This is also available as the `+` operator.\n\n        :returns: The new document set.\n        \"\"\"\n\n        def default_val(dtype):\n            c = dtype.char\n            if c == \"?\":\n                return False\n            if c in \"bBiu\":\n                return 0\n            if c in \"fc\":\n                return float(\"nan\")\n            if c in \"SaU\":\n                return \"\"\n\n            return None\n\n        if not self:\n            return other\n\n        if not other:\n            return self\n\n        left = self.data.copy()\n        right = other.data.copy()\n\n        for col in left:\n            if col not in right:\n                dtype = left[col].dtype\n                right[col] = np.array(default_val(dtype)).astype(dtype)\n\n        for col in right:\n            if col not in left:\n                dtype = right[col].dtype\n                left[col] = np.array(default_val(dtype)).astype(dtype)\n\n        data = pd.concat([left, right], ignore_index=True)\n        docs = self.docs + other.docs\n        return DocumentSet(docs, data)\n\n    def unique(self) -> \"DocumentSet\":\n        \"\"\"Returns a new set which has all duplicate documents removed.\n\n        :returns: The new document set.\n        \"\"\"\n        indices = []\n\n        for i, doc in enumerate(self.docs):\n            found = False\n            needle = doc.id\n\n            for other in self[:i]:\n                if other.id.matches(needle):\n                    other._identifier = other._identifier.merge(needle)\n                    found = True\n                    break\n\n            if not found:\n                indices.append(i)\n\n        return self.select(indices)\n\n    def sample(self, n, seed=0) -> \"DocumentSet\":\n        \"\"\"Returns a new set which contains `n` randomly chosen documents\n        from `self`.\n\n        :returns: The new document set.\n        \"\"\"\n        if len(self) <= n:\n            return self\n\n        random.seed(seed)\n        indices = random.sample(len(self), n)\n        indices.sort()\n        return self.select(indices)\n\n    def itertuples(self):\n        \"\"\"Returns an iterator over `(Document, dict)` tuples, where the\n        `dict` contains the properties of this document.\n        \"\"\"\n        return zip(self.docs, self.data.itertuples())\n\n    def __or__(self, other):\n        \"\"\"Alias for `DocumentSet.union`\"\"\"\n        return self.union(other)\n\n    def __and__(self, other):\n        \"\"\"Alias for `DocumentSet.intersect`\"\"\"\n        return self.intersect(other)\n\n    def __add__(self, other):\n        \"\"\"Alias for `DocumentSet.concat`\"\"\"\n        return self.concat(other)\n\n    def __sub__(self, other):\n        \"\"\"Alias for `DocumentSet.difference`\"\"\"\n        return self.difference(other)\n\n    def __len__(self):\n        \"\"\"Returns the number of documents in this set\"\"\"\n        return len(self.docs)\n\n    def __getitem__(self, key):\n        \"\"\"Returns different things depending on the key type:\n\n        * `str`: The property named `key` is returned.\n        * `int`: The document at position `key` is returned.\n        * otherwise: The call is forwarded to `DocumentSet.select`.\n        \"\"\"\n        if isinstance(key, str):\n            return self.data[key]\n        elif np.issubdtype(type(key), np.integer):  # any type of integer works\n            return self.docs[int(key)]\n        else:\n            return self.select(key)\n\n    def __iter__(self):\n        \"\"\"Returns an iterator over `Document` objects in this set.\"\"\"\n        return iter(self.docs)\n\n    def __bool__(self):\n        return bool(len(self))\n\n    def __repr__(self):\n        return f\"<{len(self)} documents>\"\n\n\nclass DocumentIdentifier:\n    \"\"\"Represents an identifier for a document.\n\n    Uniquely identifing an scientific document is often difficult since a\n    single document might have multiple identifiers assigned to it (e.g., DOI,\n    PubMed ID, Scopus ID, SemanticScholar ID) and not all data sources might\n    provide all these identifiers. This class stores all possible identifiers\n    that a document has.\n    \"\"\"\n\n    def __init__(self, title, **attr):\n        # Remove keys where value is None\n        self._title = title\n        self._attr = dict((k, v) for k, v in attr.items() if v)\n\n    @property\n    def title(self) -> Optional[str]:\n        \"\"\"Returns the title.\"\"\"\n        return self._title\n\n    @property\n    def doi(self) -> Optional[str]:\n        \"\"\"Returns the DOI (example: 10.1093/ajae/aaq063).\"\"\"\n        return self._attr.get(\"doi\")\n\n    @property\n    def pubmed(self) -> Optional[str]:\n        \"\"\"Returns the PubMed ID.\"\"\"\n        return self._attr.get(\"pubmed\")\n\n    @property\n    def arxivid(self) -> Optional[str]:\n        \"\"\"Returns the arXiv ID.\"\"\"\n        return self._attr.get(\"arxivid\")\n\n    @property\n    def scopusid(self) -> Optional[str]:\n        \"\"\"Returns the Scopus ID.\"\"\"\n        return self._attr.get(\"eid\")\n\n    @property\n    def s2id(self) -> Optional[str]:\n        \"\"\"Returns the Semantic Scholar ID.\"\"\"\n        return self._attr.get(\"s2id\")\n\n    def matches(self, other: \"DocumentIdentifier\") -> bool:\n        \"\"\"Returns `True` iff these two identifiers are equivalent\n\n\n        Two documents are considered to be equivalent if all identifiers they\n        have in common are equal. For example, if both documents have a DOI\n        then these should be the same. If two documents have not a single\n        identifier in common, a fuzzy match based on the title is performed.\n        \"\"\"\n        n = 0\n\n        # Two identifiers match if all keys that they have in common are equal\n        for key in self._attr:\n            if key in other._attr:\n                if self._attr[key] != other._attr[key]:\n                    return False\n                n += 1\n\n        if n > 0:\n            return True\n\n        # No identifiers in common\n        return fuzzy_match(self._title, other._title)\n\n    def merge(self, other) -> \"DocumentIdentifier\":\n        \"\"\"Returns a new `DocumentIdentifier` which adds the identifiers\n        `others` to `self`.\n        \"\"\"\n        attr = dict()\n        attr.update(other._attr)\n        attr.update(self._attr)\n        return DocumentIdentifier(self._title, **attr)\n\n    def __repr__(self):\n        return f\"<{self._title}, {self._attr}>\"\n\n\nclass Document(ABC):\n    \"\"\"Stores the metadata of a document.\n\n    This is an interface which provides several methods which can be\n    overridden by child classes. All methods can thus return `None`\n    in case that method is not overridden.\n    \"\"\"\n\n    def __init__(self, identifier: DocumentIdentifier):\n        self._identifier = identifier\n\n    @property\n    def id(self) -> DocumentIdentifier:\n        \"\"\"The `DocumentIdentifier` of this document.\"\"\"\n        return self._identifier\n\n    @property\n    @abstractmethod\n    def title(self) -> str:\n        \"\"\"The title of this document.\"\"\"\n        pass\n\n    @property\n    @abstractmethod\n    def authors(self) -> Optional[List[\"Author\"]]:\n        \"\"\"The authors of this document.\"\"\"\n        pass\n\n    @property\n    def affiliations(self) -> Optional[List[\"Affiliation\"]]:\n        \"\"\"The affiliations associated with the authors of this document.\"\"\"\n        authors = self.authors\n\n        if authors is None:\n            return None\n\n        items = dict()\n        for author in authors:\n            affiliations = author.affiliations\n\n            if affiliations:\n                for aff in affiliations:\n                    if aff.name:\n                        items[aff.name] = aff\n\n        return list(items.values())\n\n    @property\n    def publisher(self) -> Optional[str]:\n        \"\"\"The publisher of this document.\"\"\"\n        return None\n\n    @property\n    def language(self) -> Optional[str]:\n        \"\"\"The language this document is written in.\"\"\"\n        return None\n\n    @property\n    def publication_date(self) -> Optional[date]:\n        \"\"\"The data of publication.\"\"\"\n        return None\n\n    @property\n    def publication_year(self) -> Optional[int]:\n        \"\"\"The year of publication.\"\"\"\n        date = self.publication_date\n        if date is None:\n            return None\n        return date.year\n\n    @property\n    def publication_source(self) -> Optional[str]:\n        \"\"\"The name of the publication source (i.e., journal name,\n        conference name, etc.)\n        \"\"\"\n        return None\n\n    @property\n    def source_type(self) -> Optional[str]:\n        \"\"\"The type of publication source (i.e., journal, conference\n        proceedings, book, etc.)\n        \"\"\"\n        return None\n\n    @property\n    def keywords(self) -> Optional[List[str]]:\n        \"\"\"The keywords of this document. What exactly consistutes as\n        keywords depends on the data source (author keywords, generated\n        keywords, topic categories), but is should be a list of strings.\n        \"\"\"\n        return None\n\n    @property\n    def abstract(self) -> Optional[str]:\n        \"\"\"The abstract of this document.\"\"\"\n        return None\n\n    @property\n    def citation_count(self) -> Optional[int]:\n        \"\"\"The number of citations that this document received.\"\"\"\n        return None\n\n    @property\n    def references(self) -> Optional[List[DocumentIdentifier]]:\n        \"\"\"The list of other documents that are cited by this document.\"\"\"\n        return None\n\n    @property\n    def citations(self) -> Optional[List[DocumentIdentifier]]:\n        \"\"\"The list of other documents that cite this document.\"\"\"\n        return None\n\n    def mentions(self, term: str) -> bool:\n        \"\"\"Returns `True` if this document mentions the given term in the\n        title, abstract, or keywords.\n        \"\"\"\n        pattern = r\"(^|\\s)\" + re.escape(term) + r\"($|\\s)\"\n        flags = re.IGNORECASE\n        keywords = self.keywords or []\n\n        for text in [self.title, self.abstract] + keywords:\n            if text and re.search(pattern, text, flags=flags):\n                return True\n\n        return False\n\n\nclass Affiliation(ABC):\n    \"\"\"Represents the affiliation of an author\"\"\"\n\n    @property\n    @abstractmethod\n    def name(self) -> str:\n        \"\"\"Name of the affiliation\"\"\"\n        pass\n\n    @property\n    def city(self) -> Optional[str]:\n        \"\"\"City the affiliation is located in.\"\"\"\n        pass\n\n    @property\n    def country(self) -> Optional[str]:\n        \"\"\"Country the affiliation is located in.\"\"\"\n        pass\n\n\nclass Author(ABC):\n    \"\"\"Represents the author of a document.\"\"\"\n\n    @property\n    @abstractmethod\n    def name(self) -> str:\n        \"\"\"The name of the author.\"\"\"\n        pass\n\n    @property\n    def orcid(self) -> Optional[str]:\n        \"\"\"The ORCID of the author.\"\"\"\n        return None\n\n    @property\n    def s2id(self) -> Optional[str]:\n        \"\"\"The SemanticScholar ID of the author.\"\"\"\n        return None\n\n    @property\n    def affiliations(self) -> \"Optional[list[Affiliation]]\":\n        \"\"\"The affiliations this author is associated with.\"\"\"\n        return None\n\n\nclass DocumentMapping:\n    def __init__(self, docs=None):\n        self.title = dict()\n        self.doi = dict()\n        self.eid = dict()\n\n        if docs:\n            for index, doc in enumerate(docs):\n                self.add(doc.id, index)\n\n    def add(self, doc: DocumentIdentifier, value):\n        if doc.scopusid:\n            self.eid[doc.scopusid] = value\n\n        if doc.doi:\n            self.doi[doc.doi] = value\n\n        if doc.title:\n            self.title[canonical(doc.title)] = value\n\n    def get(self, doc: DocumentIdentifier):\n        result = None\n\n        if result is None and doc.scopusid:\n            result = self.eid.get(doc.scopusid)\n\n        if result is None and doc.doi:\n            result = self.doi.get(doc.doi)\n\n        if result is None and doc.title:\n            result = self.title.get(canonical(doc.title))\n\n        return result\n"
  },
  {
    "path": "notebooks/citation.html",
    "content": "<html>\n<head>\n<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.16.1/vis.css\" type=\"text/css\" />\n<script type=\"text/javascript\" src=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.16.1/vis-network.min.js\"> </script>\n<center>\n<h1></h1>\n</center>\n\n<!-- <link rel=\"stylesheet\" href=\"../node_modules/vis/dist/vis.min.css\" type=\"text/css\" />\n<script type=\"text/javascript\" src=\"../node_modules/vis/dist/vis.js\"> </script>-->\n\n<style type=\"text/css\">\n\n        #mynetwork {\n            width: 100%;\n            height: 1000px;\n            background-color: #ffffff;\n            border: 1px solid lightgray;\n            position: relative;\n            float: left;\n        }\n\n        \n        #loadingBar {\n            position:absolute;\n            top:0px;\n            left:0px;\n            width: 100%;\n            height: 1000px;\n            background-color:rgba(200,200,200,0.8);\n            -webkit-transition: all 0.5s ease;\n            -moz-transition: all 0.5s ease;\n            -ms-transition: all 0.5s ease;\n            -o-transition: all 0.5s ease;\n            transition: all 0.5s ease;\n            opacity:1;\n        }\n\n        #bar {\n            position:absolute;\n            top:0px;\n            left:0px;\n            width:20px;\n            height:20px;\n            margin:auto auto auto auto;\n            border-radius:11px;\n            border:2px solid rgba(30,30,30,0.05);\n            background: rgb(0, 173, 246); /* Old browsers */\n            box-shadow: 2px 0px 4px rgba(0,0,0,0.4);\n        }\n\n        #border {\n            position:absolute;\n            top:10px;\n            left:10px;\n            width:500px;\n            height:23px;\n            margin:auto auto auto auto;\n            box-shadow: 0px 0px 4px rgba(0,0,0,0.2);\n            border-radius:10px;\n        }\n\n        #text {\n            position:absolute;\n            top:8px;\n            left:530px;\n            width:30px;\n            height:50px;\n            margin:auto auto auto auto;\n            font-size:22px;\n            color: #000000;\n        }\n\n        div.outerBorder {\n            position:relative;\n            top:400px;\n            width:600px;\n            height:44px;\n            margin:auto auto auto auto;\n            border:8px solid rgba(0,0,0,0.1);\n            background: rgb(252,252,252); /* Old browsers */\n            background: -moz-linear-gradient(top,  rgba(252,252,252,1) 0%, rgba(237,237,237,1) 100%); /* FF3.6+ */\n            background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(252,252,252,1)), color-stop(100%,rgba(237,237,237,1))); /* Chrome,Safari4+ */\n            background: -webkit-linear-gradient(top,  rgba(252,252,252,1) 0%,rgba(237,237,237,1) 100%); /* Chrome10+,Safari5.1+ */\n            background: -o-linear-gradient(top,  rgba(252,252,252,1) 0%,rgba(237,237,237,1) 100%); /* Opera 11.10+ */\n            background: -ms-linear-gradient(top,  rgba(252,252,252,1) 0%,rgba(237,237,237,1) 100%); /* IE10+ */\n            background: linear-gradient(to bottom,  rgba(252,252,252,1) 0%,rgba(237,237,237,1) 100%); /* W3C */\n            filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fcfcfc', endColorstr='#ededed',GradientType=0 ); /* IE6-9 */\n            border-radius:72px;\n            box-shadow: 0px 0px 10px rgba(0,0,0,0.2);\n        }\n        \n\n        \n\n        \n</style>\n\n</head>\n\n<body>\n<div id = \"mynetwork\"></div>\n\n<div id=\"loadingBar\">\n    <div class=\"outerBorder\">\n        <div id=\"text\">0%</div>\n        <div id=\"border\">\n            <div id=\"bar\"></div>\n        </div>\n    </div>\n</div>\n\n\n<script type=\"text/javascript\">\n\n    // initialize global variables.\n    var edges;\n    var nodes;\n    var network; \n    var container;\n    var options, data;\n\n    \n    // This method is responsible for drawing the graph, returns the drawn network\n    function drawGraph() {\n        var container = document.getElementById('mynetwork');\n        \n        \n\n        // parsing and collecting nodes and edges from the python\n        nodes = new vis.DataSet([{\"id\": 13, \"label\": \"Extending OpenSHMEM\\nfor GPU computing\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Extending OpenSHMEM for GPU computing\", \"x\": -158.84031913861438, \"y\": -9.110427819310923}, {\"id\": 18, \"label\": \"Physis: An\\nimplicitly parallel\\nprogramming model\\nfor stencil\\ncomputations on\\nlarge-scale gpu-\\naccelerated\\nsupercomputers\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 27.352941513061523, \"title\": \"Physis: An implicitly parallel programming model for stencil computations on large-scale gpu-accelerated supercomputers\", \"x\": -48.15486775474848, \"y\": 10.3365600518889}, {\"id\": 34, \"label\": \"Compiling and\\nOptimizing Java 8\\nPrograms for GPU\\nExecution\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Compiling and Optimizing Java 8 Programs for GPU Execution\", \"x\": 48.54964311226419, \"y\": 44.1177616614731}, {\"id\": 51, \"label\": \"Selective GPU caches\\nto eliminate CPU-GPU\\nHW cache coherence\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Selective GPU caches to eliminate CPU-GPU HW cache coherence\", \"x\": 71.07842046600388, \"y\": 47.11377444038513}, {\"id\": 53, \"label\": \"PACXX: Towards a\\nunified programming\\nmodel for\\nprogramming\\naccelerators using\\nC++14\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"PACXX: Towards a unified programming model for programming accelerators using C++14\", \"x\": -124.39401774424834, \"y\": -14.447051575192905}, {\"id\": 60, \"label\": \"Accelerating gene\\nregulatory networks\\ninference through\\nGPU/CUDA programming\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Accelerating gene regulatory networks inference through GPU/CUDA programming\", \"x\": 20.825402215797823, \"y\": -10.284326933243939}, {\"id\": 64, \"label\": \"Exploring the\\nsuitability of\\nremote GPGPU\\nvirtualization for\\nthe OpenACC\\nprogramming model\\nusing rCUDA\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Exploring the suitability of remote GPGPU virtualization for the OpenACC programming model using rCUDA\", \"x\": -16.668947832613924, \"y\": -22.40088423363616}, {\"id\": 67, \"label\": \"DCUDA: Hardware\\nSupported Overlap of\\nComputation and\\nCommunication\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"DCUDA: Hardware Supported Overlap of Computation and Communication\", \"x\": 11.060500083681493, \"y\": 31.60319910024143}, {\"id\": 68, \"label\": \"GPU computing\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 100.0, \"title\": \"GPU computing\", \"x\": 18.492508918104704, \"y\": 5.24630372548311}, {\"id\": 91, \"label\": \"Designing a unified\\nprogramming model\\nfor heterogeneous\\nmachines\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 24.55882453918457, \"title\": \"Designing a unified programming model for heterogeneous machines\", \"x\": -34.58602107735282, \"y\": 10.022998431734214}, {\"id\": 92, \"label\": \"A case study of\\nOpenCL on an Android\\nmobile GPU\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"A case study of OpenCL on an Android mobile GPU\", \"x\": 17.681232026112763, \"y\": -4.73219841366908}, {\"id\": 106, \"label\": \"An evaluation of\\nunified memory\\ntechnology on NVIDIA\\nGPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"An evaluation of unified memory technology on NVIDIA GPUs\", \"x\": 83.89607756381261, \"y\": 45.94060722240323}, {\"id\": 115, \"label\": \"Achieving\\nportability and\\nperformance through\\nOpenACC\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Achieving portability and performance through OpenACC\", \"x\": -0.00907588467738224, \"y\": -27.88966559951781}, {\"id\": 121, \"label\": \"An Enhanced\\nProfiling Framework\\nfor the Analysis and\\nDevelopment of\\nParallel Primitives\\nfor GPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"An Enhanced Profiling Framework for the Analysis and Development of Parallel Primitives for GPUs\", \"x\": 112.55026277245288, \"y\": 41.311820120476504}, {\"id\": 125, \"label\": \"GPU accelerated\\nLanczos algorithm\\nwith applications\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"GPU accelerated Lanczos algorithm with applications\", \"x\": 20.735073185206545, \"y\": -47.794383040894274}, {\"id\": 128, \"label\": \"VOCL: An optimized\\nenvironment for\\ntransparent\\nvirtualization of\\ngraphics processing\\nunits\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"VOCL: An optimized environment for transparent virtualization of graphics processing units\", \"x\": -13.168878298961557, \"y\": -11.029826230527865}, {\"id\": 134, \"label\": \"Parallel algorithms\\nfor approximate\\nstring matching with\\nk mismatches on CUDA\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Parallel algorithms for approximate string matching with k mismatches on CUDA\", \"x\": 88.89945023533295, \"y\": -1.2211785197340201}, {\"id\": 141, \"label\": \"Record setting\\nsoftware\\nimplementation of\\ndes using CUDA\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 18.97058868408203, \"title\": \"Record setting software implementation of des using CUDA\", \"x\": 52.57107844914624, \"y\": -25.333694424403067}, {\"id\": 146, \"label\": \"An investigation of\\nUnified Memory\\nAccess performance\\nin CUDA\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 24.55882453918457, \"title\": \"An investigation of Unified Memory Access performance in CUDA\", \"x\": 78.33938531612698, \"y\": 38.23692297508153}, {\"id\": 155, \"label\": \"Towards achieving\\nperformance\\nportability using\\ndirectives for\\naccelerators\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Towards achieving performance portability using directives for accelerators\", \"x\": 111.4810502158476, \"y\": -5.301654447673659}, {\"id\": 181, \"label\": \"Self-adaptive OmpSs\\ntasks in\\nheterogeneous\\nenvironments\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Self-adaptive OmpSs tasks in heterogeneous environments\", \"x\": -48.75987230252901, \"y\": -5.3200068708149715}, {\"id\": 182, \"label\": \"Design and\\nperformance\\nevaluation of image\\nprocessing\\nalgorithms on GPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 21.764705657958984, \"title\": \"Design and performance evaluation of image processing algorithms on GPUs\", \"x\": 12.301758675210337, \"y\": 103.30287084820235}, {\"id\": 189, \"label\": \"Parallel computing\\nexperiences with\\nCUDA\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 44.11764907836914, \"title\": \"Parallel computing experiences with CUDA\", \"x\": 25.479213326486192, \"y\": -35.58712733608953}, {\"id\": 200, \"label\": \"Beyond the socket:\\nNUMA-aware GPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Beyond the socket: NUMA-aware GPUs\", \"x\": 102.1825831843816, \"y\": 40.95529085683279}, {\"id\": 202, \"label\": \"Early evaluation of\\ndirective-based GPU\\nprogramming models\\nfor productive\\nexascale computing\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 32.94117736816406, \"title\": \"Early evaluation of directive-based GPU programming models for productive exascale computing\", \"x\": -23.7357317004032, \"y\": 13.260122586947919}, {\"id\": 204, \"label\": \"Task scheduling for\\ngpu heterogeneous\\ncluster\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Task scheduling for gpu heterogeneous cluster\", \"x\": -24.30642356834513, \"y\": 33.548580839834436}, {\"id\": 222, \"label\": \"Analyzing CUDA\\nworkloads using a\\ndetailed GPU\\nsimulator\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 46.911766052246094, \"title\": \"Analyzing CUDA workloads using a detailed GPU simulator\", \"x\": 90.00105325169125, \"y\": 37.31581759299211}, {\"id\": 237, \"label\": \"Hybrid map task\\nscheduling for GPU-\\nbased heterogeneous\\nclusters\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Hybrid map task scheduling for GPU-based heterogeneous clusters\", \"x\": 25.36159343165038, \"y\": -1.2659647722011}, {\"id\": 245, \"label\": \"Stargazer: Automated\\nregression-based GPU\\ndesign space\\nexploration\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Stargazer: Automated regression-based GPU design space exploration\", \"x\": 106.03902402125422, \"y\": 31.75410976063202}, {\"id\": 249, \"label\": \"Empowering visual\\ncategorization with\\nthe GPU\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 24.55882453918457, \"title\": \"Empowering visual categorization with the GPU\", \"x\": 39.251512719058994, \"y\": 15.221270635397097}, {\"id\": 259, \"label\": \"StreamMR: An\\noptimized MapReduce\\nframework for AMD\\nGPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"StreamMR: An optimized MapReduce framework for AMD GPUs\", \"x\": -217.2355372357657, \"y\": -11.702211438363499}, {\"id\": 262, \"label\": \"Exploiting Task-\\nParallelism on GPU\\nClusters via OmpSs\\nand rCUDA\\nVirtualization\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Exploiting Task-Parallelism on GPU Clusters via OmpSs and rCUDA Virtualization\", \"x\": -20.007951317330814, \"y\": -21.895211037917957}, {\"id\": 267, \"label\": \"Unlocking bandwidth\\nfor GPUs in CC-NUMA\\nsystems\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Unlocking bandwidth for GPUs in CC-NUMA systems\", \"x\": 85.58492826028623, \"y\": 29.93418287950092}, {\"id\": 276, \"label\": \"OpenCL - An\\neffective\\nprogramming model\\nfor data parallel\\ncomputations at the\\nCell Broadband\\nEngine\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"OpenCL - An effective programming model for data parallel computations at the Cell Broadband Engine\", \"x\": -35.54557356056439, \"y\": 33.66262715027329}, {\"id\": 277, \"label\": \"GraphReduce:\\nProcessing large-\\nscale graphs on\\naccelerator-based\\nsystems\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"GraphReduce: Processing large-scale graphs on accelerator-based systems\", \"x\": -125.77530080178371, \"y\": -67.06249936374826}, {\"id\": 289, \"label\": \"Can GPGPU\\nprogramming be\\nliberated from the\\ndata-parallel\\nbottleneck?\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Can GPGPU programming be liberated from the data-parallel bottleneck?\", \"x\": 4.5578819820681975, \"y\": 118.41262474044393}, {\"id\": 293, \"label\": \"Massively parallel\\nnetwork coding on\\nGPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Massively parallel network coding on GPUs\", \"x\": 12.392819396168226, \"y\": 14.616444919046236}, {\"id\": 311, \"label\": \"OpenMPC: Extended\\nOpenMP programming\\nand tuning for GPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 44.11764907836914, \"title\": \"OpenMPC: Extended OpenMP programming and tuning for GPUs\", \"x\": -26.079484582021646, \"y\": 22.506829130898666}, {\"id\": 342, \"label\": \"Throughput-effective\\non-chip networks for\\nmanycore\\naccelerators\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Throughput-effective on-chip networks for manycore accelerators\", \"x\": 105.42414049146213, \"y\": 44.90153045540453}, {\"id\": 343, \"label\": \"An MDE approach for\\nautomatic code\\ngeneration from\\nUML/MARTE to openCL\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"An MDE approach for automatic code generation from UML/MARTE to openCL\", \"x\": -49.379765455274594, \"y\": 64.42878734915112}, {\"id\": 344, \"label\": \"Fast motion\\nestimation on\\ngraphics hardware\\nfor h.264 video\\nencoding\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Fast motion estimation on graphics hardware for h.264 video encoding\", \"x\": 48.44723519013141, \"y\": -15.145951909393798}, {\"id\": 347, \"label\": \"CuMAPz: A tool to\\nanalyze memory\\naccess patterns in\\nCUDA\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"CuMAPz: A tool to analyze memory access patterns in CUDA\", \"x\": 3.7489754825777557, \"y\": 125.89348061883265}, {\"id\": 351, \"label\": \"Optimizing sparse\\nmatrix-vector\\nmultiplication on\\nCUDA\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Optimizing sparse matrix-vector multiplication on CUDA\", \"x\": -117.867336151083, \"y\": 72.63364020437037}, {\"id\": 358, \"label\": \"A comparative study\\nof SYCL, OpenCL, and\\nOpenMP\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"A comparative study of SYCL, OpenCL, and OpenMP\", \"x\": 100.53948345291094, \"y\": -3.4455346264072446}, {\"id\": 361, \"label\": \"Implementation of\\nXcalableMP device\\nacceleration\\nextention with\\nOpenCL\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Implementation of XcalableMP device acceleration extention with OpenCL\", \"x\": -167.52623537162228, \"y\": -3.7704658914770275}, {\"id\": 363, \"label\": \"Coordinated static\\nand dynamic cache\\nbypassing for GPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Coordinated static and dynamic cache bypassing for GPUs\", \"x\": 97.90928934446363, \"y\": 40.56008295582919}, {\"id\": 376, \"label\": \"A comparison of\\nperformance\\ntunabilities between\\nOpenCL and OpenACC\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"A comparison of performance tunabilities between OpenCL and OpenACC\", \"x\": 115.1302079850777, \"y\": 38.78387427733805}, {\"id\": 378, \"label\": \"A comprehensive\\nperformance\\ncomparison of CUDA\\nand OpenCL\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 32.94117736816406, \"title\": \"A comprehensive performance comparison of CUDA and OpenCL\", \"x\": 74.72704706752775, \"y\": 1.6366391658118975}, {\"id\": 385, \"label\": \"GasCL: A vertex-\\ncentric graph model\\nfor GPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"GasCL: A vertex-centric graph model for GPUs\", \"x\": -130.71163827025384, \"y\": -67.77574799690791}, {\"id\": 395, \"label\": \"Liszt: A domain\\nspecific language\\nfor building\\nportable mesh-based\\nPDE solvers\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Liszt: A domain specific language for building portable mesh-based PDE solvers\", \"x\": -41.99697339960845, \"y\": 54.12278095248732}, {\"id\": 402, \"label\": \"Scalable programming\\nmodels for massively\\nmulticore processors\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Scalable programming models for massively multicore processors\", \"x\": -15.142702206415604, \"y\": -0.024512109625221868}, {\"id\": 419, \"label\": \"A comparative study\\nof GPU programming\\nmodels and\\narchitectures using\\nneural networks\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 18.97058868408203, \"title\": \"A comparative study of GPU programming models and architectures using neural networks\", \"x\": 51.67528403353834, \"y\": -42.97143971551551}, {\"id\": 423, \"label\": \"Porting and scaling\\nOpenACC applications\\non massively-\\nparallel, GPU-\\naccelerated\\nsupercomputers\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Porting and scaling OpenACC applications on massively-parallel, GPU-accelerated supercomputers\", \"x\": -170.64778177642512, \"y\": -1.7221205538778825}, {\"id\": 424, \"label\": \"Providing source\\ncode level\\nportability between\\nCPU and GPU with\\nMapCG\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Providing source code level portability between CPU and GPU with MapCG\", \"x\": -222.7536619313554, \"y\": -6.268370861285055}, {\"id\": 426, \"label\": \"Accelerating\\nincompressible flow\\ncomputations with a\\nPthreads-CUDA\\nimplementation on\\nsmall-footprint\\nmulti-GPU platforms\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 18.97058868408203, \"title\": \"Accelerating incompressible flow computations with a Pthreads-CUDA implementation on small-footprint multi-GPU platforms\", \"x\": 32.435439286260284, \"y\": 29.13383621243541}, {\"id\": 429, \"label\": \"Optimizing linpack\\nbenchmark on GPU-\\naccelerated\\npetascale\\nsupercomputer\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Optimizing linpack benchmark on GPU-accelerated petascale supercomputer\", \"x\": 7.263739960471085, \"y\": -3.016397078529051}, {\"id\": 433, \"label\": \"An efficient\\nparallel\\ncollaborative\\nfiltering algorithm\\non multi-GPU\\nplatform\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"An efficient parallel collaborative filtering algorithm on multi-GPU platform\", \"x\": -56.69388081112789, \"y\": 17.97245900974164}, {\"id\": 440, \"label\": \"CUDA compatible GPU\\ncards as efficient\\nhardware\\naccelerators for\\nSmith-Waterman\\nsequence alignment\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 30.147058486938477, \"title\": \"CUDA compatible GPU cards as efficient hardware accelerators for Smith-Waterman sequence alignment\", \"x\": 40.5232305269379, \"y\": -109.10119486402994}, {\"id\": 442, \"label\": \"Parallel programing\\ntemplates for remote\\nsensing image\\nprocessing on GPU\\narchitectures:\\ndesign and\\nimplementation\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Parallel programing templates for remote sensing image processing on GPU architectures: design and implementation\", \"x\": 54.17265321017424, \"y\": 89.9961238678625}, {\"id\": 445, \"label\": \"Correlation\\nacceleration in GNSS\\nsoftware receivers\\nusing a CUDA-enabled\\nGPU\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Correlation acceleration in GNSS software receivers using a CUDA-enabled GPU\", \"x\": 50.59854295644514, \"y\": 87.07118110219935}, {\"id\": 447, \"label\": \"A compound\\nOpenMP/MPI program\\ndevelopment toolkit\\nfor hybrid CPU/GPU\\nclusters\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"A compound OpenMP/MPI program development toolkit for hybrid CPU/GPU clusters\", \"x\": -145.61128449485557, \"y\": -53.528179424745225}, {\"id\": 448, \"label\": \"Accelerating\\nMapReduce framework\\non multi-GPU systems\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Accelerating MapReduce framework on multi-GPU systems\", \"x\": -197.74080073229422, \"y\": -19.538805241279828}, {\"id\": 458, \"label\": \"MVAPICH2-GPU:\\nOptimized GPU to GPU\\ncommunication for\\nInfiniBand clusters\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 21.764705657958984, \"title\": \"MVAPICH2-GPU: Optimized GPU to GPU communication for InfiniBand clusters\", \"x\": -145.79220363243516, \"y\": -17.2523693435161}, {\"id\": 459, \"label\": \"TH-1: China\\u0027s first\\npetaflop\\nsupercomputer\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"TH-1: China\\u0027s first petaflop supercomputer\", \"x\": -31.141881837316554, \"y\": 17.869092528859778}, {\"id\": 463, \"label\": \"SkelCL: A high-level\\nextension of OpenCL\\nfor multi-GPU\\nsystems\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"SkelCL: A high-level extension of OpenCL for multi-GPU systems\", \"x\": -118.36023651913624, \"y\": -45.26508647542155}, {\"id\": 466, \"label\": \"OpenMC: Towards\\nsimplifying\\nprogramming for\\ntianhe\\nsupercomputers\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"OpenMC: Towards simplifying programming for tianhe supercomputers\", \"x\": -13.565570745412781, \"y\": 42.3270600916308}, {\"id\": 470, \"label\": \"Strategies for\\nmaximizing\\nutilization on\\nmulti-CPU and multi-\\nGPU heterogeneous\\narchitectures\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 24.55882453918457, \"title\": \"Strategies for maximizing utilization on multi-CPU and multi-GPU heterogeneous architectures\", \"x\": -157.76589252345792, \"y\": -44.98491028619886}, {\"id\": 474, \"label\": \"Cardiac simulation\\non multi-GPU\\nplatform\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 18.97058868408203, \"title\": \"Cardiac simulation on multi-GPU platform\", \"x\": 26.32573035345494, \"y\": 26.86587002373197}, {\"id\": 481, \"label\": \"MPtostream: An\\nOpenMP compiler for\\nCPU-GPU\\nheterogeneous\\nparallel systems\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"MPtostream: An OpenMP compiler for CPU-GPU heterogeneous parallel systems\", \"x\": -15.738154239580822, \"y\": 13.766016309459728}, {\"id\": 482, \"label\": \"Toward a software\\ntransactional memory\\nfor heterogeneous\\nCPU\\u2013GPU processors\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Toward a software transactional memory for heterogeneous CPU\\u2013GPU processors\", \"x\": -208.1558757981532, \"y\": -96.7252203076502}, {\"id\": 491, \"label\": \"CUDASW++ 3.0:\\naccelerating Smith-\\nWaterman protein\\ndatabase search by\\ncoupling CPU and GPU\\nSIMD instructions.\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 27.352941513061523, \"title\": \"CUDASW++ 3.0: accelerating Smith-Waterman protein database search by coupling CPU and GPU SIMD instructions.\", \"x\": 41.23242814297989, \"y\": -121.234283258978}, {\"id\": 492, \"label\": \"DOPA: GPU-based\\nprotein alignment\\nusing database and\\nmemory access\\noptimizations\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"DOPA: GPU-based protein alignment using database and memory access optimizations\", \"x\": 35.96677374300187, \"y\": -132.6694677455035}, {\"id\": 496, \"label\": \"Addressing GPU on-\\nchip shared memory\\nbank conflicts using\\nelastic pipeline\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Addressing GPU on-chip shared memory bank conflicts using elastic pipeline\", \"x\": 83.74041155008833, \"y\": -12.018889339485565}, {\"id\": 499, \"label\": \"Scaling up\\nMapReduce-based Big\\nData Processing on\\nMulti-GPU systems\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 18.97058868408203, \"title\": \"Scaling up MapReduce-based Big Data Processing on Multi-GPU systems\", \"x\": -174.15674542020048, \"y\": -26.727290577827425}, {\"id\": 508, \"label\": \"Stencil computations\\non heterogeneous\\nplatforms for the\\nJacobi method: GPUs\\nversus Cell BE\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 27.352941513061523, \"title\": \"Stencil computations on heterogeneous platforms for the Jacobi method: GPUs versus Cell BE\", \"x\": 23.221539641168004, \"y\": 40.300378153037265}, {\"id\": 510, \"label\": \"Introducing and\\nimplementing the\\nallpairs skeleton\\nfor programming\\nmulti-GPU Systems\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Introducing and implementing the allpairs skeleton for programming multi-GPU Systems\", \"x\": -119.87595053135088, \"y\": 25.506077880710293}, {\"id\": 512, \"label\": \"Optimizing tensor\\ncontraction\\nexpressions for\\nhybrid CPU-GPU\\nexecution\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Optimizing tensor contraction expressions for hybrid CPU-GPU execution\", \"x\": -45.77337532922969, \"y\": 19.983321636962362}, {\"id\": 539, \"label\": \"Offloading data\\nencryption to GPU in\\ndatabase systems\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Offloading data encryption to GPU in database systems\", \"x\": 62.01125222714383, \"y\": -31.001337085264055}, {\"id\": 546, \"label\": \"High-Level\\nProgramming for\\nMany-Cores Using\\nC++14 and the STL\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"High-Level Programming for Many-Cores Using C++14 and the STL\", \"x\": -112.88855095417819, \"y\": 89.8821242614405}, {\"id\": 547, \"label\": \"RT-CUDA: A Software\\nTool for CUDA Code\\nRestructuring\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"RT-CUDA: A Software Tool for CUDA Code Restructuring\", \"x\": -123.70053317490034, \"y\": 76.0473705952767}, {\"id\": 548, \"label\": \"Parallel data mining\\ntechniques on\\nGraphics Processing\\nUnit with Compute\\nUnified Device\\nArchitecture (CUDA)\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 32.94117736816406, \"title\": \"Parallel data mining techniques on Graphics Processing Unit with Compute Unified Device Architecture (CUDA)\", \"x\": 44.71782225668075, \"y\": -34.245101938139165}, {\"id\": 561, \"label\": \"A GPU implementation\\nof a structural-\\nsimilarity-based\\naerial-image\\nclassification\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 21.764705657958984, \"title\": \"A GPU implementation of a structural-similarity-based aerial-image classification\", \"x\": 61.323768489461585, \"y\": -18.623496625249416}, {\"id\": 564, \"label\": \"GPU-accelerated\\nlevel-set\\nsegmentation\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"GPU-accelerated level-set segmentation\", \"x\": 77.39367790305751, \"y\": -43.07470987311886}, {\"id\": 570, \"label\": \"Gene regulatory\\nnetworks inference\\nusing a multi-GPU\\nexhaustive search\\nalgorithm\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Gene regulatory networks inference using a multi-GPU exhaustive search algorithm\", \"x\": -158.90413347225785, \"y\": -70.20192268399425}, {\"id\": 604, \"label\": \"Extending OpenMP to\\nsurvive the\\nheterogeneous multi-\\ncore era\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Extending OpenMP to survive the heterogeneous multi-core era\", \"x\": -42.302201035122984, \"y\": 1.766466229111452}, {\"id\": 605, \"label\": \"Speeding up the\\nevaluation phase of\\nGP classification\\nalgorithms on GPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 18.97058868408203, \"title\": \"Speeding up the evaluation phase of GP classification algorithms on GPUs\", \"x\": 39.43875550709365, \"y\": -42.67460975468273}, {\"id\": 608, \"label\": \"Medical image\\nsegmentation with\\ndeformable models on\\ngraphics processing\\nunits\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 18.97058868408203, \"title\": \"Medical image segmentation with deformable models on graphics processing units\", \"x\": 66.27140921172355, \"y\": -35.807406263177434}, {\"id\": 609, \"label\": \"Correlating radio\\nastronomy signals\\nwith many-core\\nhardware\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Correlating radio astronomy signals with many-core hardware\", \"x\": -28.54974615780263, \"y\": -30.328213965820154}, {\"id\": 620, \"label\": \"High performance\\ndata clustering: A\\ncomparative analysis\\nof performance for\\nGPU, RASC, MPI, and\\nOpenMP\\nimplementations\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"High performance data clustering: A comparative analysis of performance for GPU, RASC, MPI, and OpenMP implementations\", \"x\": -154.6136802289374, \"y\": -64.9165984464089}, {\"id\": 633, \"label\": \"Adaptive fast\\nmultipole methods on\\nthe GPU\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Adaptive fast multipole methods on the GPU\", \"x\": 16.34538196545977, \"y\": 59.056039125595795}, {\"id\": 636, \"label\": \"Parallelization of\\nlarge vector\\nsimilarity\\ncomputations in a\\nhybrid CPU+GPU\\nenvironment\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Parallelization of large vector similarity computations in a hybrid CPU+GPU environment\", \"x\": 88.78329785081773, \"y\": 52.71270934527276}, {\"id\": 644, \"label\": \"GASAL2: A GPU\\naccelerated sequence\\nalignment library\\nfor high-throughput\\nNGS data\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"GASAL2: A GPU accelerated sequence alignment library for high-throughput NGS data\", \"x\": 42.78274657137841, \"y\": -129.0100862865446}, {\"id\": 655, \"label\": \"GPU-accelerated\\npreconditioned\\niterative linear\\nsolvers\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"GPU-accelerated preconditioned iterative linear solvers\", \"x\": 16.05886005202353, \"y\": 55.04773368396558}, {\"id\": 656, \"label\": \"GPU-based collision\\nanalysis between a\\nmulti-body system\\nand numerous\\nparticles\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"GPU-based collision analysis between a multi-body system and numerous particles\", \"x\": 41.991263913444, \"y\": -85.86874194332134}, {\"id\": 660, \"label\": \"Hybrid multi-GPU\\ncomputing:\\naccelerated kernels\\nfor segmentation and\\nobject detection\\nwith medical image\\nprocessing\\napplications\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Hybrid multi-GPU computing: accelerated kernels for segmentation and object detection with medical image processing applications\", \"x\": 14.708347561455211, \"y\": 116.29813887188492}, {\"id\": 666, \"label\": \"A parallel pattern\\nfor iterative\\nstencil + reduce\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"A parallel pattern for iterative stencil + reduce\", \"x\": -118.04727563976296, \"y\": 76.73968338482659}, {\"id\": 670, \"label\": \"Parallelization of\\nFull Search Motion\\nEstimation algorithm\\nfor parallel and\\ndistributed\\nplatforms\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Parallelization of Full Search Motion Estimation algorithm for parallel and distributed platforms\", \"x\": 68.52818175117604, \"y\": 3.997268385701818}, {\"id\": 685, \"label\": \"Design Flow for GPU\\nand Multicore\\nExecution of Dynamic\\nDataflow Programs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Design Flow for GPU and Multicore Execution of Dynamic Dataflow Programs\", \"x\": 10.256727134189083, \"y\": -10.90174824523765}, {\"id\": 705, \"label\": \"Effective naive\\nBayes nearest\\nneighbor based image\\nclassification on\\nGPU\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Effective naive Bayes nearest neighbor based image classification on GPU\", \"x\": -189.9280753929454, \"y\": -22.674608569818687}, {\"id\": 711, \"label\": \"Enhancing GPU\\nparallelism in\\nnature-inspired\\nalgorithms\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Enhancing GPU parallelism in nature-inspired algorithms\", \"x\": 42.77733532984981, \"y\": -48.94054208212549}, {\"id\": 739, \"label\": \"On GPU\\u2013CUDA as\\npreprocessing of\\nfuzzy-rough data\\nreduction by means\\nof singular value\\ndecomposition\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"On GPU\\u2013CUDA as preprocessing of fuzzy-rough data reduction by means of singular value decomposition\", \"x\": 50.95054934146023, \"y\": 24.63087591329141}, {\"id\": 741, \"label\": \"MilkyWay-2\\nsupercomputer:\\nSystem and\\napplication\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 18.97058868408203, \"title\": \"MilkyWay-2 supercomputer: System and application\", \"x\": -9.553820828283033, \"y\": 48.21521108031437}, {\"id\": 756, \"label\": \"High performance\\nevaluation of\\nevolutionary-mined\\nassociation rules on\\nGPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"High performance evaluation of evolutionary-mined association rules on GPUs\", \"x\": 34.945272108874185, \"y\": -43.815345158825046}, {\"id\": 762, \"label\": \"Energy cost\\nevaluation of\\nparallel algorithms\\nfor multiprocessor\\nsystems\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Energy cost evaluation of parallel algorithms for multiprocessor systems\", \"x\": -61.60325884352427, \"y\": 8.249132895832274}, {\"id\": 771, \"label\": \"Simultaneous CPU\\u2013GPU\\nExecution of Data\\nParallel Algorithmic\\nSkeletons\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Simultaneous CPU\\u2013GPU Execution of Data Parallel Algorithmic Skeletons\", \"x\": -110.64527132403141, \"y\": 81.15000797245696}, {\"id\": 786, \"label\": \"CUDASW++2.0:\\nEnhanced Smith-\\nWaterman protein\\ndatabase search on\\nCUDA-enabled GPUs\\nbased on SIMT and\\nvirtualized SIMD\\nabstractions\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 21.764705657958984, \"title\": \"CUDASW++2.0: Enhanced Smith-Waterman protein database search on CUDA-enabled GPUs based on SIMT and virtualized SIMD abstractions\", \"x\": 38.686673287133644, \"y\": -104.20637176549205}, {\"id\": 788, \"label\": \"Solving finite\\ndifference linear\\nsystems on GPUs:\\nCUDA based parallel\\nexplicit\\npreconditioned\\nbiconjugate\\nconjugate gradient\\ntype methods\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 18.97058868408203, \"title\": \"Solving finite difference linear systems on GPUs: CUDA based parallel explicit preconditioned biconjugate conjugate gradient type methods\", \"x\": 30.15904012024969, \"y\": 23.421695950433126}, {\"id\": 789, \"label\": \"Data layout\\ntransformation\\nexploiting memory-\\nlevel parallelism in\\nstructured grid\\nmany-core\\napplications\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Data layout transformation exploiting memory-level parallelism in structured grid many-core applications\", \"x\": 1.0005217196221725, \"y\": 135.98175487345287}, {\"id\": 792, \"label\": \"A framework for\\naccelerating local\\nfeature extraction\\nwith OpenCL on\\nmulti-core CPUs and\\nco-processors\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"A framework for accelerating local feature extraction with OpenCL on multi-core CPUs and co-processors\", \"x\": 80.03459549068828, \"y\": 9.180452946692226}, {\"id\": 825, \"label\": \"PPModel: A modeling\\ntool for source code\\nmaintenance and\\noptimization of\\nparallel programs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"PPModel: A modeling tool for source code maintenance and optimization of parallel programs\", \"x\": -51.51185559277287, \"y\": 61.57508887019081}, {\"id\": 852, \"label\": \"A view of\\nprogramming scalable\\ndata analysis: from\\nclouds to exascale\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"A view of programming scalable data analysis: from clouds to exascale\", \"x\": 44.204789783530494, \"y\": 6.3323521129998115}, {\"id\": 854, \"label\": \"SkePU 2: Flexible\\nand Type-Safe\\nSkeleton Programming\\nfor Heterogeneous\\nParallel Systems\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 27.352941513061523, \"title\": \"SkePU 2: Flexible and Type-Safe Skeleton Programming for Heterogeneous Parallel Systems\", \"x\": -107.39643435947414, \"y\": 62.68490935308328}, {\"id\": 855, \"label\": \"Generating custom\\ncode for efficient\\nquery execution on\\nheterogeneous\\nprocessors\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Generating custom code for efficient query execution on heterogeneous processors\", \"x\": 51.859239573247876, \"y\": 53.563959834417865}, {\"id\": 862, \"label\": \"Dawning nebulae: A\\nPetaFLOPS\\nsupercomputer with a\\nheterogeneous\\nstructure\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Dawning nebulae: A PetaFLOPS supercomputer with a heterogeneous structure\", \"x\": -13.098380627057221, \"y\": 33.62994746563822}, {\"id\": 875, \"label\": \"Fast and accurate\\nprotein substructure\\nsearching with\\nsimulated annealing\\nand GPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 18.97058868408203, \"title\": \"Fast and accurate protein substructure searching with simulated annealing and GPUs\", \"x\": 46.41924002422793, \"y\": -117.5769686538702}, {\"id\": 878, \"label\": \"Parallel mutual\\ninformation\\nestimation for\\ninferring gene\\nregulatory networks\\non GPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Parallel mutual information estimation for inferring gene regulatory networks on GPUs\", \"x\": 23.48655259276573, \"y\": -7.620918065771567}, {\"id\": 883, \"label\": \"Performance\\nevaluation of\\nUnified Memory with\\nprefetching and\\noversubscription for\\nselected parallel\\nCUDA applications on\\nNVIDIA Pascal and\\nVolta GPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Performance evaluation of Unified Memory with prefetching and oversubscription for selected parallel CUDA applications on NVIDIA Pascal and Volta GPUs\", \"x\": 44.951572544940134, \"y\": 73.02317173843689}, {\"id\": 895, \"label\": \"Accelerating large-\\nscale protein\\nstructure alignments\\nwith graphics\\nprocessing units\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Accelerating large-scale protein structure alignments with graphics processing units\", \"x\": 50.03169761553383, \"y\": -123.42353580105204}, {\"id\": 913, \"label\": \"Performance\\nevaluation of\\nunified memory and\\ndynamic parallelism\\nfor selected\\nparallel CUDA\\napplications\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Performance evaluation of unified memory and dynamic parallelism for selected parallel CUDA applications\", \"x\": 88.2559283111143, \"y\": 46.18262895654309}, {\"id\": 920, \"label\": \"A preliminary\\nevaluation of\\nOpenACC\\nimplementations\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"A preliminary evaluation of OpenACC implementations\", \"x\": 76.70020354941029, \"y\": -20.624267515936147}, {\"id\": 921, \"label\": \"Optimizing the\\nMatrix\\nMultiplication Using\\nStrassen and\\nWinograd Algorithms\\nwith Limited\\nRecursions on Many-\\nCore\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Optimizing the Matrix Multiplication Using Strassen and Winograd Algorithms with Limited Recursions on Many-Core\", \"x\": -123.53048585449235, \"y\": 71.94109329874814}, {\"id\": 926, \"label\": \"Protein alignment\\nalgorithms with an\\nefficient\\nbacktracking routine\\non multiple GPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 21.764705657958984, \"title\": \"Protein alignment algorithms with an efficient backtracking routine on multiple GPUs\", \"x\": 36.03740775079269, \"y\": -119.00418800500589}, {\"id\": 935, \"label\": \"A scalable and fast\\nOPTICS for\\nclustering\\ntrajectory big data\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"A scalable and fast OPTICS for clustering trajectory big data\", \"x\": 30.720693300602594, \"y\": 3.6980374003080856}, {\"id\": 939, \"label\": \"Virtualizing high-\\nend GPGPUs on ARM\\nclusters for the\\nnext generation of\\nhigh performance\\ncloud computing\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Virtualizing high-end GPGPUs on ARM clusters for the next generation of high performance cloud computing\", \"x\": 36.11570633972439, \"y\": -84.5436185046785}, {\"id\": 946, \"label\": \"A parallel algorithm\\nfor the Riesz\\nfractional reaction-\\ndiffusion equation\\nwith explicit finite\\ndifference method\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 18.97058868408203, \"title\": \"A parallel algorithm for the Riesz fractional reaction-diffusion equation with explicit finite difference method\", \"x\": 8.066822866259182, \"y\": 57.45827917187855}, {\"id\": 947, \"label\": \"Formalised\\nComposition and\\nInteraction for\\nHeterogeneous\\nStructured\\nParallelism\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Formalised Composition and Interaction for Heterogeneous Structured Parallelism\", \"x\": -108.73373321952297, \"y\": 70.16335593827476}, {\"id\": 951, \"label\": \"Toward fault-\\ntolerant hybrid\\nprogramming over\\nlarge-scale\\nheterogeneous\\nclusters via checkpo\\ninting/restart\\noptimization\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Toward fault-tolerant hybrid programming over large-scale heterogeneous clusters via checkpointing/restart optimization\", \"x\": -213.67049127012464, \"y\": -96.80769228586915}, {\"id\": 957, \"label\": \"Efficient scheduling\\nof streams on GPGPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Efficient scheduling of streams on GPGPUs\", \"x\": 49.45909702378031, \"y\": 91.59749554253997}, {\"id\": 963, \"label\": \"Accelerating MRI\\nreconstruction via\\nthree-dimensional\\ndual-dictionary\\nlearning using CUDA\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Accelerating MRI reconstruction via three-dimensional dual-dictionary learning using CUDA\", \"x\": 14.714064103092323, \"y\": 120.83766086578261}, {\"id\": 966, \"label\": \"CUDASW++: Optimizing\\nSmith-Waterman\\nsequence database\\nsearches for CUDA-\\nenabled graphics\\nprocessing units\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 21.764705657958984, \"title\": \"CUDASW++: Optimizing Smith-Waterman sequence database searches for CUDA-enabled graphics processing units\", \"x\": 41.20470145062634, \"y\": -112.61434657140232}, {\"id\": 972, \"label\": \"A Hybrid Task Graph\\nScheduler for High\\nPerformance Image\\nProcessing Workflows\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"A Hybrid Task Graph Scheduler for High Performance Image Processing Workflows\", \"x\": 6.57076887701599, \"y\": -16.795326534617686}, {\"id\": 990, \"label\": \"Optimizing Monte\\nCarlo radiosity on\\ngraphics hardware\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Optimizing Monte Carlo radiosity on graphics hardware\", \"x\": 3.641799271821743, \"y\": 1.9595489322900073}, {\"id\": 991, \"label\": \"Parallel refinement\\nof slanted 3D\\nreconstruction using\\ndense stereo induced\\nfrom symmetry\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Parallel refinement of slanted 3D reconstruction using dense stereo induced from symmetry\", \"x\": 18.946492195416443, \"y\": 118.84630968795689}, {\"id\": 992, \"label\": \"Fast network\\ncentrality analysis\\nusing GPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Fast network centrality analysis using GPUs\", \"x\": -128.84420692435532, \"y\": -63.32647920524305}, {\"id\": 998, \"label\": \"A survey on\\nplatforms for big\\ndata analytics\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"A survey on platforms for big data analytics\", \"x\": 35.78024885402803, \"y\": 4.514073492123359}, {\"id\": 1010, \"label\": \"A statistical\\nperformance analyzer\\nframework for OpenCL\\nkernels on Nvidia\\nGPUs\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"A statistical performance analyzer framework for OpenCL kernels on Nvidia GPUs\", \"x\": 103.69234915550452, \"y\": 51.31458569434687}, {\"id\": 1016, \"label\": \"Simulation of one-\\nlayer shallow water\\nsystems on multicore\\nand CUDA\\narchitectures\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"Simulation of one-layer shallow water systems on multicore and CUDA architectures\", \"x\": 49.88070519540656, \"y\": 2.304026266019466}, {\"id\": 1029, \"label\": \"The TianHe-1A\\nsupercomputer: Its\\nhardware and\\nsoftware\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 41.32352828979492, \"title\": \"The TianHe-1A supercomputer: Its hardware and software\", \"x\": -13.238286852617328, \"y\": 23.454785734035568}, {\"id\": 1041, \"label\": \"Energy efficiency of\\nload balancing for\\ndata-parallel\\napplications in\\nheterogeneous\\nsystems\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Energy efficiency of load balancing for data-parallel applications in heterogeneous systems\", \"x\": -197.03195616832764, \"y\": -92.05493698187287}, {\"id\": 1087, \"label\": \"Hybrid\\nstatic\\u2013dynamic\\nselection of\\nimplementation\\nalternatives in\\nheterogeneous\\nenvironments\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Hybrid static\\u2013dynamic selection of implementation alternatives in heterogeneous environments\", \"x\": -214.32209534304627, \"y\": -91.82439592719248}, {\"id\": 1092, \"label\": \"The Fraunhofer\\nvirtual machine: A\\ncommunication\\nlibrary and runtime\\nsystem based on the\\nRDMA model\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"The Fraunhofer virtual machine: A communication library and runtime system based on the RDMA model\", \"x\": -153.3440167706161, \"y\": -12.088086205364766}, {\"id\": 1113, \"label\": \"Optimizing an APSP\\nimplementation for\\nNVIDIA GPUs using\\nkernel\\ncharacterization\\ncriteria\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Optimizing an APSP implementation for NVIDIA GPUs using kernel characterization criteria\", \"x\": -127.49836457342033, \"y\": -54.528006992656415}, {\"id\": 1147, \"label\": \"Prediction models\\nfor performance,\\npower, and energy\\nefficiency of\\nsoftware executed on\\nheterogeneous\\nhardware\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 16.176471710205078, \"title\": \"Prediction models for performance, power, and energy efficiency of software executed on heterogeneous hardware\", \"x\": -208.9448000735368, \"y\": -91.77005305709405}, {\"id\": 1148, \"label\": \"The 2D wavelet\\ntransform on\\nemerging\\narchitectures: GPUs\\nand multicores\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"The 2D wavelet transform on emerging architectures: GPUs and multicores\", \"x\": 11.01908287989106, \"y\": -4.52686871129774}, {\"id\": 1150, \"label\": \"High-performance\\noptimizations on\\ntiled many-core\\nembedded systems: A\\nmatrix\\nmultiplication case\\nstudy\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"High-performance optimizations on tiled many-core embedded systems: A matrix multiplication case study\", \"x\": -141.2415780857822, \"y\": -47.85206667064607}, {\"id\": 1160, \"label\": \"Applications of the\\nMapReduce\\nprogramming\\nframework to\\nclinical big data\\nanalysis: Current\\nlandscape and future\\ntrends\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Applications of the MapReduce programming framework to clinical big data analysis: Current landscape and future trends\", \"x\": -161.11460020336003, \"y\": -29.719985733444464}, {\"id\": 1189, \"label\": \"Message-passing\\nprogramming for\\nembedded multicore\\nsignal-processing\\nplatforms\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Message-passing programming for embedded multicore signal-processing platforms\", \"x\": -49.36607862796286, \"y\": -1.208499968806361}, {\"id\": 1207, \"label\": \"Automatic code\\ngeneration and\\ntuning for stencil\\nkernels on modern\\nshared memory\\narchitectures\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 13.382352828979492, \"title\": \"Automatic code generation and tuning for stencil kernels on modern shared memory architectures\", \"x\": -10.603797466111502, \"y\": 10.310332805173054}, {\"id\": 1220, \"label\": \"Simultaneous\\nmultiprocessing in a\\nsoftware-defined\\nheterogeneous FPGA\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 21.764705657958984, \"title\": \"Simultaneous multiprocessing in a software-defined heterogeneous FPGA\", \"x\": -200.34137973704097, \"y\": -85.24448046401697}, {\"id\": 1262, \"label\": \"An efficient\\nparallel solution\\nfor Caputo\\nfractional reaction-\\ndiffusion equation\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"An efficient parallel solution for Caputo fractional reaction-diffusion equation\", \"x\": -2.9724006325549475, \"y\": 60.23810202870361}, {\"id\": 1302, \"label\": \"HAT: History-based\\nauto-tuning\\nMapReduce in\\nheterogeneous\\nenvironments\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"HAT: History-based auto-tuning MapReduce in heterogeneous environments\", \"x\": -224.43409062367448, \"y\": -10.763390086531606}, {\"id\": 1309, \"label\": \"Efficient\\ncomputation of motif\\ndiscovery on Intel\\nMany Integrated Core\\n(MIC) Architecture\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 7.7941179275512695, \"title\": \"Efficient computation of motif discovery on Intel Many Integrated Core (MIC) Architecture\", \"x\": -13.206423641869984, \"y\": 60.830517544751864}, {\"id\": 1311, \"label\": \"pocl: A Performance-\\nPortable OpenCL\\nImplementation\", \"labelHighlightBold\": true, \"shape\": \"dot\", \"size\": 10.588235855102539, \"title\": \"pocl: A Performance-Portable OpenCL Implementation\", \"x\": 76.69071379938977, \"y\": 10.89685647979419}]);\n        edges = new vis.DataSet([{\"from\": 13, \"title\": \"2\", \"to\": 458, \"width\": 2}, {\"from\": 13, \"title\": \"1\", \"to\": 1092, \"width\": 1}, {\"from\": 13, \"title\": \"1\", \"to\": 361, \"width\": 1}, {\"from\": 13, \"title\": \"1\", \"to\": 423, \"width\": 1}, {\"from\": 18, \"title\": \"1\", \"to\": 458, \"width\": 1}, {\"from\": 18, \"title\": \"2\", \"to\": 311, \"width\": 2}, {\"from\": 18, \"title\": \"1\", \"to\": 202, \"width\": 1}, {\"from\": 18, \"title\": \"1\", \"to\": 402, \"width\": 1}, {\"from\": 18, \"title\": \"1\", \"to\": 68, \"width\": 1}, {\"from\": 18, \"title\": \"1\", \"to\": 433, \"width\": 1}, {\"from\": 18, \"title\": \"1\", \"to\": 512, \"width\": 1}, {\"from\": 18, \"title\": \"1\", \"to\": 762, \"width\": 1}, {\"from\": 34, \"title\": \"1\", \"to\": 311, \"width\": 1}, {\"from\": 34, \"title\": \"1\", \"to\": 855, \"width\": 1}, {\"from\": 34, \"title\": \"1\", \"to\": 51, \"width\": 1}, {\"from\": 34, \"title\": \"1\", \"to\": 222, \"width\": 1}, {\"from\": 51, \"title\": \"1\", \"to\": 222, \"width\": 1}, {\"from\": 53, \"title\": \"1\", \"to\": 1113, \"width\": 1}, {\"from\": 53, \"title\": \"1\", \"to\": 510, \"width\": 1}, {\"from\": 60, \"title\": \"1\", \"to\": 68, \"width\": 1}, {\"from\": 60, \"title\": \"1\", \"to\": 878, \"width\": 1}, {\"from\": 64, \"title\": \"1\", \"to\": 128, \"width\": 1}, {\"from\": 64, \"title\": \"1\", \"to\": 262, \"width\": 1}, {\"from\": 67, \"title\": \"1\", \"to\": 222, \"width\": 1}, {\"from\": 67, \"title\": \"2\", \"to\": 311, \"width\": 2}, {\"from\": 68, \"title\": \"1\", \"to\": 92, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 141, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 237, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 548, \"width\": 1}, {\"from\": 68, \"title\": \"4\", \"to\": 189, \"width\": 4}, {\"from\": 68, \"title\": \"1\", \"to\": 293, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 609, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 990, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 1029, \"width\": 1}, {\"from\": 68, \"title\": \"2\", \"to\": 429, \"width\": 2}, {\"from\": 68, \"title\": \"1\", \"to\": 402, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 1207, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 311, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 202, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 508, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 788, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 474, \"width\": 1}, {\"from\": 68, \"title\": \"2\", \"to\": 249, \"width\": 2}, {\"from\": 68, \"title\": \"1\", \"to\": 426, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 878, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 1148, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 685, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 972, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 935, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 998, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 128, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 182, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 883, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 378, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 1016, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 739, \"width\": 1}, {\"from\": 68, \"title\": \"1\", \"to\": 146, \"width\": 1}, {\"from\": 91, \"title\": \"2\", \"to\": 311, \"width\": 2}, {\"from\": 91, \"title\": \"1\", \"to\": 604, \"width\": 1}, {\"from\": 91, \"title\": \"1\", \"to\": 1189, \"width\": 1}, {\"from\": 91, \"title\": \"1\", \"to\": 181, \"width\": 1}, {\"from\": 91, \"title\": \"1\", \"to\": 459, \"width\": 1}, {\"from\": 91, \"title\": \"1\", \"to\": 1029, \"width\": 1}, {\"from\": 91, \"title\": \"1\", \"to\": 202, \"width\": 1}, {\"from\": 106, \"title\": \"1\", \"to\": 222, \"width\": 1}, {\"from\": 106, \"title\": \"2\", \"to\": 913, \"width\": 2}, {\"from\": 106, \"title\": \"3\", \"to\": 146, \"width\": 3}, {\"from\": 106, \"title\": \"1\", \"to\": 636, \"width\": 1}, {\"from\": 115, \"title\": \"1\", \"to\": 972, \"width\": 1}, {\"from\": 121, \"title\": \"1\", \"to\": 376, \"width\": 1}, {\"from\": 121, \"title\": \"1\", \"to\": 222, \"width\": 1}, {\"from\": 125, \"title\": \"1\", \"to\": 189, \"width\": 1}, {\"from\": 128, \"title\": \"1\", \"to\": 202, \"width\": 1}, {\"from\": 128, \"title\": \"1\", \"to\": 262, \"width\": 1}, {\"from\": 134, \"title\": \"1\", \"to\": 378, \"width\": 1}, {\"from\": 141, \"title\": \"1\", \"to\": 608, \"width\": 1}, {\"from\": 141, \"title\": \"1\", \"to\": 561, \"width\": 1}, {\"from\": 141, \"title\": \"1\", \"to\": 548, \"width\": 1}, {\"from\": 141, \"title\": \"1\", \"to\": 539, \"width\": 1}, {\"from\": 146, \"title\": \"2\", \"to\": 267, \"width\": 2}, {\"from\": 146, \"title\": \"3\", \"to\": 222, \"width\": 3}, {\"from\": 146, \"title\": \"2\", \"to\": 913, \"width\": 2}, {\"from\": 146, \"title\": \"1\", \"to\": 636, \"width\": 1}, {\"from\": 146, \"title\": \"1\", \"to\": 739, \"width\": 1}, {\"from\": 155, \"title\": \"1\", \"to\": 358, \"width\": 1}, {\"from\": 181, \"title\": \"1\", \"to\": 604, \"width\": 1}, {\"from\": 181, \"title\": \"1\", \"to\": 1189, \"width\": 1}, {\"from\": 182, \"title\": \"1\", \"to\": 289, \"width\": 1}, {\"from\": 182, \"title\": \"1\", \"to\": 347, \"width\": 1}, {\"from\": 182, \"title\": \"1\", \"to\": 660, \"width\": 1}, {\"from\": 182, \"title\": \"1\", \"to\": 963, \"width\": 1}, {\"from\": 182, \"title\": \"1\", \"to\": 991, \"width\": 1}, {\"from\": 189, \"title\": \"1\", \"to\": 609, \"width\": 1}, {\"from\": 189, \"title\": \"1\", \"to\": 1029, \"width\": 1}, {\"from\": 189, \"title\": \"1\", \"to\": 429, \"width\": 1}, {\"from\": 189, \"title\": \"1\", \"to\": 756, \"width\": 1}, {\"from\": 189, \"title\": \"2\", \"to\": 605, \"width\": 2}, {\"from\": 189, \"title\": \"2\", \"to\": 548, \"width\": 2}, {\"from\": 189, \"title\": \"1\", \"to\": 786, \"width\": 1}, {\"from\": 189, \"title\": \"1\", \"to\": 440, \"width\": 1}, {\"from\": 189, \"title\": \"1\", \"to\": 939, \"width\": 1}, {\"from\": 189, \"title\": \"1\", \"to\": 711, \"width\": 1}, {\"from\": 189, \"title\": \"1\", \"to\": 419, \"width\": 1}, {\"from\": 189, \"title\": \"1\", \"to\": 344, \"width\": 1}, {\"from\": 200, \"title\": \"2\", \"to\": 222, \"width\": 2}, {\"from\": 200, \"title\": \"1\", \"to\": 342, \"width\": 1}, {\"from\": 200, \"title\": \"1\", \"to\": 363, \"width\": 1}, {\"from\": 202, \"title\": \"6\", \"to\": 311, \"width\": 6}, {\"from\": 202, \"title\": \"1\", \"to\": 459, \"width\": 1}, {\"from\": 202, \"title\": \"2\", \"to\": 1029, \"width\": 2}, {\"from\": 202, \"title\": \"1\", \"to\": 1207, \"width\": 1}, {\"from\": 202, \"title\": \"1\", \"to\": 481, \"width\": 1}, {\"from\": 202, \"title\": \"1\", \"to\": 512, \"width\": 1}, {\"from\": 204, \"title\": \"1\", \"to\": 1029, \"width\": 1}, {\"from\": 204, \"title\": \"1\", \"to\": 311, \"width\": 1}, {\"from\": 222, \"title\": \"4\", \"to\": 267, \"width\": 4}, {\"from\": 222, \"title\": \"1\", \"to\": 378, \"width\": 1}, {\"from\": 222, \"title\": \"4\", \"to\": 363, \"width\": 4}, {\"from\": 222, \"title\": \"1\", \"to\": 376, \"width\": 1}, {\"from\": 222, \"title\": \"1\", \"to\": 1010, \"width\": 1}, {\"from\": 222, \"title\": \"1\", \"to\": 913, \"width\": 1}, {\"from\": 222, \"title\": \"1\", \"to\": 342, \"width\": 1}, {\"from\": 222, \"title\": \"1\", \"to\": 245, \"width\": 1}, {\"from\": 249, \"title\": \"1\", \"to\": 508, \"width\": 1}, {\"from\": 249, \"title\": \"1\", \"to\": 788, \"width\": 1}, {\"from\": 249, \"title\": \"1\", \"to\": 474, \"width\": 1}, {\"from\": 249, \"title\": \"1\", \"to\": 426, \"width\": 1}, {\"from\": 249, \"title\": \"1\", \"to\": 561, \"width\": 1}, {\"from\": 249, \"title\": \"1\", \"to\": 378, \"width\": 1}, {\"from\": 259, \"title\": \"1\", \"to\": 1302, \"width\": 1}, {\"from\": 259, \"title\": \"1\", \"to\": 424, \"width\": 1}, {\"from\": 259, \"title\": \"1\", \"to\": 448, \"width\": 1}, {\"from\": 267, \"title\": \"1\", \"to\": 378, \"width\": 1}, {\"from\": 276, \"title\": \"1\", \"to\": 311, \"width\": 1}, {\"from\": 277, \"title\": \"1\", \"to\": 385, \"width\": 1}, {\"from\": 277, \"title\": \"1\", \"to\": 1113, \"width\": 1}, {\"from\": 277, \"title\": \"1\", \"to\": 992, \"width\": 1}, {\"from\": 289, \"title\": \"1\", \"to\": 347, \"width\": 1}, {\"from\": 311, \"title\": \"1\", \"to\": 604, \"width\": 1}, {\"from\": 311, \"title\": \"2\", \"to\": 1029, \"width\": 2}, {\"from\": 311, \"title\": \"1\", \"to\": 459, \"width\": 1}, {\"from\": 311, \"title\": \"1\", \"to\": 1207, \"width\": 1}, {\"from\": 311, \"title\": \"1\", \"to\": 854, \"width\": 1}, {\"from\": 311, \"title\": \"1\", \"to\": 512, \"width\": 1}, {\"from\": 342, \"title\": \"1\", \"to\": 363, \"width\": 1}, {\"from\": 343, \"title\": \"1\", \"to\": 825, \"width\": 1}, {\"from\": 343, \"title\": \"1\", \"to\": 395, \"width\": 1}, {\"from\": 344, \"title\": \"1\", \"to\": 670, \"width\": 1}, {\"from\": 347, \"title\": \"1\", \"to\": 789, \"width\": 1}, {\"from\": 351, \"title\": \"1\", \"to\": 666, \"width\": 1}, {\"from\": 351, \"title\": \"1\", \"to\": 854, \"width\": 1}, {\"from\": 351, \"title\": \"1\", \"to\": 921, \"width\": 1}, {\"from\": 351, \"title\": \"1\", \"to\": 547, \"width\": 1}, {\"from\": 358, \"title\": \"1\", \"to\": 378, \"width\": 1}, {\"from\": 361, \"title\": \"1\", \"to\": 423, \"width\": 1}, {\"from\": 378, \"title\": \"1\", \"to\": 496, \"width\": 1}, {\"from\": 378, \"title\": \"1\", \"to\": 920, \"width\": 1}, {\"from\": 378, \"title\": \"1\", \"to\": 561, \"width\": 1}, {\"from\": 378, \"title\": \"1\", \"to\": 1016, \"width\": 1}, {\"from\": 385, \"title\": \"1\", \"to\": 1113, \"width\": 1}, {\"from\": 385, \"title\": \"1\", \"to\": 992, \"width\": 1}, {\"from\": 395, \"title\": \"1\", \"to\": 1029, \"width\": 1}, {\"from\": 395, \"title\": \"1\", \"to\": 825, \"width\": 1}, {\"from\": 419, \"title\": \"1\", \"to\": 920, \"width\": 1}, {\"from\": 419, \"title\": \"1\", \"to\": 605, \"width\": 1}, {\"from\": 419, \"title\": \"1\", \"to\": 711, \"width\": 1}, {\"from\": 419, \"title\": \"1\", \"to\": 548, \"width\": 1}, {\"from\": 426, \"title\": \"1\", \"to\": 508, \"width\": 1}, {\"from\": 426, \"title\": \"1\", \"to\": 788, \"width\": 1}, {\"from\": 426, \"title\": \"1\", \"to\": 474, \"width\": 1}, {\"from\": 429, \"title\": \"1\", \"to\": 1029, \"width\": 1}, {\"from\": 429, \"title\": \"1\", \"to\": 1148, \"width\": 1}, {\"from\": 433, \"title\": \"1\", \"to\": 512, \"width\": 1}, {\"from\": 440, \"title\": \"9\", \"to\": 966, \"width\": 9}, {\"from\": 440, \"title\": \"6\", \"to\": 786, \"width\": 6}, {\"from\": 440, \"title\": \"3\", \"to\": 491, \"width\": 3}, {\"from\": 440, \"title\": \"2\", \"to\": 875, \"width\": 2}, {\"from\": 440, \"title\": \"1\", \"to\": 895, \"width\": 1}, {\"from\": 440, \"title\": \"1\", \"to\": 644, \"width\": 1}, {\"from\": 440, \"title\": \"1\", \"to\": 939, \"width\": 1}, {\"from\": 440, \"title\": \"2\", \"to\": 926, \"width\": 2}, {\"from\": 442, \"title\": \"1\", \"to\": 957, \"width\": 1}, {\"from\": 442, \"title\": \"1\", \"to\": 445, \"width\": 1}, {\"from\": 442, \"title\": \"1\", \"to\": 883, \"width\": 1}, {\"from\": 445, \"title\": \"1\", \"to\": 957, \"width\": 1}, {\"from\": 445, \"title\": \"1\", \"to\": 883, \"width\": 1}, {\"from\": 447, \"title\": \"1\", \"to\": 1150, \"width\": 1}, {\"from\": 447, \"title\": \"1\", \"to\": 470, \"width\": 1}, {\"from\": 447, \"title\": \"1\", \"to\": 463, \"width\": 1}, {\"from\": 447, \"title\": \"1\", \"to\": 620, \"width\": 1}, {\"from\": 448, \"title\": \"1\", \"to\": 705, \"width\": 1}, {\"from\": 448, \"title\": \"1\", \"to\": 499, \"width\": 1}, {\"from\": 458, \"title\": \"1\", \"to\": 1092, \"width\": 1}, {\"from\": 458, \"title\": \"1\", \"to\": 1160, \"width\": 1}, {\"from\": 458, \"title\": \"1\", \"to\": 499, \"width\": 1}, {\"from\": 458, \"title\": \"1\", \"to\": 470, \"width\": 1}, {\"from\": 459, \"title\": \"1\", \"to\": 1029, \"width\": 1}, {\"from\": 463, \"title\": \"1\", \"to\": 1150, \"width\": 1}, {\"from\": 463, \"title\": \"1\", \"to\": 470, \"width\": 1}, {\"from\": 463, \"title\": \"1\", \"to\": 609, \"width\": 1}, {\"from\": 466, \"title\": \"1\", \"to\": 1029, \"width\": 1}, {\"from\": 466, \"title\": \"1\", \"to\": 741, \"width\": 1}, {\"from\": 470, \"title\": \"1\", \"to\": 1160, \"width\": 1}, {\"from\": 470, \"title\": \"1\", \"to\": 499, \"width\": 1}, {\"from\": 470, \"title\": \"1\", \"to\": 1150, \"width\": 1}, {\"from\": 470, \"title\": \"1\", \"to\": 1220, \"width\": 1}, {\"from\": 474, \"title\": \"1\", \"to\": 508, \"width\": 1}, {\"from\": 474, \"title\": \"1\", \"to\": 788, \"width\": 1}, {\"from\": 481, \"title\": \"1\", \"to\": 1029, \"width\": 1}, {\"from\": 482, \"title\": \"1\", \"to\": 1147, \"width\": 1}, {\"from\": 482, \"title\": \"1\", \"to\": 1220, \"width\": 1}, {\"from\": 482, \"title\": \"1\", \"to\": 1087, \"width\": 1}, {\"from\": 482, \"title\": \"1\", \"to\": 951, \"width\": 1}, {\"from\": 491, \"title\": \"2\", \"to\": 966, \"width\": 2}, {\"from\": 491, \"title\": \"1\", \"to\": 875, \"width\": 1}, {\"from\": 491, \"title\": \"1\", \"to\": 895, \"width\": 1}, {\"from\": 491, \"title\": \"1\", \"to\": 644, \"width\": 1}, {\"from\": 491, \"title\": \"1\", \"to\": 492, \"width\": 1}, {\"from\": 491, \"title\": \"2\", \"to\": 926, \"width\": 2}, {\"from\": 491, \"title\": \"1\", \"to\": 786, \"width\": 1}, {\"from\": 492, \"title\": \"1\", \"to\": 926, \"width\": 1}, {\"from\": 496, \"title\": \"1\", \"to\": 920, \"width\": 1}, {\"from\": 499, \"title\": \"1\", \"to\": 1160, \"width\": 1}, {\"from\": 499, \"title\": \"1\", \"to\": 705, \"width\": 1}, {\"from\": 508, \"title\": \"1\", \"to\": 788, \"width\": 1}, {\"from\": 508, \"title\": \"1\", \"to\": 946, \"width\": 1}, {\"from\": 508, \"title\": \"1\", \"to\": 633, \"width\": 1}, {\"from\": 508, \"title\": \"1\", \"to\": 655, \"width\": 1}, {\"from\": 510, \"title\": \"1\", \"to\": 854, \"width\": 1}, {\"from\": 539, \"title\": \"1\", \"to\": 608, \"width\": 1}, {\"from\": 539, \"title\": \"1\", \"to\": 561, \"width\": 1}, {\"from\": 539, \"title\": \"1\", \"to\": 548, \"width\": 1}, {\"from\": 546, \"title\": \"1\", \"to\": 771, \"width\": 1}, {\"from\": 547, \"title\": \"1\", \"to\": 666, \"width\": 1}, {\"from\": 547, \"title\": \"1\", \"to\": 854, \"width\": 1}, {\"from\": 547, \"title\": \"1\", \"to\": 921, \"width\": 1}, {\"from\": 548, \"title\": \"1\", \"to\": 756, \"width\": 1}, {\"from\": 548, \"title\": \"2\", \"to\": 605, \"width\": 2}, {\"from\": 548, \"title\": \"1\", \"to\": 608, \"width\": 1}, {\"from\": 548, \"title\": \"1\", \"to\": 561, \"width\": 1}, {\"from\": 548, \"title\": \"1\", \"to\": 711, \"width\": 1}, {\"from\": 561, \"title\": \"1\", \"to\": 608, \"width\": 1}, {\"from\": 564, \"title\": \"1\", \"to\": 608, \"width\": 1}, {\"from\": 570, \"title\": \"1\", \"to\": 620, \"width\": 1}, {\"from\": 604, \"title\": \"1\", \"to\": 1189, \"width\": 1}, {\"from\": 605, \"title\": \"2\", \"to\": 756, \"width\": 2}, {\"from\": 605, \"title\": \"1\", \"to\": 711, \"width\": 1}, {\"from\": 633, \"title\": \"1\", \"to\": 946, \"width\": 1}, {\"from\": 633, \"title\": \"1\", \"to\": 655, \"width\": 1}, {\"from\": 636, \"title\": \"1\", \"to\": 913, \"width\": 1}, {\"from\": 655, \"title\": \"1\", \"to\": 946, \"width\": 1}, {\"from\": 656, \"title\": \"1\", \"to\": 939, \"width\": 1}, {\"from\": 660, \"title\": \"1\", \"to\": 963, \"width\": 1}, {\"from\": 660, \"title\": \"1\", \"to\": 991, \"width\": 1}, {\"from\": 666, \"title\": \"1\", \"to\": 854, \"width\": 1}, {\"from\": 666, \"title\": \"1\", \"to\": 921, \"width\": 1}, {\"from\": 670, \"title\": \"1\", \"to\": 792, \"width\": 1}, {\"from\": 670, \"title\": \"1\", \"to\": 1311, \"width\": 1}, {\"from\": 685, \"title\": \"1\", \"to\": 972, \"width\": 1}, {\"from\": 741, \"title\": \"1\", \"to\": 946, \"width\": 1}, {\"from\": 741, \"title\": \"1\", \"to\": 1262, \"width\": 1}, {\"from\": 741, \"title\": \"2\", \"to\": 1029, \"width\": 2}, {\"from\": 741, \"title\": \"1\", \"to\": 1309, \"width\": 1}, {\"from\": 771, \"title\": \"1\", \"to\": 854, \"width\": 1}, {\"from\": 786, \"title\": \"6\", \"to\": 966, \"width\": 6}, {\"from\": 786, \"title\": \"1\", \"to\": 939, \"width\": 1}, {\"from\": 786, \"title\": \"1\", \"to\": 926, \"width\": 1}, {\"from\": 792, \"title\": \"1\", \"to\": 1311, \"width\": 1}, {\"from\": 852, \"title\": \"1\", \"to\": 998, \"width\": 1}, {\"from\": 854, \"title\": \"1\", \"to\": 921, \"width\": 1}, {\"from\": 854, \"title\": \"1\", \"to\": 947, \"width\": 1}, {\"from\": 862, \"title\": \"1\", \"to\": 1029, \"width\": 1}, {\"from\": 875, \"title\": \"2\", \"to\": 966, \"width\": 2}, {\"from\": 875, \"title\": \"1\", \"to\": 895, \"width\": 1}, {\"from\": 875, \"title\": \"1\", \"to\": 926, \"width\": 1}, {\"from\": 883, \"title\": \"1\", \"to\": 957, \"width\": 1}, {\"from\": 895, \"title\": \"1\", \"to\": 966, \"width\": 1}, {\"from\": 926, \"title\": \"2\", \"to\": 966, \"width\": 2}, {\"from\": 935, \"title\": \"1\", \"to\": 998, \"width\": 1}, {\"from\": 946, \"title\": \"1\", \"to\": 1262, \"width\": 1}, {\"from\": 951, \"title\": \"1\", \"to\": 1147, \"width\": 1}, {\"from\": 951, \"title\": \"1\", \"to\": 1220, \"width\": 1}, {\"from\": 951, \"title\": \"1\", \"to\": 1087, \"width\": 1}, {\"from\": 963, \"title\": \"1\", \"to\": 991, \"width\": 1}, {\"from\": 992, \"title\": \"1\", \"to\": 1113, \"width\": 1}, {\"from\": 1041, \"title\": \"1\", \"to\": 1220, \"width\": 1}, {\"from\": 1087, \"title\": \"1\", \"to\": 1147, \"width\": 1}, {\"from\": 1087, \"title\": \"1\", \"to\": 1220, \"width\": 1}, {\"from\": 1147, \"title\": \"1\", \"to\": 1220, \"width\": 1}]);\n\n        // adding nodes and edges to the graph\n        data = {nodes: nodes, edges: edges};\n\n        var options = {\"configure\": {\"enabled\": false}, \"nodes\": {\"font\": {\"size\": 7}}, \"edges\": {\"smooth\": true, \"color\": {\"opacity\": 0.25}}, \"physics\": {\"enabled\": true, \"forceAtlas2Based\": {\"springLength\": 100}, \"solver\": \"forceAtlas2Based\"}};\n        \n        \n\n        \n\n        network = new vis.Network(container, data, options);\n\t \n        \n\n\n        \n        network.on(\"stabilizationProgress\", function(params) {\n      \t\tdocument.getElementById('loadingBar').removeAttribute(\"style\");\n\t        var maxWidth = 496;\n\t        var minWidth = 20;\n\t        var widthFactor = params.iterations/params.total;\n\t        var width = Math.max(minWidth,maxWidth * widthFactor);\n\n\t        document.getElementById('bar').style.width = width + 'px';\n\t        document.getElementById('text').innerHTML = Math.round(widthFactor*100) + '%';\n\t    });\n\t    network.once(\"stabilizationIterationsDone\", function() {\n\t        document.getElementById('text').innerHTML = '100%';\n\t        document.getElementById('bar').style.width = '496px';\n\t        document.getElementById('loadingBar').style.opacity = 0;\n\t        // really clean the dom element\n\t        setTimeout(function () {document.getElementById('loadingBar').style.display = 'none';}, 500);\n\t    });\n        \n\n        return network;\n\n    }\n\n    drawGraph();\n\n</script>\n</body>\n</html>"
  },
  {
    "path": "notebooks/data/exclude.ris",
    "content": "TY  - CONF\r\nTI  - Integral image computation on GPU\r\nT2  - 10th International Multi-Conferences on Systems, Signals & Devices 2013 (SSD13)\r\nSP  - 1\r\nEP  - 4\r\nAU  - M. Chouchene\r\nAU  - F. E. Sayadi\r\nAU  - M. Atri\r\nAU  - R. Tourki\r\nPY  - 2013\r\nDO  - 10.1109/SSD.2013.6564007\r\nJO  - 10th International Multi-Conferences on Systems, Signals & Devices 2013 (SSD13)\r\nIS  - \r\nSN  - \r\nVO  - \r\nVL  - \r\nJA  - 10th International Multi-Conferences on Systems, Signals & Devices 2013 (SSD13)\r\nY1  - 18-21 March 2013\r\nER  - \r\n\n\r\n"
  },
  {
    "path": "notebooks/data/ieee_1.csv",
    "content": "\"Document Title\",Authors,\"Author Affiliations\",\"Publication Title\",Date Added To Xplore,\"Publication Year\",\"Volume\",\"Issue\",\"Start Page\",\"End Page\",\"Abstract\",\"ISSN\",ISBNs,\"DOI\",Funding Information,PDF Link,\"Author Keywords\",\"IEEE Terms\",\"INSPEC Controlled Terms\",\"INSPEC Non-Controlled Terms\",\"Mesh_Terms\",Article Citation Count,Patent Citation Count,\"Reference Count\",\"License\",Online Date,Issue Date,\"Meeting Date\",\"Publisher\",Document Identifier\n\"Exploring a multi-resolution GPU programming model for Chapel\",\"A. Hayashi; S. Raj Paul; V. Sarkar\",\"Georgia Institute of Technology Atlanta,Georgia,USA; Georgia Institute of Technology Atlanta,Georgia,USA; Georgia Institute of Technology Atlanta,Georgia,USA\",\"2020 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW)\",\"28 Jul 2020\",\"2020\",\"\",\"\",\"675\",\"675\",\"There is a growing need to support accelerators, especially GPU accelerators, since they are a common source of performance improvement in HPC clusters. As for GPU programming with Chapel, typically programmers first start with writing forall loops and run these loops on CPUs as a proof-of-concept. If the resulting CPU performance is not sufficient for their needs, their next step could be to try the automatic compiler-based GPU code generation techniques [1], [2]. For portions that remain as performance bottlenecks, even after automatic compilation approaches, the next step is to consider writing GPU kernels using CUDA/HIP/OpenCL and invoking these kernels from the Chapel program using the GPUIterator [3], [4] and Chapel's C interoperability feature.\",\"\",\"978-1-7281-7445-7\",\"10.1109/IPDPSW50202.2020.00117\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9150427\",\"\",\"Graphics processing units;Programming;Kernel;Data transfer;Optimization;Conferences;Writing\",\"parallel architectures;parallel programming;program compilers;public domain software\",\"automatic compilation;GPU kernels;Chapel program;multiresolution GPU programming model;GPU accelerators;HPC clusters;forall loops;Chapel C interoperability feature;automatic compiler-based GPU code generation;CUDA;OpenCL;HIP\",\"\",\"\",\"\",\"6\",\"\",\"28 Jul 2020\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"GPU Assist using DSP Pre-processor\",\"M. Mody; H. Hariyani; A. Balagopalakrishnan; J. Jones; A. Jayaraj; Y. A. Prithvishankar\",\"Texas Instruments Inc,Embedded Automotive Processor Business; Texas Instruments Inc,Embedded Automotive Processor Business; Texas Instruments Inc,Embedded Automotive Processor Business; Texas Instruments Inc,Embedded Automotive Processor Business; Texas Instruments Inc,Embedded Automotive Processor Business; Texas Instruments Inc,Embedded Automotive Processor Business\",\"2020 IEEE International Conference on Electronics, Computing and Communication Technologies (CONECCT)\",\"16 Sep 2020\",\"2020\",\"\",\"\",\"1\",\"4\",\"There is an ever increasing need for higher GPU performance to render sophisticated User Interface, latest high end 3D games and general purpose compute (GPGPU) applications. GPU SW programming models such as OpenGL have evolved over decades to cater to the unique mixed pipeline 3D GPU architectures. Due to the sticky nature of GPU SW programming model, leveraging other HW blocks to enhance graphics performance has been a most challenging task for SW architects. System designers have usually responded to the GFLOPS demand by increasing the GPU HW specifications. This paper proposes enhancing GPU performance by leveraging DSP transparently in background without impacting GPU software programming model. The proposed solution consists of multiple novel techniques namely ability to offload vertex shader to DSP, 3 stage pipelined execution and ability to re-use GPU internal pipeline. The proposed solution is prototyped in Jacinoto6 Platform from Texas Instruments. The default GPU spec performance is increased by up-to 41% by leveraging dual core C66x DSP in Jacinto6 Platform using proposed solution for different use-cases. The proposed solution is fully transparent to application software stack. In addition, the solution is directly applicable to any GPU + DSP architecture making it attractive approach for cost optimized solutions.\",\"\",\"978-1-7281-6828-9\",\"10.1109/CONECCT50063.2020.9198650\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9198650\",\"GPU;GPGPU;GLOPS;Shader;OpenGL;Vulkan DSP;Jacinto\",\"Graphics processing units;Pipeline processing;Pipelines;Programming;Random access memory;Context\",\"digital signal processing chips;graphics processing units;pipeline processing\",\"3D games;general purpose compute applications;GPU SW programming model;graphics performance;GPU HW specifications;GPU software programming model;3 stage pipelined execution;default GPU spec performance;DSP architecture;GPU performance;user interface;GPU internal pipeline;3D GPU architectures;DSP preprocessor;OpenGL;GFLOPS;vertex shader;Jacinoto6 platform;dual core C66x DSP;Jacinto6 platform\",\"\",\"1\",\"\",\"8\",\"\",\"16 Sep 2020\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"GPU Computing Pipeline Inefficiencies and Optimization Opportunities in Heterogeneous CPU-GPU Processors\",\"J. Hestness; S. W. Keckler; D. A. Wood\",NA; NA; NA,\"2015 IEEE International Symposium on Workload Characterization\",\"2 Nov 2015\",\"2015\",\"\",\"\",\"87\",\"97\",\"Emerging heterogeneous CPU-GPU processors have introduced unified memory spaces and cache coherence. CPU and GPU cores will be able to concurrently access the same memories, eliminating memory copy overheads and potentially changing the application-level optimization targets. To date, little is known about how developers may organize new applications to leverage the available, finer-grained communication in these processors. However, understanding potential application optimizations and adaptations is critical for directing heterogeneous processor programming model and architectural development. This paper quantifies opportunities for applications and architectures to evolve to leverage the new capabilities of heterogeneous processors. To identify these opportunities, we ported and simulated a broad set of benchmarks originally developed for discrete GPUs to remove memory copies, and applied analytical models to quantify their application-level pipeline inefficiencies. For existing benchmarks, GPU bulk-synchronous software pipelines result in considerable core and cache utilization inefficiency. For heterogeneous processors, the results indicate increased opportunity for techniques that provide flexible compute and data granularities, and support for efficient producer-consumer data handling and synchronization within caches.\",\"\",\"978-1-5090-0088-3\",\"10.1109/IISWC.2015.15\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7314150\",\"GPGPU;GPU computing;heterogeneous processors;benchmarking\",\"Graphics processing units;Benchmark testing;Kernel;Optimization;Pipelines;Synchronization\",\"graphics processing units;memory architecture;optimisation;pipeline processing\",\"GPU computing pipeline inefficiency;optimization opportunity;heterogeneous CPU-GPU processor;unified memory space;cache coherence;CPU core;GPU core;memory copy overhead;application-level optimization;finer-grained communication;heterogeneous processor programming model;architectural development;application-level pipeline inefficiency;GPU bulk-synchronous software pipeline\",\"\",\"19\",\"2\",\"38\",\"\",\"2 Nov 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Poster: Acceleration of the BLAST Hydro Code on GPU\",\"T. Dong; T. Kolev; R. Rieben; V. Dobrev\",\"Center for Appl. Sci. Comput., Lawrence Livermore Nat. Lab., Livermore, USA; Center for Appl. Sci. Comput., Lawrence Livermore Nat. Lab., Livermore, USA; Lawrence Livermore Nat. Lab., Livermore, USA; Center for Appl. Sci. Comput., Lawrence Livermore Nat. Lab., Livermore, USA\",\"2012 SC Companion: High Performance Computing, Networking Storage and Analysis\",\"11 Apr 2013\",\"2012\",\"\",\"\",\"1337\",\"1337\",\"The BLAST code implements a high-order numerical algorithm that solves the equations of compressible hydrodynamics using the Finite Element Method in a moving Lagrangian frame. BLAST is coded in C++ and parallelized by MPI. We accelerate the most computationally intensive parts (80%-95%) of BLAST on an NVIDIA GPU with the CUDA programming model. Several 2D and 3D problems were tested and a maximum speedup of 4.3x was delivered. Our results demonstrate the validity and capability of GPU computing.\",\"\",\"978-0-7695-4956-9\",\"10.1109/SC.Companion.2012.172\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6495955\",\"GPU;CFD;FEM\",\"\",\"application program interfaces;C++ language;compressible flow;computational fluid dynamics;finite element analysis;graphics processing units;hydrodynamics;message passing;parallel programming\",\"GPU computing;NVIDIA GPU;compute unified device architecture;CUDA programming model;parallelization;message passing interface;MPI;C++ language;moving Lagrangian frame;finite element method;compressible hydrodynamics;high-order numerical algorithm;graphics processing unit;BLAST hydro code\",\"\",\"\",\"\",\"\",\"\",\"11 Apr 2013\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Accelerating Kirchhoff Migration on GPU Using Directives\",\"R. Xu; M. Hugues; H. Calandra; S. Chandrasekaran; B. Chapman\",\"Dept. of Comput. Sci., Univ. of Houston, Houston, TX, USA; TOTAL E&P Res. & Technol. USA, Houston, TX, USA; TOTAL E&P Res. & Technol. USA, Houston, TX, USA; Dept. of Comput. Sci., Univ. of Houston, Houston, TX, USA; Dept. of Comput. Sci., Univ. of Houston, Houston, TX, USA\",\"2014 First Workshop on Accelerator Programming using Directives\",\"9 Apr 2015\",\"2014\",\"\",\"\",\"37\",\"46\",\"Accelerators offer the potential to significantly improve the performance of scientific applications when offloading compute intensive portions of programs to the accelerators. However, effectively tapping their full potential is difficult owing to the programmability challenges faced by the users when mapping computation algorithms to the massively parallel architectures such as GPUs.Directive-based programming models offer programmers an option to rapidly create prototype applications by annotating region of code for offloading with hints to the compiler. This is critical to improve the productivity in the production code. In this paper, we study the effectiveness of a high-level directivebased programming model, OpenACC, for parallelizing a seismic migration application called Kirchhoff Migration on GPU architecture. Kirchhoff Migration is a real-world production code in the Oil & Gas industry. Because of its compute intensive property, we focus on the computation part and explore different mechanisms to effectively harness GPU's computation capabilities and memory hierarchy. We also analyze different loop transformation techniques in different OpenACC compilers and compare their performance differences. Compared toone socket (10 CPU cores) on the experimental platform, one GPU achieved a maximum speedup of 20.54x and 6.72x for interpolation and extrapolation kernel functions.\",\"\",\"978-1-4673-6753-0\",\"10.1109/WACCPD.2014.8\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7081676\",\"OpenACC; Kirchhoff Migration; GPU; Directives; Programming Model\",\"Graphics processing units;Interpolation;Kernel;Programming;Extrapolation;Computer architecture;Computational modeling\",\"extrapolation;geophysics computing;graphics processing units;interpolation;parallel architectures;program compilers;seismology\",\"Kirchhoff migration;accelerator;compute intensive portion;programmability challenges;computation algorithm;parallel architecture;directive-based programming model;productivity;high-level directive based programming model;seismic migration application;GPU architecture;real-world production code;oil & gas industry;compute intensive property;GPU computation capability;memory hierarchy;loop transformation technique;OpenACC compiler;interpolation kernel function;extrapolation kernel function\",\"\",\"5\",\"\",\"18\",\"\",\"9 Apr 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"GPU parallel computing architecture and CUDA programming model\",\"J. Nickolls\",NA,\"2007 IEEE Hot Chips 19 Symposium (HCS)\",\"4 Jul 2016\",\"2007\",\"\",\"\",\"1\",\"12\",\"This article consists of a collection of slides from the author's conference presentation on NVIDIA's CUDA programming model (parallel computing platform and application programming interface) via graphical processing units (GPU). Some of the specific topics discussed include: the special features of GPUs; the importance of GPU computing; system specifications and architectures; processing capabilities; parallel memory sharing; CUDA programming models; transparent scalability; and major applications supported.\",\"\",\"978-1-4673-8869-6\",\"10.1109/HOTCHIPS.2007.7482491\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7482491\",\"\",\"Instruction sets;Graphics processing units;Parallel processing;Computer architecture;Programming;Computational modeling\",\"application program interfaces;graphics processing units;parallel architectures\",\"GPU parallel computing architecture;NVIDIA CUDA programming models;parallel computing platform;application programming interface;graphical processing units;parallel memory sharing;transparent scalability\",\"\",\"14\",\"1\",\"\",\"\",\"4 Jul 2016\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Kernel Fusion/Decomposition for Automatic GPU-Offloading\",\"A. Mishra; M. Kong; B. Chapman\",\"Stony Brook University, USA; Brookhaven National Laboratory, USA; Stony Brook University, USA\",\"2019 IEEE/ACM International Symposium on Code Generation and Optimization (CGO)\",\"7 Mar 2019\",\"2019\",\"\",\"\",\"283\",\"284\",\"The massively parallel architecture of GPU accelerators are being harnessed to expedite computational workloads in cutting edge scientific research. Unfortunately writing applications for GPUs requires extensive knowledge of the underlying architecture, the application and the interfacing programming model. Moreover, (re-)writing kernels using lower-level programming models such as CUDA and OpenCL is a burden for application scientists. A more appealing strategy is to leverage a programming model layered on directive-based optimization: OpenMP, whose recent specification significantly extends its accelerator functionalities. Despite this, it is still quite challenging to optimize large scale applications, since “pragmatizing” each kernel is a repetitive and complex task. In large scale applications most of the operations could be small, don't have enough computational work to justify a GPU execution, deeply buried in the library specification, or evenly spread throughout the application. Thus, we seek to design and build a compiler framework that can automatically and profitably offload regions of code with these characteristics. The driving principle of our work resides in generating numerous kernel variants that result from fusing and/or decomposing existing function bodies. We analyze the program's call graph to determine the “proximity” of kernel calls and evaluate the degree of data reuse among adjacent or “close-enough” calls. When such patterns are detected we generate several scenarios, until producing a single variant whose footprint is near the capacity of the GPU. To compare the potential performance among the various kernel variants generated, we are designing an adaptive cost model. The precision of this cost model will depend upon the analyzability of the program. We are also building upon existing cost models like Baghsorkhi et al.'s model which proposed a work flow graph based analytical model and a recent Hong et al.'s model which propose the use of abstract kernel emulations to help identify the performance bottlenecks of a GPU program execution. Along with these we introduce GPU initialization and data transfer cost to the model. Once the profitable kernel variants are detected, we automatically insert pertinent OpenMP directives and provide a newly generated code supporting GPU offloading.\",\"\",\"978-1-7281-1436-1\",\"10.1109/CGO.2019.8661188\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8661188\",\"\",\"Kernel;Graphics processing units;Adaptation models;Computational modeling;Analytical models;Programming;Libraries\",\"application program interfaces;coprocessors;graphics processing units;message passing;optimisation;parallel architectures;parallel programming;program compilers\",\"lower-level programming models;application scientists;directive-based optimization;accelerator functionalities;repetitive task;complex task;GPU execution;library specification;kernel calls;adaptive cost model;work flow graph;abstract kernel emulations;GPU program execution;data transfer cost;profitable kernel variants;pertinent OpenMP directives;kernel fusion/decomposition;automatic GPU-offloading;massively parallel architecture;GPU accelerators;computational workloads;edge scientific research;interfacing programming model;writing kernels;generated code;automatic GPU offloading\",\"\",\"3\",\"\",\"8\",\"\",\"7 Mar 2019\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Research on Tool Path Planning Method of NURBS Surface Based on CPU-GPU Parallel Computing\",\"W. Yu; Y. Bi; Z. Li\",\"Sch. of Autom., Hangzhou Univ. of Electron. Sci. & Technol., Hangzhou, China; Sch. of Autom., Hangzhou Univ. of Electron. Sci. & Technol., Hangzhou, China; Sch. of Autom., Hangzhou Univ. of Electron. Sci. & Technol., Hangzhou, China\",\"2017 International Conference on Computer Network, Electronic and Automation (ICCNEA)\",\"7 Dec 2017\",\"2017\",\"\",\"\",\"85\",\"88\",\"In order to deal with the inefficiency of trational serial tool path algorithms and incompatibility issues on the heterogeneous hardware platforms, this paper suggests a tool path planning method based on CPU-GPU(Central Processing Unit-Graphic Processing Unit) heterogeneous parallel computing. The method contra poses NURBS(Non-Uniform Rational B-Splines) surface which is abstracted as a matrix multiplication on the principle of isoparametric line tool path planning method. Then a parallel algorithm in accordance with Open CL(Open Computing Language) specification is proposed. Adopting data parallel programming model, the method executes multiple work-items of the GPU on the core under control of the CPU logic, and reconstructs the isoparametric line method as parallel execution instead of traditional serial execution. Simulation results show that this algorithm takes less time to generate tool paths on the CPU-GPU heterogeneous platforms, reduced by 1.5 to 15.9 times compared with traditional serial algorithm and it is of great significance to the tool path planning's real-time or quasi real-time generation.\",\"\",\"978-1-5386-3981-8\",\"10.1109/ICCNEA.2017.52\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8128535\",\"Component;Nurbs surfaces;OpenCL;Parallel computing;Tool path planning;CPU-GPU\",\"Tools;Graphics processing units;Path planning;Parallel processing;Splines (mathematics);Surface topography;Surface reconstruction\",\"graphics processing units;parallel programming;path planning;splines (mathematics)\",\"CPU logic;CPU-GPU heterogeneous platforms;traditional serial algorithm;Nurbs surface;CPU-GPU parallel computing;heterogeneous hardware platforms;parallel algorithm;serial tool path algorithms;Central Processing Unit-Graphic Processing Unit;NonUniform Rational B-Splines surface;isoparametric line tool path planning;Open CL;Open Computing Language;data parallel programming model\",\"\",\"1\",\"\",\"11\",\"\",\"7 Dec 2017\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"GPU programming for EDA with OpenCL\",\"R. O. Topaloglu; B. Gaster\",\"GLOBALFOUNDRIES, 840 N McCarthy Blvd, Milpitas CA 95035; Advanced Micro Devices, 1 AMD Pl, Sunnyvale CA 94085\",\"2011 IEEE/ACM International Conference on Computer-Aided Design (ICCAD)\",\"15 Dec 2011\",\"2011\",\"\",\"\",\"63\",\"66\",\"Graphical processing unit (GPU) computing has been an interesting area of research in the last few years. While initial adapters of the technology have been from image processing domain due to difficulties in programming the GPUs, research on programming languages made it possible for people without the knowledge of low-level programming languages such as OpenGL develop code on GPUs. Two main GPU architectures from AMD (former ATI) and NVIDIA acquired grounds. AMD adapted Stanford's Brook language and made it into an architecture-agnostic programming model. NVIDIA, on the other hand, brought CUDA framework to a wide audience. While the two languages have their pros and cons, such as Brook not being able to scale as well and CUDA having to account for architectural-level decisions, it has not been possible to compile one code on another architecture or across platforms. Another opportunity came with the introduction of the idea of combining one or more CPUs and GPUs on the same die. Eliminating some of the interconnection bandwidth issues, this combination makes it possible to offload tasks with high parallelism to the GPU. The technological direction towards multicores for CPU-only architectures also require a programming methodology change and act as a catalyst for suitable programming languages. Hence, a unified language that can be used both on multiple core CPUs as well as GPUs and their combinations has gained interest. Open Computing Language (OpenCL), developed originally by the Khronos Group of Apple and supported by both AMD and NVIDIA, is seen as the programming language of choice for parallel programming. In this paper, we provide a motivation for our tutorial talk on usage of OpenCL for GPUs and highlight key features of the language. We provide research directions on OpenCL for EDA. In our tutorial talk, we use EDA as our application domain to get the readers started with programming the rising language of parallelism, OpenCL.\",\"1558-2434\",\"978-1-4577-1400-9\",\"10.1109/ICCAD.2011.6105306\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6105306\",\"GPU;GPGPU;OpenCL;EDA;CAD;algorithms\",\"Graphics processing unit;Programming;Kernel;Multicore processing;Design automation;Algorithm design and analysis\",\"graphics processing units;parallel programming;programming languages\",\"GPU programming;EDA;OpenCL;graphical processing unit computing;image processing domain;research on programming language;low-level programming languages;OpenGL;GPU architecture;AMD;NVIDIA;Stanford Brook language;architecture-agnostic programming model;CUDA framework;architectural-level decisions;unified language;open computing language;parallel programming\",\"\",\"1\",\"\",\"17\",\"\",\"15 Dec 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Reflection removal using ghosting cues based on GPU via CUDA\",\"M. Liao; C. Lv; G. Li; J. Lin; X. Gao\",\"Software School, Xiamen University, Xiamen, Fujian, P.R. China; Software School, Xiamen University, Xiamen, Fujian, P.R. China; Software School, Xiamen University, Xiamen, Fujian, P.R. China; Software School, Xiamen University, Xiamen, Fujian, P.R. China; Software School, Xiamen University, Xiamen, Fujian, P.R. China\",\"2016 11th International Conference on Computer Science & Education (ICCSE)\",\"6 Oct 2016\",\"2016\",\"\",\"\",\"814\",\"817\",\"Reflections of windows or glass panes always destroy the photograph that we want to take by camera or phone. The purpose of this paper is to study and put forward a reflection removal algorithm based on GPU. The algorithm is not simply transplanted from CPU onto GPU. In order to make it adapted to the GPU architecture and programming model, we improve on the original method and the improved algorithm is more efficient by using GPU resources sufficiently. Experimental results show that the algorithm of this paper is effective and efficient. The GPU-based implementation is faster (up to 18 times) than the CPU-based implementation.\",\"\",\"978-1-5090-2218-2\",\"10.1109/ICCSE.2016.7581687\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7581687\",\"reflection removal;parallel computation;GPU;CUDA\",\"Reflection;Graphics processing units;Algorithm design and analysis;Windows;Glass;Parallel processing\",\"graphics processing units;image restoration;parallel architectures;reflection\",\"reflection removal algorithm;ghosting cues;GPU architecture;CUDA;window reflections;glass pane reflections;photographs;programming model;image restoration\",\"\",\"1\",\"\",\"22\",\"\",\"6 Oct 2016\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Hybrid Parallel Programming on GPU Clusters\",\"C. Yang; C. Huang; C. Lin; T. Chang\",\"Dept. of Comput. Sci., Tunghai Univ., Taichung, Taiwan; Dept. of Comput. Sci., Tunghai Univ., Taichung, Taiwan; Dept. of Comput. Sci., Tunghai Univ., Taichung, Taiwan; Dept. of Comput. Sci., Tunghai Univ., Taichung, Taiwan\",\"International Symposium on Parallel and Distributed Processing with Applications\",\"11 Nov 2010\",\"2010\",\"\",\"\",\"142\",\"147\",\"Nowadays, NVIDIA's CUDA is a general purpose scalable parallel programming model for writing highly parallel applications. It provides several key abstractions - a hierarchy of thread blocks, shared memory, and barrier synchronization. This model has proven quite successful at programming multithreaded many core GPUs and scales transparently to hundreds of cores: scientists throughout industry and academia are already using CUDA to achieve dramatic speedups on production and research codes. In this paper, we propose a hybrid parallel programming approach using hybrid CUDA and MPI programming, which partition loop iterations according to the number of C1060 GPU nodes in a GPU cluster which consists of one C1060 and one S1070. Loop iterations assigned to one MPI process are processed in parallel by CUDA run by the processor cores in the same computational node.\",\"2158-9208\",\"978-1-4244-8095-1\",\"10.1109/ISPA.2010.97\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5634329\",\"CUDA;GPU;MPI;OpenMP;hybrid;parallel programming\",\"Graphics processing unit;Instruction sets;Parallel processing;Parallel programming;Computational modeling;Linux\",\"computer graphic equipment;coprocessors;message passing;parallel programming\",\"hybrid parallel programming;NVIDIA CUDA programming model;graphics processing units;multithreaded programming;message passing interface;loop iterations;C1060 GPU cluster;S1070 GPU cluster\",\"\",\"4\",\"\",\"18\",\"\",\"11 Nov 2010\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"GPU-accelerated parallel algorithms for map algebra\",\"Jianbo Zhang; Wenxin Yang; Jing Sun; Yonghong Lv\",\"Department of Software Engineering, Faculty of Information Engineering, China University of Geoscience, Wuhan, China; Department of Software Engineering, Faculty of Information Engineering, China University of Geoscience, Wuhan, China; Department of Software Engineering, Faculty of Information Engineering, China University of Geoscience, Wuhan, China; Department of Software Engineering, Faculty of Information Engineering, China University of Geoscience, Wuhan, China\",\"2010 The 2nd Conference on Environmental Science and Information Application Technology\",\"9 Sep 2010\",\"2010\",\"1\",\"\",\"882\",\"885\",\"Aiming at the low efficiency when traditional realization methods of map algebra apply to calculations for gigantic raster data, this paper maps the traditional serial algorithms to GPU parallel processing architecture on a new parallel programming model of GPU named Compute Unified Device Architecture. The paper also aims to discuss the realization mechanism surrounding parallel mapping methods from traditional serial algorithms to parallel algorithms and adaptive-parameter adjustments on computer graphic processor resources.\",\"\",\"978-1-4244-7390-8\",\"10.1109/ESIAT.2010.5567202\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5567202\",\"Map Algebra;GPU;CUDA;Parallel Computation\",\"Graphics processing unit;Algebra;Instruction sets;Computer architecture;Computational modeling;Hardware;Parallel processing\",\"geographic information systems;mathematics computing;parallel algorithms;parallel architectures;parallel programming\",\"GPU-accelerated parallel algorithms;map algebra;serial algorithms;GPU parallel processing architecture;parallel programming model;Compute Unified Device Architecture;adaptive-parameter adjustments;computer graphic processor\",\"\",\"2\",\"\",\"10\",\"\",\"9 Sep 2010\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Abstract: GPU Accelerated Ultrasonic Tomography Using Propagation and Backpropagation Method\",\"P. D. Bello; Y. Jin; E. Lu\",\"Dept. of Electr. & Comput. Eng., Florida Int. Univ., Miami, FL, USA; Dept. of Eng. & Aviation Sci., Univ. of Maryland Eastern Shore, Princess Anne, MD, USA; Dept. of Math. & Comput. Sci., Salisbury Univ., Salisbury, MD, USA\",\"2012 SC Companion: High Performance Computing, Networking Storage and Analysis\",\"11 Apr 2013\",\"2012\",\"\",\"\",\"1445\",\"1446\",\"This paper develops implementation strategy and method to accelerate the propagation and backpropagation (PBP) tomographic imaging algorithm using Graphic Processing Units (GPUs). The Compute Unified Device Architecture (CUDA) programming model is used to develop our parallelized algorithm since the CUDA model allows the user to interact with the GPU resources more efficiently than traditional shader methods. The results show an improvement of more than 80x when compared to the C/C++ version of the algorithm, and 515x when compared to the MATLAB version while achieving high quality imaging for both cases. We test different CUDA kernel configurations in order to measure changes in the processing-time of our algorithm. By examining the acceleration rate and the image quality, we develop an optimal kernel configuration that maximizes the throughput of CUDA implementation for the PBP method.\",\"\",\"978-0-7695-4956-9\",\"10.1109/SC.Companion.2012.248\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6496031\",\"Medical Imaging;Ultrasonic Tomography;GPU;CUDA;Parallel Computing\",\"\",\"acoustic tomography;backpropagation;computerised tomography;graphics processing units;medical image processing;parallel algorithms;parallel architectures;ultrasonic imaging\",\"parallel computing;medical imaging;PBP method;optimal kernel configuration;image quality;acceleration rate;CUDA kernel configuration;MATLAB version;shader method;GPU resource;parallelized algorithm;CUDA programming model;compute unified device architecture;graphic processing unit;PBP tomographic imaging algorithm;propagation and backpropagation tomographic imaging algorithm;GPU accelerated ultrasonic tomography\",\"\",\"\",\"\",\"5\",\"\",\"11 Apr 2013\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Extending OpenSHMEM for GPU Computing\",\"S. Potluri; D. Bureddy; H. Wang; H. Subramoni; D. K. Panda\",\"Dept. of Comput. Sci. & Eng., Ohio State Univ., Columbus, OH, USA; Dept. of Comput. Sci. & Eng., Ohio State Univ., Columbus, OH, USA; Dept. of Comput. Sci. & Eng., Ohio State Univ., Columbus, OH, USA; Dept. of Comput. Sci. & Eng., Ohio State Univ., Columbus, OH, USA; Dept. of Comput. Sci. & Eng., Ohio State Univ., Columbus, OH, USA\",\"2013 IEEE 27th International Symposium on Parallel and Distributed Processing\",\"29 Jul 2013\",\"2013\",\"\",\"\",\"1001\",\"1012\",\"Graphics Processing Units (GPUs) are becoming an integral part of modern supercomputer architectures due to their high compute density and performance per watt. In order to maximize utilization, it is imperative that applications running on these clusters have low synchronization and communication overheads. Partitioned Global Address Space (PGAS) models provide an attractive approach for developing parallel scientific applications. Such models simplify programming through the abstraction of a shared memory address space while their one-sided communication primitives allow for efficient implementation of applications with minimum synchronization. OpenSHMEM is a library-based programming model that is gaining popularity. However, the current OpenSHMEM standard does not support direct communication from GPU device buffers. It requires data to be copied to the host memory before OpenSHMEM calls can be made. Similarly, data has to moved to the GPU explicitly by remote processes. This severely limits the programmability and performance of GPU applications. In this paper we provide extensions to the OpenSHMEM model which allow communication calls to be made directly on the GPU memory. The proposed extensions are interoperable with the two most popular GPU programming frameworks: CUDA and OpenCL. We present designs for an efficient OpenSHMEM runtime which transparently provide high-performance communication between GPUs in different inter-node and intra-node configurations. To the best of our knowledge this is the first work that enables GPU-GPU communication using the OpenSHMEM model for both CUDA and OpenCL computing frameworks. The proposed extensions to OpenSHMEM, coupled with the high-performance runtime, improve the latency of GPU-GPU shmem getmem operation by 90%, 40% and 17%, for intra-IOH (I/O Hub), inter-IOH and inter-node configurations. It improves the performance of OpenSHMEM atomics by up to 55% and 52%, for intra-IOH and inter-node GPU configurations respectively. The proposed enhancements improve the performance of Stencil2D kernel by 65% on a cluster of 192 GPUs and the performance of BFS kernel by 12% on a cluster of 96 GPUs.\",\"1530-2075\",\"978-1-4673-6066-1\",\"10.1109/IPDPS.2013.104\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6569880\",\"PGAS;OpenSHMEM;GPU;CUDA;OpenCL\",\"Graphics processing units;Runtime;Context;Computational modeling;Electronics packaging;Programming;Kernel\",\"graphics processing units;parallel architectures;parallel machines;shared memory systems\",\"OpenSHMEM runtime;high-performance communication;inter-node configurations;intra-node configurations;OpenCL computing frameworks;high-performance runtime;GPU-GPU shmem getmem operation;intra-IOH;I/O hub;OpenSHMEM atomics;GPU computing;graphics processing units;modern supercomputer architectures;high compute density;performance per watt;communication overheads;partitioned global address space models;PGAS models;parallel scientific applications;abstraction;shared memory address space;one-sided communication primitives;minimum synchronization;library-based programming model;direct communication;GPU device buffers;host memory;programmability;OpenSHMEM model;GPU memory;interoperable;GPU programming frameworks;CUDA;OpenCL;Stencil2D kernel\",\"\",\"21\",\"\",\"32\",\"\",\"29 Jul 2013\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Tartan: Evaluating Modern GPU Interconnect via a Multi-GPU Benchmark Suite\",\"A. Li; S. L. Song; J. Chen; X. Liu; N. Tallent; K. Barker\",Pacific Northwest National Laboratory; Pacific Northwest National Laboratory; Pacific Northwest National Laboratory; Pacific Northwest National Laboratory; Pacific Northwest National Laboratory; Pacific Northwest National Laboratory,\"2018 IEEE International Symposium on Workload Characterization (IISWC)\",\"13 Dec 2018\",\"2018\",\"\",\"\",\"191\",\"202\",\"High performance multi-GPU computing becomes an inevitable trend due to the ever-increasing demand on computation capability in emerging domains such as deep learning, big data and planet-scale applications. However, the lack of deep understanding on how modern GPUs can be connected and the actual impact of state-of-the-art interconnect on multiGPU application performance becomes a hurdle. Additionally, the absence of a practical multi-GPU benchmark suite poses further obstacles for conducting research in multi-GPU era. In this paper, we fill the gap by proposing a multi-GPU benchmark suite named Tartan, which contains microbenchmarks, scale-up and scale-out applications. We then apply Tartan to evaluate the four latest types of modern GPU interconnects, i.e., PCI-e, NVLink-V1, NVLink-V2 and InfiniBand with GPUDirect-RDMA from two recently released NVIDIA super AI platforms as well as ORNL's exascale prototype system. Based on empirical evaluation, we observe four new types of NUMA effects: three types are triggered by NVLink's topology, connectivity and routing, while one type is caused by PCI-e (i.e., anti-locality). They are very important for performance tuning in multi-GPU environment. Our evaluation results show that, unless the current CPU-GPU master-slave programming model can be replaced, it is difficult for scale-up multi-GPU applications to really benefit from faster intra-node interconnects such as NVLinks; while for inter-node scale-out applications, although interconnect is more crucial to the overall performance, GPUDirect-RDMA appears to be not always the optimal choice. The Tartan benchmark suite including the microbenchmarks are opensource and available athttp://github.com/uuudown/Tartan.\",\"\",\"978-1-5386-6780-4\",\"10.1109/IISWC.2018.8573483\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8573483\",\"\",\"Graphics processing units;Bandwidth;Peer-to-peer computing;Benchmark testing;Network topology;Topology;Routing\",\"benchmark testing;computer graphic equipment;graphics processing units;multiprocessing systems\",\"Tartan benchmark suite;modern GPU interconnect;high performance multiGPU computing;planet-scale applications;multiGPU application performance;multiGPU era;NVLink-V1;NVLink-V2;multiGPU environment;scale-up multiGPU applications;modern GPU;CPU-GPU master-slave programming model;multiGPU benchmark suite;intra-node interconnects\",\"\",\"14\",\"\",\"72\",\"\",\"13 Dec 2018\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Integrating Multi-GPU Execution in an OpenACC Compiler\",\"T. Komoda; S. Miwa; H. Nakamura; N. Maruyama\",\"Grad. Sch. of Inf. Sci. & Technol., Univ. of Tokyo, Tokyo, Japan; Grad. Sch. of Inf. Sci. & Technol., Univ. of Tokyo, Tokyo, Japan; Grad. Sch. of Inf. Sci. & Technol., Univ. of Tokyo, Tokyo, Japan; Adv. Inst. for Comput. Sci., RIKEN, Kobe, Japan\",\"2013 42nd International Conference on Parallel Processing\",\"19 Dec 2013\",\"2013\",\"\",\"\",\"260\",\"269\",\"GPUs have become promising computing devices in current and future computer systems due to its high performance, high energy efficiency, and low price. However, lack of high level GPU programming models hinders the wide spread of GPU applications. To resolve this issue, OpenACC is developed as the first industry standard of a directive-based GPU programming model and several implementations are now available. Although early evaluations of the OpenACC systems showed significant performance improvement with modest programming efforts, they also revealed the limitations of the systems. One of the biggest limitations is that the current OpenACC compilers do not automate the utilization of multiple GPUs. In this paper, we present an OpenACC compiler with the capability to execute single GPU OpenACC programs on multiple GPUs. By orchestrating the compiler and the runtime system, the proposed system can efficiently manage the necessary data movements among multiple GPUs memories. To enable advanced communication optimizations in the proposed system, we propose a small set of directives as extensions of OpenACC API. The directives allow programmers to express the patterns of memory accesses in the parallel loops to be offloaded. Inserting a few directives into an OpenACC program can reduce a large amount of unnecessary data movements and thus helps the proposed system drawing great performance from multi-GPU systems. We implemented and evaluated the prototype system on top of CUDA with three data parallel applications. The proposed system achieves up to 6.75x of the performance compared to OpenMP in the 1CPU with 2GPU machine, and up to 2.95x of the performance compared to OpenMP in the 2CPU with 3GPU machine. In addition, in two of the three applications, the multi-GPU OpenACC compiler outperforms the single GPU system where hand-written CUDA programs run.\",\"2332-5690\",\"978-0-7695-5117-3\",\"10.1109/ICPP.2013.35\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6687359\",\"OpenACC;Multi-GPU\",\"Graphics processing units;Arrays;Kernel;Programming;Runtime;Distributed databases\",\"application program interfaces;graphics processing units;multiprocessing systems;program compilers\",\"multiGPU execution;graphics processing unit;OpenACC compiler;high level GPU programming models;GPU applications;directive-based GPU programming model;GPU OpenACC programs;runtime system;data movements;GPU memories;OpenACC API extension;application program interface;data parallel applications;hand-written CUDA programs;compute unified device architecture\",\"\",\"11\",\"\",\"23\",\"\",\"19 Dec 2013\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Integral image computation on GPU\",\"M. Chouchene; F. E. Sayadi; M. Atri; R. Tourki\",\"Laboratory of Electronics and Microelectronics (EμE), Faculty of Sciences Monastir, Tunisia; Laboratory of Electronics and Microelectronics (EμE), Faculty of Sciences Monastir, Tunisia; Laboratory of Electronics and Microelectronics (EμE), Faculty of Sciences Monastir, Tunisia; Laboratory of Electronics and Microelectronics (EμE), Faculty of Sciences Monastir, Tunisia\",\"10th International Multi-Conferences on Systems, Signals & Devices 2013 (SSD13)\",\"22 Jul 2013\",\"2013\",\"\",\"\",\"1\",\"4\",\"In this paper we present an integral image algorithm that can run in real-time on a Graphics Processing Unit (GPU). Our system exploits the parallelisms in computation via the NVIDA CUDA programming model, which is a software platform for solving non-graphics problems in a massively parallel high performance fashion. We compare the performance of the parallel approach running on the GPU with the sequential CPU implementation across a range of image sizes.\",\"\",\"978-1-4673-6457-7\",\"10.1109/SSD.2013.6564007\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6564007\",\"Integral image;GPU;CPU;NVIDIA CUDA\",\"Graphics processing units;Instruction sets;Programming;Computer architecture;Kernel;Computer vision;Laboratories\",\"graphics processing units;parallel architectures;parallel programming\",\"integral image computation;GPU;graphics processing unit;NVIDA;CUDA programming model;software platform;nongraphics problem solving;parallel high performance fashion\",\"\",\"2\",\"\",\"12\",\"\",\"22 Jul 2013\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"GPU-based non-binary LDPC decoder with weighted bit-reliability based algorithm\",\"Z. Liu; R. Liu; L. Zhao\",\"School of Electrical and Information Engineering, Beihang University, Beijing 100191, China; School of Electrical and Information Engineering, Beihang University, Beijing 100191, China; School of Electrical and Information Engineering, Beihang University, Beijing 100191, China\",\"China Communications\",\"29 May 2020\",\"2020\",\"17\",\"5\",\"78\",\"88\",\"In this paper, we present a graphics processing unit (GPU)-based implementation of a weighted bit-reliability based (wBRB) decoder for non-binary LDPC (NB-LDPC) codes. To achieve coalesced memory accesses, an efficient data structure for the wBRB algorithm is proposed. Based on the Single-Instruction Multiple-Threads (SIMT) programming model, a novel mapping strategy with high intra-frame parallelism is presented to improve the latency and throughput performance. Moreover, by using Single-Instruction Multiple-Data (SIMD) intrinsics, four 8-bit message elements are packed into a 32-bit unit and simultaneously processed. Experimental results show that the proposed wBRB decoder provides good tradeoff between error performance and throughput for the codes with relatively large column degrees or high rates.\",\"1673-5447\",\"\",\"10.23919/JCC.2020.05.008\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9103919\",\"non-binary LDPC;bit-reliability;GPU;SIMT;SIMD\",\"Decoding;Iterative decoding;Complexity theory;Graphics processing units;Memory management;Data structures;Throughput\",\"data structures;decoding;graphics processing units;multi-threading;parity check codes\",\"GPU-based nonbinary LDPC decoder;graphics processing unit-based implementation;weighted bit-reliability based decoder;nonbinary LDPC codes;NB-LDPC;coalesced memory accesses;efficient data structure;wBRB algorithm;high intra-frame parallelism;8-bit message elements;32-bit unit;wBRB decoder;single-instruction multiple-data intrinsics;single-instruction multiple-threads programming model\",\"\",\"\",\"\",\"\",\"\",\"29 May 2020\",\"\",\"\",\"IEEE\",\"IEEE Magazines\"\n\"GPU implementation of Hertzian Potential Formulation for simulation of nanosensors\",\"D. Tartarini; A. Massaro\",\"Scuola Superiore ISUFI, University of Salento, via Arnesano 16, Lecce 73100, Italy; Center for Bio-Molecular Nanotechnologies (CBN) of IIT, via Barsanti 1, 73010, Arnesano (LE), Italy\",\"2011 Numerical Simulation of Optoelectronic Devices\",\"10 Oct 2011\",\"2011\",\"\",\"\",\"109\",\"110\",\"The time domain modeling and simulation of electromagnetic (EM) waves interaction with nanodevices, at high spatial and time resolution, requires high computational power. In this paper we present an implementation of the Hertzian Potential Formulation (HPF) on the Graphics Processing Units (GPUs) through the NVIDIA's CUDA (Compute Unified Device Architecture)programming model. The results demonstrate that this GPU tool outperforms the CPU based HPF implementation, reaching a speedup from 30× to 70×.\",\"2158-3242\",\"978-1-61284-878-5\",\"10.1109/NUSOD.2011.6041164\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6041164\",\"GPU Implementation;Nanodevices;Hertzian Potential Formulation\",\"Graphics processing unit;Computational modeling;Time domain analysis;Electromagnetic scattering;Optical waveguides;Nanoscale devices\",\"computer graphics;nanophotonics;nanosensors;optical engineering computing;optical sensors;time-domain analysis\",\"GPU;Hertzian potential formulation;nanosensors;time domain modeling;electromagnetic waves interaction;nanodevices;spatial resolution;time resolution;graphics processing units;compute unified device architecture programming model\",\"\",\"\",\"\",\"14\",\"\",\"10 Oct 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Physis: An implicitly parallel programming model for stencil computations on large-scale GPU-accelerated supercomputers\",\"N. Maruyama; K. Sato; T. Nomura; S. Matsuoka\",\"Tokyo Institute of Technology, JST, CREST 2-12-1 Ookayama, Meguro-ku, Tokyo, Japan; Tokyo Institute of Technology, 2-12-1 Ookayama, Meguro-ku, Tokyo, Japan; Google, Inc. 6-10-1 Roppongi, Minato-ku, Tokyo, Japan; Tokyo Institute of Technology, JST, CREST & NII, 2-12-1 Ookayama, Meguro-ku, Tokyo, Japan\",\"SC '11: Proceedings of 2011 International Conference for High Performance Computing, Networking, Storage and Analysis\",\"29 Dec 2011\",\"2011\",\"\",\"\",\"1\",\"12\",\"This paper proposes a compiler-based programming framework that automatically translates user-written structured grid code into scalable parallel implementation code for GPU-equipped clusters. To enable such automatic translations, we design a small set of declarative constructs that allow the user to express stencil computations in a portable and implicitly parallel manner. Our framework translates the user-written code into actual implementation code in CUDA for GPU acceleration and MPI for node-level parallelization with automatic optimizations such as computation and communication overlapping. We demonstrate the feasibility of such automatic translations by implementing several structured grid applications in our framework. Experimental results on the TSUBAME2.0 GPU-based supercomputer show that the performance is comparable as hand-written code and good strong and weak scalability up to 256 GPUs.\",\"2167-4337\",\"978-1-4503-0771-0\",\"10.1145/2063384.2063398\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6114468\",\"Domain Specific Languages;Application Framework;High Perforamnce Computing\",\"Programming;Computational modeling;DSL;Graphics processing unit;Runtime;Optimization;Indexes\",\"application program interfaces;graphics processing units;grid computing;message passing;parallel architectures;parallel machines;program compilers;program interpreters\",\"Physis;parallel programming model;stencil computations;TSUBAME2.0 GPU-based supercomputer;compiler-based programming framework;user-written structured grid code translation;parallel implementation code;GPU-equipped clusters;CUDA;GPU acceleration;MPI;node-level parallelization;computation overlapping;communication overlapping;structured grid applications\",\"\",\"53\",\"1\",\"30\",\"\",\"29 Dec 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Infiniband-Verbs on GPU: A Case Study of Controlling an Infiniband Network Device from the GPU\",\"L. Oden; H. Fröning; F. Pfreundt\",\"Competence Center High Perfomance Comput., Fraunhofer Inst. for Ind. Math., Kaiserslautern, Germany; Inst. of Comput. Eng., Univ. of Heidelberg, Heidelberg, Germany; Competence Center High Perfomance Comput., Fraunhofer Inst. for Ind. Math., Kaiserslautern, Germany\",\"2014 IEEE International Parallel & Distributed Processing Symposium Workshops\",\"4 Dec 2014\",\"2014\",\"\",\"\",\"976\",\"983\",\"Due to their massive parallelism and high performance per watt GPUs gain high popularity in high performance computing and are a strong candidate for future exacscale systems. But communication and data transfer in GPU accelerated systems remain a challenging problem. Since the GPU normally is not able to control a network device, today a hybrid-programming model is preferred, whereby the GPU is used for calculation and the CPU handles the communication. As a result, communication between distributed GPUs suffers from unnecessary overhead, introduced by switching control flow from GPUs to CPUs and vice versa. In this work, we modify user space libraries and device drivers of GPUs and the Infiniband network device in a way to enable the GPU to control an Infiniband network device to independently source and sink communication requests without any involvements of the CPU. Our performance analysis shows the differences to hybrid communication models in detail, in particular that the CPU's advantage in generating work requests outshines the overhead associated with context switching. In other terms, our results show that complex networking protocols like IBVERBS are better handled by CPUs in spite of time penalties due to context switching, since overhead of work request generation cannot be parallelized and is not suitable with the high parallel programming model of GPUs.\",\"\",\"978-1-4799-4116-2\",\"10.1109/IPDPSW.2014.111\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6969487\",\"GPUs;Communication;Heterogeneous Clusters;Infiniband;RDMA\",\"Graphics processing units;Data transfer;Registers;Performance evaluation;Context;Libraries;Instruction sets\",\"graphics processing units;parallel programming\",\"infiniband-verbs;GPU;infiniband network device;massive parallelism;high performance per watt;high performance computing;exacscale systems;data transfer;hybrid-programming model;IBVERBS;high parallel programming model\",\"\",\"9\",\"2\",\"24\",\"\",\"4 Dec 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Performance Analysis of Benchmarks for GPU-based Linear Programming Problem Solvers\",\"U. A. Shah; S. Yousaf\",\"Department of Computer Science and IT, University of Engineering and Technology, Peshawar, Pakistan; Department of Computer Science and IT, University of Engineering and Technology, Peshawar, Pakistan\",\"2019 2nd International Conference on Communication, Computing and Digital systems (C-CODE)\",\"4 Apr 2019\",\"2019\",\"\",\"\",\"132\",\"136\",\"The single instruction multiple threads (SIMT) architecture of modern graphics processing units (GPUs) shows great potential for efficiently solving compute-intensive linear programming (LP) problems. For benchmarking these GPU-based solutions, speedup is used to measure their relative performance gains with respect to CPU-based implementations. However, a methodological flaw has been observed in benchmarking these GPU-based LP problem solvers, namely, the magnitude of their speedup varies with the choice of CPU-based benchmark. In this paper, we analyze the performance of CPU-based LP problem solvers used to benchmark their GPU-based counterparts. More specifically, we consider benchmarks of two established GPU-based solutions for revised simplex method. The first solution is based on general-purpose computing on GPUs (GPGPU) programming model, and uses a custom-built CPU-based solution as benchmark. The second solution is an OpenGL-based solver, and uses the LP utility in GNU linear programming kit (GLPK) as benchmark. Further, we performed experiments to compare the efficiency of these CPU-based benchmarks with an LP tool present in a commercially available CPU-based software package called CPLEX. Our study reveals that the use of nonstandard benchmarks makes it unfair to quantitatively compare the claims made about speedups achieved by various GPU-based solvers. In order to facilitate decision making process for potential users of GPU-based solutions, we recommend that standard sequential benchmarks be used during any future attempts at developing GPU-based linear optimization tools.\",\"\",\"978-1-5386-9609-5\",\"10.1109/C-CODE.2019.8680981\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8680981\",\"Graphics processing unit (GPU);General-purpose computing on GPUs (GPGPU);Linear programming (LP);Revised simplex method (RSM)\",\"Benchmark testing;Linear programming;Graphics processing units;Standards;Libraries;Tools;Optimization\",\"decision making;graphics processing units;linear programming;optimisation\",\"compute-intensive linear programming problems;CPU-based implementations;CPU-based benchmark;CPU-based LP problem solvers;GPU-based counterparts;established GPU-based solutions;GPUs programming model;custom-built CPU-based solution;GNU linear programming kit;nonstandard benchmarks;GPU-based solvers;standard sequential benchmarks;GPU-based linear programming problem solvers;single instruction multiple threads architecture;graphics processing units;general-purpose computing;CPU-based software package\",\"\",\"1\",\"\",\"18\",\"\",\"4 Apr 2019\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Accelerating frequency-domain simulations using small shared-memory CPU/GPU cluster\",\"T. Topa; A. Noga; A. Karwowski\",\"Silesian University of Technology, Gliwice, Poland; Silesian University of Technology, Gliwice, Poland; Silesian University of Technology, Gliwice, Poland\",\"2016 21st International Conference on Microwave, Radar and Wireless Communications (MIKON)\",\"16 Jun 2016\",\"2016\",\"\",\"\",\"1\",\"4\",\"Numerical approach to frequency response problems usually requires that the system governing equation is solved repeatedly at many frequencies. The computational efficiency of the overall process can be increased by departing from traditional sequential computing model in favor of utilizing the parallel processing capability commonly offered by modern hardware. In this paper, we consider a hybrid programming pattern, OpenMP + CUDA, from the perspective of a user of a rather typical low-cost multi-core CPU-based workstation that can accommodate up to four GPUs. Such the small-scale heterogeneous platforms have recently gained wide popularity in scientific computing as an inexpensive massively parallel architecture. The relevant programming model issues and performance questions are addressed. Experimental results for the example physics problem, that is, the electromagnetic scattering from perfectly electrically conducting body, show that significant performance improvement can be attained with the OpenMP + CUDA programming model.\",\"\",\"978-1-5090-2214-4\",\"10.1109/MIKON.2016.7492098\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7492098\",\"GPU;CUDA;milticore CPU;OpenMP;MoM\",\"Graphics processing units;Method of moments;Mathematical model;Kernel;Instruction sets;Computational modeling;Programming\",\"electromagnetic wave scattering;frequency response;frequency-domain analysis;graphics processing units;microprocessor chips;multiprocessing systems;parallel architectures\",\"frequency-domain simulations;graphics processing units;small shared-memory CPU-GPU cluster;frequency response problems;computational efficiency;sequential computing model;parallel processing capability;hybrid programming pattern;multicore CPU-based workstation;electromagnetic scattering;OpenMP + CUDA programming model\",\"\",\"\",\"\",\"11\",\"\",\"16 Jun 2016\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Time-Domain Computational Electromagnetics Algorithms for GPU Based Computers\",\"P. P. M. So\",\"Department of Electrical and Computer Engineering, University of Victoria, Victoria, BC, Canada. email: Poman.So@ECE.UVic.CA\",\"EUROCON 2007 - The International Conference on \"Computer as a Tool\"\",\"26 Dec 2007\",\"2007\",\"\",\"\",\"1\",\"4\",\"Time-domain computational electromagnetic algorithms such as FDTD and TLM require computers with superb processing power and large memory capacity. Grid computing network, cluster computer and massively parallel supercomputers have been the hardware of choices for running powerful modelling tools based on these methods. As a result, high performance modelling tools are only available to elite groups of researchers and big corporations. Stream computing, a new technology that harnesses the tremendous numerical processing power of advanced graphics processing units for general purpose numerical computation, is going to bring high performance time-domain modelling tools to the EM community. This paper reviews the emerging GPU technologies and programming models. Two modelling examples are also used to illustrate the suitability of GPU computing for time-domain electromagnetics.\",\"\",\"978-1-4244-0812-2\",\"10.1109/EURCON.2007.4400480\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=4400480\",\"CEM;TLM;Time Domain;GPU Computing;Stream Computing\",\"Time domain analysis;Computational electromagnetics;Clustering algorithms;Grid computing;High performance computing;Finite difference methods;Computer networks;Concurrent computing;Supercomputers;Hardware\",\"computational electromagnetics;computer graphic equipment;finite difference time-domain analysis;grid computing;parallel processing\",\"time-domain computational electromagnetics algorithm;GPU based computer;grid computing network;cluster computer;parallel supercomputer;high performance modelling tool;stream computing technology;general purpose numerical computation;graphics processing unit;programming model\",\"\",\"3\",\"\",\"8\",\"\",\"26 Dec 2007\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Scalability of Higher-Order Discontinuous Galerkin FEM Computations for Solving Electromagnetic Wave Propagation Problems on GPU Clusters\",\"N. Gödel; N. Nunn; T. Warburton; M. Clemens\",\"Faculty of Electrical Engineering, Chair for Theory of Electrical Engineering and Computational Electromagnetics, $^{1}$ Helmut-Schmidt-University, University of the Federal Armed Forces Hamburg, Hamburg, Germany; NA; $^{2}$ Computational and Applied Mathematics, Rice University, Houston, TX 77005 , USA; FB E, Chair for Electromagnetic Theory, $^{3}$Bergische Universität Wuppertal, Wuppertal, Germany\",\"IEEE Transactions on Magnetics\",\"19 Jul 2010\",\"2010\",\"46\",\"8\",\"3469\",\"3472\",\"A highly parallel implementation of Maxwell's equations in the time domain using a cluster of Graphics Processing Units (GPUs) is presented. The higher-order Discontinuous Galerkin Finite Element Method (DG-FEM) is used for spatial discretization since its characteristics are matching the parallelization design aspects of the NVIDIA Compute Unified Device Architecture (CUDA) programming model. Asynchronous data transfer is introduced to minimize parallelization overhead and improve parallel efficiency. The implementation is benchmarked with help of a realistic 3-D geometry of an electromagnetic compatibility problem.\",\"1941-0069\",\"\",\"10.1109/TMAG.2010.2046022\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5513006\",\"CUDA;discontinuous Galerkin;FEM;GPGPU;GPU-computing;high order\",\"Scalability;Electromagnetic propagation;Maxwell equations;Graphics;Moment methods;Finite element methods;Concurrent computing;Computer architecture;Parallel programming;Geometry\",\"electromagnetic wave propagation;finite element analysis;Galerkin method;Maxwell equations\",\"high-order discontinuous Galerkin FEM computation;electromagnetic wave propagation;GPU clusters;graphics processing units;finite element method;spatial discretization;NVIDIA compute unified device architecture programming model;asynchronous data transfer;realistic 3-D geometry;Maxwell equations\",\"\",\"36\",\"\",\"8\",\"IEEE\",\"19 Jul 2010\",\"\",\"\",\"IEEE\",\"IEEE Journals\"\n\"Improving Utility of GPU in Accelerating Industrial Applications With User-Centered Automatic Code Translation\",\"P. Yang; F. Dong; V. Codreanu; D. Williams; J. B. T. M. Roerdink; B. Liu; A. Anvari-Moghaddam; G. Min\",\"Department of Computer Science, Liverpool John Moores University, Liverpool, U.K.; University of Bedfordshire, Luton, U.K.; SURFsara, Amsterdam, The Netherlands; Faculteit Wiskunde en Natuurwetenschappen, Rijksuniversiteit Groningen, Groningen, The Netherlands; Johann Bernoulli Institute for Mathematics and Computer Science, University of Groningen, Groningen, The Netherlands; Department of Computer Science and Technology, University of Bedfordshire, Luton, U.K.; Department of Energy Technology, Aalborg University, Aalborg, Denmark; Department of Mathematics and Computer Science, College of Engineering, Mathematics and Physical Sciences, University of Exeter, Exeter, U.K.\",\"IEEE Transactions on Industrial Informatics\",\"4 Apr 2018\",\"2018\",\"14\",\"4\",\"1347\",\"1360\",\"Small to medium enterprises (SMEs), particularly those whose business is focused on developing innovative produces, are limited by a major bottleneck in the speed of computation in many applications. The recent developments in GPUs have been the marked increase in their versatility in many computational areas. But due to the lack of specialist GPUprogramming skills, the explosion of GPU power has not been fully utilized in general SME applications by inexperienced users. Also, the existing automatic CPU-to-GPU code translators are mainly designed for research purposes with poor user interface design and are hard to use. Little attentions have been paid to the applicability, usability, and learnability of these tools for normal users. In this paper, we present an online automated CPU-to-GPU source translation system (GPSME) for inexperienced users to utilize the GPU capability in accelerating general SME applications. This system designs and implements a directive programming model with a new kernel generation scheme and memory management hierarchy to optimize its performance. A web service interface is designed for inexperienced users to easily and flexibly invoke the automatic resource translator. Our experiments with nonexpert GPU users in four SMEs reflect that a GPSME system can efficiently accelerate real-world applications with at least 4× and have a better applicability, usability, and learnability than the existing automatic CPU-to-GPU source translators.\",\"1941-0050\",\"\",\"10.1109/TII.2017.2731362\",\"European Commission and the Engineering and Physical Sciences Research Council within the iManageCancer(grant numbers:611140); MyHealthAvatar(grant numbers:600929); MyLifeHub(grant numbers:EP/L023830); \",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7990251\",\"Automatic translation;graphics processing unit (GPU);parallel computing;usability\",\"Graphics processing units;Tools;Acceleration;Programming;Usability;C++ languages;Linux\",\"C language;graphics processing units;performance evaluation;service-oriented architecture;small-to-medium enterprises;storage management;user interfaces;Web services\",\"industrial applications;automatic code translation;medium enterprises;SMEs;computational areas;GPU power;general SME applications;inexperienced users;existing automatic CPU-to-GPU code translators;poor user interface design;normal users;CPU-to-GPU source translation system;GPU capability;automatic resource translator;nonexpert GPU users;GPSME system;real-world applications;CPU-to-GPU source translators;specialist GPU programming skills\",\"\",\"\",\"\",\"41\",\"IEEE\",\"24 Jul 2017\",\"\",\"\",\"IEEE\",\"IEEE Journals\"\n\"GPU Accelerated Tensor Computation of Hadamard Product for Machine Learning Applications\",\"K. M. A. Hasan; S. Chakraborty\",\"Khulna University of Engineering & Technology,Computer Science and Engineering Department,Khulna,Bangladesh; Khulna University of Engineering & Technology,Computer Science and Engineering Department,Khulna,Bangladesh\",\"2021 International Conference on Information and Communication Technology for Sustainable Development (ICICT4SD)\",\"12 Apr 2021\",\"2021\",\"\",\"\",\"1\",\"5\",\"The computation on Graphics Processing Unit (GPU) has come out as a new cost-effective parallel computing paradigm for high performance computing that makes possible to process large scale data in parallel. GPU is designed to perform complex mathematical and geometric tasks which are primarily used for 3D graphics related functions. It is also possible to use GPU for non-graphics or general-purpose computation, called General Purpose Computing on GPU (GPGPU), a sub-discipline of High-Performance Computing (HPC). The use of GPU, along with CPU to accelerate more complex scientific, engineering and mathematical tasks is known as GPU Accelerated Computing. In this paper, we propose an efficient tensor computation for Hadamard Product (HP) which is directly applied in machine learning applications especially in Long Short-Term Memory (LSTM). The HP computation becomes complex when higher order tensors with millions of data is considered. Therefore, the only CPU-based traditional serial operation becomes tedious and inefficient. The contribution of this paper is in two fold; first we have developed efficient algorithms for higher order tensors by dimension conversion. Then we apply the algorithm in GPU to speed up the computation. To apply in GPU, we develop efficient partitioning scheme of higher order tensors. We have used CUDA (Compute Unified Device Architecture) C programming model developed by NVIDIA to implement the algorithm. We compared these algorithms with Traditional Multidimensional Array (TMA) based algorithm and found improved results.\",\"\",\"978-1-6654-1460-9\",\"10.1109/ICICT4SD50815.2021.9396980\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9396980\",\"GPU Computing;HPC;Tensor computation;Hadamard Product;CUDA C\",\"Machine learning algorithms;Tensors;Graphics processing units;Machine learning;Partitioning algorithms;Acceleration;Task analysis\",\"C language;graphics processing units;learning (artificial intelligence);mathematics computing;parallel architectures;parallel programming;recurrent neural nets;tensors\",\"higher order tensor partitioning scheme;dimension conversion;LSTM;long short-term memory;HPC;GPGPU;general-purpose computing on GPU;GPU accelerated tensor computation;compute unified device architecture;CUDA C programming model;HP computation;GPU accelerated computing;geometric tasks;complex mathematical tasks;high performance computing;cost-effective parallel computing paradigm;graphics processing unit;machine learning applications;Hadamard Product\",\"\",\"\",\"\",\"17\",\"\",\"12 Apr 2021\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Distributed Interactive Visualization Using GPU-Optimized Spark\",\"S. Hong; J. Choi; W. -K. Jeong\",\"Ulsan National Institute of Science and Technology, Ulsan, South Korea; Ulsan National Institute of Science and Technology, Ulsan, South Korea; Korea University, Seoul, South Korea\",\"IEEE Transactions on Visualization and Computer Graphics\",\"29 Jul 2021\",\"2021\",\"27\",\"9\",\"3670\",\"3684\",\"With the advent of advances in imaging and computing technologies, large-scale data acquisition and processing have become commonplace in many science and engineering disciplines. Conventional workflows for large-scale data processing usually rely on in-house or commercial software that are designed for domain-specific computing tasks. Recent advances in MapReduce, which was originally developed for batch processing textual data via a simplified programming model of the map and reduce functions, have expanded its applications to more general tasks in big-data processing, such as scientific computing, and biomedical image processing. However, as shown in previous work, volume rendering and visualization using MapReduce is still considered challenging and impractical owing to the disk-based, batch-processing nature of its computing model. In this article, contrary to this common belief, we show that the MapReduce computing model can be effectively used for interactive visualization. Our proposed system is a novel extension of Spark, one of the most popular open-source MapReduce frameworks, which offers GPU-accelerated MapReduce computing. To minimize CPU-GPU communication and overcome slow, disk-based shuffle performance, the proposed system supports GPU in-memory caching and MPI-based direct communication between compute nodes. To allow for GPU-accelerated in-situ visualization using raster graphics in Spark, we leveraged the CUDA-OpenGL interoperability, resulting in faster processing speeds by several orders of magnitude compared to conventional MapReduce systems. We demonstrate the performance of our system via several volume processing and visualization tasks, such as direct volume rendering, iso-surface extraction, and numerical simulations with in-situ visualization.\",\"1941-0506\",\"\",\"10.1109/TVCG.2020.2990894\",\"National Research Foundation of Korea(grant numbers:NRF-2017R1D1A1A09000841); Ministry of Science and ICT(grant numbers:NRF-2019M3E5D2A01063819,NRF-2014K1A3A1A05034557); Korea Health Industry Development Institute(grant numbers:HI18C0316); \",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9079657\",\"MapReduce;spark;GPU;distributed rendering;in-situ visualization\",\"Data visualization;Sparks;Graphics processing units;Computational modeling;Rendering (computer graphics);Programming;Task analysis\",\"computer graphic equipment;computer graphics;data acquisition;data handling;data visualisation;graphics processing units;medical image processing;message passing;open systems;parallel architectures;parallel processing;public domain software;rendering (computer graphics)\",\"CPU-GPU communication;disk-based shuffle performance;GPU in-memory caching;MPI-based direct communication;compute nodes;GPU-accelerated in-situ visualization;faster processing speeds;conventional MapReduce systems;volume processing;visualization tasks;direct volume rendering;distributed interactive visualization;GPU-optimized Spark;imaging computing technologies;large-scale data acquisition;conventional workflows;large-scale data processing;commercial software;domain-specific computing tasks;batch processing textual data;simplified programming model;general tasks;big-data processing;scientific computing;biomedical image processing;batch-processing nature;MapReduce computing model;popular open-source MapReduce frameworks;GPU-accelerated MapReduce computing\",\"\",\"2\",\"\",\"45\",\"IEEE\",\"27 Apr 2020\",\"\",\"\",\"IEEE\",\"IEEE Journals\"\n\"A GPU-based Fast Solution for Riesz Space Fractional Reaction-Diffusion Equation\",\"Q. Wang; J. Liu; C. Gong; Y. Zhang; Z. Xing\",\"Sci. & Technol. on Parallel & Distrib. Process. Lab., Nat. Univ. of Defense Technol., Changsha, China; Sci. & Technol. on Parallel & Distrib. Process. Lab., Nat. Univ. of Defense Technol., Changsha, China; Sci. & Technol. on Parallel & Distrib. Process. Lab., Nat. Univ. of Defense Technol., Changsha, China; Sci. & Technol. on Parallel & Distrib. Process. Lab., Nat. Univ. of Defense Technol., Changsha, China; Sci. & Technol. on Parallel & Distrib. Process. Lab., Nat. Univ. of Defense Technol., Changsha, China\",\"2015 18th International Conference on Network-Based Information Systems\",\"10 Dec 2015\",\"2015\",\"\",\"\",\"317\",\"323\",\"The fast numerical solutions of Riesz fractional equation have computational cost of O(NMlogM), where M, N are the number of grid points and time steps. In this paper, we present a GPU-based fast solution for Riesz space fractional equation. The GPU-based fast solution, which is based on the fast method using FFT and implemented with CUDA programming model, consists of parallel FFT, vector-vector addition and vector-vector multiplication on GPU. The experimental results show that the GPU-based fast solution compares well with the exact solution. Compared to the known parallel fast solution on 8-core Intel E5-2670 CPU, the overall performance speedup on NVIDIA GTX650 GPU reaches 2.12 times and that on NVIDIA K20C GPU achieves 10.93 times.\",\"\",\"978-1-4799-9942-2\",\"10.1109/NBiS.2015.49\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7350638\",\"Parallel computing;GPU;fractional differential equation;FFT;fast solution\",\"Graphics processing units;Instruction sets;Mathematical model;Arrays;Yttrium;Approximation methods;Parallel processing\",\"differential equations;fast Fourier transforms;graphics processing units;mathematics computing;parallel architectures;reaction-diffusion systems;vectors\",\"GPU-based fast solution;Riesz space fractional reaction-diffusion equation;numerical solutions;Riesz fractional equation;computational cost;CUDA programming model;parallel FFT;vector-vector addition;vector-vector multiplication;NVIDIA GTX650 GPU;NVIDIA K20C GPU;fractional differential equation\",\"\",\"2\",\"\",\"30\",\"\",\"10 Dec 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"GCMR: A GPU Cluster-Based MapReduce Framework for Large-Scale Data Processing\",\"Yiru Guo; Weiguo Liu; B. Gong; G. Voss; W. Muller-Wittig\",\"Sch. of Comput. Sci. & Technol., Shandong Univ., Jinan, China; Sch. of Comput. Sci. & Technol., Shandong Univ., Jinan, China; Sch. of Comput. Sci. & Technol., Shandong Univ., Jinan, China; Fraunhofer IDM@NTU, Nanyang Technol. Univ., Singapore, Singapore; Fraunhofer IDM@NTU, Nanyang Technol. Univ., Singapore, Singapore\",\"2013 IEEE 10th International Conference on High Performance Computing and Communications & 2013 IEEE International Conference on Embedded and Ubiquitous Computing\",\"12 Jun 2014\",\"2013\",\"\",\"\",\"580\",\"586\",\"MapReduce is a very popular programming model to support parallel and distributed large-scale data processing. There have been a lot of efforts to implement this model on commodity GPU-based systems. However, most of these implementations can only work on a single GPU. And they can not be used to process large-scale datasets. In this paper, we present a new approach to design the MapReduce framework on GPU clusters for handling large-scale data processing. We have used Compute Unified Device Architectures (CUDA) and MPI parallel programming models to implement this framework. To derive an efficient mapping onto GPU clusters, we introduce a two-level parallelization approach: the inter node level and intra node level parallelization. Furthermore in order to improve the overall MapReduce efficiency, a multi-threading scheme is used to overlap the communication and computation on a multi-GPU node. Compared to previous GPU-based MapReduce implementations, our implementation, called GCMR, achieves speedups up to 2.6 on a single node and up to 9.1 on 4 nodes of a Tesla S1060 quad-GPU cluster system for processing small datasets. It also shows very good scalability for processing large-scale datasets on the cluster system.\",\"\",\"978-0-7695-5088-6\",\"10.1109/HPCC.and.EUC.2013.88\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6831970\",\"MapReduce;CUDA;MPI;GPU Cluster\",\"Graphics processing units;Instruction sets;Computational modeling;Computer architecture;Acceleration;Writing;Data processing\",\"application program interfaces;graphics processing units;message passing;parallel programming\",\"GCMR;GPU cluster-based MapReduce framework;distributed large-scale data processing;commodity GPU-based systems;compute unified device architectures;CUDA;MPI parallel programming models;inter node level parallelization;intra node level parallelization;MapReduce efficiency;multithreading scheme;multi-GPU node;GPU-based MapReduce;single node;Tesla S1060 quad-GPU cluster system;large-scale datasets\",\"\",\"2\",\"\",\"15\",\"\",\"12 Jun 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"NVIDIA A100 Tensor Core GPU: Performance and Innovation\",\"J. Choquette; W. Gandhi; O. Giroux; N. Stam; R. Krashinsky\",\"NVIDIA, Singapore; NVIDIA, Singapore; NVIDIA, Singapore; NVIDIA, Singapore; NVIDIA, Singapore\",\"IEEE Micro\",\"29 Mar 2021\",\"2021\",\"41\",\"2\",\"29\",\"35\",\"NVIDIA A100 Tensor Core GPU is NVIDIA's latest flagship GPU. It has been designed with many new innovative features to provide performance and capabilities for HPC, AI, and data analytics workloads. Feature enhancements include a Third-Generation Tensor Core, new asynchronous data movement and programming model, enhanced L2 cache, HBM2 DRAM, and third-generation NVIDIA NVLink I/O.\",\"1937-4143\",\"\",\"10.1109/MM.2021.3061394\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9361255\",\"GPU;A100;NVLink;Deep Learning;Tensor Core;CUDA;C++20\",\"Graphics processing units;Tensors;Bandwidth;Throughput;Parallel processing;Benchmark testing;Artificial intelligence\",\"cache storage;data analysis;DRAM chips;graphics processing units;multiprocessing systems;parallel architectures;parallel processing;tensors\",\"third-generation NVIDIA NVLink;Third-Generation Tensor Core;innovative features;NVIDIA's latest flagship GPU;NVIDIA A100 Tensor Core GPU\",\"\",\"4\",\"\",\"5\",\"IEEE\",\"23 Feb 2021\",\"\",\"\",\"IEEE\",\"IEEE Magazines\"\n\"Automatic Parallelization of GPU Applications Using OpenCL\",\"L. D. Solano-Quinde; B. M. Bode; A. K. Somani\",\"Dept. of Electr., Univ. of Cuenca, Cuenca, Ecuador; Nat. Center for Supercomput. Applic., Univ. of Illinois at Urbana-Champaign, Urbana, IL, USA; Dept. of Electr. & Comput. Eng., Iowa State Univ., Ames, IA, USA\",\"2015 Asia-Pacific Conference on Computer Aided System Engineering\",\"5 Oct 2015\",\"2015\",\"\",\"\",\"276\",\"283\",\"Graphics Processing Units (GPUs) have been successfully used to accelerate scientific applications due to their computation power and the availability of programming languages that make more approachable writing scientific applications for GPUs. However, since the programming model of GPUs requires offloading all the data to the GPU memory, the memory footprint of the application is limited to the size of the GPU memory. Multi-GPU systems can make memory limited problems tractable by parallelizing the computation and data among the available GPUs. Parallelizing applications written for running on single-GPU systems can be done (i) at runtime through an environment that captures the memory operations and kernel calls and distributes among the available GPUs, and (ii) at compile time through a pre-compiler that transforms the application for decomposing the data and computation among the available GPUs. In this paper we propose a framework and implement a tool that transforms an OpenCL application written to run on single-GPU systems into one that runs on multi-GPU systems. Based on data dependencies and data usage analysis, the application is transformed to decompose data and computation among the available GPUs. To reduce the data transfer overhead, computation-communication overlapping techniques are utilized. We tested our tool using two applications with different data transfer requirements, for the application with no data transfer requirements, a linear speedup is achieved, while for the application with data transfers, the computation-communication overlapping reduces the communication overhead by 40%.\",\"\",\"978-1-4799-7588-4\",\"10.1109/APCASE.2015.56\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7287032\",\"GPU;OpenCL;Program Transformation\",\"Kernel;Arrays;Graphics processing units;Data transfer;Algorithms;XML;Memory management\",\"graphics processing units;parallel processing\",\"automatic parallelization;GPU applications;OpenCL;graphics processing units;scientific applications;computation power;programming languages;programming model;data offloading;GPU memory;memory footprint;multiGPU systems;parallelizing applications;single-GPU systems;memory operations;kernel calls;precompiler;data decomposition;data dependencies;data usage analysis;data transfer overhead;computation-communication overlapping techniques;data transfer requirements;linear speedup;communication overhead\",\"\",\"1\",\"\",\"10\",\"\",\"5 Oct 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"An OpenMP-CUDA Implementation of Multilevel Fast Multipole Algorithm for Electromagnetic Simulation on Multi-GPU Computing Systems\",\"J. Guan; S. Yan; J. Jin\",\"Center for Computational Electromagnetics, Department of Electrical and Computer Engineering, University of Illinois at Urbana-Champaign, Urbana, IL, USA; Center for Computational Electromagnetics, Department of Electrical and Computer Engineering, University of Illinois at Urbana-Champaign, Urbana, IL, USA; Center for Computational Electromagnetics, Department of Electrical and Computer Engineering, University of Illinois at Urbana-Champaign, Urbana, IL, USA\",\"IEEE Transactions on Antennas and Propagation\",\"2 Jul 2013\",\"2013\",\"61\",\"7\",\"3607\",\"3616\",\"A multi-GPU implementation of the multilevel fast multipole algorithm (MLFMA) based on the hybrid OpenMPCUDA parallel programming model (OpenMP-CUDA-MLFMA) is presented for computing electromagnetic scattering of a three-dimensional conducting object. The proposed hierarchical parallelization strategy ensures a high computational throughput for the GPU calculation. The resulting OpenMP-based multi-GPU implementation is capable of solving real-life problems with over one million unknowns with a remarkable speed-up. The radar cross sections of a few benchmark objects are calculated to demonstrate the accuracy of the solution. The results are compared with those from the CPU-based MLFMA and measurements. The capability and efficiency of the presented method are analyzed through the examples of a sphere, an aerocraft, and a missile-like object. Compared with the 8-threaded CPU-based MLFMA, the OpenMP-CUDA-MLFMA method can achieve from 5 to 20 total speed-up ratios.\",\"1558-2221\",\"\",\"10.1109/TAP.2013.2258882\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6504730\",\"CUDA;electromagnetic scattering;hybrid parallel programming model;multi-GPU;multilevel fast multipole algorithm;OpenMP;radar cross section\",\"Graphics processing units;Instruction sets;Method of moments;Computer architecture;Antenna radiation patterns;Computational modeling\",\"computational electromagnetics;electromagnetic wave scattering;graphics processing units;parallel architectures\",\"multilevel fast multipole algorithm;electromagnetic simulation;multi-GPU computing systems;OpenMP-CUDA parallel programming model;electromagnetic scattering;three-dimensional conducting object;radar cross sections;aerocraft;missile-like object\",\"\",\"49\",\"\",\"27\",\"\",\"18 Apr 2013\",\"\",\"\",\"IEEE\",\"IEEE Journals\"\n\"Enhancing Blowfish file encryption algorithm through parallel computing on GPU\",\"T. Mahajan; S. Masih\",\"Devi Ahilya University, Indore, India; Devi Ahilya University, Indore, India\",\"2015 International Conference on Computer, Communication and Control (IC4)\",\"11 Jan 2016\",\"2015\",\"\",\"\",\"1\",\"4\",\"Parallel computing can provide fast execution of the program as compared to sequential computing. Graphical Processing Unit can be used for parallel computing as it gives the advantage of multiple cores. Purpose of parallel implementation of Blowfish cryptography algorithm is to improve the speed up of encryption and decryption so that large files also can be communicated on the network in secure and efficient way. This paper demonstrates the way of implementing Blowfish cryptography algorithm on GPU for improving performance. This implementation uses GPGPU and CUDA. CUDA is used as a programming model for implementing on the GPU. The experiment shows multifold difference in performance of CPU and GPU in encryption-decryption of large files.\",\"\",\"978-1-4799-8164-9\",\"10.1109/IC4.2015.7375604\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7375604\",\"GPU-Graphical Processing Unit;CPU-Central Processing Unit;CUDA-Computer Unified Device Architecture;GPGPU-General Purpose computation on Graphical Processing Unit\",\"Graphics processing units;Encryption;Programming;Algorithm design and analysis;Conferences\",\"cryptography;graphics processing units;parallel architectures;parallel programming\",\"Blowfish file encryption algorithm;parallel computing;program execution;sequential computing;graphical processing unit;parallel implementation;Blowfish cryptography algorithm;GPGPU;CUDA;programming model;large file encryption-decryption;computer unified device architecture;general purpose computation on graphical processing unit\",\"\",\"2\",\"\",\"10\",\"\",\"11 Jan 2016\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"HPGA: A High-Performance Graph Analytics Framework on the GPU\",\"H. Yang; H. Su; M. Wen; C. Zhang\",\"Department of Computer, National University of Defense Technology, Changsha, 410000, China; Department of Computer, National University of Defense Technology, Changsha, 410000, China; Department of Computer, National University of Defense Technology, Changsha, 410000, China; Department of Computer, National University of Defense Technology, Changsha, 410000, China\",\"2018 International Conference on Information Systems and Computer Aided Education (ICISCAE)\",\"14 Mar 2019\",\"2018\",\"\",\"\",\"488\",\"492\",\"In recent years, the rapidly growing use of graphs has sparked parallel graph analytics frameworks for leveraging the massive hardware resources, specifically graphics processing units (GPUs). However, the issues of the unpredictable control flows, memory divergence, and the complexity of programming have restricted high-level GPU graph libraries. In this work, we present HPGA, a high performance parallel graph analytics framework targeting the GPU. HPGA implements an abstraction which maps vertex programs to generalized sparse matrix operations on GPUs for delivering high performance. HPGA incorporates high-performance GPU computing primitives and optimization strategies with a high-level programming model. We evaluate the performance of HPGA for three graph primitives (BFS, SSSP, PageRank) with large-scale datasets. The experimental results show that HPGA matches or even exceeds the performance of MapGraph and nvGRAPH, two state-of-the-art GPU graph libraries.\",\"\",\"978-1-5386-5738-6\",\"10.1109/ICISCAE.2018.8666877\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8666877\",\"Graph Analytics;High-performance Computing;GPU\",\"Graphics processing units;Sparse matrices;Programming;Computational modeling;Arrays;Optimization\",\"graph theory;graphics processing units;sparse matrices\",\"HPGA;high-performance graph analytics framework;parallel graph analytics frameworks;massive hardware resources;high-level GPU graph libraries;high performance;generalized sparse matrix operations;high-performance GPU;high-level programming model;GPU graph libraries;vertex programs\",\"\",\"\",\"\",\"20\",\"\",\"14 Mar 2019\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Compiling and Optimizing Java 8 Programs for GPU Execution\",\"K. Ishizaki; A. Hayashi; G. Koblents; V. Sarkar\",\"IBM Res., Tokyo, Japan; NA; IBM Canada, Canada; NA\",\"2015 International Conference on Parallel Architecture and Compilation (PACT)\",\"10 Mar 2016\",\"2015\",\"\",\"\",\"419\",\"431\",\"GPUs can enable significant performance improvements for certain classes of data parallel applications and are widely used in recent computer systems. However, GPU execution currently requires explicit low-level operations such as 1) managing memory allocations and transfers between the host system and the GPU, 2) writing GPU kernels in a low-level programming model such as CUDA or OpenCL, and 3) optimizing the kernels by utilizing appropriate memory types on the GPU. Because of this complexity, in many cases, only expert programmers can exploit the computational capabilities of GPUs through the CUDA/OpenCL languages. This is unfortunate since a large number of programmers use high-level languages, such as Java, due to their advantages of productivity, safety, and platform portability, but would still like to exploit the performance benefits of GPUs. Thus, one challenging problem is how to utilize GPUs while allowing programmers to continue to benefit from the productivity advantages of languages like Java. This paper presents a just-in-time (JIT) compiler that can generate and optimize GPU code from a pure Java program written using lambda expressions with the new parallel streams APIs in Java 8. These APIs allow Java programmers to express data parallelism at a higher level than threads and tasks. Our approach translates lambda expressions with parallel streams APIs in Java 8 into GPU code and automatically generates runtime calls that handle the low-level operations mentioned above. Additionally, our optimization techniques 1) allocate and align the starting address of the Java array body in the GPUs with the memory transaction boundary to increase memory bandwidth, 2) utilize read-only cache for array accesses to increase memory efficiency in GPUs, and 3) eliminate redundant data transfer between the host and the GPU. The compiler also performs loop versioning for eliminating redundant exception checks and for supporting virtual method invocations within GPU kernels. These features and optimizations are supported and automatically performed by a JIT compiler that is built on top of a production version of the IBM Java 8 runtime environment. Our experimental results on an NVIDIA Tesla GPU show significant performance improvements over sequential execution (127.9 × geometric mean) and parallel execution (3.3 × geometric mean) for eight Java 8 benchmark programs running on a 160-thread POWER8 machine. This paper also includes an in-depth analysis of GPU execution to show the impact of our optimization techniques by selectively disabling each optimization. Our experimental results show a geometric-mean speed-up of 1.15 × in the GPU kernel over state-of-the-art approaches. Overall, our JIT compiler can improve the performance of Java 8 programs by automatically leveraging the computational capability of GPUs.\",\"1089-795X\",\"978-1-4673-9524-3\",\"10.1109/PACT.2015.46\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7429325\",\"JIT compiler;GPU;Java 8;Parallel streams\",\"Graphics processing units;Java;Optimization;Kernel;Arrays;Semantics\",\"application program interfaces;cache storage;configuration management;graphics processing units;Java;parallel processing;program compilers\",\"Java 8 programs;GPU execution;data parallel applications;CUDA/OpenCL languages;Java language;just-in-time compiler;JIT compiler;GPU code optimization;lambda expressions;parallel streams API;data parallelism;memory transaction boundary;memory bandwidth;read-only cache;memory efficiency;loop versioning;virtual method invocations;GPU kernels;IBM Java 8 runtime environment;NVIDIA Tesla GPU;thread POWER8 machine;graphics processing unit\",\"\",\"24\",\"3\",\"37\",\"\",\"10 Mar 2016\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"OO-VR: NUMA Friendly Object-Oriented VR Rendering Framework For Future NUMA-Based Multi-GPU Systems\",\"C. Xie; F. Xin; M. Chen; S. L. Song\",\"Pacific Northwest National Lab (PNNL), University of Houston; ECMOS Lab, University of Houston,ECE Department; School of Computer Science and Software Engineering, East China Normal University; Pacific Northwest National Lab (PNNL), University of Houston\",\"2019 ACM/IEEE 46th Annual International Symposium on Computer Architecture (ISCA)\",\"6 Feb 2020\",\"2019\",\"\",\"\",\"53\",\"65\",\"With the strong computation capability, NUMA-based multi-GPU system is a promising candidate to provide sustainable and scalable performance for Virtual Reality (VR) applications and deliver the excellent user experience. However, the entire multi-GPU system is viewed as a single GPU under the single programming model which greatly ignores the data locality among VR rendering tasks during the workload distribution, leading to tremendous remote memory accesses among GPU models (GPMs). The limited inter- GPM link bandwidth (e.g., 64GB/s for NVlink) becomes the major obstacle when executing VR applications in the multi-GPU system. By conducting comprehensive characterizations on different kinds of parallel rendering frameworks, we observe that distributing the rendering object along with its required data per GPM can reduce the inter-GPM memory accesses. However, this object-level rendering still faces two major challenges in NUMA-based multi- GPU system: (1) the large data locality between the left and right views of the same object and the data sharing among different objects and (2) the unbalanced workloads induced by the software- level distribution and composition mechanisms. To tackle these challenges, we propose object-oriented VR rendering framework (OO-VR) that conducts the software and hardware co-optimization to provide a NUMA friendly solution for VR multi-view rendering in NUMA-based multi-GPU systems. We first propose an object-oriented VR programming model to exploit the data sharing between two views of the same object and group objects into batches based on their texture sharing levels. Then, we design an object aware runtime batch distribution engine and distributed hardware composition unit to achieve the balanced workloads among GPMs and further improve the performance of VR rendering. Finally, evaluations on our VR featured simulator show that OO-VR provides 1.58x overall performance improvement and 76% inter-GPM memory traffic reduction over the state-of- the-art multi-GPU systems. In addition, OO-VR provides NUMA friendly performance scalability for the future larger multi-GPU scenarios with ever increasing asymmetric bandwidth between local and remote memory.\",\"2575-713X\",\"978-1-4503-6669-4\",\"\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8980302\",\"\",\"\",\"graphics processing units;multiprocessing systems;object-oriented programming;parallel processing;rendering (computer graphics);virtual reality\",\"VR multiview rendering;NUMA-based multiGPU system;object-oriented VR programming model;data sharing;object aware runtime batch distribution engine;NUMA friendly performance scalability;NUMA friendly object-oriented VR rendering framework;virtual reality applications;single GPU;single programming model;data locality;VR rendering tasks;GPU models;VR applications;parallel rendering frameworks;inter-GPM memory accesses;object-level rendering;composition mechanisms;software-level distribution;inter-GPM link bandwidth;inter-GPM memory traffic reduction;OO-VR framework\",\"\",\"\",\"\",\"44\",\"\",\"6 Feb 2020\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Efficient implementation of apriori algorithm on HDFS using GPU\",\"M. Tiwary; A. K. Sahoo; R. Misra\",\"Department of Information Technology, C.V. Raman College of Engineering, Bhubaneswar, India; Department of Information Technology, C.V. Raman College of Engineering, Bhubaneswar, India; Department of Information Technology, C.V. Raman College of Engineering, Bhubaneswar, India\",\"2014 International Conference on High Performance Computing and Applications (ICHPCA)\",\"19 Feb 2015\",\"2014\",\"\",\"\",\"1\",\"7\",\"A very efficient distributed processing framework is provided by Hadoop. For processing big data, Hadoop uses map-reduce programming model. The proposed technique uses parallel apriori mapreduce algorithm using high performance GPU. The computationally intensive operations of mapping phase are offloaded to GPU. Apriori is a very basic data mining algorithm which is used to determine the frequent item sets in the transactional database. In Hadoop, big transactional database are stored in structured form. When the size of transactional database is big, very fast apriori technique is required to solve the problem. Past researches show a clear view of solving data mining operations in heterogeneous environment which increase the performance with a very high rate than older serial execution techniques. This paper introduces integration of GPU in mapreduce programming model to solve the apriori data mining technique in a very time efficient manner. For our experimental implementation, we use NVIDIA's GPU and for the integration process, we use JCUDA and JNI.\",\"\",\"978-1-4799-5958-7\",\"10.1109/ICHPCA.2014.7045323\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7045323\",\"Hadoop;Map-reduce;CUDA;GPU;Apriori\",\"Graphics processing units;Acceleration;Computer architecture;Databases;Integrated circuits;Kernel\",\"Big Data;data integration;data mining;graphics processing units;parallel architectures;parallel programming;transaction processing\",\"distributed processing framework;Hadoop;big data processing;Mapreduce programming model;parallel apriori Mapreduce algorithm;high performance GPU;mapping phase;data mining algorithm;big transactional database;data mining operations;heterogeneous environment;apriori data mining technique;NVIDIA's GPU;JCUDA;JNI\",\"\",\"7\",\"\",\"10\",\"\",\"19 Feb 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Accelerating FDTD algorithm using GPU computing\",\"Z. Bo; X. Zheng-hui; R. Wu; L. Wei-ming; S. Xin-qing\",\"School of Information and Electronics, Beijing Institute of Technology, Beijing 100081, China; School of Information and Electronics, Beijing Institute of Technology, Beijing 100081, China; School of Information and Electronics, Beijing Institute of Technology, Beijing 100081, China; School of Information and Electronics, Beijing Institute of Technology, Beijing 100081, China; School of Information and Electronics, Beijing Institute of Technology, Beijing 100081, China\",\"2011 IEEE International Conference on Microwave Technology & Computational Electromagnetics\",\"23 Jun 2011\",\"2011\",\"\",\"\",\"410\",\"413\",\"Hardware acceleration of Finite-Difference Time-Domain (FDTD) algorithm has always been an important part of FDTD research. In this essay, we discussed the advantage and feasibility of accelerate FDTD algorithm using Graphics Processing Unit (GPU). With the implement of lattice-threads mapping and other techniques, we proposed a GPU FDTD programming model that is both efficient and accurate. Then we simulated two projects using proposed model, the result shows good agreement with CPU computing while simulation speedup is 20 at minimum, thus proves the efficiency and great potential of GPU accelerating in FDTD research.\",\"\",\"978-1-4244-8559-8\",\"10.1109/ICMTCE.2011.5915546\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5915546\",\"FDTD;GPU;Hardware Accelerating\",\"Graphics processing unit;Finite difference methods;Time domain analysis;Acceleration;Instruction sets;Lattices;Computer architecture\",\"coprocessors;finite difference time-domain analysis;mathematics computing\",\"GPU computing;hardware acceleration;finite-difference time-domain algorithm;lattice-threads mapping;FDTD research;FDTD algorithm\",\"\",\"9\",\"\",\"5\",\"\",\"23 Jun 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"GPU based parallel matrix exponential algorithm for large scale power system electromagnetic transient simulation\",\"J. Zhao; J. Liu; P. Li; X. Fu; G. Song; C. Wang\",\"Key Laboratory of Smart Grid of Ministry of Education, Tianjin University, Tianjin, China; Key Laboratory of Smart Grid of Ministry of Education, Tianjin University, Tianjin, China; Key Laboratory of Smart Grid of Ministry of Education, Tianjin University, Tianjin, China; Key Laboratory of Smart Grid of Ministry of Education, Tianjin University, Tianjin, China; Key Laboratory of Smart Grid of Ministry of Education, Tianjin University, Tianjin, China; Key Laboratory of Smart Grid of Ministry of Education, Tianjin University, Tianjin, China\",\"2016 IEEE Innovative Smart Grid Technologies - Asia (ISGT-Asia)\",\"26 Dec 2016\",\"2016\",\"\",\"\",\"110\",\"114\",\"In order to meet the demand of fast electromagnetic transient simulation for large-scale interconnected power systems, a new method of GPU based parallel matrix exponential algorithm for power system electromagnetic transient simulation is presented in this paper. Firstly, the hardware structure and programming model of GPU are introduced. Then the high data parallelism based on matrix exponential integration algorithm is proposed. Then, a simulation test is carried out for a wind farm system including 17 WTGs. The accuracy and efficiency of the proposed method are verified. The results show that the speed of parallel computing based on GPU is about 2 times faster than that of CPU and Matlab/SimPowerSystems.\",\"2378-8542\",\"978-1-5090-4303-3\",\"10.1109/ISGT-Asia.2016.7796370\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7796370\",\"matrix exponential;electromagnetic transient simulation;GPU;parallel computation\",\"Graphics processing units;Computational modeling;Parallel processing;Mathematical model;Algorithm design and analysis;Sparse matrices;Power systems\",\"graphics processing units;power engineering computing;power system interconnection;power system simulation;wind power plants\",\"GPU-based parallel matrix exponential integration algorithm;large-scale interconnected power system electromagnetic transient simulation;GPU hardware structure;GPU programming model;data parallelism;wind farm system;WTG;parallel computing;Matlab-SimPower system\",\"\",\"3\",\"\",\"14\",\"\",\"26 Dec 2016\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"GPU Peer-to-Peer Techniques Applied to a Cluster Interconnect\",\"R. Ammendola; M. Bernaschi; A. Biagioni; M. Bisson; M. Fatica; O. Frezza; F. Lo Cicero; A. Lonardo; E. Mastrostefano; P. S. Paolucci; D. Rossetti; F. Simula; L. Tosoratto; P. Vicini\",\"Sezione Roma Tor Vergata, Ist. Naz. di Fis. Nucleare, Rome, Italy; Ist. Applicazioni Calcolo, Consiglio Naz. delle Ric., Rome, Italy; Sezione Roma, Ist. Naz. di Fis. Nucleare, Rome, Italy; Ist. Applicazioni Calcolo, Consiglio Naz. delle Ric., Rome, Italy; NVIDIA Corp., CA, USA; Sezione Roma, Ist. Naz. di Fis. Nucleare, Rome, Italy; Sezione Roma, Ist. Naz. di Fis. Nucleare, Rome, Italy; Sezione Roma, Ist. Naz. di Fis. Nucleare, Rome, Italy; Dept. of Comput. Sci., Sapienza Univ., Rome, Italy; Sezione Roma, Ist. Naz. di Fis. Nucleare, Rome, Italy; Sezione Roma, Ist. Naz. di Fis. Nucleare, Rome, Italy; Sezione Roma, Ist. Naz. di Fis. Nucleare, Rome, Italy; Sezione Roma, Ist. Naz. di Fis. Nucleare, Rome, Italy; Sezione Roma, Ist. Naz. di Fis. Nucleare, Rome, Italy\",\"2013 IEEE International Symposium on Parallel & Distributed Processing, Workshops and Phd Forum\",\"31 Oct 2013\",\"2013\",\"\",\"\",\"806\",\"815\",\"Modern GPUs support special protocols to exchange data directly across the PCI Express bus. While these protocols could be used to reduce GPU data transmission times, basically by avoiding staging to host memory, they require specific hardware features which are not available on current generation network adapters. In this paper we describe the architectural modifications required to implement peer-to-peer access to NVIDIA Fermi- and Kepler-class GPUs on an FPGA-based cluster interconnect. Besides, the current software implementation, which integrates this feature by minimally extending the RDMA programming model, is discussed, as well as some issues raised while employing it in a higher level API like MPI. Finally, the current limits of the technique are studied by analyzing the performance improvements on low-level benchmarks and on two GPU-accelerated applications, showing when and how they seem to benefit from the GPU peer-to-peer method.\",\"\",\"978-0-7695-4979-8\",\"10.1109/IPDPSW.2013.128\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6650959\",\"peer-to-peer;GPU;interconnection network;parallel computing\",\"Graphics processing units;Peer-to-peer computing;Bandwidth;Protocols;Hardware;Benchmark testing;Switches\",\"field programmable gate arrays;graphics processing units;peer-to-peer computing;peripheral interfaces\",\"RDMA programming model;FPGA based cluster interconnect;NVIDIA Fermi- and Kepler class GPU;peer-to-peer access;architectural modifications;hardware features;host memory;GPU data transmission times;PCI express bus;exchange data;GPUs support;GPU peer-to-peer techniques\",\"\",\"24\",\"\",\"17\",\"\",\"31 Oct 2013\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Performance Portability of Molecular Docking Miniapp On Leadership Computing Platforms\",\"M. Thavappiragasam; A. Scheinberg; W. Elwasif; O. Hernandez; A. Sedova\",\"Oak Ridge National Laboratory,Oak Ridge,Tennessee; Jubilee Development,Cambridge,Massachusetts; Oak Ridge National Laboratory,Oak Ridge,Tennessee; Oak Ridge National Laboratory,Oak Ridge,Tennessee; Oak Ridge National Laboratory,Oak Ridge,Tennessee\",\"2020 IEEE/ACM International Workshop on Performance, Portability and Productivity in HPC (P3HPC)\",\"1 Jan 2021\",\"2020\",\"\",\"\",\"36\",\"44\",\"Rapidly changing computer architectures, such as those found at high-performance computing (HPC) facilities, present the need for mini-applications (miniapps) that capture essential algorithms used in large applications to test program performance and portability, aiding transitions to new systems. The COVID-19 pandemic has fueled a flurry of activity in computational drug discovery, including the use of supercomputers and GPU acceleration for massive virtual screens for therapeutics. Recent work targeting COVID-19 at the Oak Ridge Leadership Computing Facility (OLCF) used the GPU-accelerated program AutoDock-GPU to screen billions of compounds on the Summit supercomputer. In this paper we present the development of a new miniapp, miniAutoDock-GPU, that can be used to evaluate the performance and portability of GPU-accelerated protein-ligand docking programs on different computer architectures. These tests are especially relevant as facilities transition from petascale systems and prepare for upcoming exascale systems that will use a variety of GPU vendors. The key calculations, namely, the Lamarckian genetic algorithm combined with a local search using a Solis-Wets based random optimization algorithm, are implemented. We developed versions of the miniapp using several different programming models for GPU acceleration, including a version using the CUDA runtime API for NVIDIA GPUs, and the Kokkos middle-ware API which is facilitated by C++ template libraries. A third version, currently in progress, uses the HIP programming model. These efforts will help facilitate the transition to exascale systems for this important emerging HPC application, as well as its use on a wide range of heterogeneous platforms.\",\"\",\"978-1-6654-2287-1\",\"10.1109/P3HPC51967.2020.00009\",\"Battelle; U.S. Department of Energy; Office of Science; \",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9309044\",\"heterogeneous system;high-performance computing;performance portability;hybrid parallel programming model;molecular docking;drug discovery\",\"Graphics processing units;Proteins;Optimization;Programming;Leadership;Hip;COVID-19\",\"application program interfaces;biology computing;coprocessors;drugs;genetic algorithms;graphics processing units;mainframes;molecular biophysics;parallel architectures;parallel machines;parallel processing;proteins\",\"molecular docking miniapp;Leadership Computing platforms;high-performance computing facilities;COVID-19 pandemic;computational drug discovery;supercomputers;GPU acceleration;Oak Ridge Leadership Computing Facility;GPU-accelerated program AutoDock-GPU;Summit supercomputer;miniAutoDock-GPU;GPU-accelerated protein-ligand docking programs;computer architectures;petascale systems;exascale systems;GPU vendors;Lamarckian genetic algorithm;random optimization algorithm;HIP programming model;HPC application;NVIDIA GPU;Kokkos middleware API\",\"\",\"1\",\"\",\"14\",\"\",\"1 Jan 2021\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"A Formal Instruction-level GPU Model for Scalable Verification\",\"Y. Xing; B. Huang; A. Gupta; S. Malik\",Princeton University; Princeton University; Princeton University; Princeton University,\"2018 IEEE/ACM International Conference on Computer-Aided Design (ICCAD)\",\"3 Jan 2019\",\"2018\",\"\",\"\",\"1\",\"8\",\"GPUs have been widely used to accelerate big-data inference applications and scientific computing through their parallelized hardware resources and programming model. Their extreme parallelism increases the possibility of bugs such as data races and un-coalesced memory accesses, and thus verifying program correctness is critical. State-of-the-art GPU program verification efforts mainly focus on analyzing application-level programs, e.g., in C, and suffer from the following limitations: (1) high false-positive rate due to coarse-grained abstraction of synchronization primitives, (2) high complexity of reasoning about pointer arithmetic, and (3) keeping up with an evolving API for developing application-level programs. In this paper, we address these limitations by modeling GPUs and reasoning about programs at the instruction level. We formally model the Nvidia GPU at the parallel execution thread (PTX) level using the recently proposed Instruction-Level Abstraction (ILA) model for accelerators. PTX is analogous to the Instruction-Set Architecture (ISA) of a general-purpose processor. Our formal ILA model of the GPU includes non-synchronization instructions as well as all synchronization primitives, enabling us to verify multithreaded programs. We demonstrate the applicability of our ILA model in scalable GPU program verification of data-race checking. The evaluation shows that our checker outperforms state-of-the-art GPU data race checkers with fewer false-positives and improved scalability.\",\"1558-2434\",\"978-1-4503-5950-4\",\"10.1145/3240765.3240771\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8587727\",\"\",\"Graphics processing units;Instruction sets;Synchronization;Computational modeling;Registers;Programming;Hardware\",\"application program interfaces;graphics processing units;instruction sets;multiprocessing systems;multi-threading;program diagnostics;program verification;reasoning about programs\",\"formal Instruction-level GPU model;scalable verification;big-data inference applications;parallelized hardware resources;programming model;data races;program correctness;application-level programs;coarse-grained abstraction;synchronization primitives;Nvidia GPU;parallel execution thread level;formal ILA model;nonsynchronization instructions;multithreaded programs;scalable GPU program verification;data-race checking;instruction-set architecture;GPU data race checkers;instruction-level abstraction model;GPU program verification efforts\",\"\",\"\",\"\",\"20\",\"\",\"3 Jan 2019\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Unified Execution Mode in a GPU-Style Softcore\",\"P. Thontirawong; P. Chongstitvatana\",\"Dept. of Comput. Eng., Chulalongkorn Univ., Bangkok, Thailand; Dept. of Comput. Eng., Chulalongkorn Univ., Bangkok, Thailand\",\"2013 International Conference on Information Science and Applications (ICISA)\",\"15 Aug 2013\",\"2013\",\"\",\"\",\"1\",\"4\",\"A GPU-style processor has large amount of processing power on a given die compared to a general purpose processor. However, a Graphic Processing Unit must be executed in lock-step where a group of cores execute the same instruction. This constraint puts a real limitation on programming of a GPU. This work proposed a design of a processor that unifies the execution of Graphic Processing Units and a general purpose processor. The discussion of programming model of vectorised instructions and the extension to allow multi-cores to run independently is presented. The proposed design required only 3% additional resource compared to the original design. This design is suitable for embedded applications.\",\"2162-9048\",\"978-1-4799-0604-8\",\"10.1109/ICISA.2013.6579365\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6579365\",\"\",\"Graphics processing units;Multicore processing;Registers;Logic gates;Programming;Benchmark testing;Process control\",\"embedded systems;graphics processing units;multiprocessing systems;parallel processing;resource allocation\",\"GPU-style softcore;GPU-style processor;processing power;graphic processing unit;lock-step;general purpose processor;programming model;vectorised instructions;multicores;unified execution mode;embedded applications\",\"\",\"\",\"\",\"7\",\"\",\"15 Aug 2013\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Parallel Computing Accelerated Image Inpainting using GPU CUDA, Theano, and Tensorflow\",\"H. T. R. Adie; I. A. Pradana; Pranowo\",\"Department of Informatic Engineering, Universitas Atma Jaya Yogyakarta, Yogyakarta, Indonesia; Department of Informatic Engineering, Universitas Atma Jaya Yogyakarta, Yogyakarta, Indonesia; Department of Informatic Engineering, Universitas Atma Jaya Yogyakarta, Yogyakarta, Indonesia\",\"2018 10th International Conference on Information Technology and Electrical Engineering (ICITEE)\",\"15 Nov 2018\",\"2018\",\"\",\"\",\"621\",\"625\",\"Image inpainting refers to image restoration process that reconstruct damaged image to obtain it lost information based on existing information. PDE-based approach is commonly used for image interpolation especially inpainting. Since PDE process express convolution and continuous change, the approach may take a lot of computational resources and will run slow on standard computer CPU. To overcome that, GPU parallel computing method for PDE-based image inpainting are proposed. These days, some handy platform or frameworks to utilize GPU are already exist like CUDA, Theano and Tensorflow. CUDA is well-known as parallel computing platform and programming model to work with programming language such as C/C++. In other hand Theano and Tensorflow is a bit different thing, both of them is a machine learning framework based on Python that also able to utilize GPU. Although Theano and Tensorflow are specialized for machine learning and deep learning, the system is general enough to applied for computational process like image inpainting. The results of this work show benchmark performance of PDE image inpainting running on CPU using C++, Theano, and Tensorflow and on GPU with CUDA, Theano, and Tensorflow. The benchmark shows that parallel computing accelerated PDE image inpainting can run faster on GPU either with CUDA, Theano, or Tensorflow compared to PDE image inpainting running on CPU.\",\"\",\"978-1-5386-4739-4\",\"10.1109/ICITEED.2018.8534858\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8534858\",\"Image Inpainting;PDE;Parallel Computing;GPU;CUDA;Theano;Tensorflow\",\"Graphics processing units;Parallel processing;Mathematical model;Handheld computers;Convolution;Heating systems;Acceleration\",\"computer graphics;graphics processing units;image restoration;interpolation;learning (artificial intelligence);parallel architectures;partial differential equations;Python\",\"parallel computing accelerated image inpainting;GPU CUDA;Theano;Tensorflow;image restoration process;image interpolation;GPU parallel computing method;PDE-based image inpainting;parallel computing platform;programming model;computer CPU;handy platform;machine learning framework;Python;deep learning;C++\",\"\",\"3\",\"\",\"13\",\"\",\"15 Nov 2018\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Efficient data classification by GPU-accelerated linear mean squared slack minimization\",\"G. A. Papakostas; K. I. Diamantaras\",\"EMaTTech, Dept. Computer and Informatics Engineering, Kavala 65404, Greece; TEI of Thessaloniki, Dept. Information Technology, Sindos 57400, Greece\",\"2014 IEEE International Workshop on Machine Learning for Signal Processing (MLSP)\",\"20 Nov 2014\",\"2014\",\"\",\"\",\"1\",\"6\",\"An efficient parallel implementation of the recently proposed Slackmin classification algorithm that minimizes the mean squared slack variables energy is proposed in this paper. The efficacy of the resulted scheme is demonstrated both in terms of accuracy and computation speed. The parallelization of the Slackmin algorithm is achieved in the framework of GPU programming. Based on this framework the “cuLSlackmin” algorithm for linear problems was implemented, by using the CUDA C/C++ programming model and proposed herein. The introduced parallel algorithm is making use of the advantages imposed by the GPU architecture and achieves high classification rates in a short computation time. A set of experiments with some UCI datasets have shown the high performance of the cuLSlackmin algorithm compared to the Slackmin, LIBSVM and GPULIBSVM algorithms. The high performance of cuLSlackmin algorithm makes it appropriate for big data classification problems.\",\"2378-928X\",\"978-1-4799-3694-6\",\"10.1109/MLSP.2014.6958885\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6958885\",\"big data classification;machine learning;GPU programming;CUDA;slack minimization\",\"Graphics processing units;Classification algorithms;Big data;Accuracy;Training;Machine learning algorithms;Instruction sets\",\"Big Data;C++ language;graphics processing units;parallel algorithms;parallel architectures;pattern classification\",\"GPU-accelerated linear mean squared slack minimization;parallel implementation;Slackmin classification algorithm;mean squared slack variables energy minimization;computation speed;Slackmin algorithm parallelization;GPU programming;cuLSlackmin algorithm;linear problem;CUDA C/C++ programming model;parallel algorithm;GPU architecture;classification rate;computation time;UCI dataset;GPULIBSVM algorithm;big data classification problem\",\"\",\"1\",\"\",\"22\",\"\",\"20 Nov 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"GGAKE: GPU Based Genome Assembly Using K-Mer Extension\",\"A. Garg; A. Jain; K. Paul\",\"Dept. of Comput. Sci. & Eng., IIT Delhi, New Delhi, India; Dept. of Comput. Sci. & Eng., IIT Delhi, New Delhi, India; Dept. of Comput. Sci. & Eng., IIT Delhi, New Delhi, India\",\"2013 IEEE 10th International Conference on High Performance Computing and Communications & 2013 IEEE International Conference on Embedded and Ubiquitous Computing\",\"12 Jun 2014\",\"2013\",\"\",\"\",\"1105\",\"1112\",\"The genome assembly problem involves constructing the complete genome sequence from the reads generated by the sequencers. The Next Generation Sequencing (NGS) platforms produce a large number of short reads at a very low cost. Many assemblers have been developed to work with NGS reads. The assembly process is computation intensive and also requires a large amount of memory to store the reads. Numerous efforts are being made in recent times to parallelize the assembly process in order to reduce computation time. In this paper we present the design and development of a GPU based genome assembler (GGAKE). Our assembler works using the concept of k-mer extension. Prefix and suffix k-mers are spotted out of every read. Suffix k-mers are matched with prefix k-mers and extensions for every read are noted. Contigs are generated by extending the reads. We have implemented GGAKE on Nvidia's GPU using the CUDA programming model and benchmarked it on five bacterial genomes. Our results prove that at high coverage GGAKE is capable of producing good quality assembly in a small amount of time.\",\"\",\"978-0-7695-5088-6\",\"10.1109/HPCC.and.EUC.2013.156\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6832038\",\"parallel processing;bioinformatics;GPU;genome assembly\",\"Graphics processing units;DNA;Bioinformatics;Assembly;Genomics;Encoding;Sorting\",\"biology computing;cellular biophysics;genomics;graphics processing units;microorganisms;parallel architectures;parallel programming\",\"GGAKE;GPU based genome assembly;genome sequence;next generation sequencing platforms;NGS reads;assembly process parallelization;GPU based genome assembler;k-mer extension;Nvidia's GPU;CUDA programming model;bacterial genomes;contig generation\",\"\",\"3\",\"\",\"21\",\"\",\"12 Jun 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Shared Memory and GPU Parallelization of an Operational Atmospheric Transport and Dispersion Application\",\"F. Yu; P. Strazdins; J. Henrichs; T. Pugh\",The Australian National University; The Australian National University; Bureau of Meteorology; Bureau of Meteorology,\"2019 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW)\",\"29 Jul 2019\",\"2019\",\"\",\"\",\"729\",\"738\",\"The HYSPLIT air concentration model is an operational Lagrangian trajectory and dispersion model that calculates the concentration or the distribution of pollutants by releasing and tracking particles or puffs. It is widely used for tracking and forecasting the release of pollutants such as radioactive material, dust storms and volcanic ash. Due to the massively parallel nature of the particle tracking system, the HYSPLIT model shows potential to be accelerated by multiple CPUs and GPUs. However, porting such a legacy application to a GPU requires non-trivial work to isolate the parallel code regions and correctly adapt the code to a parallel programming model. This paper presents methods to port the current HYSPLIT code to the shared-memory OpenMP and the CUDA programming models. In the OpenMP approach, the original HYSPLIT concentration model is analyzed, profiled and refactored to remove barriers for parallelizing on multi-core CPUs. A linear speed-up with some serial overhead is achieved for the OpenMP version. In the CUDA approach, we utilize the computing power of NVIDIA GTX960 and Tesla P100 GPUs, providing 4-5× faster overall performance than the original. With the help of GPU coarse-grained parallelism, a maximum 12.9× speedup has been measured, compared to the original program running on a CPU. The disturbance of different parallelization approaches to the original code base shows that most of the highly difficult work is in the refactoring, and that CUDA requires extensive, but mostly relatively shallow, changes.\",\"\",\"978-1-7281-3510-6\",\"10.1109/IPDPSW.2019.00121\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8778420\",\"Lagrangian trajectory and dispersion model, HYSPLIT, GPU acceleration, CUDA Fortran, OpenMP, MPI, CUDA coarse grained parallelism, High performance computing\",\"Atmospheric modeling;Graphics processing units;Computational modeling;Dispersion;Mathematical model;Meteorology;Parallel processing\",\"computer graphic equipment;graphics processing units;message passing;parallel algorithms;parallel architectures;parallel processing;parallel programming;shared memory systems\",\"shared memory;GPU parallelization;operational atmospheric transport;dispersion application;HYSPLIT air concentration model;dispersion model;tracking particles;puffs;radioactive material;dust storms;volcanic ash;massively parallel nature;particle tracking system;HYSPLIT model;multiple CPUs;legacy application;nontrivial work;parallel code regions;parallel programming model;current HYSPLIT code;shared-memory OpenMP;CUDA programming models;OpenMP approach;original HYSPLIT concentration model;OpenMP version;CUDA approach;GPU coarse-grained parallelism;original program;multicore CPU;parallelization approaches;Tesla P100 GPU;original code base;NVIDIA GTX960\",\"\",\"\",\"\",\"14\",\"\",\"29 Jul 2019\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Architecting Waferscale Processors - A GPU Case Study\",\"S. Pal; D. Petrisko; M. Tomei; P. Gupta; S. S. Iyer; R. Kumar\",\"Dept. of Electr. & Comput. Eng., Univ. of California, Los Angeles, Los Angeles, CA, USA; Dept. of Electr. & Comput. Eng., Univ. of Illinois at Urbana-Champaign, Urbana, IL, USA; Dept. of Electr. & Comput. Eng., Univ. of Illinois at Urbana-Champaign, Urbana, IL, USA; Dept. of Electr. & Comput. Eng., Univ. of California, Los Angeles, Los Angeles, CA, USA; Dept. of Electr. & Comput. Eng., Univ. of California, Los Angeles, Los Angeles, CA, USA; Dept. of Electr. & Comput. Eng., Univ. of Illinois at Urbana-Champaign, Urbana, IL, USA\",\"2019 IEEE International Symposium on High Performance Computer Architecture (HPCA)\",\"28 Mar 2019\",\"2019\",\"\",\"\",\"250\",\"263\",\"Increasing communication overheads are already threatening computer system scaling. One approach to dramatically reduce communication overheads is waferscale processing. However, waferscale processors [1], [2], [3] have been historically deemed impractical due to yield issues [1], [4] inherent to conventional integration technology. Emerging integration technologies such as Silicon-Interconnection Fabric (Si-IF) [5], [6], [7], where pre-manufactured dies are directly bonded on to a silicon wafer, may enable one to build a waferscale system without the corresponding yield issues. As such, waferscalar architectures need to be revisited. In this paper, we study if it is feasible and useful to build today's architectures at waferscale. Using a waferscale GPU as a case study, we show that while a 300 mm wafer can house about 100 GPU modules (GPM), only a much scaled down GPU architecture with about 40 GPMs can be built when physical concerns are considered. We also study the performance and energy implications of waferscale architectures. We show that waferscale GPUs can provide significant performance and energy efficiency advantages (up to 18.9x speedup and 143x EDP benefit compared against equivalent MCM-GPU based implementation on PCB) without any change in the programming model. We also develop thread scheduling and data placement policies for waferscale GPU architectures. Our policies outperform state-of-art scheduling and data placement policies by up to 2.88x (average 1.4x) and 1.62x (average 1.11x) for 24 GPM and 40 GPM cases respectively. Finally, we build the first Si-IF prototype with interconnected dies. We observe 100% of the inter-die interconnects to be successfully connected in our prototype. Coupled with the high yield reported previously for bonding of dies on Si-IF, this demonstrates the technological readiness for building a waferscale GPU architecture.\",\"2378-203X\",\"978-1-7281-1444-6\",\"10.1109/HPCA.2019.00042\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8675211\",\"Waferscale Processors;GPU;Silicon Interconnect Fabric\",\"Graphics processing units;Silicon;Integrated circuit interconnections;Copper;Substrates;Computer architecture\",\"cache storage;coprocessors;graphics processing units;integrated circuit interconnections;multiprocessing systems;parallel algorithms;parallel processing;silicon\",\"GPU modules;GPM cases;silicon-interconnection fabric;Si-IF;waferscale processing;threatening computer system scaling;communication overheads;GPU case study;waferscale processors;state-of-art scheduling;waferscale GPU architecture;data placement policies;thread scheduling;equivalent MCM-GPU;energy efficiency advantages;waferscale architectures;waferscalar architectures;corresponding yield issues;waferscale system;silicon wafer;pre-manufactured dies;integration technologies;conventional integration technology;Si\",\"\",\"14\",\"\",\"82\",\"\",\"28 Mar 2019\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"BigKernel -- High Performance CPU-GPU Communication Pipelining for Big Data-Style Applications\",\"R. Mokhtari; M. Stumm\",\"Dept. of Electr. & Comput. Eng., Univ. of Toronto, Toronto, ON, Canada; Dept. of Electr. & Comput. Eng., Univ. of Toronto, Toronto, ON, Canada\",\"2014 IEEE 28th International Parallel and Distributed Processing Symposium\",\"14 Aug 2014\",\"2014\",\"\",\"\",\"819\",\"828\",\"GPUs offer an order of magnitude higher compute power and memory bandwidth than CPUs. GPUs therefore might appear to be well suited to accelerate computations that operate on voluminous data sets in independent ways, e.g., for transformations, filtering, aggregation, partitioning or other \"\"Big Data\"\" style processing. Yet experience indicates that it is difficult, and often error-prone, to write GPGPU programs which efficiently process data that does not fit in GPU memory, partly because of the intricacies of GPU hardware architecture and programming models, and partly because of the limited bandwidth available between GPUs and CPUs. In this paper, we propose Big Kernel, a scheme that provides pseudo-virtual memory to GPU applications and is implemented using a 4-stage pipeline with automated prefetching to (i) optimize CPU-GPU communication and (ii) optimize GPU memory accesses. Big Kernel simplifies the programming model by allowing programmers to write kernels using arbitrarily large data structures that can be partitioned into segments where each segment is operated on independently, these kernels are transformed into Big Kernel using straight-forward compiler transformations. Our evaluation on six data-intensive benchmarks shows that Big Kernel achieves an average speedup of 1.7 over state-of-the-art double-buffering techniques and an average speedup of 3.0 over corresponding multi-threaded CPU implementations.\",\"1530-2075\",\"978-1-4799-3800-1\",\"10.1109/IPDPS.2014.89\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6877313\",\"GPU;CPU;communication;optimization;stream processing\",\"Graphics processing units;Kernel;Prefetching;Arrays;Memory management;Pipelines\",\"Big Data;data structures;graphics processing units;pipeline processing;program compilers;storage management\",\"BigKernel scheme;high performance CPU-GPU communication pipelining;Big Data-style processing;memory bandwidth;magnitude higher compute power;voluminous data sets;GPGPU programs;GPU hardware architecture;GPU programming models;pseudovirtual memory;automated prefetching;GPU memory accesses;data structures;straight-forward compiler transformations;double-buffering techniques;multithreaded CPU\",\"\",\"11\",\"2\",\"20\",\"\",\"14 Aug 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Profiling Kernels Behavior to Improve CPU / GPU Interactions\",\"R. Salgado\",\"Pleiad Lab., Univ. of Chile, Santiago, Chile\",\"2015 IEEE/ACM 37th IEEE International Conference on Software Engineering\",\"17 Aug 2015\",\"2015\",\"2\",\"\",\"754\",\"756\",\"Most modern computer and mobile devices have a graphical processing unit (GPU) available for any general purpose computation. GPU supports a programming model that is radically different from traditional sequential programming. As such, programming GPU is known to be hard and error prone, despite the large number of available APIs and dedicated programming languages. In this paper we describe a profiling technique that reports on the interaction between a CPU and GPUs. The resulting execution profile may then reveal anomalies and suboptimal situations, in particular due to an improper memory configuration. Our profiler has been effective at identifying suboptimal memory allocation usage in one image processing application.\",\"1558-1225\",\"978-1-4799-1934-5\",\"10.1109/ICSE.2015.239\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7203060\",\"gpgpu;opencl;memory profiling;profiling\",\"Graphics processing units;Kernel;Programming;Visualization;Central Processing Unit;Computers;Measurement\",\"graphics processing units;storage management\",\"kernel behavior profiling technique;CPU-GPU interactions;mobile devices;graphical processing unit;programming model;improper memory configuration;suboptimal memory allocation usage;image processing application\",\"\",\"\",\"\",\"9\",\"\",\"17 Aug 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Performance improvement of CUDA applications by reducing CPU-GPU data transfer overhead\",\"N. V. Sunitha; K. Raju; N. N. Chiplunkar\",\"Department of CSE, NMAMIT, Nitte; Department of CSE, NMAMIT, Nitte; Department of CSE, NMAMIT, Nitte\",\"2017 International Conference on Inventive Communication and Computational Technologies (ICICCT)\",\"17 Jul 2017\",\"2017\",\"\",\"\",\"211\",\"215\",\"In a CPU-GPU based heterogeneous computing system, the input data to be processed by the kernel resides in the host memory. The host and the device memory address spaces are different. Therefore, the device can not directly access the host memory. In CUDA programming model, the data is moved between the host memory and the device memory. This data transfer is a time consuming task. The communication overhead can be hidden by overlapping the data transfer and the kernel execution. CUDA streams provide a means for overlapping data transfer and the kernel execution. In this paper we explore the effects of overlapping data transfer and the kernel execution on overall execution time of some CUDA applications. The results show that the usage of the different levels of concurrency supported by the streams enhances the performance of the CUDA applications.\",\"\",\"978-1-5090-5297-4\",\"10.1109/ICICCT.2017.7975190\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7975190\",\"Heterogeneous system;CUDA;Kernel;Stream\",\"Graphics processing units;Kernel;Data transfer;Concurrent computing;Engines;Performance evaluation;Central Processing Unit\",\"concurrency (computers);electronic data interchange;graphics processing units;parallel architectures;parallel programming\",\"performance improvement;CUDA applications;CPU-GPU data transfer overhead reduction;CPU-GPU based heterogeneous computing system;host memory;CUDA programming model;device memory;communication overhead;kernel execution;CUDA streams;overlapping data transfer;overall execution time;concurrency level\",\"\",\"4\",\"\",\"12\",\"\",\"17 Jul 2017\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Selective GPU caches to eliminate CPU-GPU HW cache coherence\",\"N. Agarwal; D. Nellans; E. Ebrahimi; T. F. Wenisch; J. Danskin; S. W. Keckler\",University of Michigan; NVIDIA; NVIDIA; University of Michigan; NVIDIA; NVIDIA,\"2016 IEEE International Symposium on High Performance Computer Architecture (HPCA)\",\"4 Apr 2016\",\"2016\",\"\",\"\",\"494\",\"506\",\"Cache coherence is ubiquitous in shared memory multiprocessors because it provides a simple, high performance memory abstraction to programmers. Recent work suggests extending hardware cache coherence between CPUs and GPUs to help support programming models with tightly coordinated sharing between CPU and GPU threads. However, implementing hardware cache coherence is particularly challenging in systems with discrete CPUs and GPUs that may not be produced by a single vendor. Instead, we propose, selective caching, wherein we disallow GPU caching of any memory that would require coherence updates to propagate between the CPU and GPU, thereby decoupling the GPU from vendor-specific CPU coherence protocols. We propose several architectural improvements to offset the performance penalty of selective caching: aggressive request coalescing, CPU-side coherent caching for GPU-uncacheable requests, and a CPU-GPU interconnect optimization to support variable-size transfers. Moreover, current GPU workloads access many read-only memory pages; we exploit this property to allow promiscuous GPU caching of these pages, relying on page-level protection, rather than hardware cache coherence, to ensure correctness. These optimizations bring a selective caching GPU implementation to within 93% of a hardware cache-coherent implementation without the need to integrate CPUs and GPUs under a single hardware coherence protocol.\",\"2378-203X\",\"978-1-4673-9211-2\",\"10.1109/HPCA.2016.7446089\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7446089\",\"\",\"Graphics processing units;Coherence;Hardware;Memory management;Bandwidth;Protocols;System-on-chip\",\"cache storage;graphics processing units;microprocessor chips;protocols;shared memory systems\",\"HW cache coherence;hardware cache coherence;shared memory multiprocessor;programming model;aggressive request coalescing;CPU-side coherent caching;CPU-GPU interconnect optimization;hardware coherence protocol\",\"\",\"38\",\"7\",\"70\",\"\",\"4 Apr 2016\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"The Unicorn Runtime: Efficient Distributed Shared Memory Programming for Hybrid CPU-GPU Clusters\",\"T. Beri; S. Bansal; S. Kumar\",\"Department of Computer Science and Engineering, Indian Institute of Technology, Delhi, India; Department of Computer Science and Engineering, Indian Institute of Technology, Delhi, India; Department of Computer Science and Engineering, Indian Institute of Technology, Delhi, India\",\"IEEE Transactions on Parallel and Distributed Systems\",\"12 Apr 2017\",\"2017\",\"28\",\"5\",\"1518\",\"1534\",\"Programming hybrid CPU-GPU clusters is hard. This paper addresses this difficulty and presents the design and runtime implementation of Unicorn-a parallel programming model for hybrid CPU-GPU clusters. In particular, this paper proves that efficient distributed shared memory style programing is possible and its simplicity can be retained across CPUs and GPUs in a cluster, minus the frustration of dealing with race conditions. Further, this can be done with a unified abstraction, avoiding much of the complication of dealing with hybrid architectures. This is achieved with the help of transactional semantics (on shared global address spaces), deferred bulk data synchronization, workload pipelining and various communication and computation scheduling optimizations. We describe the said abstraction, our computation and communication scheduling system and report its performance on a few benchmarks like Matrix Multiplication, LU Decomposition and 2D FFT. We find that parallelization of coarse-grained applications like matrix multiplication or 2D FFT using our system requires only about 30 lines of C code to set up the runtime. The rest of the application code is regular single CPU/GPU implementation. This indicates the ease of extending parallel code to a distributed environment. The execution is efficient as well. When multiplying two square matrices of size 65, 536 χ 65,536, Unicornachieves a peak performance of 7.88 TFlop/s when run over a cluster of 14 nodes with each node equipped with two Tesla M2070 GPUs and two 6-core Intel Xeon 2.67 GHz CPUs, connected over a 32Gbps Infiniband network. In this paper, we also demonstrate that the Unicorn programming model can be efficiently used to implement high level abstractions like MapReduce. We use such an extension to implement PageRank and report its performance. For a sample web of 500 million web pages, our implementation completes a page rank iteration in about 18 seconds (on average) on a 14-node cluster.\",\"1558-2183\",\"\",\"10.1109/TPDS.2016.2616314\",\"Ministry of Earth Sciences; \",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7588161\",\"Unicorn runtime;distributed system design;scheduling;load balancing;accelerators;bulk synchronous parallelism\",\"Runtime;Programming;Optimization;Processor scheduling;Kernel;Synchronization;Graphics processing units\",\"distributed shared memory systems;fast Fourier transforms;graphics processing units;information retrieval;Internet;mathematics computing;matrix multiplication;parallel programming;pipeline processing;processor scheduling;programming language semantics;transaction processing\",\"Unicorn runtime;distributed shared memory programming;hybrid CPU-GPU clusters;parallel programming model;unified abstraction;transactional semantics;bulk data synchronization;workload pipelining;computation scheduling optimizations;communication scheduling optimizations;matrix multiplication;LU decomposition;2D FFT;coarse-grained applications;C code;application code;parallel code;Tesla M2070 GPU;6-core Intel Xeon CPU;Infiniband network;Unicorn programming model;PageRank implementation;page rank iteration;Web pages\",\"\",\"6\",\"\",\"40\",\"IEEE\",\"11 Oct 2016\",\"\",\"\",\"IEEE\",\"IEEE Journals\"\n\"PACXX: Towards a Unified Programming Model for Programming Accelerators Using C++14\",\"M. Haidl; S. Gorlatch\",\"Univ. of Muenster, Muenster, Germany; Univ. of Muenster, Muenster, Germany\",\"2014 LLVM Compiler Infrastructure in HPC\",\"30 Mar 2015\",\"2014\",\"\",\"\",\"1\",\"11\",\"We present PACXX -- a unified programming model for programming many-core systems that comprise accelerators like Graphics Processing Units (GPUs). One of the main difficulties of the current GPU programming is that two distinct programming models are required: the host code for the CPU is written in C/C++ with the restricted, C-like API for memory management, while the device code for the GPU has to be written using a device-dependent, explicitly parallel programming model, e.g., OpenCL or CUDA. This leads to long, poorly structured and error-prone codes. In PACXX, both host and device programs are written in the same programming language -- the newest C++14 standard, with all modern features including type inference (auto), variadic templates, generic lambda expressions, as well as STL containers and algorithms. We implement PACXX by a custom compiler (based on the Clang front-end and LLVM IR) and a runtime system, that together perform major tasks of memory management and data synchronization automatically and transparently for the programmer. We evaluate our approach by comparing it to CUDA and OpenCL regarding program size and target performance.\",\"\",\"978-1-4799-7023-0\",\"10.1109/LLVM-HPC.2014.9\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7069296\",\"\",\"Kernel;Graphics processing units;Programming;Vectors;Synchronization;Runtime;Standards\",\"application program interfaces;C++ language;graphics processing units;multiprocessing systems;parallel architectures;parallel programming;program compilers;reasoning about programs;storage management;type theory\",\"PACXX;unified programming model;programming accelerator;many-core system;graphics processing units;GPU programming;C/C++;C-like API;memory management;device code;device-dependent programming model;parallel programming model;OpenCL;CUDA;error-prone code;host program;device program;programming language;C++14 standard;type inference;variadic template;generic lambda expression;STL container;custom compiler;Clang front-end;LLVM IR;runtime system;data synchronization\",\"\",\"19\",\"\",\"15\",\"\",\"30 Mar 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"An Efficient Parallelization Strategy for Dynamic Programming on GPU\",\"K. Berger; F. Galea\",\"LIST Embedded Real Time Syst. Lab., CEA, Gif-sur-Yvette, France; LIST Embedded Real Time Syst. Lab., CEA, Gif-sur-Yvette, France\",\"2013 IEEE International Symposium on Parallel & Distributed Processing, Workshops and Phd Forum\",\"31 Oct 2013\",\"2013\",\"\",\"\",\"1797\",\"1806\",\"Optimization methods generally do not fall into the most suitable algorithms for parallelization on a GPU. However, a relatively good efficiency still can be obtained if the method is properly adapted to the GPU programming model, which is the case for dynamic programming. In this article, we propose a parallelization strategy for thread grouping for dynamic programming in CUDA. We show that parametrizing the solver parallelism according to the hardware allows better performance. The strategy provides good acceleration compared to a standard GPU parallel strategy on a dynamic programming-based implementation of the knapsack problem. We show this strategy is helpful in the case of the multi-dimensional knapsack problem, where computing multi-dimensional indices is a costly operation.\",\"\",\"978-0-7695-4979-8\",\"10.1109/IPDPSW.2013.208\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6651080\",\"dynamic programming;parallelism;knapsack problem;GPU computing;combinatorial optimization;CUDA\",\"Graphics processing units;Instruction sets;Vectors;Dynamic programming;Kernel;Parallel processing;Arrays\",\"dynamic programming;graphics processing units;knapsack problems;parallel architectures\",\"multidimensional indices;multidimensional knapsack problem;dynamic programming based implementation;standard GPU parallel strategy;hardware;solver parallelism;CUDA;GPU programming model;optimization methods;parallelization strategy\",\"\",\"9\",\"\",\"34\",\"\",\"31 Oct 2013\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"CUDA parallel programming model\",\"M. Garland\",\"NVIDIA Research, USA\",\"2008 IEEE Hot Chips 20 Symposium (HCS)\",\"4 Jul 2016\",\"2008\",\"\",\"\",\"1\",\"29\",\"Presents a collection of slides covering the following topics: parallel threads; parallel algorithms; heterogeneous systems; CPU; GPU; concurrent threads; shared memory model; vector addition kernel; block synchronization; thread block; per-block shared memory; parallel reduction; serial SAXPY routine; and parallel SAXPY routine.\",\"\",\"978-1-4673-8871-9\",\"10.1109/HOTCHIPS.2008.7476519\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7476519\",\"\",\"Instruction sets;Graphics processing units;Tutorials;Parallel programming;Kernel;Parallel algorithms;Synchronization\",\"concurrency control;graphics processing units;multi-threading;parallel algorithms;parallel architectures;shared memory systems\",\"parallel threads;parallel algorithms;CUDA parallel programming model;heterogeneous systems;CPU;GPU;concurrent threads;shared memory model;vector addition kernel;block synchronization;thread block;per-block shared memory;parallel reduction;serial SAXPY routine;parallel SAXPY routine\",\"\",\"1\",\"\",\"\",\"\",\"4 Jul 2016\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"POSTER - collective dynamic parallelism for directive based GPU programming languages and compilers\",\"G. Ozen; E. Ayguade; J. Labarta\",\"Barcelona Supercomputing Center, Universitat Politecnica de Catalunya, Spain; Barcelona Supercomputing Center, Universitat Politecnica de Catalunya, Spain; Barcelona Supercomputing Center, Universitat Politecnica de Catalunya, Spain\",\"2016 International Conference on Parallel Architecture and Compilation Techniques (PACT)\",\"1 Dec 2016\",\"2016\",\"\",\"\",\"423\",\"424\",\"Early programs for GPU (Graphics Processing Units) acceleration were based on a flat, bulk parallel programming model, in which programs had to perform a sequence of kernel launches from the host CPU. In the latest releases of these devices, dynamic (or nested) parallelism is supported, making possible to launch kernels from threads running on the device, without host intervention. Unfortunately, the overhead of launching kernels from the device is higher compared to launching from the host CPU, making the exploitation of dynamic parallelism unprofitable. This paper proposes and evaluates the basic idea behind a user-directed code transformation technique, named collective dynamic parallelism, that targets the effective exploitation of nested parallelism in modern GPUs. The technique dynamically packs dynamic parallelism kernel invocations and postpones their execution until a bunch of them are available. We show that for sparse matrix vector multiplication, CollectiveDP outperforms well optimized libraries, making GPU useful when matrices are highly irregular.\",\"\",\"978-1-4503-4121-9\",\"10.1145/2967938.2974056\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7756778\",\"\",\"Kernel;Parallel processing;Graphics processing units;Context;Sparse matrices;Parallel programming;Libraries\",\"graphics processing units;matrix multiplication;microprocessor chips;parallel programming;program compilers;programming languages;vectors\",\"programming languages;program compilers;graphics processing units;GPU;parallel programming model;host CPU;user-directed code transformation;collective dynamic parallelism;sparse matrix vector multiplication\",\"\",\"\",\"\",\"3\",\"\",\"1 Dec 2016\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"GPU accelerated three dimensional unstructured geometric multigrid solver\",\"J. Sebastian; N. Sivadasan; R. Banerjee\",\"Dept. of Computer Science and Engineering, Indian Institute of Technology Hyderabad, India; Dept. of Computer Science and Engineering, Indian Institute of Technology Hyderabad, India; Dept. of Mechanical Engineering, Indian Institute of Technology Hyderabad, India\",\"2014 International Conference on High Performance Computing & Simulation (HPCS)\",\"22 Sep 2014\",\"2014\",\"\",\"\",\"9\",\"16\",\"Graphics processor units (GPUs) have started becoming an integral part of high performance computing. We develop a GPU based 3D-unstructured geometric multigrid solver, which is extensively used in Computational Fluid Dynamics (CFD) applications. Parallelization for GPUs is not straightforward because of the irregularity of the mesh. Using combination of graph coloring and greedy maximal independent set computations, we obtain significant performance improvements in the multigrid solver and its parallelization. We use NVIDIAs CUDA programming model for the implementation. In our experiments, we solve heat conduction problems on unstructured 3D meshes. Different schemes for implementing the multigrid algorithm are evaluated. For a mesh of size 1.6 million, our multigrid GPU implementation gives 24 times speed up compared to multigrid serial implementation and 1630 times speed up compared to non-multigrid serial implementation.\",\"\",\"978-1-4799-5313-4\",\"10.1109/HPCSim.2014.6903663\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6903663\",\"GPU Computing;High Performance Computing;Computational Fluid Dynamics;Multigrid Flow Solver\",\"Graphics processing units;Instruction sets;Image color analysis;Iterative methods;Smoothing methods;Computational fluid dynamics;Jacobian matrices\",\"computational fluid dynamics;differential equations;graph colouring;graphics processing units;greedy algorithms;heat conduction;mechanical engineering computing;mesh generation;parallel architectures\",\"GPU accelerated three dimensional unstructured geometric multigrid solver;graphics processor units;high performance computing;GPU based 3D-unstructured geometric multigrid solver;computational fluid dynamics;CFD;mesh irregularity;graph coloring;greedy maximal independent set computations;NVIDIA CUDA programming model;heat conduction problems;unstructured 3D mesh;multigrid serial implementation;nonmultigrid serial implementation\",\"\",\"3\",\"\",\"29\",\"\",\"22 Sep 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Accelerating of color moments and texture features extraction using GPU based parallel computing\",\"H. Heidari; A. Chalechale; A. A. Mohammadabadi\",\"Department of Computer Engineering Razi University Kermanshah, Iran; Department of Computer Engineering Razi University Kermanshah, Iran; Department of Computer Engineering Razi University Kermanshah, Iran\",\"2013 8th Iranian Conference on Machine Vision and Image Processing (MVIP)\",\"31 Mar 2014\",\"2013\",\"\",\"\",\"430\",\"435\",\"Image retrieval tools can assist people in making efficient use of digital image collections; also it has become imperative to find efficient methods for the retrieval of these images. Most image processing algorithms are inherently parallel, so multithreading processors are suitable in such applications. In very big image databases, image processing takes very long time for run on a single core processor because of single thread execution of algorithms. GPU is more common in most image processing applications due to multithread execution of algorithms, programmability and low cost. In this paper we implement color moments and texture based image retrieval (entropy, standard deviation and local range) in parallel using CUDA programming model to run on GPUs. These features are applied to search images from a database which are similar to a query image. We evaluated our retrieval system using recall, precision, and average precision measures. Experimental results showed that parallel implementation led to an average speed up of 144.67×over the serial implementation when running on a NVIDIA GPU GeForce GT610M. Also the average precision and the average recall of proposed method are 61.968% and 55% respectively.\",\"2166-6784\",\"978-1-4673-6184-2\",\"10.1109/IranianMVIP.2013.6780024\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6780024\",\"color moment;CUDA;GPU;texture based image retrieval\",\"Feature extraction;Graphics processing units;Image color analysis;Image retrieval;Shape;Instruction sets\",\"feature extraction;graphics processing units;image colour analysis;image retrieval;image texture;multi-threading;parallel architectures\",\"color moments;texture features extraction;GPU based parallel computing;graphics processing unit;image retrieval tools;digital image collections;image processing algorithms;multithreading processors;very big image databases;CUDA programming model;compute unified device architecture;recall measure;precision measure;average precision measure;NVIDIA GPU GeForce GT610M\",\"\",\"2\",\"\",\"23\",\"\",\"31 Mar 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Parallel Monte Carlo Integration Algorithm Based on GPU\",\"H. Zong; R. Hua; J. Zhao; Z. Cao\",\"Huaiyin Institute of Technology,Faculty of Computer and Software Engineering,Huaian,China; Huaiyin Institute of Technology,Faculty of Computer and Software Engineering,Huaian,China; Huaiyin Institute of Technology,Faculty of Computer and Software Engineering,Huaian,China; Nanjing University of Aeronautics and Astronautics,College of Computer Science and Technology,Nanjing,China\",\"2019 IEEE 14th International Conference on Intelligent Systems and Knowledge Engineering (ISKE)\",\"18 Aug 2020\",\"2019\",\"\",\"\",\"790\",\"794\",\"Big data comes with the increasing maturity of computer network technology and its application popularity. How to process big data and mine its potential value is a hot issue today. Artificial intelligence is one of the main sources of algorithms for dealing with big data, while parallel computation is the only choice to improve computing performance. Monte Carlo method plays an important role in the application of artificial intelligence, such as computer game AlphaGo, and it requires a lot of random data to calculate, so we use it, in this paper, to explore the general method of parallel processing big data. According to Monte Carlo method, the calculation time of the algorithm will increase exponentially with the increase of the calculation accuracy. As the calculation accuracy will increase accordingly when the number of points increases. In order to improve the computing performance, a Monte Carlo parallel algorithm based on GPU-CUDA programming model is designed. The quality of the random number generator is the key factor affecting the accuracy of Monte Carlo calculation, so the higher quality Mersenne Twister random number algorithm is chosen. Taking π and e as examples, the experimental results show that the GPU-based Monte Carlo parallel algorithm is effective. This method improves both the calculation performance and the calculation accuracy.\",\"\",\"978-1-7281-2348-6\",\"10.1109/ISKE47853.2019.9170329\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9170329\",\"GPU;Monte Carlo method;definite integral;parallel computing;random number\",\"\",\"graphics processing units;Monte Carlo methods;parallel algorithms;parallel architectures;parallel processing;random number generation\",\"Monte Carlo calculation;higher quality Mersenne Twister random number algorithm;GPU-based Monte Carlo parallel algorithm;calculation performance;parallel Monte Carlo integration algorithm;increasing maturity;computer network technology;application popularity;artificial intelligence;parallel computation;computing performance;Monte Carlo method;computer game AlphaGo;random data;parallel processing big data;calculation time;points increases;GPU-CUDA programming model;random number generator\",\"\",\"\",\"\",\"7\",\"\",\"18 Aug 2020\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Accelerating gene regulatory networks inference through GPU/CUDA programming\",\"F. F. Borelli; R. Y. Camargo; D. C. Martins; B. Stransky; L. C. S. Rozante\",\"Universidade Federal do ABC, Santo André-SP, Brazil; Universidade Federal do ABC, Santo André-SP, Brazil; Universidade Federal do ABC, Santo André-SP, Brazil; Universidade Federal do ABC, Santo André-SP, Brazil; Universidade Federal do ABC, Santo André-SP, Brazil\",\"2012 IEEE 2nd International Conference on Computational Advances in Bio and medical Sciences (ICCABS)\",\"12 Apr 2012\",\"2012\",\"\",\"\",\"1\",\"6\",\"Gene regulatory networks (GRN) inference is an important bioinformatics problem in which the gene interactions need to be deduced from gene expression data, such as microarray data. Feature selection methods can be applied to this problem. A feature selection technique is composed by two parts: a search algorithm and a criterion function. Among the search algorithms already proposed, there is the exhaustive search where the best feature subset is returned, although its computational complexity is unfeasible in almost all situations. The objective of this work is the development of a low cost parallel solution based on GPU architectures for exhaustive search with a viable cost-benefit. CUDA™ is a general purpose parallel architecture with a new parallel programming model allowing that the NVIDIA<sup>®</sup> GPUs solve complex problems in an efficient way. We developed a parallel algorithm for GRN inference based on the GPU/CUDA and encouraging speedups (60x) were achieved when assuming that each target gene has two predictors. The idea behind the proposed method can be applied considering three or more predictors for each target gene as well.\",\"\",\"978-1-4673-1321-6\",\"10.1109/ICCABS.2012.6182628\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6182628\",\"GRNs Inference;exhaustive search;mean conditional entropy;GPU Computing;CUDA\",\"Graphics processing unit;Computer architecture;Entropy;Instruction sets;Random access memory;Prediction algorithms;Performance evaluation\",\"bioinformatics;computational complexity;feature extraction;genetics;graphics processing units;inference mechanisms;parallel architectures;parallel programming\",\"gene regulatory network inference;GPU-CUDA programming;bioinformatics;gene interactions;feature selection method;gene expression data;search algorithm;feature subset;computational complexity;GPU architectures;parallel architecture;parallel programming model;parallel algorithm;GRN inference;exhaustive search\",\"\",\"3\",\"\",\"17\",\"\",\"12 Apr 2012\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Comparison of GPU and FPGA based hardware platforms for ultrasonic flaw detection using support vector machines\",\"K. Virupakshappa; E. Oruklu; Y. Jiang; Y. Yuan\",\"ECE Department, Illinois Institute of Technology, Chicago, IL, USA; ECE Department, Illinois Institute of Technology, Chicago, IL, USA; ECE Department, Illinois Institute of Technology, Chicago, IL, USA; ECE Department, Illinois Institute of Technology, Chicago, IL, USA\",\"2017 IEEE International Ultrasonics Symposium (IUS)\",\"2 Nov 2017\",\"2017\",\"\",\"\",\"1\",\"1\",\"Our earlier work on support vector machines (SVM) and ultrasonic flaw detection algorithms demonstrated i) highly accurate classifier performance and ii) the feasibility of the algorithm for real-time implementation on low-cost embedded systems with graphical processing units (GPU) and CUDA library (a parallel computing platform and programming model) support. This works extends the implementation to another programmable hardware platform, FPGA, and also evaluates the performance of a different numerical computation library, TensorFlow by Google.\",\"1948-5727\",\"978-1-5386-3383-0\",\"10.1109/ULTSYM.2017.8091862\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8091862\",\"\",\"Graphics processing units;Support vector machines;Field programmable gate arrays;Libraries;Classification algorithms;Hardware;Acoustics\",\"embedded systems;field programmable gate arrays;flaw detection;graphics processing units;parallel architectures;pattern classification;support vector machines\",\"parallel computing;embedded systems;programmable hardware platform;programming model;ultrasonic flaw detection algorithms;support vector machines;FPGA;GPU\",\"\",\"\",\"\",\"\",\"\",\"2 Nov 2017\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"GPU-based Real-time Decoding Technique for High-definition Videos\",\"H. Deng; C. Deng; J. Li\",\"Sch. of Comput. Sci. & Eng., South China Univ. of Technol., Guangzhou, China; Dept. of Comput. Eng., South China Univ. of Technol., Guangzhou, China; Sch. of Software Eng., South China Univ. of Technol., Guangzhou, China\",\"2012 Eighth International Conference on Intelligent Information Hiding and Multimedia Signal Processing\",\"23 Aug 2012\",\"2012\",\"\",\"\",\"186\",\"190\",\"In this paper, we first discussed the video decoding standard and its architecture, and then analyzed the decoding complexity of each process. By using the benefit of the CUDA programming model, and taking advantages of GPU to optimize the decoding process of MC (motion compensation) and CSC(color space conversion) that are very time consuming, we proposed a MC accelerating method based on CUDA, and a CSC accelerating method based on CUDA and OpenGL shader. The experiments show that it is feasible to decode high definition video in real time using GPGPU-CUDA.\",\"\",\"978-1-4673-1741-2\",\"10.1109/IIH-MSP.2012.51\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6274644\",\"CUDA;real-time decoding;high-definition video;GPGPU;GLSL\",\"Graphics processing unit;Decoding;Videos;Instruction sets;Kernel;Central Processing Unit;Real time systems\",\"graphics processing units;image colour analysis;parallel architectures;video coding\",\"GPU based real-time decoding technique;high definition videos;video decoding;CUDA programming model;motion compensation;MC;color space conversion;CSC;OpenGL shader\",\"\",\"1\",\"\",\"8\",\"\",\"23 Aug 2012\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Coordinate strip-mining and kernel fusion to lower power consumption on GPU\",\"G. Wang\",\"National Laboratory for Parallel and Distributed Processing, School of Computer, National University of Defense Technology, Changsha, Hunan, China\",\"2011 Design, Automation & Test in Europe\",\"5 May 2011\",\"2011\",\"\",\"\",\"1\",\"4\",\"Although general purpose GPUs have relatively high computing capacity, they also introduce high power consumption compared with general purpose CPUs. Therefore low-power techniques targeted for GPUs will be one of the most hot topics in the future. On the other hand, in several application domains, users are unwilling to sacrifice performance to save power. In this paper, we propose an effective kernel fusion method to reduce the power consumption for GPUs without performance loss. Different from executing multiple kernels serially, the proposed method fuses several kernels into one larger kernel. Owing to the fact that most consecutive kernels in an application have data dependency and could not be fused directly, we split large kernel into multiple slices with strip-mining method, then fuse independent sliced kernels into one kernel. Based on the CUDA programming model, we propose three different kernel fusion implementations, with each one targeting for a special case. Based on the different strip-ming methods, we also propose two fusion mechanisms, which are called invariant-slice fusion and variant-slice fusion. The latter one could be better adapted to the requirements of the kernels to be fused. The experimental results validate that the proposed kernel fusion method could effectively reduce the power consumption for GPU.\",\"1558-1101\",\"978-3-9810801-8-6\",\"10.1109/DATE.2011.5763317\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5763317\",\"GPGPV;Kernel Fusion;Strip-mining;Power Efficiency\",\"Kernel;Energy consumption;Graphics processing unit;Power demand;Instruction sets;Programming;Optimization\",\"computer graphic equipment;coprocessors;general purpose computers;low-power electronics;parallel architectures;program slicing\",\"coordinate strip-mining;kernel fusion;power consumption;general purpose GPU;low-power techniques;data dependency;CUDA programming model;invariant-slice fusion;graphics processing unit\",\"\",\"1\",\"\",\"10\",\"\",\"5 May 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"A Case Study on the HACCmk Routine in SYCL on Integrated Graphics\",\"Z. Jin; V. Morozov; H. Finkel\",\"Argonne National Laboratory,Leadership Computing Facility,9700 S Cass Ave, Lemont,IL,60439; Argonne National Laboratory,Leadership Computing Facility,9700 S Cass Ave, Lemont,IL,60439; Argonne National Laboratory,Leadership Computing Facility,9700 S Cass Ave, Lemont,IL,60439\",\"2020 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW)\",\"28 Jul 2020\",\"2020\",\"\",\"\",\"368\",\"374\",\"As opposed to the Open Computing Language (OpenCL) programming model in which host and device codes are generally written in different languages, the SYCL programming model can combine host and device codes for an application in a type-safe way to improve development productivity. In this paper, we chose the HACCmk routine, a representative compute-bound kernel, as a case study on the performance of the SYCL programming model targeting a heterogeneous computing device. More specifically, we introduced the SYCL programming model, presented the OpenCL and SYCL implementations of the routine, and compared the performance of the two implementations using the offline and online compilation on Intel® IrisTM Pro integrated GPUs. We found that the overhead of online compilation may become significant compared to the execution time of a kernel. Compared to the performance of OpenCL implementations, the SYCL implementation can maintain the performance using the offline compilation. The number of execution units in a GPU are critical to improving the raw performance of a compute-bound kernel.\",\"\",\"978-1-7281-7445-7\",\"10.1109/IPDPSW50202.2020.00071\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9150310\",\"Programming model;Compilation modes;Compute-bound kernel;GPU\",\"Kernel;Programming;Graphics processing units;Computational modeling;Performance evaluation;C++ languages\",\"application program interfaces;graphics processing units;parallel processing;program compilers\",\"SYCL programming model;online compilation;OpenCL implementation;SYCL implementation;HACCmk routine;Open Computing Language programming model;representative compute-bound kernel;heterogeneous computing device;Intel IrisTM Pro;GPU\",\"\",\"1\",\"\",\"26\",\"\",\"28 Jul 2020\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Exploring the Suitability of Remote GPGPU Virtualization for the OpenACC Programming Model Using rCUDA\",\"A. Castelló; A. J. Peña; R. Mayo; P. Balaji; E. S. Quintana-Ortí\",\"Univ. Jaume I de Castello, Castello de la Plana, Spain; Argonne Nat. Lab., Argonne, IL, USA; Univ. Jaume I de Castello, Castello de la Plana, Spain; Argonne Nat. Lab., Argonne, IL, USA; Univ. Jaume I de Castello, Castello de la Plana, Spain\",\"2015 IEEE International Conference on Cluster Computing\",\"29 Oct 2015\",\"2015\",\"\",\"\",\"92\",\"95\",\"OpenACC is an application programming interface (API) that aims to unleash the power of heterogeneous systems composed of CPUs and accelerators such as graphic processing units (GPUs) or Intel Xeon Phi coprocessors. This directive-based programming model is intended to enable developers to accelerate their application's execution with much less effort. Coprocessors offer significant computing power but in many cases these devices remain largely underused because not all parts of applications match the accelerator architecture. Remote accelerator virtualization frameworks introduce a means to address this problem. In particular, the remote CUDA virtualization middleware rCUDA provides transparent remote access to any GPU installed in a cluster. Combining these two technologies, OpenACC and rCUDA, in a single scenario is naturally appealing. In this work we explore how the different OpenACC directives behave on top of a remote GPGPU virtualization technology in two different hardware configurations. Our experimental evaluation reveals favorable performance results when the two technologies are combined, showing low overhead and similar scaling factors when executing OpenACC-enabled directives.\",\"2168-9253\",\"978-1-4673-6598-7\",\"10.1109/CLUSTER.2015.23\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7307570\",\"GPUs;OpenACC;remote virtualization;rCUDA\",\"Graphics processing units;Virtualization;Acceleration;Programming;Coprocessors;Kernel\",\"graphics processing units;middleware;parallel architectures;virtualisation\",\"GPGPU virtualization;graphics processing unit;OpenACC programming model;rCUDA;CUDA virtualization middleware;application programming interface;API;directive-based programming model;remote accelerator virtualization framework\",\"\",\"3\",\"\",\"12\",\"\",\"29 Oct 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"A Performance Prediction Model for Memory-Intensive GPU Kernels\",\"Z. Hu; G. Liu; Z. Hu\",\"Coll. of Comput., Nat. Univ. of Defense Technol., Changsha, China; Coll. of Comput., Nat. Univ. of Defense Technol., Changsha, China; NA\",\"2014 IEEE Symposium on Computer Applications and Communications\",\"2 Oct 2014\",\"2014\",\"\",\"\",\"14\",\"18\",\"Commodity graphic processing units (GPUs) have rapidly evolved to become high performance accelerators for data-parallel computing through a large array of processing cores and the CUDA programming model with a C-like interface. However, optimizing an application for maximum performance based on the GPU architecture is not a trivial task for the tremendous change from conventional multi-core to the many-core architectures. Besides, the GPU vendors do not disclose much detail about the characteristics of the GPU's architecture. To provide insights into the performance of memory-intensive kernels, we propose a pipelined global memory model to incorporate the most critical global memory performance related factor, uncoalesced memory access pattern, and provide a basis for predicting performance of memory-intensive kernels. As we will demonstrate, the pipeline throughput is dynamic and sensitive to the memory access patterns. We validated our model on the NVIDIA GPUs using CUDA (Compute Unified Device Architecture). The experiment results show that the pipeline captures performance factors related to global memory and is able to estimate the performance for memory-intensive GPU kernels via the proposed model.\",\"\",\"978-0-7695-5319-1\",\"10.1109/SCAC.2014.10\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6913158\",\"GPU;CUDA;performance prediction;memory-intensive\",\"Graphics processing units;Instruction sets;Kernel;Pipelines;Memory management;Random access memory;Throughput\",\"DRAM chips;graphics processing units;parallel architectures;performance evaluation;pipeline processing\",\"DRAM chips;memory-intensive GPU kernels;global memory;Compute Unified Device Architecture;CUDA;NVIDIA GPU;dynamic sensitive pipeline throughput;uncoalesced memory access pattern;critical global memory performance related factor;pipelined global memory model;memory-intensive kernel performance;GPU architecture;data-parallel computing;high-performance accelerators;graphic processing units;performance prediction model\",\"\",\"\",\"\",\"13\",\"\",\"2 Oct 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"LoSCache: Leveraging Locality Similarity to Build Energy-Efficient GPU L2 Cache\",\"J. Tan; K. Yan; S. L. Song; X. Fu\",\"College of Computer Science and Technology, Jilin University, Changchun, China; College of Communication Engineering, Jilin University, Changchun, China; HPC Group, Pacific Northwest National Laboratory, Richland, USA; ECE Department, University of Houston, Houston, USA\",\"2019 Design, Automation & Test in Europe Conference & Exhibition (DATE)\",\"16 May 2019\",\"2019\",\"\",\"\",\"1190\",\"1195\",\"This paper presents a novel energy-efficient cache design for massively parallel, throughput-oriented architectures like GPUs. Unlike L1 data cache on modern GPUs, L2 cache shared by all the streaming multiprocessors is not the primary performance bottleneck but it does consume a large amount of chip energy. We observe that L2 cache is significantly under-utilized by spending 95.6% of the time storing useless data. If such \"\"dead time\"\" on L2 is identified and reduced, L2's energy efficiency can be drastically improved. Fortunately, we discover that the SIMT programming model of GPUs provides a unique feature among threads: instruction-level data locality similarity, which can be used to accurately predict the data re-reference counts at L2 cache block level. We propose a simple design that leverages this Locality Similarity to build an energy-efficient GPU L2 Cache, named LoSCache. Specifically, LoSCache uses the data locality information from a small group of CTAs to dynamically predict the L2-level data re-reference counts of the remaining CTAs. After that, specific L2 cache lines can be powered off if they are predicted to be \"\"dead\"\" after certain accesses. Experimental results on a wide range of applications demonstrate that our proposed design can significantly reduce the L2 cache energy by an average of 64% with only 0.5% performance loss.\",\"1558-1101\",\"978-3-9819263-2-3\",\"10.23919/DATE.2019.8714911\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8714911\",\"GPU;cache;energy-efficiency;locality similarity\",\"Instruction sets;Graphics processing units;Kernel;Hardware;Programming;Data models;System-on-chip\",\"cache storage;energy conservation;graphics processing units;multi-threading;parallel architectures;power aware computing\",\"energy-efficient GPU L2 cache;L1 data cache;instruction-level data locality similarity;L2 cache block level;L2 cache energy;energy-efficient cache design;SIMT programming model;LoSCache;massively parallel architectures;single instruction multiple thread programming model\",\"\",\"\",\"\",\"20\",\"\",\"16 May 2019\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"dCUDA: Hardware Supported Overlap of Computation and Communication\",\"T. Gysi; J. Bär; T. Hoefler\",NA; NA; NA,\"SC '16: Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis\",\"16 Mar 2017\",\"2016\",\"\",\"\",\"609\",\"620\",\"Over the last decade, CUDA and the underlying GPU hardware architecture have continuously gained popularity in various high-performance computing application domains such as climate modeling, computational chemistry, or machine learning. Despite this popularity, we lack a single coherent programming model for GPU clusters. We therefore introduce the dCUDA programming model, which implements device-side remote memory access with target notification. To hide instruction pipeline latencies, CUDA programs over-decompose the problem and over-subscribe the device by running many more threads than there are hardware execution units. Whenever a thread stalls, the hardware scheduler immediately proceeds with the execution of another thread ready for execution. This latency hiding technique is key to make best use of the available hardware resources. With dCUDA, we apply latency hiding at cluster scale to automatically overlap computation and communication. Our benchmarks demonstrate perfect overlap for memory bandwidth-bound tasks and good overlap for compute-bound tasks.\",\"2167-4337\",\"978-1-4673-8815-3\",\"10.1109/SC.2016.51\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7877130\",\"Distributed memory;gpu;latency hiding;programming model;remote memory access\",\"Graphics processing units;Programming;Computational modeling;Hardware;Instruction sets;Kernel\",\"multi-threading;parallel architectures;storage management\",\"hardware supported overlap;computation;communication;GPU hardware architecture;high-performance computing;GPU clusters;dCUDA programming model;device-side remote memory access;instruction pipeline latencies;hardware scheduler;latency hiding;hardware resources;memory bandwidth-bound tasks;compute-bound tasks;threads\",\"\",\"13\",\"1\",\"31\",\"\",\"16 Mar 2017\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"GPU Computing\",\"J. D. Owens; M. Houston; D. Luebke; S. Green; J. E. Stone; J. C. Phillips\",\"Univ. of California, Davis; NA; NA; NA; NA; NA\",\"Proceedings of the IEEE\",\"15 Apr 2008\",\"2008\",\"96\",\"5\",\"879\",\"899\",\"The graphics processing unit (GPU) has become an integral part of today's mainstream computing systems. Over the past six years, there has been a marked increase in the performance and capabilities of GPUs. The modern GPU is not only a powerful graphics engine but also a highly parallel programmable processor featuring peak arithmetic and memory bandwidth that substantially outpaces its CPU counterpart. The GPU's rapid increase in both programmability and capability has spawned a research community that has successfully mapped a broad range of computationally demanding, complex problems to the GPU. This effort in general-purpose computing on the GPU, also known as GPU computing, has positioned the GPU as a compelling alternative to traditional microprocessors in high-performance computer systems of the future. We describe the background, hardware, and programming model for GPU computing, summarize the state of the art in tools and techniques, and present four GPU computing successes in game physics and computational biophysics that deliver order-of-magnitude performance gains over optimized CPU applications.\",\"1558-2256\",\"\",\"10.1109/JPROC.2008.917757\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=4490127\",\"General-purpose computing on the graphics processing unit (GPGPU);GPU computing;parallel computing\",\"Graphics;Central Processing Unit;Physics computing;Engines;Arithmetic;Bandwidth;Microprocessors;Hardware;Computational biophysics;Performance gain\",\"computer graphic equipment;microcomputers;parallel programming\",\"GPU computing;graphics processing unit;graphics engine;parallel programmable processor;peak arithmetic;memory bandwidth;general-purpose computing;microprocessor;high-performance computer system;programming model;game physics;computational biophysics;parallel computing\",\"\",\"1060\",\"30\",\"32\",\"\",\"15 Apr 2008\",\"\",\"\",\"IEEE\",\"IEEE Journals\"\n\"Data Parallel Programming Model for Many-Core Architectures\",\"Y. Zhang\",\"North Carolina State Univ., Raleigh, NC, USA\",\"2011 IEEE International Symposium on Parallel and Distributed Processing Workshops and Phd Forum\",\"1 Sep 2011\",\"2011\",\"\",\"\",\"2065\",\"2068\",\"Emerging accelerating architectures, such as GPUs, have proved successful in providing significant performance gains to various application domains. This is done by exploiting data parallelism in existing algorithms. However, programming in a data-parallel fashion imposes extra burdens to programmers, who are used to writing sequential programs. New programming models and frameworks are needed to reach a balance between programmability, portability and performance. We start from stream processing domain and propose GStream, a general-purpose, scalable data streaming framework on GPUs. The contributions of GStream are as follows: (1) We provide powerful, yet concise language abstractions suitable to describe conventional algorithms as streaming problems. (2) We project these abstractions onto GPUs to fully exploit their inherent massive data-parallelism. (3) We demonstrate the viability of streaming on accelerators. Experiments show that the proposed framework provides flexibility, programmability and performance gains for various benchmarks from a collection of domains, including but not limited to data streaming, data parallel problems, numerical codes and text search. This work lays a foundation to our future work to develop more general data parallel programming models for many-core architectures.\",\"1530-2075\",\"978-1-61284-425-1\",\"10.1109/IPDPS.2011.378\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6009018\",\"\",\"Graphics processing unit;Parallel processing;Benchmark testing;Libraries;Kernel;Computer architecture\",\"computer graphic equipment;multiprocessing systems;parallel programming\",\"data parallel programming model;many-core architectures;GPU;GStream;general-purpose scalable data streaming framework;language abstractions;massive data-parallelism\",\"\",\"\",\"\",\"22\",\"\",\"1 Sep 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"A Unified Programming Model for Heterogeneous Computing with CPU and Accelerator Technologies\",\"Y. Xiong\",\"Shanghai Institute of Technology,Computer Science Department,Shanghai,China,201418\",\"2019 12th International Congress on Image and Signal Processing, BioMedical Engineering and Informatics (CISP-BMEI)\",\"23 Jan 2020\",\"2019\",\"\",\"\",\"1\",\"4\",\"This paper provides a unified programming model for heterogeneous computing with CPU and accelerator (like GPU, FPGA, Google TPU, and more) technologies. This new programming model provides a clean interface to application developers and to some extent makes programming across CPUs and accelerators turn into usual programming tasks with common programming languages. Thus it can contribute to improve software productivity for computing across CPUs and accelerators. It can be achieved by extending file managements in common programming languages, such as C/C++, Fortran, Python, MPI, etc., to cover GPUs, FPGAs, and other accelerators (such as Google TPU, etc.) as I/O devices. The programming model can be applied to a number of different computing systems equipped with accelerators, ranging from embedded systems, to mobile computing systems, to HPC systems, and to cloud computing systems.\",\"\",\"978-1-7281-4852-6\",\"10.1109/CISP-BMEI48845.2019.8965946\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8965946\",\"\",\"Graphics processing units;Programming;Field programmable gate arrays;Computer languages;Printers;Task analysis;Deep learning\",\"cloud computing;embedded systems;message passing;mobile computing;parallel programming;programming languages\",\"unified programming model;heterogeneous computing;Google TPU;CPUs;programming tasks;programming languages;mobile computing systems\",\"\",\"\",\"\",\"50\",\"\",\"23 Jan 2020\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"A graphical dataflow programming model for on-line signal processing on parallel architectures\",\"Yongsen Jiang\",\"Beihua University, Jilin, China\",\"2010 Third International Symposium on Knowledge Acquisition and Modeling\",\"29 Nov 2010\",\"2010\",\"\",\"\",\"107\",\"110\",\"Many real-world signal processing applications require an enormous amount of computational power. When these applications are deployed in on-line settings, many hurdles including stringent timing constraints must be overcome. Additionally, the number of channels feeding mathematical DSP routines is growing rapidly, easily reaching 1,000 to 100,000 channels. These applications have increasingly demanding performance requirements for generating control outputs which interact with real-world processes, where 1ms loop times are not uncommon. In this paper, we describe a graphical dataflow approach capable of yielding the necessary computational power and meeting aggressive timing constraints. We combine this methodology with strategies for targeting a combination of processors including CPUs, FPGAs, and GPUs deployed on standard PCs, workstations, and real-time systems. We demonstrate this approach through case studies on adaptive mirror control for an extremely large telescope and plasma measurement via soft X-ray tomography.\",\"\",\"978-1-4244-8007-4\",\"10.1109/KAM.2010.5646310\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5646310\",\"Software Engineering;Parallel Programming;Program Design;Graphical Dataflow\",\"Real time systems;Mirrors;Communities\",\"computer graphic equipment;computerised tomography;coprocessors;data flow computing;field programmable gate arrays;parallel architectures;signal processing;X-ray microscopy\",\"graphical dataflow programming model;online signal processing;parallel architectures;stringent timing constraints;mathematical DSP routines;computational power;aggressive timing constraints;CPU;FPGA;GPU;adaptive mirror control;extremely large telescope;plasma measurement;soft X-ray tomography\",\"\",\"\",\"\",\"6\",\"\",\"29 Nov 2010\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Study on Transient Temperature Field Parallel Computing in Cooling Control Based on a GPU Fourier Method\",\"L. Wang; Y. -s. Zhang\",\"State Key Lab. of Mater. Process. & Die & Mould Technol., Huazhong Univ. of Sci. & Technol. Wuhan, Wuhan, China; State Key Lab. of Mater. Process. & Die & Mould Technol., Huazhong Univ. of Sci. & Technol. Wuhan, Wuhan, China\",\"2010 International Conference on Computational Intelligence and Software Engineering\",\"30 Dec 2010\",\"2010\",\"\",\"\",\"1\",\"4\",\"With the evolution of graphics processing units (GPUs) in floating point operations and programmability, GPU has increasingly become powerful and cost-efficient computing architectures, its range of application has expanded tremendously, especially in the area of computational simulation. In this article, the Fourier method combined with GPU acceleration techniques is applied to simulate large-scale transient temperature field in cooling control. Although it is possible to perform temperature field simulation on a personal computer through Fourier method, when grids are huge, a tremendous CPU calculating time is required which is unacceptable. Thus GPU accelerating technique is used for the parallel processing of Fourier method and a significant speedup can be observed. Following the programming model of compute unified device architecture (CUDA), the iteration process of Fourier method is improved into several kernel functions by the single instruction multiple thread (SIMT) mode and multiple processors of the GPU execute these kernel functions. Numerical results with over 13 speedups demonstrate the efficiency of GPU computing technique of the Fourier method. The absolute error between GPU and CPU is less than 10-12 in double-precision.\",\"\",\"978-1-4244-5391-7\",\"10.1109/CISE.2010.5676712\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5676712\",\"\",\"Graphics processing unit;Mathematical model;Instruction sets;Equations;Transient analysis;Parallel processing;Computational modeling\",\"computer architecture;control engineering computing;cooling;coprocessors;heat systems\",\"transient temperature field parallel computing;cooling control;GPU Fourier method;graphics processing units;floating point operations;programmability;cost-efficient computing architecture;computational simulation;GPU acceleration;large-scale transient temperature field;compute unified device architecture;single instruction multiple thread mode\",\"\",\"1\",\"\",\"6\",\"\",\"30 Dec 2010\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Towards high performance and usability programming model for heterogeneous HPC platforms\",\"Myungho Lee; Heeseung Jo; Dong Hoon Choi\",\"Dept of Computer Science and Engineering, Myongji University, 38-2 San Namdong, Cheo-In Gu, Yong In, Kyung Ki Do, Korea 449-728; Department of Information Technology, Chonbuk National University, Jeonju, Jeonbuk, Korea 561-756; Korea Institute of Science and Technology Information (KISTI), 245 Dae Hak Ro, Yu Seong Gu, Daejeon, Korea 305-806\",\"2012 8th International Conference on Computing Technology and Information Management (NCM and ICNIT)\",\"16 Aug 2012\",\"2012\",\"1\",\"\",\"51\",\"57\",\"Latest High Performance Computing (HPC) platforms are built with heterogeneous chips such as multicore microprocessors and multicore GPUs (Graphic Processing units), thus they are commonly called as Heterogeneous High Performance Computing (HPC) platforms. Various programming models have been developed and proposed for heterogeneous platforms. However, their wide adoption in the user community is predicted to be limited, because of low performance, low usability due to revealing architectural details in the program which burdens the programmers, and most importantly the limited SIMD execution model which relies on the GPU for most of the computations in the program which can limit the performance. Thus a more general programming model beyond SIMD which is easy to use and leads to high performance needs to be developed. In this paper, we propose methods to achieve this goal by considering all types of parallelism according to Flynn's classification (SIMD, MIMD, MISD). Our proposed methods incorporate these parallelisms in the existing high usability programming models and can lead to significant performance improvements.\",\"\",\"978-89-88678-68-8\",\"\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6268469\",\"Heterogenesou HP platformC;programming model;OpenMP;CUDA;OpenACC\",\"Graphics processing unit;Programming;Computational modeling;Registers;Levee;Engines\",\"graphics processing units;multiprocessing systems;parallel processing\",\"heterogeneous HPC platforms;usability programming model;high performance computing;multicore microprocessors;multicore GPU;graphic processing units;SIMD execution model;Flynn classification\",\"\",\"1\",\"\",\"20\",\"\",\"16 Aug 2012\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"2D-FMFI SAR application on HPC architectures with OmpSs parallel programming model\",\"F. Kraja; A. Bode; X. Martorell\",\"Chair of Computer Architecture, Department of Informatics, Technische Universität München, Munich, Germany; Chair of Computer Architecture, Department of Informatics, Technische Universität München, Munich, Germany; Computer Architecture Department, Universitat Politecnica de Catalunya, Barcelona Supercomputing Center, Barcelona, Spain\",\"2012 NASA/ESA Conference on Adaptive Hardware and Systems (AHS)\",\"16 Aug 2012\",\"2012\",\"\",\"\",\"115\",\"121\",\"Spacecraft on-board platforms will soon contain high performance off-the-shelf computing components, as the only way to deal with applications which require High Performance Computing (HPC) capabilities. Heterogeneous architectures, give the possibility to profit from specific features of such components, by combining them on the same computing platform. Such architectures integrate different multicore CPUs with many-core accelerators (GPGPUs) so that parts of the same application can efficiently execute on the CPU while other parts can profit more from the GPU features. The problem stands in the way how to program these heterogeneous architectures. In this paper we introduce the OmpSs Programming Model as a framework to program heterogeneous architectures. For benchmarking purposes, we use a Synthetic Aperture Radar (SAR) application, which we parallelized with OmpSs for Symmetric Multi-Processor (SMP) architectures and for hybrid SMP/GPU environments. We also compare the results obtained with OmpSs with the ones obtained with OpenMP in SMP environments and it turns out that OmpSs outperforms OpenMP. When applying OmpSs to the SAR code for hybrid architectures, OmpSs does not offer better performance than CUDA, but it offers support for heterogeneous architectures and it also increases programmer's productivity.\",\"\",\"978-1-4673-1916-4\",\"10.1109/AHS.2012.6268638\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6268638\",\"OmpSs;OpenMP;CUDA;Space Applications;SAR;SMP;GPU\",\"Graphics processing unit;Computer architecture;Synthetic aperture radar;Image reconstruction;Runtime;Interpolation;Programming\",\"aerospace engineering;aerospace instrumentation;graphics processing units;multiprocessing systems;parallel programming;software packages;space vehicles;synthetic aperture radar\",\"2D-FMFI SAR application;HPC architectures;OmpSs parallel programming model;spacecraft on-board platforms;high performance computing;HPC;heterogeneous architectures;multicore CPU;GPGPU;many-core accelerators;synthetic aperture radar;symmetric multiprocessor architectures;SMP/GPU environments;OpenMP\",\"\",\"\",\"\",\"18\",\"\",\"16 Aug 2012\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Heterogeneous Habanero-C (H2C): A Portable Programming Model for Heterogeneous Processors\",\"D. Majeti; V. Sarkar\",NA; NA,\"2015 IEEE International Parallel and Distributed Processing Symposium Workshop\",\"1 Oct 2015\",\"2015\",\"\",\"\",\"708\",\"717\",\"Heterogeneous architectures with their diverse architectural features impose significant programmability challenges. Existing programming systems involve non-trivial learning and are not productive, not portable, and are challenging to tune for performance. In this paper, we introduce Heterogeneous Habanero-C (H2C), which is an implementation of the Habanero execution model for modern heterogeneous (CPU + GPU) architectures. The H2C language provides high-level constructs to specify the computation, communication, and synchronization in a given application. H2C also implements novel constructs for task partitioning and locality. The H2C (source-to-source) compiler and runtime framework efficiently map these high-level constructs onto the underlying heterogeneous platform, which can include multiple CPU cores and multiple GPU devices, possibly from different vendors. Experimental evaluations of four applications show significant improvements in productivity, portability, and performance.\",\"\",\"978-1-4673-7684-6\",\"10.1109/IPDPSW.2015.81\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7284378\",\"heterogeneous architectures;programming model;automatic data distribution;OpenCL;event management\",\"Runtime;Graphics processing units;Computer architecture;Optimization;Kernel;Programming\",\"graphics processing units;multiprocessing systems;program compilers\",\"portable programming model;heterogeneous processors;programming systems;Heterogeneous Habanero-C;Habanero execution model;modern heterogeneous architectures;compiler;runtime framework;multiple CPU cores;multiple GPU devices\",\"\",\"6\",\"\",\"20\",\"\",\"1 Oct 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"High-speed parallel wavelet algorithm based on CUDA and its application in three-dimensional surface texture analysis\",\"Wang Jianjun; Lu Wenlong; Liu Xiaojun; Jiang Xiangqian\",\"The State Key Laboratory of Digital Manufacturing Equipment and Technology, School of Mechanical Science and Engineering, Huazhong University of Science and Technology, Wuhan, Hubei, China; The State Key Laboratory of Digital Manufacturing Equipment and Technology, School of Mechanical Science and Engineering, Huazhong University of Science and Technology, Wuhan, Hubei, China; The State Key Laboratory of Digital Manufacturing Equipment and Technology, School of Mechanical Science and Engineering, Huazhong University of Science and Technology, Wuhan, Hubei, China; The State Key Laboratory of Digital Manufacturing Equipment and Technology, School of Mechanical Science and Engineering, Huazhong University of Science and Technology, Wuhan, Hubei, China\",\"2011 International Conference on Electric Information and Control Engineering\",\"27 May 2011\",\"2011\",\"\",\"\",\"2249\",\"2252\",\"A new efficient parallel wavelet algorithm was presented in order to speed up wavelet transform in three dimensional surface texture analysis. It is based NVIDIA's CUDA (Compute Unified Device Architecture), a new general purpose parallel programming model and instruction set architecture that leverage computational problems on GPU more efficient than CPU. Compared with CPU, GPU has evolved into a highly parallel, multithread, multicore processor with tremendous computational horsepower and very high memory bandwidth. GPU is well-suited to address data-parallel computation problems rather than flow controlled problems. Wavelet transform can use data-parallel programming model so data elements will be mapped to parallel processing threads to speed up the computations. CUDA wavelet decomposition and reconstruction algorithms were realized based on the analysis above. Experiments show that the parallelization of the fast wavelet decomposition transform for GPU speedup 34×-38× over CPU, reconstruction transform speedup 29x-33x over CPU.\",\"\",\"978-1-4244-8039-5\",\"10.1109/ICEICE.2011.5778225\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5778225\",\"CUDA;GPU;Wavelet;surface texture\",\"Graphics processing unit;Wavelet transforms;Convolution;Surface waves;Wavelet analysis;Instruction sets\",\"computer graphic equipment;computer graphics;coprocessors;general purpose computers;instruction sets;multiprocessing systems;multi-threading;parallel algorithms;parallel architectures;wavelet transforms\",\"high-speed parallel wavelet algorithm;CUDA;three-dimensional surface texture analysis;NVIDIA;compute unified device architecture;general purpose parallel programming model;instruction set architecture;GPU;multithread processor;parallel processor;multicore processor;computational horsepower;memory bandwidth;data-parallel computation problems;data-parallel programming model;reconstruction transform speedup\",\"\",\"2\",\"\",\"13\",\"\",\"27 May 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Gdarts: A GPU-Based Runtime System for Dataflow Task Programming on Dependency Applications\",\"M. Li; Q. Jiang; H. Lin; H. An\",\"University of Science and Technology of China, Hefei, China; University of Science and Technology of China, Hefei, China; University of Science and Technology of China, Hefei, China; University of Science and Technology of China, Hefei, China\",\"2019 IEEE Intl Conf on Parallel & Distributed Processing with Applications, Big Data & Cloud Computing, Sustainable Computing & Communications, Social Computing & Networking (ISPA/BDCloud/SocialCom/SustainCom)\",\"26 Mar 2020\",\"2019\",\"\",\"\",\"547\",\"552\",\"Massively multithreaded GPUs achieve considerable performance improvements by thousands of processing cores running simultaneously for compute-intensive applications. However, present parallel programming model suffers significant performance degradation on dependency scenarios, where tasks are assigned into multiple thread blocks and the parallelism is limited by inter-block dependencies. Massively multithreaded GPUs achieve considerable performance improvements by thousands of processing cores running simultaneously for compute-intensive applications. However, present parallel programming model suffers significant performance degradation on dependency scenarios, where tasks are assigned into multiple thread blocks and the parallelism is limited by inter-block dependencies. This paper proposes Gdarts, a dataflow runtime system for GPU workloads with data dependencies. Employing asynchronous task programming, Gdarts builds Stream Multiprocessors (SM) as standalone workers towards fine-granular and independent kernels. Meanwhile, it designs a two-level task scheduler to adapt GPU's hierarchical memory environment. Such a scheme, leveraging the hybrid memory resources, fulfills requirements for workload balancing across SMs, as well as flexible priority scheduling. Based on the improved controllability and flexible support fosr kernel scheduling, Gdarts complements the existing GPU with insights of dataflow diagram by two heuristic schedule approaches, node-degree and data-driven priority.\",\"\",\"978-1-7281-4328-6\",\"10.1109/ISPA-BDCloud-SustainCom-SocialCom48970.2019.00083\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9047478\",\"task based execution;dataflow runtime system;schedule;GPU programming\",\"Task analysis;Graphics processing units;Runtime;Programming;Parallel processing;Schedules;Kernel\",\"coprocessors;graphics processing units;multiprocessing systems;multi-threading;parallel programming;scheduling\",\"Gdarts;GPU-based runtime system;dataflow task programming;GPUs;processing cores;compute-intensive applications;parallel programming model;parallelism;dataflow runtime system;data dependencies;asynchronous task programming;two-level task scheduler;kernel scheduling\",\"\",\"\",\"\",\"20\",\"\",\"26 Mar 2020\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Divide and conquer skeleton on GPU\",\"F. Baghayeri; H. Deldari; D. Bahrepour\",\"Department of Computer Engineering, Mashhad Branch, Islamic Azad University, Mashhad, Iran; Department of Computer Engineering, Mashhad Branch, Islamic Azad University, Mashhad, Iran; Department of Computer Engineering, Mashhad Branch Islamic Azad University, Mashhad, Iran\",\"2014 International Congress on Technology, Communication and Knowledge (ICTCK)\",\"9 Feb 2015\",\"2014\",\"\",\"\",\"1\",\"6\",\"Parallelism is a suitable approach for speeding up the massive computations of applications, but parallel programming is difficult yet. Algorithmic skeleton is a parallel programming model that provides a high level of abstraction for programmers. This approach uses the pre-defined components to facilitate easier parallel programming. Divide and conquer (DC) is an appropriate parallel pattern for implementation as a skeleton. The solution of the original problem is obtained by dividing it into smaller sub-problems and solving them in parallel. Today, graphics processor unit (GPU) is an attractive computational processor for doing tasks in parallel, because it has a large number of process units. In this paper, divide and conquer skeleton on GPU has been proposed and named OC_GFV.DC_GPU is a divide and conquer skeleton that is implemented on GPU that using a consistent programming interface in C++ for easier parallel programming. Performance of this skeleton has been evaluated by mergesort and sobeledge detection. The results show that obtained speedup at this skeleton is more than 2 on GPU.\",\"\",\"978-1-4799-8021-5\",\"10.1109/ICTCK.2014.7033531\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7033531\",\"Algorithmic Skeleton;Divide and Conquer Skeleton;Graphics Processor Unit(GPU);Programming Interface in C++;Mergesort;Sobel Edge Detection\",\"Skeleton;Graphics processing units;Parallel processing;Parallel programming;Libraries;Computational modeling\",\"C++ language;divide and conquer methods;edge detection;graphics processing units;parallel programming\",\"parallel programming model;parallel pattern;graphics processor unit;computational processor;divide and conquer skeleton;DC_GPU;consistent programming interface;C++;mergesort;sobeledge skeleton\",\"\",\"1\",\"\",\"12\",\"\",\"9 Feb 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Task Scheduling Greedy Heuristics for GPU Heterogeneous Cluster Involving the Weights of the Processor\",\"K. Zhang; B. Wu\",\"Sch. of Comput. Sci., Fudan Univ., Shanghai, China; Sch. of Comput. Sci., Fudan Univ., Shanghai, China\",\"2013 IEEE International Symposium on Parallel & Distributed Processing, Workshops and Phd Forum\",\"31 Oct 2013\",\"2013\",\"\",\"\",\"1817\",\"1827\",\"Modern GPUs are gradually used by more and more cluster computing systems as the high performance computing units due to their outstanding computational power, whereas bringing system-level (among different nodes) architectural heterogeneity to cluster. In this paper, based on MPI and CUDA programming model, we aim to investigate task scheduling for GPU heterogeneous cluster by taking into account the system-level heterogeneous characteristics and also involving the weights of the processor (both CPUs and GPUs). At first, based on our GPU heterogeneous cluster, we classify executing tasks to six major classifications according to their parallelism degrees, input data sizes, and processing workloads. Then, aiming to realize the approximately optimal mapping between tasks and computing resources, a task scheduling strategy is presented. In this paper, we present the WSLSA greedy heuristic which can involve the weights of the processor. Besides, we also define two measurement factors for the task assignments. One is the maximum value of total workloads for all task assignments to consider the maximum workloads for the GPU heterogeneity cluster. The other is the distribution of task assignments which can determine the load balance of the task assignments for the GPU heterogeneity cluster. The other is the distribution of task assignments which can determine the load balance of the task assignments for the GPU heterogeneity cluster.\",\"\",\"978-0-7695-4979-8\",\"10.1109/IPDPSW.2013.38\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6651082\",\"Task Scheduling;Greedy Heuristics;GPU Heterogeneous Cluster;WSLSA Greedy Heuristic\",\"Graphics processing units;Kernel;Processor scheduling;Computer architecture;Scheduling;Clustering algorithms\",\"application program interfaces;graphics processing units;greedy algorithms;parallel architectures;scheduling;task analysis;workstation clusters\",\"task scheduling greedy heuristics;GPU heterogeneous cluster;cluster computing systems;high performance computing units;computational power;system-level architectural heterogeneity;MPI;CUDA programming model;system-level heterogeneous characteristics;executing tasks classify;parallelism degrees;data sizes;processing workloads;computing resources;WSLSA greedy heuristic;task assignments;load balance\",\"\",\"2\",\"\",\"27\",\"\",\"31 Oct 2013\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Mini-Gunrock: A Lightweight Graph Analytics Framework on the GPU\",\"Yangzihao Wang; S. Baxter; J. D. Owens\",NA; NA; NA,\"2017 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW)\",\"24 Aug 2017\",\"2017\",\"\",\"\",\"616\",\"626\",\"Existing GPU graph analytics frameworks are typically built from specialized, bottom-up implementations of graph operators that are customized to graph computation. In this work we describe Mini-Gunrock, a lightweight graph analytics framework on the GPU. Unlike existing frameworks, Mini-Gunrock is built from graph operators implemented with generic transform-based data-parallel primitives. Using this method to bridge the gap between programmability and high performance for GPU graph analytics, we demonstrate operator performance on scale-free graphs with an average 1.5x speedup compared to Gunrock's corresponding operator performance. Mini-Gunrock's graph operators, optimizations, and applications code have 10x smaller code size and comparable overall performance vs. Gunrock.\",\"\",\"978-1-5386-3408-0\",\"10.1109/IPDPSW.2017.116\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7965101\",\"GPU computing;Graph analytics;Programming model;Runtime system\",\"Transforms;Graphics processing units;Kernel;Libraries;Programming;Optimization;Computational modeling\",\"graph theory;graphics processing units;mathematics computing;optimisation;parallel processing\",\"miniGunrock;lightweight graph analytics framework;GPU graph analytics frameworks;graph operators;graph computation;generic transform-based data-parallel primitives;scale-free graphs;optimizations\",\"\",\"\",\"\",\"11\",\"\",\"24 Aug 2017\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Programming GPU Clusters with Shared Memory Abstraction in Software\",\"K. I. Karantasis; E. D. Polychronopoulos\",\"Dept. of Comput. Eng. & Inf., Univ. of Patras, Rio, Greece; Dept. of Comput. Eng. & Inf., Univ. of Patras, Rio, Greece\",\"2011 19th International Euromicro Conference on Parallel, Distributed and Network-Based Processing\",\"24 Mar 2011\",\"2011\",\"\",\"\",\"223\",\"230\",\"As many-core graphics processors gain an increasingly important position concerning the advancements on modern highly concurrent processors, we are experiencing the deployment of the first heterogeneous clusters that are based on GPUs. The attempts to match future expectations in computational power and energy saving with hybrid - GPU-based - clusters are expected to grow in the next years, and much of their success will depend on the provision of the appropriate programming tools. In the current paper we propose a programming model for GPU clusters that is based on shared memory abstraction. We give evidence for the applicability of the proposed model under two cases. In the first case we describe an implementation procedure that involves the utilization of Intel Cluster OpenMP, a cluster-enabled OpenMP implementation. Subsequently, we present an extended version of Pleiad, a cluster middleware which is based on the Java platform. The evaluation of these schemes under two characteristic computationally intensive applications on a 4-node multi-GPU cluster, reveals that such approaches can easily enhance existing GPU software development tools, such as CUDA, and they can lead to a significant acceleration of applications that can benefit from many-core GPU clusters.\",\"2377-5750\",\"978-1-4244-9682-2\",\"10.1109/PDP.2011.91\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5739005\",\"GPU Clusters;Software DSM;CUDA;OpenMP;Pleiad\",\"Graphics processing unit;Programming;Middleware;Benchmark testing;Computational modeling;Kernel;Multicore processing\",\"computer graphic equipment;coprocessors;Java;middleware;multiprocessing programs;power aware computing;shared memory systems;software tools\",\"GPU cluster programming;shared memory abstraction;many-core graphics processors;energy saving;programming tools;Intel Cluster OpenMP;cluster middleware;Pleiad;Java platform;4-node multiGPU cluster;GPU software development tools\",\"\",\"8\",\"\",\"27\",\"\",\"24 Mar 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Matrix multiplication beyond auto-tuning: Rewrite-based GPU code generation\",\"M. Steuwer; T. Remmelg; C. Dubach\",\"University of Edinburgh, United Kingdom; University of Edinburgh, United Kingdom; University of Edinburgh, United Kingdom\",\"2016 International Conference on Compliers, Architectures, and Sythesis of Embedded Systems (CASES)\",\"17 Nov 2016\",\"2016\",\"\",\"\",\"1\",\"10\",\"Graphics Processing Units (GPUs) are used as general purpose parallel accelerators in a wide range of applications. They are found in most computing systems, and mobile devices are no exception. The recent availability of programming APIs such as OpenCL for mobile GPUs promises to open up new types of applications on these devices. However, producing high performance GPU code is extremely difficult. Subtle differences in device characteristics can lead to large performance variations when different optimizations are applied. As we will see, this is especially true for a mobile GPU such as the ARM Mali GPU which has a very different architecture than desktop-class GPUs. Code optimized and tuned for one type of GPUs is unlikely to achieve the performance potential on another type of GPUs. Auto-tuners have traditionally been an answer to this performance portability challenge. For instance, they have been successful on CPUs for matrix operations, which are used as building blocks in many high-performance applications. However, they are much harder to design for different classes of GPUs, given the wide variety of hardware characteristics. In this paper, we take a different perspective and show how performance portability for matrix multiplication is achieved using a compiler approach. This approach is based on a recently developed generic technique that combines a high-level programming model with a system of rewrite rules. Programs are automatically rewritten in successive steps, where optimizations decision are made.This approach is truly performance portable, resulting in high-performance code for very different types of architectures such as desktop and mobile GPUs. In particular, we achieve a speedup of 1.7x over a state-of-the-art auto-tuner on the ARM Mali GPU.\",\"\",\"978-1-4503-4482-1\",\"10.1145/2968455.2968521\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7745278\",\"\",\"Graphics processing units;Optimization;Mobile communication;Hardware;Instruction sets;Performance evaluation;Registers\",\"graphics processing units;mathematics computing;matrix multiplication;optimising compilers;rewriting systems;software portability\",\"matrix multiplication;rewrite-based GPU code generation;graphics processing units;general purpose parallel accelerators;programming APIs;OpenCL;mobile GPUs;high performance GPU code;ARM Mali GPU;code optimization;auto-tuners;performance portability;compiler approach;high-level programming model;optimizations decision\",\"\",\"4\",\"\",\"25\",\"\",\"17 Nov 2016\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"GPU-Accelerated Computations for Supersonic Flow Modeling on Hybrid Grids\",\"Z. Tian; J. Lai; F. Yang; H. Li\",\"College of Aerospace Science and Engineering, National University of Defense Technology,Changsha,China; College of Aerospace Science and Engineering, National University of Defense Technology,Changsha,China; College of Aerospace Science and Engineering, National University of Defense Technology,Changsha,China; College of Aerospace Science and Engineering, National University of Defense Technology,Changsha,China\",\"2020 5th International Conference on Mechanical, Control and Computer Engineering (ICMCCE)\",\"13 May 2021\",\"2020\",\"\",\"\",\"1391\",\"1397\",\"With its strong floating-point operation capability and high memory bandwidth in data parallelism, the graphics processing unit (GPU) has been widely used in general-purpose computing. GPU-based computations have been extensively applied in the field of computational fluid dynamics (CFD). This paper aims to design an extremely efficient double-precision GPU-accelerated parallel algorithm for supersonic flow computations on hybrid grids. Compute unified device architecture (CUDA) is used as a general-purpose parallel computing platform and programming model to perform parallel computing codes on GPUs. The cell-centered finite volume method based on unstructured grids is used in the spatial discretization of governing equations, whereas the three-stage explicit Runge-Kutta scheme with second-order accuracy is used for temporal discretization. The turbulence is solved by using the K-ω SST two-equation model. Three test cases are studied to validate the computational accuracy of the proposed algorithm. The numerical results agree well with the experiment data, thereby suggesting that the GPU-accelerated parallel algorithm has good accuracy.\",\"\",\"978-1-6654-2314-4\",\"10.1109/ICMCCE51767.2020.00305\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9421767\",\"graphics processing unit;compute unified device architecture;supersonic flow;hybrid grids;parallel algorithm\",\"Performance evaluation;Computational modeling;Computational fluid dynamics;Graphics processing units;Process control;Life estimation;Programming\",\"computational fluid dynamics;finite volume methods;graphics processing units;grid computing;parallel algorithms;parallel architectures;Runge-Kutta methods;supersonic flow\",\"GPU-accelerated computations;hybrid grids;floating-point operation capability;high memory bandwidth;data parallelism;graphics processing unit;GPU-based computations;computational fluid dynamics;double-precision GPU-accelerated parallel algorithm;supersonic flow computations;compute unified device architecture;programming model;parallel computing codes;cell-centered finite volume method;unstructured grids;three-stage explicit Runge-Kutta scheme;K-ω SST two-equation model;supersonic flow modeling;general-purpose parallel computing platform\",\"\",\"\",\"\",\"30\",\"\",\"13 May 2021\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Multimobile Robot Cooperative Localization Using Ultrawideband Sensor and GPU Acceleration\",\"J. Xin; G. Xie; B. Yan; M. Shan; P. Li; K. Gao\",\"Shaanxi Key Laboratory of Complex System Control and Intelligent Information Processing, Xi'an University of Technology, Xi'an 710048, China.; Shaanxi Key Laboratory of Complex System Control and Intelligent Information Processing, Xi'an University of Technology, Xi'an 710048, China (e-mail: guoxie@xaut.edu.cn); Shaanxi Key Laboratory of Complex System Control and Intelligent Information Processing, Xi'an University of Technology, Xi'an 710048, China.; Australian Centre for Field Robotics, The University of Sydney, Sydney, NSW 2006, Australia.; Shaanxi Key Laboratory of Complex System Control and Intelligent Information Processing, Xi'an University of Technology, Xi'an 710048, China.; Shaanxi Key Laboratory of Complex System Control and Intelligent Information Processing, Xi'an University of Technology, Xi'an 710048, China.\",\"IEEE Transactions on Automation Science and Engineering\",\"\",\"2021\",\"PP\",\"99\",\"1\",\"12\",\"To tackle the poor localization accuracy of multimobile robots caused by non-line-of-sight (NLOS) errors in a complex indoor environment and to meet the real-time requirement, this article proposes a multimobile robot cooperative localization system using ultrawideband (UWB) sensor and GPU hardware acceleration. First, a UWB multinode ranging network is established to obtain the relative distance information between robots and anchors. Then, the line-of-sight (LOS) and NLOS errors in distance information are effectively mitigated by using the proposed UWB ranging error mitigation algorithm based on the Bayesian filter. A cooperative particle filter (PF) localization algorithm based on the Gibbs sampling is designed to estimate the position information of each robot at any time. Finally, in order to improve the real-time performance of the collaborative localization system, a parallel Gibbs collaborative localization algorithm that can be accelerated by GPU is proposed considering the characteristics of GPU hardware and CUDA programming model. The experimental results of three TurtleBot2 mobile robots in real scene show that the proposed multimobile robot cooperative localization system using UWB technology can estimate the position information of each robot robustly and accurately, and the localization accuracy is superior to that of the popular extended Kalman filter (EKF) and PF algorithms. It is shown through further evaluations that the proposed parallel algorithm achieves about 3.2 times acceleration effect in the scenarios of three mobile robots. The speed gain is found more significant with more robots, which substantially improves the real-time performance of the cooperative localization system. In the test with seven mobile robots, the speedup is as high as 11.9, that is, the execution time of the algorithm is only 8.39% of that of the original algorithm.\",\"1558-3783\",\"\",\"10.1109/TASE.2021.3117949\",\"National Natural Science Foundation of China(grant numbers:61873200,61873201,U20A20225,61833013); National Key Research and Development Program of China(grant numbers:2018YFB1201500); \",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9576116\",\"Cooperative localization;GPU acceleration;multimobile robot systems;real scene;real time\",\"Location awareness;Robots;Robot sensing systems;Distance measurement;Real-time systems;Graphics processing units;Wireless sensor networks\",\"\",\"\",\"\",\"\",\"\",\"\",\"IEEE\",\"15 Oct 2021\",\"\",\"\",\"IEEE\",\"IEEE Early Access Articles\"\n\"Vispark: GPU-accelerated distributed visual computing using spark\",\"W. Choi; W. Jeong\",\"School of Electrical and Computer Engineering, Ulsan National Institute of Science and Technology, Ulsan, Republic of Korea; School of Electrical and Computer Engineering, Ulsan National Institute of Science and Technology, Ulsan, Republic of Korea\",\"2015 IEEE 5th Symposium on Large Data Analysis and Visualization (LDAV)\",\"7 Dec 2015\",\"2015\",\"\",\"\",\"125\",\"126\",\"With the growing need of big data processing in diverse application domains, MapReduce (e.g., Hadoop) becomes one of the standard computing paradigms for large-scale computing on a cluster system. Despite of its popularity, the current MapReduce framework suffers from inflexibility and inefficiency inherent from its programming model and system architecture. In order to address these problems, we propose Vispark, a novel extension of Spark for GPU-accelerated MapReduce processing on array-based scientific computing and image processing tasks. Vispark provides an easy-to-use, Python-like high-level language syntax and a novel data abstraction for MapReduce programming on a GPU cluster system. Vispark introduces a programming abstraction for accessing neighbor data in the mapper function, which greatly simplifies many image processing tasks using MapReduce by reducing memory footprints and bypassing the reduce stage. We demonstrate the performance of our prototype system on several visual computing tasks, such as image processing, and K-means clustering.\",\"\",\"978-1-4673-8517-6\",\"10.1109/LDAV.2015.7348080\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7348080\",\"\",\"Graphics processing units;Sparks;Kernel;Programming;Visualization;Arrays;Image processing\",\"Big Data;computer vision;graphics processing units;parallel programming;pattern clustering;software architecture;visual programming\",\"Vispark;GPU-accelerated distributed visual computing;big data processing;Hadoop;large-scale computing;GPU cluster system;system architecture;Spark;GPU-accelerated MapReduce processing;array-based scientific computing;image processing tasks;Python-like high-level language syntax;data abstraction;MapReduce programming;programming abstraction;neighbor data access;memory footprints reduction;K-means clustering\",\"\",\"2\",\"\",\"3\",\"\",\"7 Dec 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"A Data Communication Scheduler for Stream Programs on CPU-GPU Platform\",\"T. Tang; X. Xu; Y. Lin\",\"Nat. Lab. for Parallel & Distrib. Process., Nat. Univ. of Defense Technol., Changsha, China; Nat. Lab. for Parallel & Distrib. Process., Nat. Univ. of Defense Technol., Changsha, China; Nat. Lab. for Parallel & Distrib. Process., Nat. Univ. of Defense Technol., Changsha, China\",\"2010 10th IEEE International Conference on Computer and Information Technology\",\"16 Sep 2010\",\"2010\",\"\",\"\",\"139\",\"146\",\"In recent years, heterogeneous parallel system have become a focus research area in high performance computing field. Generally, in a heterogeneous parallel system, CPU provides the basic computing environment and special purpose accelerator (GPU in this paper) provides high computing performance. However, the overall performance of the system is prone to be limited by the data communication between the CPU and the GPU. Data communication is typically used to synchronize the array on the CPU and the stream (in AMD's terminology) on the GPU. In many cases, programmers just add data synchronization for each GPU invoking independently. It is easy to program in this manner but much redundant communication may be introduced, which will dramatically degrade the overall performance. To alleviate this problem, based on the stream programming model, we propose a heuristic data communication schedule approach in this paper. By analyzing the state transition of stream/array data pair, relaxing the synchronization strategy conditionally and considering optimization for branch and loop control structure, our approach can significantly reduce the redundant data communication in most cases.\",\"\",\"978-1-4244-7548-3\",\"10.1109/CIT.2010.63\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5578445\",\"GPU;data communication schedule;structural analysis\",\"Graphics processing unit;Data communication;Arrays;Kernel;Streaming media;Schedules\",\"computer graphic equipment;coprocessors;data communication;scheduling\",\"data communication scheduler;stream programs;CPU-GPU platform;heterogeneous parallel system;high performance computing field;stream programming model;synchronization strategy;loop control structure\",\"\",\"\",\"\",\"18\",\"\",\"16 Sep 2010\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Performance Analysis of Parallel Programming Paradigms on CPU-GPU Clusters\",\"B. N. Chandrashekhar; H. A. Sanjay; T. Srinivas\",\"Nitte meenakshi Institute of Technology,Department of Information science and Engineering,Benagluru,India,64; Nitte meenakshi Institute of Technology,Department of Information science and Engineering,Benagluru,India,64; Nitte meenakshi Institute of Technology,Department of Information science and Engineering,Benagluru,India,64\",\"2021 International Conference on Artificial Intelligence and Smart Systems (ICAIS)\",\"12 Apr 2021\",\"2021\",\"\",\"\",\"646\",\"651\",\"CPU-GPU based cluster computing in today's modern world encompasses the domain of complex and high-intensity computation. To exploit the efficient resource utilization of a cluster, traditional programming paradigm is not sufficient. Therefore, in this article, the performance parallel programming paradigms like OpenMP on CPU cluster and CUDA on GPU cluster using BFS and DFS graph algorithms is analyzed. This article analyzes the time efficiency to traverse the graphs with the given number of nodes in two different processors. Here, CPU with OpenMP platform and GPU with CUDA platform support multi-thread processing to yield results for various nodes. From the experimental results, it is observed that parallelization with the OpenMP programming model using the graph algorithm does not boost the performance of the CPU processors, instead, it decreases the performance by adding overheads like idling time, inter-thread communication, and excess computation. On the other hand, the CUDA parallel programming paradigm on GPU yields better results. The implementation achieves a speed-up of 187 to 240 times over the CPU implementation. This comparative study assists the programmers provocatively and select the optimum choice among OpenMP and CUDA parallel programming paradigms.\",\"\",\"978-1-7281-9537-7\",\"10.1109/ICAIS50930.2021.9395977\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9395977\",\"Breadth First Search(BFS);Central Processing Unit(CPU);CUDA;Depth First Search(DFS);Graphics Processing Unit(GPU) OpenMP;Performance analysis\",\"Parallel programming;Computational modeling;Graphics processing units;Clustering algorithms;Cluster computing;Performance analysis;Resource management\",\"cluster computing;graph theory;graphics processing units;message passing;multi-threading;parallel architectures;performance evaluation\",\"multithread processing;DFS graph algorithm;BFS graph algorithm;resource utilization;cluster computing;CUDA parallel programming paradigms;CPU processors;OpenMP programming model;parallelization;time efficiency;CPU-GPU clusters;performance analysis\",\"\",\"\",\"\",\"17\",\"\",\"12 Apr 2021\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Towards a parallelization and performance optimization of Viola and Jones algorithm in heterogeneous CPU-GPU mobile system\",\"A. Ghorbel; N. Ben Amor; M. Jallouli\",\"Computer and Embedded Systems Laboratory, Ecole Nationale d'Ingénieurs de Sfax (ENIS), Tunisia; Computer and Embedded Systems Laboratory, Ecole Nationale d'Ingénieurs de Sfax (ENIS), Tunisia; Computer and Embedded Systems Laboratory, Ecole Nationale d'Ingénieurs de Sfax (ENIS), Tunisia\",\"2015 15th International Conference on Intelligent Systems Design and Applications (ISDA)\",\"13 Jun 2016\",\"2015\",\"\",\"\",\"528\",\"532\",\"Parallel computing on heterogeneous multiprocessor architecture is a new technique used to tackle the complexity of actual media applications. Such technique is used on an embedded architecture composed of 2ARMs coupled to a GPU. In this paper, an approach for real time Viola and Jones face detection algorithm using CPU-GPU based platform is presented. First, the application is implemented and parallelized on two identical ARM CortexA9 CPUs using tasks and data levels parallelism. This technique does not achieve the timing objectives. To ensure greater performance while reducing energy ratio, we extend our parallelization technique to support a GPU as an accelerator to perform non graphical tasks. OpenCL, the heterogeneous parallel programming model, is used to ensure communication between CPU and GPU.\",\"2164-7151\",\"978-1-4673-8709-5\",\"10.1109/ISDA.2015.7489172\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7489172\",\"Parallel computing;GPU;mobile device\",\"Computer architecture;Neon;Graphics processing units;Acceleration;Hardware;Synchronization;Gray-scale\",\"face recognition;graphics processing units;microprocessor chips;mobile computing;parallel programming\",\"Viola algorithm performance optimization;Jones algorithm performance optimization;heterogeneous CPU-GPU mobile system;parallel computing;heterogeneous multiprocessor architecture;media applications;embedded architecture;face detection algorithm;identical ARM CortexA9 CPU;data level parallelism;task level parallelism;energy ratio reduction;parallelization technique;OpenCL;heterogeneous parallel programming model\",\"\",\"1\",\"\",\"14\",\"\",\"13 Jun 2016\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"A GPU implementation of tiled belief propagation on Markov Random Fields\",\"H. Eslami; T. Kasampalis; M. Kotsifakou\",\"Department of Computer Science University of Illinois at Urbana-Champaign Urbana, Illinois 61801; Department of Computer Science University of Illinois at Urbana-Champaign Urbana, Illinois 61801; Department of Computer Science University of Illinois at Urbana-Champaign Urbana, Illinois 61801\",\"2013 Eleventh ACM/IEEE International Conference on Formal Methods and Models for Codesign (MEMOCODE 2013)\",\"21 Nov 2013\",\"2013\",\"\",\"\",\"143\",\"146\",\"In the MEMOCODE Design Contest 2013, we are participating with a parallelized version of tiled belief propagation method for stereo matching. The proposed algorithm is implemented in CUDA programming model to leverage parallel processing capabilities of GPUs. In our solution, the original tiled belief propagation algorithm is combined with a number of novel optimizations specific to parallel programs in CUDA. For the given test inputs, the proposed solution runs in 7.96 milliseconds on Nvidia Tesla C2050, achieving acceptable accuracy with respect to the reference code. To the best of authors' knowledge, there is no prior work in optimizing a parallelized version of the tiled belief propagation algorithm.\",\"\",\"978-1-4799-0905-6\",\"\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6670953\",\"\",\"Message systems;Tiles;Belief propagation;Graphics processing units;Synchronization;Stereo vision;Parallel processing\",\"belief maintenance;graphics processing units;image matching;Markov processes;optimisation;parallel architectures;stereo image processing\",\"GPU implementation;tiled belief propagation;Markov random fields;MEMOCODE design contest 2013;stereo matching;CUDA programming model;parallel processing capabilities;optimizations;parallel programs;Nvidia Tesla C2050\",\"\",\"\",\"\",\"5\",\"\",\"21 Nov 2013\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Exploiting GPUDirect RDMA in Designing High Performance OpenSHMEM for NVIDIA GPU Clusters\",\"K. Hamidouche; A. Venkatesh; A. A. Awan; H. Subramoni; C. -H. Chu; D. K. Panda\",\"Dept. of Comput. Sci. & Eng., Ohio State Univ., Columbus, OH, USA; Dept. of Comput. Sci. & Eng., Ohio State Univ., Columbus, OH, USA; Dept. of Comput. Sci. & Eng., Ohio State Univ., Columbus, OH, USA; Dept. of Comput. Sci. & Eng., Ohio State Univ., Columbus, OH, USA; Dept. of Comput. Sci. & Eng., Ohio State Univ., Columbus, OH, USA; Dept. of Comput. Sci. & Eng., Ohio State Univ., Columbus, OH, USA\",\"2015 IEEE International Conference on Cluster Computing\",\"29 Oct 2015\",\"2015\",\"\",\"\",\"78\",\"87\",\"GPUDirect RDMA (GDR) brings the high-performance communication capabilities of RDMA networks like InfiniBand (IB) to GPUs (referred to as \"\"Device\"\"). It enables IB network adapters to directly write/read data to/from GPU memory. Partitioned Global Address Space (PGAS) programming models, such as OpenSHMEM, provide an attractive approach for developing scientific applications with irregular communication characteristics by providing shared memory address space abstractions, along with one-sided communication semantics. However, current approaches and designs of OpenSHMEM on GPU clusters do not take advantage of the GDR features leading to inefficiencies and sub-optimal performance. In this paper, we analyze the performance of various OpenSHMEM operations with different inter-node and intra-node communication configurations (Host-to-Device, Device-to-Device, and Device-to-Host) on GPU based systems. We propose novel designs that ensure \"\"truly one-sided\"\" communication for the different inter-/intra-node configurations identified above while working around the hardware limitations. To the best of our knowledge, this is the first work that investigates GDR-aware designs for OpenSHMEM communication operations. Experimental evaluations indicate 2.5X and 7X improvement in point-point communication for intra-node and inter-node, respectively. The proposed framework achieves 2.2µs for an intra-node 8 byte put operation from Host-to-Device, and 3.13µs for an inter-node 8 byte put operation from GPU to remote GPU. With Stencil2D application kernel from SHOC benchmark suite, we observe a 19% reduction in execution time on 64 GPU nodes. Further, for GPULBM application, we are able to improve the performance of the evolution phase by 53% and 45% on 32 and 64 GPU nodes, respectively.\",\"2168-9253\",\"978-1-4673-6598-7\",\"10.1109/CLUSTER.2015.21\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7307568\",\"PGAS;OpenSHMEM;GPU Direct RDMA;CUDA\",\"Graphics processing units;Performance evaluation;Peer-to-peer computing;Runtime;Electronics packaging;Programming;Pipeline processing\",\"application program interfaces;graphics processing units;parallel architectures;shared memory systems\",\"GPUDirect RDMA;GDR;high performance OpenSHMEM;NVIDIA GPU cluster;InfiniBand;IB network;partitioned global address space;PGAS programming model;shared memory address space abstraction;CUDA API\",\"\",\"8\",\"\",\"32\",\"\",\"29 Oct 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Designing a unified programming model for heterogeneous machines\",\"M. Garland; M. Kudlur; Y. Zheng\",\"NA; NA; Lawrence Berkeley Nat. Lab., Berkeley, CA, USA\",\"SC '12: Proceedings of the International Conference on High Performance Computing, Networking, Storage and Analysis\",\"25 Feb 2013\",\"2012\",\"\",\"\",\"1\",\"11\",\"While high-efficiency machines are increasingly embracing heterogeneous architectures and massive multithreading, contemporary mainstream programming languages reflect a mental model in which processing elements are homogeneous, concurrency is limited, and memory is a flat undifferentiated pool of storage. Moreover, the current state of the art in programming heterogeneous machines tends towards using separate programming models, such as OpenMP and CUDA, for different portions of the machine. Both of these factors make programming emerging heterogeneous machines unnecessarily difficult. We describe the design of the Phalanx programming model, which seeks to provide a unified programming model for heterogeneous machines. It provides constructs for bulk parallelism, synchronization, and data placement which operate across the entire machine. Our prototype implementation is able to launch and coordinate work on both CPU and GPU processors within a single node, and by leveraging the GASNet runtime, is able to run across all the nodes of a distributed-memory machine.\",\"2167-4337\",\"978-1-4673-0806-9\",\"10.1109/SC.2012.48\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6468503\",\"\",\"Graphics processing units;Programming;Instruction sets;Runtime;Message systems;Parallel processing\",\"distributed memory systems;multi-threading;programming languages\",\"distributed memory machine;GASNet runtime;GPU processors;CPU processors;data placement;Phalanx programming model;CUDA;OpenMP;undifferentiated pool;mental model;contemporary mainstream programming languages;massive multithreading;heterogeneous architectures;high efficiency machines;heterogeneous machines;unified programming model\",\"\",\"19\",\"\",\"25\",\"\",\"25 Feb 2013\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"A case study of OpenCL on an Android mobile GPU\",\"J. A. Ross; D. A. Richie; S. J. Park; D. R. Shires; L. L. Pollock\",\"Engility Corporation, Chantilly, VA, USA; Brown Deer Technology, Forest Hill, MD, USA; U.S. Army Research Laboratory, APG, MD, USA; U.S. Army Research Laboratory, APG, MD, USA; University of Delaware, Newark, USA\",\"2014 IEEE High Performance Extreme Computing Conference (HPEC)\",\"12 Feb 2015\",\"2014\",\"\",\"\",\"1\",\"6\",\"An observation in supercomputing in the past decade illustrates the transition of pervasive commodity products being integrated with the world's fastest system. Given today's exploding popularity of mobile devices, we investigate the possibilities for high performance mobile computing. Because parallel processing on mobile devices will be the key element in developing a mobile and computationally powerful system, this study was designed to assess the computational capability of a GPU on a low-power, ARM-based mobile device. The methodology for executing computationally intensive benchmarks on a handheld mobile GPU is presented, including the practical aspects of working with the existing Android-based software stack and leveraging the OpenCL-based parallel programming model. The empirical results provide the performance of an OpenCL N-body benchmark and an auto-tuning kernel parameterization strategy. The achieved computational performance of the low-power mobile Adreno GPU is compared with a quad-core ARM, an ×86 Intel processor, and a discrete AMD GPU.\",\"\",\"978-1-4799-6233-4\",\"10.1109/HPEC.2014.7040987\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7040987\",\"handheld GPU;OpenCL;Android;N-body\",\"Graphics processing units;Mobile communication;Androids;Humanoid robots;Performance evaluation;Benchmark testing;Computer architecture\",\"Android (operating system);graphics processing units;mobile computing;parallel programming\",\"Android mobile GPU;supercomputing;pervasive commodity product;mobile computing;parallel processing;mobile device;ARM;handheld mobile GPU;Android-based software stack;parallel programming;OpenCL N-body benchmark;autotuning kernel parameterization\",\"\",\"7\",\"\",\"25\",\"\",\"12 Feb 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Pro++: A Profiling Framework for Primitive-Based GPU Programming\",\"N. Bombieri; F. Busato; F. Fummi\",\"Department of Computer Science, University of Verona, Verona, Italy; Department of Computer Science, University of Verona, Verona, Italy; Department of Computer Science, University of Verona, Verona, Italy\",\"IEEE Transactions on Emerging Topics in Computing\",\"2 Sep 2018\",\"2018\",\"6\",\"3\",\"382\",\"394\",\"Parallelizing software applications through the use of existing optimized primitives is a common trend that mediates the complexity of manual parallelization and the use of less efficient directivebased programming models. Parallel primitive libraries allow software engineers to map any sequential code to a target many-core architecture by identifying the most computational intensive code sections and mapping them into one or more existing primitives. On the other hand, the spreading of such a primitivebased programming model and the different graphic processing unit (GPU) architectures has led to a large and increasing number of third-party libraries, which often provide different implementations of the same primitive, each one optimized for a specific architecture. From the developer point of view, this moves the actual problem of parallelizing the software application to selecting, among the several implementations, the most efficient primitives for the target platform. This paper presents Pro++, a profiling framework for GPU primitives that allows measuring the implementation quality of a given primitive by considering the target architecture characteristics. The framework collects the information provided by a standard GPU profiler and combines them into optimization criteria. The criteria evaluations are weighed to distinguish the impact of each optimization on the overall quality of the primitive implementation. This paper shows how the tuning of the different weights has been conducted through the analysis of five of the most widespread existing primitive libraries and how the framework has been eventually applied to improve the implementation performance of two standard and widespread primitives.\",\"2168-6750\",\"\",\"10.1109/TETC.2016.2546554\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7447754\",\"GPUs;performance model;parallel applications\",\"Graphics processing units;Computational modeling;Instruction sets;Computer architecture;Optimization;Measurement;Libraries\",\"graphics processing units;parallel programming;program diagnostics;software architecture;software libraries\",\"third-party libraries;software application;profiling framework;GPU primitives;optimization criteria;primitive-based GPU programming;parallel primitive libraries;computational intensive code sections;parallelization;directive-based programming models;many-core architecture;Pro++;GPU profiler;primitive-based programming model;graphic processing unit architectures\",\"\",\"\",\"\",\"40\",\"IEEE\",\"5 Apr 2016\",\"\",\"\",\"IEEE\",\"IEEE Journals\"\n\"Atmospheric Model Cluster Performance Evaluation on Hybrid MPI/OpenMP/Cuda Programming Model Platform\",\"C. Osthoff; R. P. Souto; P. L. S. Dias; J. Panetta; P. Lopes\",\"LNCC (Nat. Lab. for Sci. Comput.), Petropolis, Brazil; LNCC (Nat. Lab. for Sci. Comput.), Petropolis, Brazil; LNCC (Nat. Lab. for Sci. Comput.), Petropolis, Brazil; Nat. Lab. for Space Res., INPE, Sao Jose dos Campos, Brazil; Nat. Lab. for Space Res., INPE, Sao Jose dos Campos, Brazil\",\"2012 31st International Conference of the Chilean Computer Science Society\",\"2 Jan 2014\",\"2012\",\"\",\"\",\"216\",\"222\",\"This work discuss the parallel performance of a global numerical simulation model, Ocean-Land-Atmosphere Model (OLAM), on a hybrid multicore/GPU cluster environment, under the following programming models: 1) OLAM MPI implementation, on the multicore system, 2) OLAM hybrid MPI/OpenMP, which starts one MPI process on each node of the platform and one OpenMP thread on each core of the node, 3) OLAM hybrid MPI/OpenMP/Cuda implementation, which starts one MPI process on each node of the platform, one OpenMP threads on each core of the node and Cuda kernels on the GPUs. The results shows that the adopted programming model impacts significantly the performance of the application. We show that as we increase the number of cores, the OLAM MPI parallel implementation running one process on each cluster core executes faster than the other implementations.\",\"1522-4902\",\"978-1-4799-2938-2\",\"10.1109/SCCC.2012.32\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6694092\",\"Cluster;Multicore;GPU;Atmospheric Numerical Simulation Model;High Performance Computing\",\"Atmospheric modeling;Graphics processing units;Computational modeling;Numerical models;Multicore processing;Kernel;Performance evaluation\",\"atmospheric techniques;geophysics computing;graphics processing units;message passing;multiprocessing systems;multi-threading;parallel architectures\",\"atmospheric model cluster performance evaluation;hybrid MPI/OpenMP/Cuda programming model platform;parallel performance;global numerical simulation model;ocean-land-atmosphere model;hybrid multicore/GPU cluster environment;programming models;multicore system;MPI process;OpenMP thread;Cuda kernels;OLAM MPI parallel implementation;cluster core\",\"\",\"1\",\"\",\"14\",\"\",\"2 Jan 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Performance and Power Efficiency Analysis of the Symmetric Cryptograph on Two Stream Processor Architectures\",\"G. Xu; H. An; G. Liu; P. Yao; M. Xu; W. Han; X. Li; X. Hao\",\"Dept. of Comput. Sci. & Technol., Univ. of Sci. & Technol. of China, Hefei, China; Dept. of Comput. Sci. & Technol., Univ. of Sci. & Technol. of China, Hefei, China; Dept. of Comput. Sci. & Technol., Univ. of Sci. & Technol. of China, Hefei, China; Dept. of Comput. Sci. & Technol., Univ. of Sci. & Technol. of China, Hefei, China; Dept. of Comput. Sci. & Technol., Univ. of Sci. & Technol. of China, Hefei, China; Dept. of Comput. Sci. & Technol., Univ. of Sci. & Technol. of China, Hefei, China; Dept. of Comput. Sci. & Technol., Univ. of Sci. & Technol. of China, Hefei, China; Dept. of Comput. Sci. & Technol., Univ. of Sci. & Technol. of China, Hefei, China\",\"2009 Fifth International Conference on Intelligent Information Hiding and Multimedia Signal Processing\",\"17 Nov 2009\",\"2009\",\"\",\"\",\"917\",\"920\",\"Multimedia and some scientific applications have achieved good performance on the stream processor architecture by employing the stream programming model. In order to find out the way to accelerate the symmetric cryptograph on stream processor, we implement and analyze cryptograph algorithms on different stream processors in this paper. Four cipher algorithms including RC5, AES, TWOFISH and 3DES in ECB model are implemented on three platforms, which are stream processor SPI Storm SP16-G160, NVIDIA GeForce 9800GTX, Intel Core2 dual-core processor E7300. The difference of architecture between two stream processors and the character of programming model are described. When we compare throughput rate of these applications, 9800GTX is shown with 4-30x performance improvement over E7300, SP16 achieves the highest power efficiency and obtains 15-20x increase over E7300 in Gops/Watt.\",\"\",\"978-1-4244-4717-6\",\"10.1109/IIH-MSP.2009.41\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5337159\",\"cryptograph;stream processor;GPU;stream programming model;accelerate;power efficiency\",\"Performance analysis;Cryptography;Streaming media;Computer architecture;Acceleration;Signal processing algorithms;Storms;Multimedia systems;High performance computing;Hardware\",\"computer architecture;cryptography;microcomputers;parallel processing;performance evaluation\",\"performance analysis;power efficiency analysis;symmetric cryptograph;stream processor architecture;multimedia application;scientific application;stream programming model;cryptograph algorithms;cipher algorithms;RC5;AES;TWOFISH;3DES;SPI Storm SP16-G160;NVIDIA GeForce 9800GTX;Intel Core2 dual-core processor E7300\",\"\",\"1\",\"\",\"7\",\"\",\"17 Nov 2009\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Dense linear algebra solvers for multicore with GPU accelerators\",\"S. Tomov; R. Nath; H. Ltaief; J. Dongarra\",\"Department of Electrical Engineering and Computer Science, University of Tennessee, Knoxville, USA; Department of Electrical Engineering and Computer Science, University of Tennessee, Knoxville, USA; Department of Electrical Engineering and Computer Science, University of Tennessee, Knoxville, USA; Department of Electrical Engineering and Computer Science, University of Tennessee, Knoxville, USA\",\"2010 IEEE International Symposium on Parallel & Distributed Processing, Workshops and Phd Forum (IPDPSW)\",\"24 May 2010\",\"2010\",\"\",\"\",\"1\",\"8\",\"Solving dense linear systems of equations is a fundamental problem in scientific computing. Numerical simulations involving complex systems represented in terms of unknown variables and relations between them often lead to linear systems of equations that must be solved as fast as possible. We describe current efforts toward the development of these critical solvers in the area of dense linear algebra (DLA) for multicore with GPU accelerators. We describe how to code/develop solvers to effectively use the high computing power available in these new and emerging hybrid architectures. The approach taken is based on hybridization techniques in the context of Cholesky, LU, and QR factorizations. We use a high-level parallel programming model and leverage existing software infrastructure, e.g. optimized BLAS for CPU and GPU, and LAPACK for sequential CPU processing. Included also are architecture and algorithm-specific optimizations for standard solvers as well as mixed-precision iterative refinement solvers. The new algorithms, depending on the hardware configuration and routine parameters, can lead to orders of magnitude acceleration when compared to the same algorithms on standard multicore architectures that do not contain GPU accelerators. The newly developed DLA solvers are integrated and freely available through the MAGMA library.\",\"\",\"978-1-4244-6534-7\",\"10.1109/IPDPSW.2010.5470941\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5470941\",\"Dense Linear Algebra Solvers;GPU Accelerators;Multicore;MAGMA;Hybrid Algorithms\",\"Linear algebra;Multicore processing;Acceleration;Iterative algorithms;Linear accelerators;Linear systems;Equations;Computer architecture;Scientific computing;Numerical simulation\",\"coprocessors;linear algebra;mathematics computing;matrix decomposition;multiprocessing systems;optimisation;parallel programming\",\"dense linear algebra solvers;multicore systems;GPU accelerators;graphics processing unit;hybridization techniques;Cholesky factorization;LU factorization;QR factorization;parallel programming model;optimized BLAS software;LAPACK software;architecture-specific optimization;algorithm-specific optimization;MAGMA library\",\"\",\"117\",\"2\",\"14\",\"\",\"24 May 2010\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"An Efficient GPU Implementation for Large Scale Individual-Based Simulation of Collective Behavior\",\"U. Erra; B. Frola; V. Scarano; I. Couzin\",\"Dipt. di Mat. e Inf., Univ. della Basilicata, Italy; Dipt. di Mat. e Applicazioni, Univ. di Salerno, Salerno, Italy; Dipt. di Mat. e Applicazioni, Univ. di Salerno, Salerno, Italy; Dept. of Ecology & Evolutionary Biol., Princeton Univ., Princeton, NJ, USA\",\"2009 International Workshop on High Performance Computational Systems Biology\",\"30 Oct 2009\",\"2009\",\"\",\"\",\"51\",\"58\",\"In this work we describe a GPU implementation for an individual-based model for fish schooling. In this model each fish aligns its position and orientation with an appropriate average of its neighbors' positions and orientations. This carries a very high computational cost in the so-called nearest neighbors search. By leveraging the GPU processing power and the new programming model called CUDA we implement an efficient framework which permits to simulate the collective motion of high-density individual groups. In particular we present as a case study a simulation of motion of millions of fishes. We describe our implementation and present extensive experiments which demonstrate the effectiveness of our GPU implementation.\",\"\",\"978-0-7695-3809-9\",\"10.1109/HiBi.2009.11\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5298705\",\"gpu;individual-based model;large scale simulation\",\"Large-scale systems;Biological system modeling;Computational modeling;Marine animals;Educational institutions;Computational systems biology;Birds;Organisms;Graphics;Sorting\",\"artificial life;C language;computer graphics;digital simulation;search problems\",\"large scale individual-based simulation;collective behavior;fish schooling;computational cost;nearest neighbor search;GPU processing power;CUDA programming model;graphics processing unit;collective motion;fish motion simulation\",\"\",\"15\",\"\",\"25\",\"\",\"30 Oct 2009\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n"
  },
  {
    "path": "notebooks/data/ieee_2.csv",
    "content": "\"Document Title\",Authors,\"Author Affiliations\",\"Publication Title\",Date Added To Xplore,\"Publication Year\",\"Volume\",\"Issue\",\"Start Page\",\"End Page\",\"Abstract\",\"ISSN\",ISBNs,\"DOI\",Funding Information,PDF Link,\"Author Keywords\",\"IEEE Terms\",\"INSPEC Controlled Terms\",\"INSPEC Non-Controlled Terms\",\"Mesh_Terms\",Article Citation Count,Patent Citation Count,\"Reference Count\",\"License\",Online Date,Issue Date,\"Meeting Date\",\"Publisher\",Document Identifier\n\"Experiences with OpenMP, PGI, HMPP and OpenACC Directives on ISO/TTI Kernels\",\"S. Ghosh; T. Liao; H. Calandra; B. M. Chapman\",\"Dept. of Comput. Sci., Univ. of Houston, Houston, TX, USA; TOTAL E&P R&T USA, LLC, Houston, TX, USA; TOTAL E&P, Pau, France; Dept. of Comput. Sci., Univ. of Houston, Houston, TX, USA\",\"2012 SC Companion: High Performance Computing, Networking Storage and Analysis\",\"11 Apr 2013\",\"2012\",\"\",\"\",\"691\",\"700\",\"GPUs are slowly becoming ubiquitous devices in High Performance Computing, as their capabilities to enhance the performance per watt of compute intensive algorithms as compared to multicore CPUs have been identified. The primary shortcoming of a GPU is usability, since vendor specific APIs are quite different from existing programming languages, and it requires a substantial knowledge of the device and programming interface to optimize applications. Hence, lately a growing number of higher level programming models are targeting GPUs to alleviate this problem. The ultimate goal for a high-level model is to expose an easy-to-use interface for the user to offload compute intensive portions of code (kernels) to the GPU, and tune the code according to the target accelerator to maximize overall performance with a reduced development effort. In this paper, we share our experiences of three of the notable high-level directive based GPU programming models - PGI, CAPS and OpenACC (from CAPS and PGI) on an Nvidia M2090 GPU. We analyze their performance and programmability against Isotropic (ISO)/Tilted Transversely Isotropic (TTI) finite difference kernels, which are primary components in the Reverse Time Migration (RTM) application used by oil and gas exploration for seismic imaging of the sub-surface. When ported to a single GPU using the mentioned directives, we observe an average 1.5-1.8x improvement in performance for both ISO and TTI kernels, when compared with optimized multi-threaded CPU implementations using OpenMP.\",\"\",\"978-0-7695-4956-9\",\"10.1109/SC.Companion.2012.95\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6495877\",\"GPGPU;OpenMP;OpenACC;PGI;CAPS;HMPP;ISO;TTI;Finite Difference Stencils;RTM\",\"\",\"finite difference methods;graphics processing units;multiprocessing systems;parallel processing;user interfaces\",\"OpenMP directive;PGI directive;HMPP directive;OpenACC directive;GPU;graphics processing unit;high performance computing;compute intensive algorithm;multicore CPU;vendor specific API;application program interface;programming language;programming interface;easy-to-use user interface;Nvidia M2090 GPU;GPU programming model;isotropic kernel;tilted transversely isotropic kernel;ISO-TTI finite difference kernel;reverse time migration;RTM application\",\"\",\"6\",\"\",\"11\",\"\",\"11 Apr 2013\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Evaluating Multi-core and Many-Core Architectures through Parallelizing a High-Order WENO Solver\",\"L. Deng; H. Bai; D. Zhao; F. Wang\",\"China Aerodynamics R&D Center, Comput. Aerodynamics Inst., Mianyang, China; China Aerodynamics R&D Center, Comput. Aerodynamics Inst., Mianyang, China; China Aerodynamics R&D Center, Comput. Aerodynamics Inst., Mianyang, China; Sch. of Comput., Nat. Univ. of Defense Technol., Changsha, China\",\"2016 IEEE Trustcom/BigDataSE/ISPA\",\"9 Feb 2017\",\"2016\",\"\",\"\",\"2167\",\"2174\",\"This paper studies the implementation and optimization of a high-order weighted essentially non-oscillatory (WENO) solver to the solution of the Euler equations on the multi-core and many-core architectures (Intel Ivy Bridge CPU, Intel Xeon Phi 7110P coprocessor and NVIDIA Kepler K20c GPU). The implementation of up to ninth-order accurate WENO schemes is used in the solver. For the GPU platform, both the OpenACC-based and CUDA-based versions of different WENO schemes are developed. To achieve high performance, various optimizatin techniques are used. For Ivy Bridge CPU and MIC, we focus on three categories of optimization techniques: thread parallelism for multi-/many-core scaling, data parallelism to exploit the SIMD mechanism and improving on-chip data reuse, to maximize the performance. Also, we provide an in-depth analysis on the performance differences between Ivy Bridge and MIC. The numerical experiments show that the OpenACC performance can reach up to 84% in contrast to CUDA performance with careful manual optimizations, and the proposed CUDA-based version can achieve a speedup of 9.0 on a Kepler GPU in comparison with the sequential run. We also notice that the speedups of different WENO schemes roughly reach 15.9 and 192.2 on the two Ivy Bridge CPUs and the MIC, respectively. Besides, we conduct a systematic comparison of the three platforms in three aspects: performance, programmability, and power efficiency. Our insights facilitate the programmers to select the right platform with a suitable programming model according to their target applications.\",\"2324-9013\",\"978-1-5090-3205-1\",\"10.1109/TrustCom.2016.0333\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7847216\",\"high-order;WENO solver;Euler equations;performance;programmability;optimization techniques;power efficiency;Ivy Bridge;MIC;GPU;CUDA;OpenACC\",\"Graphics processing units;Mathematical model;Optimization;Programming;Bridges;Microwave integrated circuits;Computer architecture\",\"differential equations;graphics processing units;multiprocessing systems;optimisation;parallel architectures\",\"multicore architecture evaluation;many-core architecture evaluation;high-order WENO solver;high-order weighted essentially nonscillatory solver;Euler equations;Intel Ivy Bridge CPU;Intel Xeon Phi 7110P coprocessor;NVIDIA Kepler K20c GPU;OpenACC-based version;CUDA-based version;optimization techniques;thread parallelism;data parallelism;multicore scaling;many-core scaling;SIMD mechanism;on-chip data reuse improvement;programming model\",\"\",\"1\",\"\",\"22\",\"\",\"9 Feb 2017\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"A customizable MapReduce framework for complex data-intensive workflows on GPUs\",\"Z. Qiao; Shuwen Liang; H. Jiang; Song Fu\",\"Department of Computer Science and Engineering, University of North Texas, United States of America; Department of Computer Science and Engineering, University of North Texas, United States of America; Department of Computer Science, Arkansas State University, United States of America; Department of Computer Science and Engineering, University of North Texas, United States of America\",\"2015 IEEE 34th International Performance Computing and Communications Conference (IPCCC)\",\"18 Feb 2016\",\"2015\",\"\",\"\",\"1\",\"8\",\"The MapReduce programming model has been widely used in big data and cloud applications. Criticism on its inflexibility when being applied to complicated scientific applications recently emerges. Several techniques have been proposed to enhance its flexibility. However, some of them exert special requirements on applications, while others fail to support the increasingly popular coprocessors, such as Graphics Processing Unit (GPU). In this paper, we propose MR-Graph, a customizable and unified framework for GPU-based MapReduce, which aims to improve the flexibility and performance of MapReduce. MR-Graph addresses the limitations and restrictions of the traditional MapReduce execution paradigm. The three execution modes integrated in MR-Graph facilitates users to write their applications in a more flexible fashion by defining a Map and Reduce function call graph. MR-Graph efficiently explores the memory hierarchy in GPUs to reduce the data transfer overhead between execution stages and accommodate big data applications.We have implemented a prototype of MR-Graph and experimental results show the effectiveness of using MR-Graph for flexible and scalable GPU-based MapReduce computing.\",\"2374-9628\",\"978-1-4673-8590-9\",\"10.1109/PCCC.2015.7410298\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7410298\",\"MapReduce;GPU;Customizable;Data Intensive;Iterative;Recursive\",\"Graphics processing units;Programming;Computational modeling;Data models;Parallel processing;Big data;Computer architecture\",\"Big Data;cloud computing;graph theory;graphics processing units;parallel processing\",\"customizable MapReduce framework;complex data-intensive workflows;MapReduce programming model;big data applications;cloud applications;graphics processing unit;MR-Graph;MapReduce execution paradigm;map and reduce function call graph;memory hierarchy;data transfer overhead;big data applications;GPU-based MapReduce computing\",\"\",\"2\",\"\",\"18\",\"\",\"18 Feb 2016\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Human Skin Colour Detection Algorithm Optimization with CUDA\",\"D. Ghorpade; A. D. Thakare\",\"Dept. of Computer Engineering Pimpri Chinchwad College of Engineering, Pune, India; Dept. of Computer Engineering Pimpri Chinchwad College of Engineering, Pune, India\",\"2017 International Conference on Computing, Communication, Control and Automation (ICCUBEA)\",\"13 Sep 2018\",\"2017\",\"\",\"\",\"1\",\"6\",\"This Human Skin Colour detection is analyzed to be a most suitable and strong cue for face detection and face recognition which finds various application in domain like surveillance, face biometrics, gesture recognition, interactive game application and many other. These applications require fast image processing in real time and demands enormously high performance with respect to time and processing speed. Earlier work done on sequential architecture does not provide required capability and can be achieved by parallel programming. As Image processing applications shows high degree of parallelism, they prove excellent source for multi-core platform. We can use GPU multithreaded parallel computing techniques to improve the speed of image processing. The paper proposes a data parallelism programming model for Human Skin Colour Detection algorithm. The objective is to increase the computational speed of the algorithm through data parallelism using CUDA framework. The framework is supported by OpenCV libraries and implemented by GPU (Graphics Processing Unit). The evaluation is done on basis of comparative analysis of serial and parallel programming computing. The pixel based Explicitly Defined Region skin classifier is used and RGB colour space is chosen due to its wider use in storing and processing of digital image data. To gain substantial acceleration in image computations, skin classifier code is off-loaded to GPU having compute capacity of 3.5 and rest of code is executed on CPU. We have tested module on static images, as well as on live camera captured images. SFA standard dataset is utilized to evaluate performance. Speedup of 23.45% was achieved using parallel programming.\",\"\",\"978-1-5386-4008-1\",\"10.1109/ICCUBEA.2017.8464010\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8464010\",\"Human skin colour;GPU;Image processing;CUDA;Parallel processing;Colour space;RGB colour space;Skin classifier\",\"Graphics processing units;Image color analysis;Skin;Instruction sets;Parallel processing;Computational modeling;Kernel\",\"face recognition;graphics processing units;image classification;image colour analysis;multiprocessing systems;multi-threading;object detection\",\"image processing applications;graphics processing unit;OpenCV libraries;pixel based explicitly defined region skin classifier;digital image data storage;SFA standard dataset;live camera captured images;static images;skin classifier code;image computations;RGB colour space;CUDA framework;computational speed;data parallelism programming model;GPU multithreaded parallel computing techniques;multicore platform;parallel programming;processing speed;fast image processing;interactive game application;gesture recognition;face biometrics;face recognition;face detection\",\"\",\"\",\"\",\"20\",\"\",\"13 Sep 2018\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"A way for accelerating DNA sequences reconstruction problem based on CUDA\",\"Y. Zhong; J. Lin; B. Wang; C. Tao; X. Wen; C. Nian\",\"Computer Science and Engineering Department, Sichuan University Jinjiang College, Penshan 620860, China; Computer Science and Engineering Department, Sichuan University Jinjiang College, Penshan 620860, China; Computer Science and Engineering Department, Sichuan University Jinjiang College, Penshan 620860, China; Computer Science and Engineering Department, Sichuan University Jinjiang College, Penshan 620860, China; Computer Science and Engineering Department, Sichuan University Jinjiang College, Penshan 620860, China; Computer Science and Engineering Department, Sichuan University Jinjiang College, Penshan 620860, China\",\"2014 International Conference on Advances in Computing, Communications and Informatics (ICACCI)\",\"1 Dec 2014\",\"2014\",\"\",\"\",\"151\",\"157\",\"Traditionally, shotgun for DNA sequences alignment is one of the main method of bioinformatics. It is used to break a long DNA sequence into small fragments. This paper introduces a new method to improve the efficiency of DNA sequence reconstruction after shotgun method using construction suffix array based on CUDA programming model. The experimental results show the construction of suffix array using GPU is an more efficient approach on Intel(R) Core(TM) i3-3110K quad-core and NVIDIA GeForce 610M GPU. Consequently, The experiment presents the efficiency of GPU performance compared with CPU performance, and study shows the method is more than 20 times speedup than that of CPU serial implementation.\",\"\",\"978-1-4799-3080-7\",\"10.1109/ICACCI.2014.6968196\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6968196\",\"CUDA;GPU;shotgun method;superstring;DNA sequence reassemble;suffix array;radix sort\",\"DNA;Graphics processing units;Arrays\",\"bioinformatics;DNA;graphics processing units;parallel architectures\",\"DNA sequences reconstruction problem;DNA sequences alignment;bioinformatics;long DNA sequence;DNA sequence reconstruction;shotgun method;construction suffix array;CUDA programming model;Intel Core i3-3110K quadcore;NVIDIA GeForce 610M GPU\",\"\",\"\",\"\",\"13\",\"\",\"1 Dec 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Accelerating data clustering on GPU-based clusters under shared memory abstraction\",\"K. I. Karantasis; E. D. Polychronopoulos; G. N. Dimitrakopoulos\",\"High Performance Information Systems Lab, School of Computer Engineering and Informatics, University of Patras, Rio, Greece 26500; High Performance Information Systems Lab, School of Computer Engineering and Informatics, University of Patras, Rio, Greece 26500; High Performance Information Systems Lab, School of Computer Engineering and Informatics, University of Patras, Rio, Greece 26500\",\"2010 IEEE International Conference On Cluster Computing Workshops and Posters (CLUSTER WORKSHOPS)\",\"28 Oct 2010\",\"2010\",\"\",\"\",\"1\",\"5\",\"Many-core graphics processors are playing today an important role in the advancements of modern highly concurrent processors. Their ability to accelerate computation is being explored under several scientific fields. In the current paper we present the acceleration of a widely used data clustering algorithm, K-means, in the context of high performance GPU clusters. As opposed to most related implementation efforts that use MPI to port their target applications on a GPU cluster, our implementation follows the Software Distributed Shared Memory (SDSM) paradigm in order to distribute information and computation across the accelerator cluster. In order to investigate the efficiency of a programming model that offers shared memory abstraction on GPU clusters we present two implementations, one that is based on a SDSM implementation of OpenMP and another that utilizes the Pleiad cluster middleware on top of the Java platform. The first results show that such an implementation is feasible in order to accelerate a broad category of large scale, data intensive applications, among which K-means is a characteristic case.\",\"\",\"978-1-4244-8396-9\",\"10.1109/CLUSTERWKSP.2010.5613079\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5613079\",\"\",\"Graphics processing unit;Clustering algorithms;Programming;Middleware;Acceleration;Graphics\",\"data handling;distributed shared memory systems;message passing;multiprocessing programs;pattern clustering\",\"data clustering;GPU-based clusters;shared memory abstraction;many-core graphics processors;concurrent processors;K-means algorithm;MPI;software distributed shared memory;OpenMP\",\"\",\"6\",\"\",\"24\",\"\",\"28 Oct 2010\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Design and evaluation of a parallel k-nearest neighbor algorithm on CUDA-enabled GPU\",\"S. Liang; Y. Liu; C. Wang; L. Jian\",\"Graduate University of Chinese Academy of Sciences, Beijing, 100190, China; Graduate University of Chinese Academy of Sciences, Beijing, 100190, China; Agilent Technologies, Beijing, 100102, China; Graduate University of Chinese Academy of Sciences, Beijing, 100190, China\",\"2010 IEEE 2nd Symposium on Web Society\",\"21 Oct 2010\",\"2010\",\"\",\"\",\"53\",\"60\",\"Recent developments in Graphics Processing Units (GPUs) have enabled inexpensive high performance computing for general-purpose applications. Due to GPU's tremendous computing capability, it has emerged as the co-processor of CPU to achieve a high overall throughput. CUDA programming model provides the programmers adequate C language like APIs to better exploit the parallel power of the GPU. K-nearest neighbor (KNN) is a widely used classification technique and has significant applications in various domains, especially in text classification. The computational-intensive nature of KNN requires a high performance implementation. In this paper, we propose CUKNN, a CUDA-based parallel implementation of KNN. It launches two CUDA kernels, distance calculation kernel and selecting kernel. In the distance calculation kernel, a great number of concurrent CUDA threads are issued, where each thread performs the calculation between the query object and a reference object; in the selecting kernel, threads in a block find the local-k nearest neighbors of the query object concurrently, and then a thread is invoked to find the global-k nearest neighbors out of the queues of local-k neighbors. Various CUDA optimization techniques are applied to maximize the utilization of GPU. We evaluate our implementation by using synthetic dataseis and a real physical simulation dataset. The experimental results demonstrate that CUKNN outperforms the serial KNN on an HP xw8600 workstation significantly, achieving up to 46.7IX speedup on the synthetic dataseis and 42.49X on the physical simulation dataset including I/O cost. It also shows good scalability when varying the number of dimensions of the reference dataset, the number of objects in the reference dataset, and the number of objects in the query dataset.\",\"2158-6993\",\"978-1-4244-6359-6\",\"10.1109/SWS.2010.5607480\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5607480\",\"\",\"Graphics processing unit;Instruction sets;Kernel;Nearest neighbor searches;Computational modeling;Programming;Classification algorithms\",\"C language;computer graphic equipment;coprocessors;optimisation;pattern classification\",\"parallel k-nearest neighbor algorithm;CUDA-enabled GPU;graphics processing units;coprocessor;C language;KNN;classification technique;text classification;parallel implementation;CUDA optimization techniques;query dataset\",\"\",\"12\",\"1\",\"18\",\"\",\"21 Oct 2010\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Iterative tensor tracking using GPU for textile fabric defect detection\",\"K. L. Mak; X. W. Tian\",\"Department of Industrial and Manufacturing Systems Engineering, The University of Hong Kong, China; Department of Industrial and Manufacturing Systems Engineering, The University of Hong Kong, China\",\"The 2010 International Conference on Green Circuits and Systems\",\"9 Aug 2010\",\"2010\",\"\",\"\",\"375\",\"380\",\"This paper presents an efficient real-time implementation of an unsupervised textile fabric defect detection algorithm called ITT using the concept of iterative tensor tracking on graphics processing unit (GPU). The algorithm adopts a new local image descriptor, Spatial Histograms of Oriented Gradients (S-HOG), which is shift-invariant, light insensitive and space scalable. For a given textile fabric image, ITT iteratively updates and then analyzes S-HOG using tensor operations, in particular tensor decomposition to detect textile defects. To speedup the calculation required, ITT is implemented on the GPU using the Compute Unified Device Architecture (CUDA) programming model. The respective computational efficiencies of implementing ITT on the GPU and on the CPU are compared by using experiments. The results demonstrate that the computation speed of the former is on average thirty times and ten times faster than that of the later for updating the S-HOG and for detecting defects respectively because of its parallel processing nature.\",\"\",\"978-1-4244-6878-2\",\"10.1109/ICGCS.2010.5543036\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5543036\",\"\",\"Tensile stress;Textiles;Fabrics;Detection algorithms;Graphics;Iterative algorithms;Histograms;Image analysis;Computer architecture;Computational efficiency\",\"computer graphic equipment;coprocessors;fabrics;iterative methods;parallel architectures;production engineering computing;tensors;textiles;tracking\",\"iterative tensor tracking;GPU;textile fabric defect detection;real-time implementation;graphics processing unit;local image descriptor;spatial histograms of oriented gradients;textile fabric image;tensor operations;tensor decomposition;compute unified device architecture programming;computation speed;parallel processing\",\"\",\"1\",\"\",\"9\",\"\",\"9 Aug 2010\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"An Evaluation of Unified Memory Technology on NVIDIA GPUs\",\"W. Li; G. Jin; X. Cui; S. See\",\"Center for High Performance Comput., Shanghai Jiao Tong Univ., Shanghai, China; Tokyo Inst. of Technol., Tokyo, Japan; Center for High Performance Comput., Shanghai Jiao Tong Univ., Shanghai, China; Center for High Performance Comput., Shanghai Jiao Tong Univ., Shanghai, China\",\"2015 15th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing\",\"9 Jul 2015\",\"2015\",\"\",\"\",\"1092\",\"1098\",\"Unified Memory is an emerging technology which is supported by CUDA 6.X. Before CUDA 6.X, the existing CUDA programming model relies on programmers to explicitly manage data between CPU and GPU and hence increases programming complexity. CUDA 6.X provides a new technology which is called as Unified Memory to provide a new programming model that defines CPU and GPU memory space as a single coherent memory (imaging as a same common address space). The system manages data access between CPU and GPU without explicit memory copy functions. This paper is to evaluate the Unified Memory technology through different applications on different GPUs to show the users how to use the Unified Memory technology of CUDA 6.X efficiently. The applications include Diffusion3D Benchmark, Parboil Benchmark Suite, and Matrix Multiplication from the CUDA SDK Samples. We changed those applications to corresponding Unified Memory versions and compare those with the original ones. We selected the NVIDIA Keller K40 and the Jetson TK1, which can represent the latest GPUs with Keller architecture and the first mobile platform of NVIDIA series with Keller GPU. This paper shows that Unified Memory versions cause 10% performance loss on average. Furthermore, we used the NVIDIA Visual Profiler to dig the reason of the performance loss by the Unified Memory technology.\",\"\",\"978-1-4799-8006-2\",\"10.1109/CCGrid.2015.105\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7152596\",\"Unified Memory;Heterogeneous Computing;CUDA programming model\",\"Graphics processing units;Benchmark testing;Kernel;Programming;Computational modeling;Memory management;Random access memory\",\"graphics processing units;parallel architectures;storage management\",\"unified memory technology;NVIDIA GPUs;CUDA 6.X;CUDA programming model;data management;CPU;programming complexity;single coherent memory;Diffusion3D benchmark;parboil benchmark suite;matrix multiplication;CUDA SDK samples;NVIDIA Keller K40;Jetson TK1;Keller architecture;mobile platform;NVIDIA visual profiler\",\"\",\"27\",\"\",\"21\",\"\",\"9 Jul 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Improving Application Performance by Efficiently Utilizing Heterogeneous Many-core Platforms\",\"J. Shen; A. L. Varbanescu; H. Sips\",\"Parallel & Distrib. Syst. Group, Delft Univ. of Technol., Delft, Netherlands; Inf. Inst., Univ. of Amsterdam, Amsterdam, Netherlands; Parallel & Distrib. Syst. Group, Delft Univ. of Technol., Delft, Netherlands\",\"2015 15th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing\",\"9 Jul 2015\",\"2015\",\"\",\"\",\"709\",\"712\",\"Heterogeneous platforms integrating different types of processing units (such as multi-core CPUs and GPUs) are in high demand in high performance computing. Existing studies have shown that using heterogeneous platforms can improve application performance and hardware utilization. However, systematic methods to design, implement, and map applications to efficiently use heterogeneous computing resources are only very few. The goal of my PhD research is therefore to study such heterogeneous systems and propose systematic methods to allow many (classes of) applications to efficiently use them. After 3.5 years of PhD study, my contributions are (1) a thorough evaluation of a suitable programming model for heterogeneous computing, (2) a workload partitioning framework to accelerate parallel applications on heterogeneous platforms, (3) a modelling-based prediction method to determine the optimal workload partitioning, (4) a systematic approach to decide the best mapping between the application and the platform by choosing the best performing hardware configuration (Only-CPU, Only-GPU, or CPU+GPU with the workload partitioning). In the near future, I plan to apply my approach to large-scale applications and platforms to expand its usability and applicability.\",\"\",\"978-1-4799-8006-2\",\"10.1109/CCGrid.2015.44\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7152538\",\"Heterogeneous platforms;Workload partitioning;Hardware configuration;Multi-core CPUs;GPUs;Accelerators\",\"Hardware;Systematics;Computational modeling;Kernel;Graphics processing units;Programming;Predictive models\",\"graphics processing units;multiprocessing systems;performance evaluation\",\"application performance improvement;heterogeneous many-core platforms;multicore CPU;multicore GPU;high-performance computing;hardware utilization improvement;heterogeneous computing resource usage;programming model;parallel applications;modeling-based prediction method;optimal workload partitioning;only-CPU hardware configuration;only-GPU hardware configuration;CPU-plus-GPU hardware configuration;large-scale applications\",\"\",\"1\",\"3\",\"10\",\"\",\"9 Jul 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Singular value decomposition on GPU using CUDA\",\"S. Lahabar; P. J. Narayanan\",\"Center for Visual Information Technology, International Institute of Information Technology, Hyderabad, India; Center for Visual Information Technology, International Institute of Information Technology, Hyderabad, India\",\"2009 IEEE International Symposium on Parallel & Distributed Processing\",\"10 Jul 2009\",\"2009\",\"\",\"\",\"1\",\"10\",\"Linear algebra algorithms are fundamental to many computing applications. Modern GPUs are suited for many general purpose processing tasks and have emerged as inexpensive high performance co-processors due to their tremendous computing power. In this paper, we present the implementation of singular value decomposition (SVD) of a dense matrix on GPU using the CUDA programming model. SVD is implemented using the twin steps of bidiagonalization followed by diagonalization. It has not been implemented on the GPU before. Bidiagonalization is implemented using a series of householder transformations which map well to BLAS operations. Diagonalization is performed by applying the implicitly shifted QR algorithm. Our complete SVD implementation outperforms the Matlab and Intel regMath kernel library (MKL) LAPACK implementation significantly on the CPU. We show a speedup of upto 60 over the MATLAB implementation and upto 8 over the Intel MKL implementation on a Intel Dual Core 2.66 GHz PC on NVIDIA GTX 280 for large matrices. We also give results for very large matrices on NVIDIA Tesla S1070.\",\"1530-2075\",\"978-1-4244-3751-1\",\"10.1109/IPDPS.2009.5161058\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5161058\",\"\",\"Singular value decomposition;Linear algebra;Computer applications;Coprocessors;High performance computing;Matrix decomposition;Mathematical model;Kernel;Libraries;MATLAB\",\"computer graphic equipment;linear algebra;matrix algebra;parallel processing;programming languages;singular value decomposition\",\"singular value decomposition;graphics processing unit;high performance coprocessor;CUDA programming model;householder transformation;Intel Math kernel library;Matlab;Intel Dual Core PC;linear algebra algorithm;parallel coprocessor;frequency 2.66 GHz\",\"\",\"61\",\"\",\"25\",\"\",\"10 Jul 2009\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"CUDA-enabled Hadoop cluster for Sparse Matrix Vector Multiplication\",\"M. Reza; A. Sinha; R. Nag; P. Mohanty\",\"High Performance Computing Lab, School of Computer Science and Engineering, National Institute of Science & Technology, Berhampur-761008, India; High Performance Computing Lab, School of Computer Science and Engineering, National Institute of Science & Technology, Berhampur-761008, India; High Performance Computing Lab, School of Computer Science and Engineering, National Institute of Science & Technology, Berhampur-761008, India; High Performance Computing Lab, School of Computer Science and Engineering, National Institute of Science & Technology, Berhampur-761008, India\",\"2015 IEEE 2nd International Conference on Recent Trends in Information Systems (ReTIS)\",\"3 Sep 2015\",\"2015\",\"\",\"\",\"169\",\"172\",\"Compute Unified Device Architecture (CUDA) is an architecture and programming model that allows leveraging the high compute-intensive processing power of the Graphical Processing Units (GPUs) to perform general, non-graphical tasks in a massively parallel manner. Hadoop is an open-source software framework that has its own file system, the Hadoop Distributed File System (HDFS), and its own programming model, the Map Reduce, in order to accomplish the tasks of storage of very large amount of data and their fast processing in a distributed manner in a cluster of inexpensive hardware. This paper presents a model and implementation of a Hadoop-CUDA Hybrid approach to perform Sparse Matrix Vector Multiplication (SpMV) of very large matrices in a very high performing manner. Hadoop is used for splitting the input matrix into smaller sub-matrices, storing them on individual data nodes and then invoking the required CUDA kernels on the individual GPU-possessing cluster nodes. The original SpMV is done using CUDA. Such an implementation has been seen to improve the performance of the SpMV operation over very large matrices by speedup of around 1.4 in comparison to non-Hadoop, single-GPU CUDA implementation.\",\"\",\"978-1-4799-8349-0\",\"10.1109/ReTIS.2015.7232872\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7232872\",\"Hadoop;MapReduce;SpMV;CUDA;SCOO;GPGPU\",\"Graphics processing units;Sparse matrices;Kernel;Instruction sets;Java;Programming;File systems\",\"data handling;graphics processing units;parallel architectures\",\"CUDA-enabled Hadoop cluster;sparse matrix vector multiplication;compute unified device architecture;programming model;high compute-intensive processing power;graphical processing units;massively parallel manner;open-source software framework;Hadoop distributed file system;Map Reduce;distributed manner;Hadoop-CUDA hybrid approach;input matrix;smaller sub-matrices;data nodes;GPU-possessing cluster nodes\",\"\",\"2\",\"\",\"11\",\"\",\"3 Sep 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"GREEN Cache: Exploiting the Disciplined Memory Model of OpenCL on GPUs\",\"J. Lee; D. H. Woo; H. Kim; M. Azimi\",\"Intel Corporation, Hillsboro, OR; Google, Inc., Mountain View, CA; School of Computer Science, Georgia Institute of Technology, Atlanta, GA; Platform Architecture Research team in the Microprocessor and Programming Research group\",\"IEEE Transactions on Computers\",\"6 Oct 2015\",\"2015\",\"64\",\"11\",\"3167\",\"3180\",\"As various graphics processing unit architectures are deployed across broad computing spectrum from a hand-held or embedded device to a high-performance computing server, OpenCL becomes the de facto standard programming environment for general-purpose computing on graphics processing units. Unlike its CPU counterpart, OpenCL has several distinct features such as its disciplined memory model, which is partially inherited from conventional 3D graphics programming models. On the other hand, due to ever increasing memory bandwidth pressure and low power requirement, the capacity of on-chip caches in GPUs keeps increasing overtime. Given such trends, we believe that we have interesting programming model/architecture co-optimization opportunities, in particular, how to energy-efficiently utilize large on-chip caches for GPUs. In this paper, as a showcase, we study the characteristics of the OpenCL memory model and propose a technique called GPU Region-aware energy-efficient non-inclusive cache hierarchy, or GREEN cache hierarchy. With the GREEN cache, our simulation results show that we can save 56 percent of dynamic energy in the L1 cache, 39 percent of dynamic energy in the L2 cache, and 50 percent of leakage energy in the L2 cache with practically no performance degradation and off-chip access increases.\",\"1557-9956\",\"\",\"10.1109/TC.2015.2395435\",\"US National Science Foundation(grant numbers:1054830); \",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7018047\",\"OpenCL;GPU;Cache;OpenCL;GPU;cache\",\"Graphics processing units;Kernel;Computational modeling;Programming;Memory management;Hardware;Training\",\"cache storage;energy conservation;graphics processing units;low-power electronics;power aware computing\",\"disciplined memory model;graphics processing unit architectures;hand-held device;embedded device;high-performance computing server;de facto standard programming environment;general-purpose computing;3D graphics programming models;memory bandwidth;low power requirement;programming architecture;energy efficiency;large on-chip caches;GPU;OpenCL memory model;region-aware energy-efficient noninclusive cache hierarchy;GREEN cache hierarchy;dynamic energy;L1 cache;L2 cache;leakage energy;off-chip access\",\"\",\"7\",\"\",\"40\",\"IEEE\",\"22 Jan 2015\",\"\",\"\",\"IEEE\",\"IEEE Journals\"\n\"Fast CUDA-based codec for height fields\",\"Đ. M. Đurđević; I. I. Tartalja\",\"School of Electrical Engineering, University of Belgrade, Bul. kralja Aleksandra 73, 11120, Serbia; School of Electrical Engineering, University of Belgrade, Bul. kralja Aleksandra 73, 11120, Serbia\",\"2013 21st Telecommunications Forum Telfor (TELFOR)\",\"20 Jan 2014\",\"2013\",\"\",\"\",\"947\",\"954\",\"Following the advances in remote sensing technology in the last decade, the horizontal and vertical scan resolutions for digital terrains have reached the order of a meter and decimeter, respectively. At these resolutions, descriptions of real terrains require very large storage spaces. Efficient storage, transfer, retrieval, and manipulation of such large amounts of data require an efficient compression method. This paper presents a method for fast lossy and lossless compression of regular height fields, which are a commonly used solution for representing surfaces scanned at regular intervals along two axes. The method is suitable for SIMD parallel implementation and thus inherently suitable for modern GPU architectures, which significantly outperform modern CPUs in computation speed, and are already present in home computers. The method allows independent decompression of individual data points, as well as progressive decompression. Even in the case of lossy decompression, the decompressed surface is inherently seamless. The method's efficiency was confirmed through a CUDA implementation of compression and decompression algorithms, and application in a terrain visualization system.\",\"\",\"978-1-4799-1420-3\",\"10.1109/TELFOR.2013.6716388\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6716388\",\"height field;lossy and lossless compression;progressive decompression;SIMD parallelism;GPU friendly algorithm;CUDA programming model;terrain visualization\",\"Graphics processing units;Image coding;Approximation methods;Parallel processing;Data visualization;Vegetation;Educational institutions\",\"codecs;data compression;geophysical image processing;graphics processing units;parallel architectures;remote sensing\",\"CUDA based codec;height fields;horizontal scan resolution;vertical scan resolution;digital terrains;regular height field lossy compression;regular height field lossless compression;SIMD parallel implementation;GPU architecture;terrain visualization system\",\"\",\"\",\"\",\"31\",\"\",\"20 Jan 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Unified Cross-Platform Profiling of Parallel C++ Applications\",\"V. Kucher; F. Fey; S. Gorlatch\",\"University of Muenster, Einsteinstr. 62, Muenster, Germany; University of Muenster, Einsteinstr. 62, Muenster, Germany; University of Muenster, Einsteinstr. 62, Muenster, Germany\",\"2018 IEEE/ACM Performance Modeling, Benchmarking and Simulation of High Performance Computer Systems (PMBS)\",\"14 Feb 2019\",\"2018\",\"\",\"\",\"57\",\"62\",\"To address the great variety of available parallel hardware architectures (CPUs, GPUs, etc.), high-performance applications increasingly demand cross-platform portability. While unified programming models like OpenCL or SYCL provide the ultimate portability of code, the profiling of applications in the development process is still done by using different platform-specific tools of the corresponding hardware vendors. We design and implement a unified, cross-platform profiling interface by extending the PACXX framework for unified programming in C++. With our profiling interface, a single tool is used to profile parallel C++ applications across different target platforms. We illustrate and evaluate our uniform profiler using an example application of matrix multiplication for CPU and GPU architectures.\",\"\",\"978-1-7281-0182-8\",\"10.1109/PMBS.2018.8641652\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8641652\",\"C++;parallelism;many-cores;GPU programming;cross-platform;unified programming model;profiling\",\"Kernel;Computer architecture;Hardware;Graphics processing units;Measurement;Tools;C++ languages\",\"C++ language;graphics processing units;matrix multiplication;multiprocessing systems;parallel architectures;parallel programming\",\"unified cross-platform profiling;parallel C++ applications;high-performance applications;parallel hardware architectures;hardware vendors;OpenCL;SYCL;platform-specific tools;PACXX;matrix multiplication;GPU architectures;CPU architectures\",\"\",\"\",\"\",\"16\",\"\",\"14 Feb 2019\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Exploiting GPUs to Simulate Complex Systems\",\"F. Messina; G. Pappalardo; C. Santoro\",\"Dipt. di Mat. e Inf., Univ. di Catania, Catania, Italy; Dipt. di Mat. e Inf., Univ. di Catania, Catania, Italy; Dipt. di Mat. e Inf., Univ. di Catania, Catania, Italy\",\"2013 Seventh International Conference on Complex, Intelligent, and Software Intensive Systems\",\"19 Sep 2013\",\"2013\",\"\",\"\",\"535\",\"540\",\"This paper describes GCS (GPU-aware ComplexSim), a simulation framework for complex systems which is capable of executing on GPUs exploiting the CUDA programming model. GCS is based on an architecture similar to a previous work, ComplexSim, which provides simulation functionalities on symmetric multiprocessing (SMP) systems. With the current architecture of GCS, the simulation of the complex system run on GPUs, while tasks related to graph analysis still run on the host, by exploiting the embedded multi-thread engine of ComplexSim. The user code can be provided as a behaviour function, without taking into account issues related to task parallelisation, which are managed by the engine of GCS. In GCS, network data -\"\" as links and mailboxes -\"\" are organised as SoA (Structure of Array) to deal with the constraints and optimisation issues related to GPU architecture and the CUDA programming model. Moreover nodes attributes are defined by the user as in the case of ComplexSim, but GCS automatically organises them into SoA. GCS exhibits a significant improvement, in terms of simulation times, if compared to ComplexSim running on a SMP system.\",\"\",\"978-0-7695-4992-7\",\"10.1109/CISIS.2013.97\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6603946\",\"\",\"Graphics processing units;Message systems;Arrays;Instruction sets;Engines;Data models\",\"digital simulation;embedded systems;graphics processing units;large-scale systems;multiprocessing systems;multi-threading;parallel architectures\",\"complex systems;GCS;GPU-aware ComplexSim;simulation framework;CUDA programming model;symmetric multiprocessing;SMP systems;graph analysis;embedded multithread engine;user code;network data;SoA;structure of array;GPU architecture\",\"\",\"12\",\"\",\"29\",\"\",\"19 Sep 2013\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Parallelizing the cellular potts model on GPU and multi-core CPU: An OpenCL cross-platform study\",\"C. Yu; B. Yang\",\"School of Computer Science and Engineering, University of Electronic Science and Technology of China, Chengdu, China; School of Computer Science and Engineering, University of Electronic Science and Technology of China, Chengdu, China\",\"2014 11th International Joint Conference on Computer Science and Software Engineering (JCSSE)\",\"26 Jun 2014\",\"2014\",\"\",\"\",\"117\",\"122\",\"In this paper, we present the analysis and development of a cross-platform OpenCL parallelization of the Cellular Potts Model (CPM). In general, the evolution of the CPM is time-consuming. Using data-parallel programming model such as CUDA can accelerate the process, but it is highly dependent on the hardware type and manufacturer. Recently, OpenCL has attracted a lot of attention and been widely used by researchers. OpenCL provides a flexible solution, which allows us to come up with an implementation that can execute on both GPUs and multi-core CPUs regardless of the hardware type and manufacturer. Some optimizations are also made for both GPU and multi-core CPU implementations of the CPM, and we also propose a resource management method, MLBBRM. Experimental results show that the developed optimized algorithms for both GPU and multi-core CPU have an average speedup of about 30× and 8× respectively compared with the single threaded CPU implementation.\",\"\",\"978-1-4799-5822-1\",\"10.1109/JCSSE.2014.6841853\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6841853\",\"Cellular Potts Model;OpenCL;Parallel computing;Cross-platform\",\"Computer science;Software engineering\",\"biology computing;cellular biophysics;graphics processing units;multiprocessing systems;parallel processing;resource allocation\",\"cross-platform OpenCL parallelization;cellular Potts model;CPM;GPU;optimizations;multicore CPU implementations;resource management method;MLBBRM\",\"\",\"3\",\"\",\"17\",\"\",\"26 Jun 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Tradeoffs and Considerations in the Design of Accelerators for Database Applications\",\"R. Moussalli\",\"T.J. Watson Res. Center, Accel. Platforms Group, IBM, Yorktown Heights, NY, USA\",\"2017 IEEE 33rd International Conference on Data Engineering (ICDE)\",\"18 May 2017\",\"2017\",\"\",\"\",\"1615\",\"1615\",\"General purpose processors have traditionally been favored over application-specific architectures due to the provided flexibility, standardized and simpler programming model, as well as significant reduction in development time. Fueled by the steady advances in transistor scaling, general purpose CPUs satisfied the performance needs of most applications. While CPUs were becoming ubiquitous, advances in digital storage technologies and sensing devices (cameras, microphones, etc) led to massive and sky-rocketing amounts of data being generated by devices of all scales. Extracting insights out of this Big Data introduces significant opportunities for business intelligence, though the growth of data volumes and complexity of query patterns has been increasing at a startling rate. With Moore's law ending, transistors' shrinking coming to a halt and CPU performance saturating, accelerator technologies are increasingly embraced to augment general purpose CPUs and to address performance concerns. Accelerators diverge from traditional CPU architectures in the way they utilize the available silicon resources. In particular, accelerators maximize the resources available for raw computing (ALUs, Floating Point Units) and push back the burden of correct program semantics and control to higher levels of the stack including the compiler and programming models, while focusing on a selected subset of applications. Accelerators include Application Specific Integrated Circuits (ASICs), Field Programmable Gate Arrays (FPGAs) and General Purpose Graphics Processing Units (GPGPUs), each with their programming model, advantages and challenges. FPGAs enable the deployment of deep custom pipelines, whereas GPGPUs provide hundreds of small processors executing in a massively parallel fashion. Compared to CPUs, accelerators attain higher performance out of the available transistors for a wide range of applications. This talk covers tradeoffs of accelerators (FPGA and GPGPU) specific to a set of database applications, namely XML filtering, spatiotemporal analytics in the context of the Internet of Things, and relational database querying. Tradeoff metrics include programmability, performance, accuracy and energy consumption. While accelerators achieve high speedups for \"\"hot\"\" code paths, the attach point of accelerators in a system significantly impacts the end-to-end application performance. As such, system and deployment-level considerations must be made. To this end, I will go over IBM's efforts to facilitate the inclusion and increase the adoption of accelerators. These include (1) the Coherent Accelerator Processor Interface (CAPI), reducing software refactoring from the CPU side as well as CPU-accelerator latency, (2) the ConTutto research platform for acceleration innovation in the memory subsystem, providing very high bandwidth to accelerators, and (3) NVLink<sup>®</sup>-enabled IBM POWER<sup>®</sup> processors.\",\"2375-026X\",\"978-1-5090-6543-1\",\"10.1109/ICDE.2017.238\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7930135\",\"accelerator;acceleration;hardware;FPGA;GPU;database;ConTutto;CAPI;NVLink\",\"Program processors;Field programmable gate arrays;Integrated circuit modeling;Trademarks;Databases;Programming;Transistors\",\"Internet of Things;query processing;relational databases;software maintenance;XML\",\"database applications;programming models;application specific integrated circuits;ASIC;field programmable gate arrays;FPGA;general purpose graphics processing units;GPGPU;deep custom pipelines;XML filtering;spatiotemporal analytics;Internet of Things;relational database querying;programmability;energy consumption;deployment-level considerations;coherent accelerator processor interface;CAPI;software refactoring;CPU-accelerator latency;ConTutto research platform;acceleration innovation;memory subsystem;NVLink-enabled IBM POWER processors;compiler;program semantics;floating point units;ALU;raw computing;accelerators;silicon resources;CPU architectures;accelerator technologies;CPU performance saturating;Moore law ending;query patterns;Big Data;sky-rocketing amounts;sensing devices;digital storage technologies;general purpose CPU;transistor scaling;development time;simpler programming model;standardized;flexibility;application-specific architectures;general purpose processors\",\"\",\"2\",\"\",\"\",\"\",\"18 May 2017\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Achieving Portability and Performance through OpenACC\",\"J. A. Herdman; W. P. Gaudin; O. Perks; D. A. Beckingsale; A. C. Mallinson; S. A. Jarvis\",\"High Performance Comput., AWE plc, Aldermaston, UK; High Performance Comput., AWE plc, Aldermaston, UK; High Performance Comput., AWE plc, Aldermaston, UK; Dept. of Comput. Sci., Univ. of Warwick, Warwick, UK; Dept. of Comput. Sci., Univ. of Warwick, Warwick, UK; Dept. of Comput. Sci., Univ. of Warwick, Warwick, UK\",\"2014 First Workshop on Accelerator Programming using Directives\",\"9 Apr 2015\",\"2014\",\"\",\"\",\"19\",\"26\",\"OpenACC is a directive-based programming model designed to allow easy access to emerging advanced architecture systems for existing production codes based on Fortran, C and C++. It also provides an approach to coding contemporary technologies without the need to learn complex vendor-specific languages, or understand the hardware at the deepest level. Portability and performance are the key features of this programming model, which are essential to productivity in real scientific applications. OpenACC support is provided by a number of vendors and is defined by an open standard. However the standard is relatively new, and the implementations are relatively immature. This paper experimentally evaluates the currently available compilers by assessing two approaches to the OpenACC programming model: the \"\"parallel\"\" and \"\"kernels\"\" constructs. The implementation of both of these construct is compared, for each vendor, showing performance differences of up to 84%. Additionally, we observe performance differences of up to 13% between the best vendor implementations. OpenACC features which appear to cause performance issues in certain compilers are identified and linked to differing default vector length clauses between vendors. These studies are carried out over a range of hardware including GPU, APU, Xeon and Xeon Phi based architectures. Finally, OpenACC performance, and productivity, are compared against the alternative native programming approaches on each targeted platform, including CUDA, OpenCL, OpenMP 4.0 and Intel Offload, in addition to MPI and OpenMP.\",\"\",\"978-1-4673-6753-0\",\"10.1109/WACCPD.2014.10\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7081674\",\"\",\"Kernel;Graphics processing units;Computer architecture;Programming;Acceleration;Hardware;Microprocessors\",\"application program interfaces;software performance evaluation;software portability;software standards\",\"OpenMP;Intel Offload;MPI;OpenCL;CUDA;native programming approaches;Xeon Phi based architectures;APU;GPU;OpenACC features;kernels constructs;parallel constructs;OpenACC programming model;open standard;real scientific applications;C++ language;C language;Fortran;production codes;advanced architecture systems;directive-based programming model;portability\",\"\",\"8\",\"\",\"20\",\"\",\"9 Apr 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Fast parallel interpolation algorithm using CUDA\",\"Y. Zhao; Q. Qiu; J. Fang; L. Li\",\"Institute of Computing Technology, Chinese Academy of Sciences, Beijing 100190, China; Institute of Computing Technology, Chinese Academy of Sciences, Beijing 100190, China; Institute of Computing Technology, Chinese Academy of Sciences, Beijing 100190, China; Institute of Computing Technology, Chinese Academy of Sciences, Beijing 100190, China\",\"2013 IEEE International Geoscience and Remote Sensing Symposium - IGARSS\",\"27 Jan 2014\",\"2013\",\"\",\"\",\"3662\",\"3665\",\"Interpolation is one time consuming and serial operation in the fields of spatial information processing. While fast processing speed is often required in some real-time interactive scenarios. With the development of Purpose computing on Graphics Processing Units (GPGPU), it provides an opportunity to accelerate some traditional inefficient algorithms with low-cost and low-power compared to clusters. In this paper, we mapped the Inverse distance weighted (IDW) interpolation method to Compute Unified Device Architecture (CUDA) parallel programming model. Taking the advantage of Graphics Processing Unit (GPU) parallel computing, we build two-level indexes on GPU, then clever blocking schemes are used to assign computing task among different threads. After illustrate the parallel interpolation process, we conduct several experiments, the result shows the correctness and high efficiency of our optimized implementation. With larger influence radius and massive data, the performance can obtain dozens of times speedups over a very similar single-threaded CPU implementation.\",\"2153-7003\",\"978-1-4799-1114-1\",\"10.1109/IGARSS.2013.6723624\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6723624\",\"parallel interpolation;GPGPU;CUDA;Inverse distance weighted interpolation\",\"Graphics processing units;Interpolation;Indexes;Tiles;Instruction sets;Binary codes;Real-time systems\",\"graphics processing units;interpolation;mathematics computing;multi-threading;parallel architectures\",\"parallel interpolation algorithm;spatial information processing;processing speed;real-time interactive scenarios;GPGPU;inverse distance weighted interpolation method;IDW interpolation method;compute unified device architecture;CUDA parallel programming model;graphics processing unit parallel computing;GPU parallel computing;two-level indexes;blocking schemes;computing task assignment;multithreading;performance improvement\",\"\",\"\",\"1\",\"9\",\"\",\"27 Jan 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Evaluating cache coherent shared virtual memory for heterogeneous multicore chips\",\"B. A. Hechtman; D. J. Sorin\",\"Department of Electrical and Computer Engineering, Duke University, USA; Department of Electrical and Computer Engineering, Duke University, USA\",\"2013 IEEE International Symposium on Performance Analysis of Systems and Software (ISPASS)\",\"15 Jul 2013\",\"2013\",\"\",\"\",\"118\",\"119\",\"Although current homogeneous chips tightly couple the cores with cache-coherent shared virtual memory (CCSVM), this is not the communication paradigm used by any current heterogeneous chip. In this paper, we present a CCSVM design for a CPU/GPU chip, as well as an extension of the pthreads programming model for programming this HMC. We experimentally compare CCSVM/xthreads to a state-of-the-art CPU/GPU chip from AMD that runs OpenCL software. CCSVM's more efficient communication enables far better performance and far fewer DRAM accesses.\",\"\",\"978-1-4673-5779-1\",\"10.1109/ISPASS.2013.6557152\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6557152\",\"\",\"Graphics processing units;Multicore processing;Instruction sets;Programming;Random access memory;Couplings\",\"graphics processing units;integrated circuit design;multi-threading;virtual storage\",\"cache coherent shared virtual memory evaluation;CCSVM design;heterogeneous multicore chips;homogeneous chips;GPU chip;CPU chip;pthreads programming model;HMC;AMD;OpenCL software;DRAM accesses;xthreads\",\"\",\"9\",\"\",\"6\",\"\",\"15 Jul 2013\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Fine-Granular Parallel EBCOT and Optimization with CUDA for Digital Cinema Image Compression\",\"F. Wei; Q. Cui; Y. Li\",\"Sch. of Inf. & Commun. Eng., Beijing Univ. of Posts & Telecommun., Beijing, China; Sch. of Inf. & Commun. Eng., Beijing Univ. of Posts & Telecommun., Beijing, China; Sch. of Inf. & Commun. Eng., Beijing Univ. of Posts & Telecommun., Beijing, China\",\"2012 IEEE International Conference on Multimedia and Expo\",\"13 Sep 2012\",\"2012\",\"\",\"\",\"1051\",\"1054\",\"JPEG2000 has been accepted by The Society of Motion Picture and Television Engineers (SMPTE) as the image compression standard for the digital distribution of motion pictures. In JPEG2000, the biggest contribution to the coding performance comes from the Embedded Block Coding with Optimized Truncation (EBCOT), which is also the most time-consuming module by occupying almost 37% of the encoding time. There have been many research activities in the optimization of EBCOT on platforms like FPGA and VLSI, but on Graphics Processing Unit (GPU), a currently popular parallel computing platform in post-production of motion pictures, still few works have been done. This paper proposes a fine-granular parallel EBCOT by re-designing the highly serialized bit-plane coding to a parallel structure where the coding of all bits in a bit-plane could be performed in parallel, then the bit coding tasks can be distributed to the stream processors in GPU by taking advantage of the programming and memory model of CUDA. Experimental results show that our algorithms reveal 3 to 4 times computational speed improvement on an ordinary GPU compared to that on CPU.\",\"1945-788X\",\"978-1-4673-1659-0\",\"10.1109/ICME.2012.115\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6298542\",\"EBCOT;GPU;CUDA;JPEG2000;DCI\",\"Graphics processing unit;Encoding;Image coding;Transform coding;Motion pictures;Instruction sets;Strips\",\"block codes;cinematography;graphics processing units;image coding;image motion analysis;parallel architectures\",\"fine-granular parallel EBCOT;digital cinema image compression;JPEG2000;Society of Motion Picture and Television Engineers;image compression standard;digital distribution;coding performance;embedded block coding with optimized truncation;EBCOT optimization;graphics processing unit;GPU;parallel computing platform;motion picture post-production;bit-plane coding;parallel structure;stream processors;CUDA programming model;CUDA memory model;computational speed improvement\",\"\",\"6\",\"\",\"12\",\"\",\"13 Sep 2012\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"A real time Breast Microwave Radar imaging reconstruction technique using simt based interpolation\",\"D. Flores-Tapia; S. Pistorius\",\"Division of Medical Physics, CancerCare Manitoba, USA; Division of Medical Physics, CancerCare Manitoba, USA\",\"2010 IEEE International Conference on Image Processing\",\"3 Dec 2010\",\"2010\",\"\",\"\",\"1389\",\"1392\",\"Breast Microwave Radar(BMR) is a novel imaging modality that is capable of producing high contrast images and can detect tumors of at least 4mm. To properly visualize the responses from the breast structures, BMR data sets must be reconstructed. In this paper, a real time BMR image formation technique is proposed. This approach is based on the use of a Single Instruction Multiple Thread(SIMT) interpolation method. By using this programming model, the proposed approach can be implemented on General Purpose Graphic Processing Unit (GPGPU) platform to speed up the reconstruction process. The proposed method yielded promising results when applied to simulated data sets obtained using anatomically accurate numeric phantoms. In average, the proposed approach yielded speed increases of one order of magnitude compared to its CPU counterpart, and two orders of magnitude with respect to current BMR reconstruction techniques.\",\"2381-8549\",\"978-1-4244-7994-8\",\"10.1109/ICIP.2010.5652126\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5652126\",\"Breast microwave radar;GPU;real time image processing\",\"Image reconstruction;Interpolation;Breast;Microwave imaging;Radar imaging;Microwave theory and techniques;Computational modeling\",\"biological organs;computer graphic equipment;coprocessors;image reconstruction;interpolation;medical image processing;microwave imaging;multi-threading;radar imaging;tumours\",\"real time breast microwave radar imaging reconstruction technique;high contrast images;tumors;BMR data sets;BMR image formation technique;single instruction multiple thread interpolation method;programming model;general purpose graphic processing unit platform;simulated data sets;numeric phantoms;CPU;BMR reconstruction techniques;SIMT\",\"\",\"2\",\"\",\"10\",\"\",\"3 Dec 2010\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Leveraging Data-Flow Task Parallelism for Locality-Aware Dynamic Scheduling on Heterogeneous Platforms\",\"O. S. Simsek; A. Drebes; A. Pop\",\"Sch. of Comput. Sci., Univ. of Manchester, Manchester, UK; Sch. of Comput. Sci., Univ. of Manchester, Manchester, UK; Sch. of Comput. Sci., Univ. of Manchester, Manchester, UK\",\"2018 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW)\",\"6 Aug 2018\",\"2018\",\"\",\"\",\"540\",\"549\",\"Writing programs for heterogeneous platforms is challenging, since programmers must deal with multiple programming models, partition work for CPUs and accelerators with different compute capabilities, and manage memory in multiple distinct address spaces. We show that using a task-parallel data-flow programming model, in which parallelism is specified in a platform-neutral description that abstracts in particular from the heterogeneity of the hardware, efficient execution can be carried out by a run-time system at execution time using an appropriate task scheduling and memory allocation scheme. This is achieved through dynamic scheduling of tasks by reducing the dependence exchanges between devices, interleaved execution of tasks and transfer between host and device memory, and load balancing across CPUs and GPUs. Our results show our technique increases the number of tasks offloaded to the GPU and improves data locality of GPU tasks leading to a significant reduction of GPU idle time and thus to substantial improvements of performance.\",\"\",\"978-1-5386-5555-9\",\"10.1109/IPDPSW.2018.00093\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8425460\",\"Task-parallelism;heterogeneous systems;scheduling;memory allocation\",\"Task analysis;Graphics processing units;Dynamic scheduling;Memory management;Processor scheduling;Data transfer\",\"graphics processing units;multiprocessing systems;parallel processing;parallel programming;processor scheduling;resource allocation\",\"locality-aware dynamic scheduling;heterogeneous platforms;multiple programming models;partition work;CPUs;multiple distinct address;task-parallel data-flow programming model;platform-neutral description;run-time system;execution time;appropriate task scheduling;device memory;data locality;GPU tasks;GPU idle time;compute capabilities;data-flow task parallelism\",\"\",\"1\",\"\",\"20\",\"\",\"6 Aug 2018\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"An Enhanced Profiling Framework for the Analysis and Development of Parallel Primitives for GPUs\",\"N. Bombieri; F. Busato; F. Fummi\",\"Dept. of Comput. Sci., Univ. of Verona, Verona, Italy; Dept. of Comput. Sci., Univ. of Verona, Verona, Italy; Dept. of Comput. Sci., Univ. of Verona, Verona, Italy\",\"2015 IEEE 9th International Symposium on Embedded Multicore/Many-core Systems-on-Chip\",\"12 Nov 2015\",\"2015\",\"\",\"\",\"1\",\"8\",\"Parallelizing software applications through the use of existing optimized % target-oriented primitives is a common trend that mediates the complexity of manual parallelization and the use of less efficient directive-based programming models. Parallel primitive libraries allow software engineers to map any sequential code to a target many-core architecture by identifying the most computational intensive code sections and mapping them into one ore more existing primitives. On the other hand, the spreading of such a primitive-based programming model and the different GPU architectures have led to a large and increasing number of third-party libraries, which often provide different implementations of the same primitive, each one optimized for a specific architecture. From the developer point of view, this moves the actual problem of parallelizing the software application to selecting, among the several implementations, the most efficient primitives for the target platform. This paper presents a profiling framework for GPU primitives, which allows measuring the implementation quality of a given primitive by considering the target architecture characteristics. The framework collects the information provided by a standard GPU profiler and combines them into optimization criteria. The criteria evaluations are weighed to distinguish the impact of each optimization on the overall quality of the primitive implementation. The paper shows how the tuning of the different weights has been conducted through the analysis of five of the most widespread existing primitive libraries and how the framework has been eventually applied to improve the implementation performance of a standard primitive.\",\"\",\"978-1-4799-8670-5\",\"10.1109/MCSoC.2015.16\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7328180\",\"\",\"Graphics processing units;Kernel;Instruction sets;Optimization;Libraries;Synchronization\",\"graphics processing units;parallel programming\",\"profiling framework;software applications parallelization;parallel primitives;GPU;graphics processing unit;directive-based programming models;many-core architecture;primitive-based programming model;GPU profiler\",\"\",\"1\",\"\",\"18\",\"\",\"12 Nov 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"ST-Accel: A High-Level Programming Platform for Streaming Applications on FPGA\",\"Z. Ruan; T. He; B. Li; P. Zhou; J. Cong\",\"Univ. of California, Los Angeles, Los Angeles, CA, USA; Univ. of California, Los Angeles, Los Angeles, CA, USA; Microsoft Res. Univ. of Sci. & Technol. of China, China; Univ. of California, Los Angeles, Los Angeles, CA, USA; Univ. of California, Los Angeles, Los Angeles, CA, USA\",\"2018 IEEE 26th Annual International Symposium on Field-Programmable Custom Computing Machines (FCCM)\",\"11 Sep 2018\",\"2018\",\"\",\"\",\"9\",\"16\",\"In recent years we have witnessed the emergence of the FPGA in many high-performance systems. This is due to FPGA's high reconfigurability and improved user-friendly programming environment. OpenCL, supported by major FPGA vendors, is a high-level programming platform that liberates hardware developers from having to deal with the complex and error-prone HDL development. While OpenCL exposes a GPU-like programming model, which is well-suited for compute-intensive tasks, in many state-of-art systems that deploy FPGA, we observe that the workloads are streaming-like, which is communication-intensive. This mismatch leads to low throughput and high end-to-end latency. In this paper, we propose ST-Accel, a new high-level programming platform for streaming applications on FPGA. It has the following advantages: (i) ST-Accel adopts the multiprocessing programming model to capture the inherent pipeline-level parallelism of streaming applications while reducing the end-to-end latency. (ii) A message-passing-based host/FPGA communication model is used to avoid the coherency issue of shared memory, thus enabling host/FPGA communication during kernel execution. (iii) ST-Accel provides a high-level abstraction for I/O devices to support direct I/O device access that eliminates the overhead of host CPU and reduces the I/O latency. (iv) ST-Accel enables the decoupled access/execute architecture to maximize the utilization of I/O devices. (v) The host/FPGA communication interface is redesigned to cater to the demands of both latency-critical and throughput-critical scenarios. The experimental results on the Amazon AWS cloud and local machine show that ST-Accel can achieve 1.6X-166X throughput and 1/3 latency for typical streaming workloads when compared to OpenCL.\",\"2576-2621\",\"978-1-5386-5522-1\",\"10.1109/FCCM.2018.00011\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8457626\",\"FPGA;OpenCL;Programming Platform;Streaming\",\"Field programmable gate arrays;Kernel;Programming;Random access memory;Hardware design languages;Acceleration;Throughput\",\"field programmable gate arrays;message passing;multiprocessing programs;parallel programming\",\"high-performance systems;improved user-friendly programming environment;OpenCL;high-level programming platform;GPU-like programming model;ST-Accel;multiprocessing programming model;high-level abstraction;pipeline-level parallelism;message-passing-based host-FPGA communication model;host-FPGA communication interface;error-prone HDL development;streaming applications;end-to-end latency reduction;kernel execution;direct I/O device access;decoupled access-execute architecture;throughput-critical scenarios;Amazon AWS cloud;I/O latency reduction\",\"\",\"11\",\"\",\"28\",\"\",\"11 Sep 2018\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Distributed-memory multi-GPU block-sparse tensor contraction for electronic structure\",\"T. Herault; Y. Robert; G. Bosilca; R. J. Harrison; C. A. Lewis; E. F. Valeev; J. J. Dongarra\",\"University of Tennessee,ICL,TN,USA; University of Tennessee,ICL,TN,USA; Stony Brook University,IACS,NY,USA; Stony Brook University,IACS,NY,USA; Sandia Ntl. Lab.,CA,USA; Virignia Tech,Dept. of Chemistry,VA,USA; University of Tennessee,ICL,TN,USA\",\"2021 IEEE International Parallel and Distributed Processing Symposium (IPDPS)\",\"28 Jun 2021\",\"2021\",\"\",\"\",\"537\",\"546\",\"Many domains of scientific simulation (chemistry, condensed matter physics, data science) increasingly eschew dense tensors for block-sparse tensors, sometimes with additional structure (recursive hierarchy, rank sparsity, etc.). Distributed-memory parallel computation with block-sparse tensorial data is paramount to minimize the time-to-solution (e.g., to study dynamical problems or for real-time analysis) and to accommodate problems of realistic size that are too large to fit into the host/device memory of a single node equipped with accelerators. Unfortunately, computation with such irregular data structures is a poor match to the dominant imperative, bulk-synchronous parallel programming model. In this paper, we focus on the critical element of block-sparse tensor algebra, namely binary tensor contraction, and report on an efficient and scalable implementation using the task-focused PaRSEC runtime. High performance of the block-sparse tensor contraction on the Summit supercomputer is demonstrated for synthetic data as well as for real data involved in electronic structure simulations of unprecedented size.\",\"1530-2075\",\"978-1-6654-4066-0\",\"10.1109/IPDPS49936.2021.00062\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9460455\",\"electronic structure;tensor contraction;block-sparse matrix multiplication;distributed memory;multi-GPU nodes;PaRSEC\",\"Tensors;Runtime;Computational modeling;Tools;Data models;Supercomputers;Real-time systems\",\"distributed memory systems;graphics processing units;parallel programming;tensors\",\"dense tensors;distributed-memory parallel computation;block-sparse tensorial data;irregular data structures;block-sparse tensor algebra;binary tensor contraction;electronic structure simulations;distributed-memory multiGPU block-sparse tensor contraction\",\"\",\"\",\"\",\"32\",\"\",\"28 Jun 2021\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Hybrid CPU/GPU tasks optimized for concurrency in OpenMP\",\"A. E. Eichenberger; G. . -T. Bercea; A. Bataev; L. Grinberg; J. K. O'Brien\",NA; NA; NA; NA; NA,\"IBM Journal of Research and Development\",\"13 May 2020\",\"2020\",\"64\",\"3/4\",\"13:1\",\"13:14\",\"Sierra and Summit supercomputers exhibit a significant amount of intranode parallelism between the host POWER9 CPUs and their attached GPU devices. In this article, we show that exploiting device-level parallelism is key to achieving high performance by reducing overheads typically associated with CPU and GPU task execution. Moreover, manually exploiting this type of parallelism in large-scale applications is nontrivial and error-prone. We hide the complexity of exploiting this hybrid intranode parallelism using the OpenMP programming model abstraction. The implementation leverages the semantics of OpenMP tasks to express asynchronous task computations and their associated dependences. Launching tasks on the CPU threads requires a careful design of work-stealing algorithms to provide efficient load balancing among CPU threads. We propose a novel algorithm that removes locks from all task queueing operations that are on the critical path. Tasks assigned to GPU devices require additional steps such as copying input data to GPU devices, launching the computation kernels, and copying data back to the host CPU memory. We perform key optimizations to reduce the cost of these additional steps by tightly integrating data transfers and GPU computations into streams of asynchronous GPU operations. We further map high-level dependences between GPU tasks to the same asynchronous GPU streams to further avoid unnecessary synchronization. Results validate our approach.\",\"0018-8646\",\"\",\"10.1147/JRD.2019.2960245\",\"U.S. Department of Energy(grant numbers:B604142); \",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8935508\",\"\",\"Task analysis;Graphics processing units;Instruction sets;Parallel processing;Runtime;Scheduling;Delays\",\"\",\"\",\"\",\"\",\"\",\"14\",\"IBM\",\"17 Dec 2019\",\"\",\"\",\"IBM\",\"IBM Journals\"\n\"GPU Accelerated Lanczos Algorithm with Applications\",\"K. K. Matam; K. Kothapalli\",\"Int. Inst. of Inf. Technol., Hyderabad Gachibowli, Hyderabad, India; Int. Inst. of Inf. Technol., Hyderabad Gachibowli, Hyderabad, India\",\"2011 IEEE Workshops of International Conference on Advanced Information Networking and Applications\",\"5 May 2011\",\"2011\",\"\",\"\",\"71\",\"76\",\"Graphics Processing Units provide a large computational power at a very low price which position them as an ubiquitous accelerator. GPGPU is accelerating general purpose computations using GPU's. GPU's have been used to accelerate many Linear Algebra routines and Numerical Methods. Lanczos is an iterative method well suited for finding the extreme eigenvalues and the corresponding eigenvectors of large sparse symmetric matrices. In this paper, we present an implementation of Lanczos Algorithm on GPU using the CUDA programming model and apply it to two important problems : graph bisection using spectral methods, and image segmentation. Our GPU implementation of spectral bisection performs better when compared to both an Intel Math Kernel Library implementation and a Matlab implementation. Our GPU implementation shows a speedup up to 97.3 times over Matlab Implementation and 2.89 times over the Intel Math Kernel Library implementation on a Intel Core i7 920 Processor, which is a quad-core CPU. Similarly, our image segmentation implementation achieves a speed up of 3.27 compared to a multicore CPU based implementation using Intel Math Kernel Library and OpenMP. Through this work, we therefore wish to establish that the GPU may still be a better platform for also highly irregular and computationally intensive applications.\",\"\",\"978-1-61284-829-7\",\"10.1109/WAINA.2011.70\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5763440\",\"GPGPU;Lanczos;graph partitioning;image segmentation;spectral methods\",\"Graphics processing unit;Eigenvalues and eigenfunctions;Image segmentation;Sparse matrices;Kernel;Instruction sets;Symmetric matrices\",\"coprocessors;eigenvalues and eigenfunctions;graph theory;image segmentation;iterative methods;ubiquitous computing\",\"accelerated Lanczos algorithm;graphics processing units;ubiquitous accelerator;GPGPU;general purpose computations;linear algebra;iterative method;eigenvalues;eigenvectors;CUDA programming;graph bisection;image segmentation;multicore CPU;Intel Math Kernel Library;OpenMP\",\"\",\"3\",\"\",\"18\",\"\",\"5 May 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Improved Bilinear Interpolation Method for Image Fast Processing\",\"Y. Sa\",\"Guangdong Univ. of Educ., Guangzhou, China\",\"2014 7th International Conference on Intelligent Computation Technology and Automation\",\"8 Jan 2015\",\"2014\",\"\",\"\",\"308\",\"311\",\"Bilinear interpolation algorithm is broadly applied in digital image processing but its calculation speed is very slow. In order to improve its performance in calculation, this paper proposes a graphic processing unit acceleration-based bilinear interpolation parallel It mainly utilizes Wallis transforming independence among various blocks in bilinear interpolation, which is adaptable to characteristics of GPU parallel processing structure. It maps traditional serial bilinear interpolation algorithm to CUDA parallel programming model and optimize thread allocation, memory usage, hardware resources division, etc, to make full use of huge calculation ability. The experiment results show bilinear interpolation parallel algorithm can greatly improve calculation speed with increasing image resolution.\",\"\",\"978-1-4799-6636-3\",\"10.1109/ICICTA.2014.82\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7003545\",\"bilinear interpolation;image processing;GPU;CUDA\",\"Graphics processing units;Interpolation;Instruction sets;Parallel algorithms;Acceleration;Computers\",\"graphics processing units;image resolution;interpolation;parallel algorithms;parallel architectures;parallel programming\",\"digital image processing;performance improvement;graphic processing unit acceleration;Wallis transforming independence;GPU parallel processing structure;serial bilinear interpolation algorithm;CUDA parallel programming model;thread allocation optimization;memory usage optimization;hardware resource division optimization;calculation ability;bilinear interpolation parallel algorithm;calculation speed improvement;image resolution improvement\",\"\",\"7\",\"\",\"11\",\"\",\"8 Jan 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Generalizing the Utility of GPUs in Large-Scale Heterogeneous Computing Systems\",\"S. Xiao; W. Feng\",\"Dept. of Electr. & Comput. Eng., Virginia Tech, Blacksburg, VA, USA; Dept. of Electr. & Comput. Eng., Virginia Tech, Blacksburg, VA, USA\",\"2012 IEEE 26th International Parallel and Distributed Processing Symposium Workshops & PhD Forum\",\"20 Aug 2012\",\"2012\",\"\",\"\",\"2554\",\"2557\",\"Graphics Processing Units (GPUs) have been widely used as accelerators in large-scale heterogeneous computing systems. However, current programming models can only support the utilization of local GPUs. When using non-local GPUs, programmers need to explicitly call API functions for data communication across computing nodes. As such, programming GPUs in large-scale computing systems is more challenging than local GPUs since local and remote GPUs have to be dealt with separately. In this work, we propose a virtual OpenCL (VOCL) framework to support the transparent virtualization of GPUs. This framework, based on the OpenCL programming model, exposes physical GPUs as decoupled virtual resources that can be transparently managed independent of the application execution. To reduce the virtualization overhead, we optimize the GPU memory accesses and kernel launches. We also extend the VOCL framework to support live task migration across physical GPUs to achieve load balance and/or quick system maintenance. Our experiment results indicate that VOCL can greatly simplify the task of programming cluster-based GPUs at a reasonable virtualization cost.\",\"\",\"978-1-4673-0974-5\",\"10.1109/IPDPSW.2012.325\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6270892\",\"graphics processing unit (GPU);virtual OpenCL;task migration\",\"Graphics processing unit;Kernel;Optimization;Libraries;Bandwidth;Programming\",\"application program interfaces;graphics processing units\",\"GPU utility;large scale heterogeneous computing systems;graphics processing units;current programming models;API functions;data communication;virtual OpenCL;VOCL;OpenCL programming model;decoupled virtual resources\",\"\",\"2\",\"\",\"14\",\"\",\"20 Aug 2012\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"VOCL: An optimized environment for transparent virtualization of graphics processing units\",\"S. Xiao; P. Balaji; Q. Zhu; R. Thakur; S. Coghlan; H. Lin; G. Wen; J. Hong; W. -c. Feng\",\"Dept. of Computer Science, Virginia Tech., USA; Math. and Comp. Sci. Div., Argonne National Lab., USA; Accenture Technology Labs, USA; Math. and Comp. Sci. Div., Argonne National Lab., USA; Leadership Comp. Facility, Argonne National Lab., USA; Dept. of Computer Science, Virginia Tech., USA; Shenzhen Inst. of Adv. Tech., Chinese Academy of Sciences, China; Shenzhen Inst. of Adv. Tech., Chinese Academy of Sciences, China; Dept. of Computer Science, Virginia Tech., USA\",\"2012 Innovative Parallel Computing (InPar)\",\"25 Oct 2012\",\"2012\",\"\",\"\",\"1\",\"12\",\"Graphics processing units (GPUs) have been widely used for general-purpose computation acceleration. However, current programming models such as CUDA and OpenCL can support GPUs only on the local computing node, where the application execution is tightly coupled to the physical GPU hardware. In this work, we propose a virtual OpenCL (VOCL) framework to support the transparent utilization of local or remote GPUs. This framework, based on the OpenCL programming model, exposes physical GPUs as decoupled virtual resources that can be transparently managed independent of the application execution. The proposed framework requires no source code modifications. We also propose various strategies for reducing the overhead caused by data communication and kernel launching and demonstrate about 85% of the data write bandwidth and 90% of the data read bandwidth compared to data write and read, respectively, in a native nonvirtualized environment. We evaluate the performance of VOCL using four real-world applications with various computation and memory access intensities and demonstrate that compute-intensive applications can execute with negligible overhead in the VOCL environment.\",\"\",\"978-1-4673-2633-9\",\"10.1109/InPar.2012.6339609\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6339609\",\"Graphics Processing Unit (GPU);Transparent Virtualization;OpenCL\",\"Graphics processing unit;Kernel;Libraries;Programming;Computational modeling\",\"graphics processing units;virtualisation\",\"VOCL;transparent virtualization;graphics processing units;general-purpose computation acceleration;CUDA;local computing node;physical GPU hardware;virtual OpenCL framework;VOCL framework;OpenCL programming model;virtual resources;application execution;data communication;kernel launching;data write bandwidth;data read bandwidth;memory access intensity\",\"\",\"37\",\"1\",\"27\",\"\",\"25 Oct 2012\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"CUDA-Based Parallel Implementation of IBM Word Alignment Algorithm for Statistical Machine Translation\",\"S. Jing; G. Yan; X. Chen; P. Jin; Z. Guo\",\"Sch. of Comput. Sci., Leshan Normal Univ., Leshan, China; Sch. of Foreign Language, Leshan Normal Univ., Leshan, China; Sch. of Comput. Sci., Leshan Normal Univ., Leshan, China; Sch. of Comput. Sci., Leshan Normal Univ., Leshan, China; Sch. of Comput. Sci., Leshan Normal Univ., Leshan, China\",\"2016 17th International Conference on Parallel and Distributed Computing, Applications and Technologies (PDCAT)\",\"8 Jun 2017\",\"2016\",\"\",\"\",\"189\",\"194\",\"Word alignment is a basic task in natural language processing and it usually serves as the starting point when building a modern statistical machine translation system. However, the state-of-art parallel algorithm for word alignment is still time-consuming. In this work, we explore a parallel implementation of word alignment algorithm on Graphics Processor Unit (GPU), which has been widely available in the field of high performance computing. We use the Compute Unified Device Architecture (CUDA) programming model to re-implement a state-of-the-art word alignment algorithm, called IBM Expectation-Maximization (EM) algorithm. A Tesla K40M card with 2880 cores is used for experiments and execution times obtained with the proposed algorithm are compared with a sequential algorithm and a multi-threads algorithm on an IBM X3850 server, which has two Intel Xeon E7 CPUs (2.0GHz * 10 cores). The best experimental results show a 16.8-fold speedup compared to the multi-threads algorithm and a 234.7-fold speedup compared to the sequential algorithm.\",\"\",\"978-1-5090-5081-9\",\"10.1109/PDCAT.2016.050\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7943355\",\"Word Alignment;GPU;Parallel Computation;Expectation-Maximization Algorithm;CUDA\",\"Graphics processing units;Algorithm design and analysis;Instruction sets;Hidden Markov models;Computational modeling;Kernel;Programming\",\"graphics processing units;language translation;microprocessor chips;multiprocessing systems;natural language processing;optimisation;parallel algorithms;parallel architectures;statistical analysis;word processing\",\"CUDA-based parallel implementation;IBM word alignment algorithm;statistical machine translation;natural language processing;parallel algorithm;graphics processor unit;GPU;high performance computing;compute unified device architecture;CUDA programming model;IBM expectation-maximization;EM algorithm;Tesla K40M card;2880 cores;sequential algorithm;multithreads algorithm;IBM X3850 server;Intel Xeon E7 CPUs\",\"\",\"1\",\"\",\"15\",\"\",\"8 Jun 2017\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"A new parallel video understanding and retrieval system\",\"K. Liu; T. Zhang; L. Wang\",\"HP Labs China; HP Labs, Palo Alto; HP Labs China\",\"2010 IEEE International Conference on Multimedia and Expo\",\"23 Sep 2010\",\"2010\",\"\",\"\",\"679\",\"684\",\"In this paper, a hybrid parallel computing framework is proposed for video understanding and retrieval. It is a unified computing architecture based on the Map-Reduce programming model, which supports multi-core and GPU architectures. A key task scheduler is designed for the parallelization of computation tasks. The SVM method is used to train models for video understanding purposes. To effectively shorten the training and processing time, the hybrid computing framework is used to train large scale SVM models. The TRECVID database is used as the basic experimental content for video understanding and retrieval. Experiments were conducted on two 8-core servers, each equipped with NVIDIA Quadro FX 4600 graphics card. Results proved that the proposed parallel computing framework works well for the video understanding and retrieval system by speeding up system development and providing better performances.\",\"1945-788X\",\"978-1-4244-7493-6\",\"10.1109/ICME.2010.5583873\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5583873\",\"Parallel computing;map-reduce;multi-core CPU;general purpose GPU;video understanding and retrieval\",\"Support vector machines;Training;Graphics processing unit;Feature extraction;Classification algorithms;Computational modeling;Computer architecture\",\"computer graphic equipment;coprocessors;parallel processing;support vector machines;video retrieval;video signal processing;visual databases\",\"parallel video understanding;video retrieval system;hybrid parallel computing framework;Map-Reduce programming model;GPU architectures;key task scheduler;SVM method;TRECVID database;NVIDIA Quadro FX 4600 graphics card\",\"\",\"5\",\"1\",\"14\",\"\",\"23 Sep 2010\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"An Efficient Numerical Solution Technique for VLSI Interconnect Equations on Many-Core Processors\",\"G. Doménech-Asensi; T. J. Kazmierski\",\"Dpto. de Electrónica, Tec. de Computadoras y Proyectos, Universidad Politécnica de Cartagena, Cartagena, Spain; Dpt. of Electronics and Computers Science, University of Southampton, Southampton, UK\",\"2019 IEEE International Symposium on Circuits and Systems (ISCAS)\",\"1 May 2019\",\"2019\",\"\",\"\",\"1\",\"5\",\"This paper presents a technique to accelerate transient simulations of analog circuits using an explicit integration method parallelised on a many-core computer. Usual methods used by SPICE-type simulators are based on Newton-Raphson iterations, which are reliable and numerically stable, but require long CPU processing times. However, although the integration time step in explicit methods is smaller than that used in implicit methods, this technique avoids the calculation of time-consuming computations due to the Jacobian matrix inversion. The proposed method uses an explicit integration scheme based on the fourth order Adams-Bashforth formula. The algorithm has been parallelised on a NVIDIA general purpose GPU using the CUDA programming model. As a case study, the RC ladder model of a VLSI interconnect is simulated on a general purpose graphic processing unit and the achieved performance is then evaluated against that of a multiprocessor CPU. The results show that the proposed technique achieves a speedup of one order of magnitude in comparison with implicit integration techniques executed on a CPU.\",\"2158-1525\",\"978-1-7281-0397-6\",\"10.1109/ISCAS.2019.8702085\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8702085\",\"simulation acceleration;state-space technique;GPU;VLSI interconnect\",\"Instruction sets;Mathematical model;Graphics processing units;Computational modeling;Integrated circuit interconnections;Jacobian matrices;Transient analysis\",\"coprocessors;graphics processing units;integration;multiprocessing systems;Newton-Raphson method;parallel architectures;SPICE;VLSI\",\"implicit methods;time-consuming computations;Jacobian matrix inversion;explicit integration scheme;fourth order Adams-Bashforth formula;NVIDIA general purpose GPU;CUDA programming model;RC ladder model;multiprocessor CPU;implicit integration techniques;VLSI interconnect equations;many-core processors;transient simulations;many-core computer;SPICE-type simulators;Newton-Raphson iterations;integration time step;numerical solution technique;integration method;CPU processing times\",\"\",\"2\",\"\",\"17\",\"\",\"1 May 2019\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Three-dimensional particle beam simulation using high performance graphics processing hardware\",\"S. J. Cooke\",\"Naval Research Laboratory, Washington DC 20375, USA\",\"2009 IEEE International Conference on Plasma Science - Abstracts\",\"28 Aug 2009\",\"2009\",\"\",\"\",\"1\",\"1\",\"In this paper, a new three- dimensional particle beam simulation using a high performance hardware is introduced. The graphics processing unit (GPU) hardware is highly parallel and has low-cost computational capabilities. The code uses NVIDIA CUDA programming model and a particle trajectory integration steps on the graphics hardware, in a standard 4th-order Runge-Kutta scheme. The model uses mesh less representations for electromagnetic fields, based on either analytic formulas or field expansion techniques, to achieve a high degree of parallelism in the calculations. The author describe potential applications of the code for 3D simulation of vacuum electronic devices, and present details of both the algorithms used and simulation performance results.\",\"0730-9244\",\"978-1-4244-2617-1\",\"10.1109/PLASMA.2009.5227556\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5227556\",\"\",\"Particle beams;Graphics;Hardware;Computational modeling;Concurrent computing;Code standards;Electromagnetic modeling;Electromagnetic fields;Electromagnetic analysis;Parallel processing\",\"electromagnetic fields;microprocessor chips;parallel programming;particle beams;Runge-Kutta methods;solid modelling;three-dimensional displays\",\"three-dimensional particle beam simulation;graphics processing unit hardware;GPU hardware;NVIDIA CUDA programming model;Runge-Kutta scheme;electromagnetic fields;vacuum electronic devices\",\"\",\"\",\"\",\"1\",\"\",\"28 Aug 2009\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Evaluation of Medical Imaging Applications using SYCL\",\"Z. Jin; H. Finkel\",\"Argonne National Laboratory,Leadership Computing Facility,Lemont,IL,USA; Argonne National Laboratory,Leadership Computing Facility,Lemont,IL,USA\",\"2019 IEEE International Conference on Bioinformatics and Biomedicine (BIBM)\",\"6 Feb 2020\",\"2019\",\"\",\"\",\"2259\",\"2264\",\"As opposed to the Open Computing Language (OpenCL) programming model in which host and device codes are written in different languages, the SYCL programming model can combine host and device codes for an application in a type-safe way to improve development productivity. In this paper, we chose two medical imaging applications (Heart Wall and Particle Filter) in the Rodinia benchmark suite to study the performance and programming productivity of the SYCL programming model. More specifically, we introduced the SYCL programming model, shared our experience of implementing the applications using SYCL, and compared the performance and programming portability of the SYCL implementations with the OpenCL implementations on an Intel® Xeon® CPU and an Iris® Pro integrated GPU. The results are promising. For the Heart Wall application, the SYCL implementation is on average 15% faster than the OpenCL implementation on the GPU. For the Particle Filter application, the SYCL implementation is 3% slower than the OpenCL implementation on the GPU, but it is 75% faster on the CPU. Using lines of code as an indicator of programming productivity, the SYCL host program reduces the lines of code of the OpenCL host program by 52% and 38% for the Heart Wall and Particle Filter applications, respectively.\",\"\",\"978-1-7281-1867-3\",\"10.1109/BIBM47256.2019.8982983\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8982983\",\"\",\"\",\"biomedical imaging;graphics processing units;multiprocessing systems;parallel architectures;particle filtering (numerical methods);program compilers;software portability\",\"OpenCL implementation;Heart Wall application;SYCL implementation;programming productivity;SYCL host program;OpenCL host program;medical imaging applications;device codes;SYCL programming model;programming portability;open computing language programming model;particle filter application\",\"\",\"3\",\"\",\"19\",\"\",\"6 Feb 2020\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Parallel Algorithms for Approximate String Matching with k Mismatches on CUDA\",\"Y. Liu; L. Guo; J. Li; M. Ren; K. Li\",\"Sch. of Comput. Sci. & Technol., Heilongjiang Univ., Harbin, China; Sch. of Comput. Sci. & Technol., Heilongjiang Univ., Harbin, China; Sch. of Comput. Sci. & Technol., Heilongjiang Univ., Harbin, China; Sch. of Comput. Sci. & Technol., Heilongjiang Univ., Harbin, China; Dept. of Comput. Sci., State Univ. of New York, New Paltz, NY, USA\",\"2012 IEEE 26th International Parallel and Distributed Processing Symposium Workshops & PhD Forum\",\"20 Aug 2012\",\"2012\",\"\",\"\",\"2414\",\"2422\",\"Approximate string matching using the k-mismatch technique has been widely applied to many fields such as virus detection and computational biology. The traditional parallel algorithms are all based on multiple processors, which have high costs of computing and communication. GPU has high parallel processing capability, low cost of computing, and less time of communication. To the best of our knowledge, there is no any parallel algorithm for approximate string matching with k mismatches on GPU. With a new parallel programming model based on CUDA, we present three parallel algorithms and their implementations on GPU, namely, the thread parallel algorithm, the block-thread parallel algorithm, and the OPT-block-thread parallel algorithm. The OPT-block thread parallel algorithm can take full advantage of the powerful parallel capability of GPU. Furthermore, it balances the load among the threads and optimizes the execution time with the memory model of GPU. Experimental results show that compared with the traditional sequential algorithm on CPU, our best parallel algorithm on GPU in this paper achieves speedup of 40-80.\",\"\",\"978-1-4673-0974-5\",\"10.1109/IPDPSW.2012.298\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6270613\",\"Approximate string matching;CUDA;GPU;Hamming distance;parallel algorithm\",\"Instruction sets;Graphics processing unit;Parallel algorithms;Hamming distance;Kernel;Complexity theory\",\"graphics processing units;multiprocessing systems;parallel architectures;string matching\",\"approximate string matching;CUDA;k-mismatch technique;multiple processors;GPU;parallel processing;OPT-block-thread parallel algorithm\",\"\",\"13\",\"\",\"12\",\"\",\"20 Aug 2012\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"ValuePack: Value-based scheduling framework for CPU-GPU clusters\",\"V. T. Ravi; M. Becchi; G. Agrawal; S. Chakradhar\",\"Dept. of Comput. Sci. & Eng., Ohio State Univ., Columbus, OH, USA; Dept. of Electr. & Comput. Eng., Univ. of Missouri, Columbia, MO, USA; Dept. of Comput. Sci. & Eng., Ohio State Univ., Columbus, OH, USA; NEC Labs. America, Princeton, NJ, USA\",\"SC '12: Proceedings of the International Conference on High Performance Computing, Networking, Storage and Analysis\",\"25 Feb 2013\",\"2012\",\"\",\"\",\"1\",\"12\",\"Heterogeneous computing nodes are becoming commonplace today, and recent trends strongly indicate that clusters, supercomputers, and cloud environments will increasingly host more heterogeneous resources, with some being massively parallel (e.g., GPU). With such heterogeneous environments becoming common, it is important to revisit scheduling problems for clusters and cloud environments. In this paper, we formulate and address the problem of value-driven scheduling of independent jobs on heterogeneous clusters, which captures both the urgency and relative priority of jobs. Our overall scheduling goal is to maximize the aggregate value or yield of all jobs. Exploiting the portability available from the underlying programming model, we propose four novel scheduling schemes that can automatically and dynamically map jobs onto heterogeneous resources. Additionally, to improve the utilization of massively parallel resources, we also propose heuristics to automatically decide when and which jobs can share a single resource.\",\"2167-4337\",\"978-1-4673-0806-9\",\"10.1109/SC.2012.111\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6468477\",\"\",\"Graphics processing units;Processor scheduling;Delay;Multicore processing;Aggregates;Supercomputers;Torque\",\"cloud computing;graphics processing units;processor scheduling\",\"value-based scheduling framework;ValuePack;CPU-GPU clusters;heterogeneous computing nodes;supercomputers;cloud environments;value-driven scheduling;heterogeneous clusters;parallel resources\",\"\",\"5\",\"\",\"48\",\"\",\"25 Feb 2013\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"G-Storm: GPU-enabled high-throughput online data processing in Storm\",\"Z. Chen; J. Xu; J. Tang; K. Kwiat; C. Kamhoua\",\"Department of Electrical Engineering and Computer Science, Syracuse University, Syracuse, NY, 13244; Department of Electrical Engineering and Computer Science, Syracuse University, Syracuse, NY, 13244; Department of Electrical Engineering and Computer Science, Syracuse University, Syracuse, NY, 13244; US Air Force Research Lab (AFRL), Rome, NY; US Air Force Research Lab (AFRL), Rome, NY\",\"2015 IEEE International Conference on Big Data (Big Data)\",\"28 Dec 2015\",\"2015\",\"\",\"\",\"307\",\"312\",\"The Single Instruction Multiple Data (SIMD) architecture of Graphic Processing Units (GPUs) makes them perfect for parallel processing of big data. In this paper, we present the design, implementation and evaluation of G-Storm, a GPU-enabled parallel system based on Storm, which harnesses the massively parallel computing power of GPUs for high-throughput online stream data processing. G-Storm has the following desirable features: 1) G-Storm is designed to be a general data processing platform as Storm, which can handle various applications and data types. 2) G-Storm exposes GPUs to Storm applications while preserving its easy-to-use programming model. 3) G-Storm achieves high-throughput and low-overhead data processing with GPUs. We implemented G-Storm based on Storm 0.9.2 and tested it using two different applications: continuous query and matrix multiplication. Extensive experimental results show that compared to Storm, G-Storm achieves over 7x improvement on throughput for continuous query, while maintaining reasonable average tuple processing time. It also leads to 2.3x throughput improvement for the matrix multiplication application.\",\"\",\"978-1-4799-9926-2\",\"10.1109/BigData.2015.7363769\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7363769\",\"\",\"Graphics processing units;Storms;Kernel;Data processing;Programming;Fasteners;Indexes\",\"Big Data;graphics processing units;matrix multiplication;parallel processing\",\"matrix multiplication;continuous query;parallel processing;graphic processing units;SIMD architecture;single instruction multiple data;high-throughput online data processing;GPU;G-Storm\",\"\",\"18\",\"\",\"21\",\"\",\"28 Dec 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Iterative Solution on GPU of Linear Systems Arising from the A-V Edge-FEA of Time-Harmonic Electromagnetic Phenomena\",\"A. F. P. Camargos; V. C. Silva; J. Guichon; G. Meunier\",\"Inst. Fed. de Minas Gerais, Formiga, Brazil; Escola Politec., Univ. de Sao Paulo, São Paulo, Brazil; Grenoble Genie Electr. Lab., St. Martin d'Hères, France; Grenoble Genie Electr. Lab., St. Martin d'Hères, France\",\"2014 22nd Euromicro International Conference on Parallel, Distributed, and Network-Based Processing\",\"14 Apr 2014\",\"2014\",\"\",\"\",\"365\",\"371\",\"We present a performance analysis of a parallel implementation to both preconditioned Conjugate Gradient and preconditioned Bi-conjugate Gradient solvers using graphic processing units with CUDA programming model. The solvers were optimized for the solution of sparse systems of equations arising from Finite Element Analysis of electromagnetic phenomena involved in the diffusion of underground currents under time-harmonic current excitation. We used a shifted Incomplete Cholesky factorization as preconditioner. Results show a significant speedup by using the GPU compared to a serial CPU implementation.\",\"2377-5750\",\"978-1-4799-2729-6\",\"10.1109/PDP.2014.95\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6787300\",\"Finite Elements;Graphic Processing Unit;Preconditioner;Incomplete Factorization\",\"Graphics processing units;Linear systems;Mathematical model;Equations;Iterative methods;Finite element analysis;Sparse matrices\",\"computational electromagnetics;conjugate gradient methods;eddy currents;finite element analysis;graphics processing units;iterative methods;linear systems;parallel architectures\",\"iterative solution;GPU;linear systems;A-V edge-FEA;time-harmonic electromagnetic phenomena;preconditioned biconjugate gradient solver;preconditioned conjugate gradient solver;finite element analysis;underground currents;time-harmonic current excitation;shifted incomplete Cholesky factorization;graphic processing unit;sparse systems;eddy currents\",\"\",\"5\",\"\",\"23\",\"\",\"14 Apr 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Toward a Portable Programming Environment for Distributed High Performance Accelerators\",\"S. Hirasawa; H. Honda\",\"Japan Sci. & Technol. Agency, Univ. of Electro-Commun., Chofu, Japan; Japan Sci. & Technol. Agency, Univ. of Electro-Commun., Chofu, Japan\",\"2009 Software Technologies for Future Dependable Distributed Systems\",\"13 Jan 2011\",\"2009\",\"\",\"\",\"189\",\"194\",\"Accelerators with little power consumption per computation performance are beginning to widely spread for High Performance Computing use, instead of general-purpose CPUs with much power consumption. They are GPUs, processors of Cell architecture, and FPGA accelerators. While these processors have much higher computation performance than general-purpose CPUs, they need specific programming environment respectively when using them as distributed memory accelerators. We discuss a portable programming environment which can be used in common with distributed memory accelerators in this paper.\",\"\",\"978-0-7695-3572-2\",\"10.1109/STFSSD.2009.32\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=4804597\",\"Heterogeneous Programming Model;Distributed Memory;SIMD Accelerator\",\"Probability density function;Data mining;Software\",\"coprocessors;distributed memory systems;field programmable gate arrays;programming environments\",\"portable programming environment;distributed high performance accelerators;power consumption;computation performance;high performance computing;general-purpose CPU;GPU;cell architecture processors;FPGA accelerators;distributed memory accelerators\",\"\",\"1\",\"1\",\"12\",\"\",\"13 Jan 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Software technologies coping with memory hierarchy of GPGPU clusters for stencil computations\",\"T. Endo; G. Jin\",\"Global Science Information and Computing Center, Tokyo Institute of Technology/JST-CREST, Japan; Global Science Information and Computing Center, Tokyo Institute of Technology/JST-CREST, Japan\",\"2014 IEEE International Conference on Cluster Computing (CLUSTER)\",\"1 Dec 2014\",\"2014\",\"\",\"\",\"132\",\"139\",\"Stencil computations, which are important kernels for CFD simulations, have been highly successful on GPGPU clusters, due to high memory bandwidth and computation speed of GPU accelerators. However, sizes of the computed domains are limited by small capacity of GPU device memory. In order to support larger domain sizes, we utilize the memory hierarchy of GPGPU clusters; larger host memory is used for maintain large domains. However, it is challenging to achieve all of larger domain sizes, high performance and easiness of program development. Towards this goal, we combine two software technologies. From the aspect of algorithm, we adopt a locality improvement technique called temporal blocking. From the aspect of system software, we developed a MPI/CUDA wrapper library named HHRT, which supports memory swapping and finer grained programming model. With this combination, we demonstrate that our goal is achieved through evaluations on TSUBAME2.5, a petascale GPGPU supercomputer.\",\"2168-9253\",\"978-1-4799-5548-0\",\"10.1109/CLUSTER.2014.6968747\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6968747\",\"\",\"Graphics processing units;Arrays;Performance evaluation;Libraries;Programming;Bandwidth;Supercomputers\",\"application program interfaces;computational fluid dynamics;graphics processing units;message passing;parallel architectures\",\"software technologies;memory hierarchy;GPGPU clusters;stencil computations;kernels;CFD simulations;memory bandwidth;computation speed;GPU accelerators;GPU device memory;program development;locality improvement technique;temporal blocking;MPI/CUDA wrapper library;HHRT;memory swapping;grained programming model;TSUBAME2.5;petascale GPGPU supercomputer\",\"\",\"12\",\"\",\"19\",\"\",\"1 Dec 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"An Automatic Host and Device Memory Allocation Method for OpenMPC\",\"H. Uchiyama; T. Tsumura; H. Matsuo\",\"Nagoya Inst. of Technol., Nagoya, Japan; Nagoya Inst. of Technol., Nagoya, Japan; Nagoya Inst. of Technol., Nagoya, Japan\",\"2012 Third International Conference on Networking and Computing\",\"31 Jan 2013\",\"2012\",\"\",\"\",\"208\",\"214\",\"The CUDA programming model provides better abstraction for GPU programming. However, it is still hard to write programs with CUDA because both some specific techniques and knowledge about GPU architecture are required. Hence, many programming frameworks for CUDA have been developed. OpenMPC is one of them based on OpenMP. OpenMPC is an easy-to-write framework for programmers familiar with traditional OpenMP, but still requires programmers to use the special directives for utilizing fast device memories. To solve this problem, this paper proposes a method for allocating appropriate device memories automatically. This paper also proposes a method for automatically allocating page locked memory for the data which are transferred between host and device. The evaluation results with several programs show that proposed methods can reduce 52% execution time in maximum.\",\"\",\"978-1-4673-4624-5\",\"10.1109/ICNC.2012.39\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6424565\",\"GPGPU;CUDA;OpenMPC;memory allocation\",\"Graphics processing units;Kernel;Instruction sets;Programming;Resource management;Data transfer;Arrays\",\"graphics processing units;paged storage;parallel architectures;parallel programming;program compilers;program diagnostics;storage allocation\",\"OpenMPC;CUDA programming model;GPU programming abstraction;GPU architecture;programming frameworks;automatic device memory allocation method;automatic page locked memory allocation method;automatic host allocation method;graphics processing unit\",\"\",\"2\",\"\",\"10\",\"\",\"31 Jan 2013\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Record Setting Software Implementation of DES Using CUDA\",\"G. Agosta; A. Barenghi; F. De Santis; G. Pelosi\",\"Dipt. di Elettron. e Inf., Politec. di Milano, Milan, Italy; Dipt. di Elettron. e Inf., Politec. di Milano, Milan, Italy; Politec. di Milano, Milan, Italy; Dipt. di Ing. dell'Inf. e Metodi Matematici, Univ. of Bergamo, Dalmine, Italy\",\"2010 Seventh International Conference on Information Technology: New Generations\",\"1 Jul 2010\",\"2010\",\"\",\"\",\"748\",\"755\",\"The increase in computational power of off-the-shelf hardware offers more and more advantageous tradeoffs among efficiency, cost and availability, thus enhancing the feasibility of of cryptanalytic attacks aiming to lower the security of widely used cryptosystems. In this paper we illustrate an GPU-based software implementation of the most efficent variant of Data Encryption Standard (DES), showing the performance of a software breaker which effectively exploits the multi-core Nvidia GT200 graphic architecture. The key point is to assess how well the structure of a symmetric key cipher can fit the GPU programming model and the single instruction multiple data architectural parallelism. The proposed breaker outperforms the fastest general purpose CPU-based implementations by an order of magnitude, and, due to the vast availability of GPUs on the market, the speedup translates into a sound improvement in the cost efficiency of the attack. As opposed to solutions based either on application specific or reconfigurable hardware, the proposed implementation does not require any specific technical knowledge from the attacker in order to be successfully built, once our implementation is available. This turns out in a better cost-availability tradeoff and minimizes the required setup time for such an attack to be mounted.\",\"\",\"978-1-4244-6271-1\",\"10.1109/ITNG.2010.43\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5501641\",\"Brute-force Attacks;DES;GPGPU\",\"Hardware;Costs;Cryptography;Software performance;Availability;Data security;Software standards;Graphics;Computer architecture;Parallel programming\",\"computer graphic equipment;coprocessors;cryptography;parallel architectures\",\"record setting software implementation;DES;data encryption standard;CUDA;off-the-shelf hardware;cryptanalytic attacks;cryptosystems;GPU-based software implementation;software breaker;multicore Nvidia GT200 graphic architecture;symmetric key cipher;GPU programming model;cost-availability tradeoff;single instruction multiple data architectural parallelism\",\"\",\"16\",\"\",\"14\",\"\",\"1 Jul 2010\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Optimal loop unrolling for GPGPU programs\",\"G. S. Murthy; M. Ravishankar; M. M. Baskaran; P. Sadayappan\",\"Department of Computer Science and Engineering, The Ohio State University, Columbus, Ohio, USA; Department of Computer Science and Engineering, The Ohio State University, Columbus, Ohio, USA; Department of Computer Science and Engineering, The Ohio State University, Columbus, Ohio, USA; Department of Computer Science and Engineering, The Ohio State University, Columbus, Ohio, USA\",\"2010 IEEE International Symposium on Parallel & Distributed Processing (IPDPS)\",\"24 May 2010\",\"2010\",\"\",\"\",\"1\",\"11\",\"Graphics Processing Units (GPUs) are massively parallel, many-core processors with tremendous computational power and very high memory bandwidth. With the advent of general purpose programming models such as NVIDIA's CUDA and the new standard OpenCL, general purpose programming using GPUs (GPGPU) has become very popular. However, the GPU architecture and programming model have brought along with it many new challenges and opportunities for compiler optimizations. One such classical optimization is loop unrolling. Current GPU compilers perform limited loop unrolling. In this paper, we attempt to understand the impact of loop unrolling on GPGPU programs. We develop a semi-automatic, compile-time approach for identifying optimal unroll factors for suitable loops in GPGPU programs. In addition, we propose techniques for reducing the number of unroll factors evaluated, based on the characteristics of the program being compiled and the device being compiled to. We use these techniques to evaluate the effect of loop unrolling on a range of GPGPU programs and show that we correctly identify the optimal unroll factors. The optimized versions run up to 70 percent faster than the unoptimized versions.\",\"1530-2075\",\"978-1-4244-6443-2\",\"10.1109/IPDPS.2010.5470423\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5470423\",\"Compiler optimizations;Loop Unrolling;GPGPU\",\"Central Processing Unit;Program processors;Optimizing compilers;Concurrent computing;Registers;Computer graphics;Linear programming;Computer science;Power engineering and energy;Power engineering computing\",\"computer graphic equipment;coprocessors;parallel programming;program compilers\",\"optimal loop unrolling;GPGPU programs;graphics processing units;massively parallel many-core processors;programming model;NVIDIA CUDA;OpenCL;general purpose programming;GPU architecture;compiler optimization;GPU compilers\",\"\",\"34\",\"\",\"15\",\"\",\"24 May 2010\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Code generation for embedded heterogeneous architectures on android\",\"R. Membarth; O. Reiche; F. Hannig; J. Teich\",\"Department of Computer Science, University of Erlangen-Nuremberg, Germany; Department of Computer Science, University of Erlangen-Nuremberg, Germany; Department of Computer Science, University of Erlangen-Nuremberg, Germany; Department of Computer Science, University of Erlangen-Nuremberg, Germany\",\"2014 Design, Automation & Test in Europe Conference & Exhibition (DATE)\",\"21 Apr 2014\",\"2014\",\"\",\"\",\"1\",\"6\",\"The success of Android is based on its unified Java programming model that allows to write platform-independent programs for a variety of different target platforms. However, this comes at the cost of performance. As a consequence, Google introduced APIs that allow to write native applications and to exploit multiple cores as well as embedded GPUs for compute-intensive parts. This paper proposes code generation techniques in order to target the Renderscript and Filterscript APIs. Renderscript harnesses multi-core CPUs and unified shader GPUs, while the more restricted Filterscript also supports GPUs with earlier shader models. Our techniques focus on image processing applications and allow to target these APIs and OpenCL from a common description. We further supersede memory transfers by sharing the same memory region among different processing elements on HSA platforms. As reference, we use an embedded platform hosting a multi-core ARM CPU and an ARM Mali GPU. We show that our generated source code is faster than native implementations in OpenCV as well as the pre-implemented script intrinsics provided by Google for acceleration on the embedded GPU.\",\"1558-1101\",\"978-3-9815370-2-4\",\"10.7873/DATE.2014.099\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6800300\",\"\",\"Graphics processing units;Kernel;Androids;Humanoid robots;Computer architecture;DSL;Optimization\",\"Android (operating system);application program interfaces;embedded systems;graphics processing units;Java;multiprocessing systems;source code (software)\",\"code generation;embedded heterogeneous architectures;unified Java programming model;platform independent programs;multiple cores;embedded GPU;API;image processing applications;embedded platform;multicore ARM CPU;ARM Mali GPU;generated source code\",\"\",\"1\",\"\",\"11\",\"\",\"21 Apr 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"A Portable and Fast Stochastic Volatility Model Calibration Using Multi and Many-Core Processors\",\"M. Dixon; J. Lotze; M. Zubair\",\"Dept. of Analytics, Univ. of San Francisco, San Francisco, CA, USA; Xcelerit, Dublin, Ireland; Dept. of Comput. Sci., Old Dominion Univ., Norfolk, VA, USA\",\"2014 Seventh Workshop on High Performance Computational Finance\",\"26 Jan 2015\",\"2014\",\"\",\"\",\"23\",\"28\",\"Financial markets change precipitously and on-demand pricing and risk models must be constantly recalibrated to reduce risk. However, certain classes of models are computationally intensive to robustly calibrate to intraday pricesstochastic volatility models being an archetypal example due to the non-convexity of the objective function. In order to accelerate this procedure through parallel implementation,nancial application developers are faced with an ever growing plethora of low-level high-performance computing frameworks such as OpenMP, OpenCL, CUDA, or SIMD intrinsics, and forced to make a trade-off between performance versus the portability,exibility and modularity of the code required to facilitate rapid in-house model development and productionization.This paper describes the acceleration of stochastic volatility model calibration on multi-core CPUs and GPUs using the Xcelerit platform. By adopting a simple dataow programming model, the Xcelerit platform enables the application developer to write sequential, high-level C++ code, without concern for low-level high-performance computing frameworks. This platform provides the portability,exibility and modularity required by application developers. Speedups of up to 30x and 293x are respectively achieved on an Intel Xeon CPU and NVIDIA Tesla K40 GPU, compared to a sequential CPU implementation. The Xcelerit platform implementation is further shown to be equivalent in performance to a low-level CUDA version. Overall, we are able to reduce the entire calibration process time of the sequential implementation from 6; 189 seconds to 183:8 and 17:8 seconds on the CPU and GPU respectively without requiring the developer to reimplement in low-level high performance computing frameworks.\",\"\",\"978-1-4799-7027-8\",\"10.1109/WHPCF.2014.12\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7016370\",\"Calibration; Stochastic Volatility; GPGPU; C++\",\"Graphics processing units;Calibration;Computational modeling;Stochastic processes;Mathematical model;Optimization;Data models\",\"C++ language;data flow computing;financial data processing;graphics processing units;multiprocessing systems;parallel architectures;pricing;risk management;stock markets\",\"fast stochastic volatility model calibration;multicore processors;many-core processors;financial markets;on-demand pricing model;risk model;risk reduction;objective function nonconvexity;low-level high-performance computing frameworks;OpenMP intrinsic;OpenCL intrinsic;CUDA intrinsic;SIMD intrinsic;multicore CPU;multicore GPU;Xcelerit platform;dataflow programming model;high-level C++ code;sequential code;NVIDIA Tesla K40 GPU;Intel Xeon CPU\",\"\",\"\",\"\",\"16\",\"\",\"26 Jan 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"On the characterization of OpenCL dwarfs on fixed and reconfigurable platforms\",\"K. Krommydas; W. -c. Feng; M. Owaida; C. D. Antonopoulos; N. Bellas\",\"Department of Computer Science, Virginia Tech, USA; Department of Computer Science, Virginia Tech, USA; Department of Electrical and Computer Engineering, University of Thessaly, Greece; Department of Electrical and Computer Engineering, University of Thessaly, Greece; Department of Electrical and Computer Engineering, University of Thessaly, Greece\",\"2014 IEEE 25th International Conference on Application-Specific Systems, Architectures and Processors\",\"31 Jul 2014\",\"2014\",\"\",\"\",\"153\",\"160\",\"The proliferation of heterogeneous computing platforms presents the parallel computing community with new challenges. One such challenge entails evaluating the efficacy of such parallel architectures and identifying the architectural innovations that ultimately benefit applications. To address this challenge, we need benchmarks that capture the execution patterns (i.e., dwarfs or motifs) of applications, both present and future, in order to guide future hardware design. Furthermore, we desire a common programming model for the benchmarks that facilitates code portability across a wide variety of different processors (e.g., CPU, APU, GPU, FPGA, DSP) and computing environments (e.g., embedded, mobile, desktop, server). As such, we present the latest release of OpenDwarfs, a benchmark suite that currently realizes the Berkeley dwarfs in OpenCL, a vendor-agnostic and open-standard computing language for parallel computing. Using OpenDwarfs, we characterize a diverse set of fixed and reconfigurable parallel platforms: multicore CPUs, discrete and integrated GPUs, Intel Xeon Phi coprocessor, as well as a FPGA. We describe the computation and communication patterns exposed by a representative set of dwarfs, obtain relevant profiling data and execution information, and draw conclusions that highlight the complex interplay between dwarfs' patterns and the underlying hardware architecture of modern parallel platforms.\",\"2160-052X\",\"978-1-4799-3609-0\",\"10.1109/ASAP.2014.6868650\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6868650\",\"OpenDwarfs;benchmarking;evaluation;dwarfs;performance characterization;CPU;FPGA;GPU;OpenCL\",\"Benchmark testing;Field programmable gate arrays;Graphics processing units;Hardware;Computer architecture;Kernel;High definition video\",\"field programmable gate arrays;graphics processing units;multiprocessing systems;parallel architectures;reconfigurable architectures\",\"OpenCL Dwarfs;fixed platforms;reconfigurable platforms;heterogeneous computing platforms;parallel computing community;parallel architectures;future hardware design;OpenDwarfs;Berkeley dwarfs;vendor-agnostic computing language;open-standard computing language;multicore CPU;integrated GPU;discrete GPU;Intel Xeon Phi coprocessor;FPGA;execution information;profiling data;hardware architecture\",\"\",\"14\",\"\",\"14\",\"\",\"31 Jul 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Heterogeneous work-stealing across CPU and DSP cores\",\"V. Kumar; A. Sbîrlea; A. Jayaraj; Z. Budimlić; D. Majeti; V. Sarkar\",\"Rice University, Houston, Texas 77005, United States; Rice University, Houston, Texas 77005, United States; Texas Instruments, Dallas, United States; Rice University, Houston, Texas 77005, United States; Rice University, Houston, Texas 77005, United States; Rice University, Houston, Texas 77005, United States\",\"2015 IEEE High Performance Extreme Computing Conference (HPEC)\",\"12 Nov 2015\",\"2015\",\"\",\"\",\"1\",\"6\",\"Due to the increasing power constraints and higher and higher performance demands, many vendors have shifted their focus from designing high-performance computer nodes using powerful multicore general-purpose CPUs, to nodes containing a smaller number of general-purpose CPUs aided by a larger number of more power-efficient special purpose processing units, such as GPUs, FPGAs or DSPs. While offering a lower power-to-performance ratio, unfortunately, such heterogeneous systems are notoriously hard to program, forcing the users to resort to lower-level direct programming of the special purpose processors and manually managing data transfer and synchronization between the parts of the program running on general-purpose CPUs and on special-purpose processors. In this paper, we present HC-K2H, a programming model and runtime system for the Texas Instruments Keystone II Hawking platform, consisting of 4 ARM CPUs and 8 TI DSP processors. This System-on-a-Chip (SoC) offers high floating-point performance with lower power requirements than other processors with comparable performance. We present the design and implementation of a hybrid programming model and work-stealing runtime that allows tasks to be created and executed on both the ARM and DSP, and enables the seamless execution and synchronization of tasks regardless of whether they are running on the ARM or DSP. The design of our programming model and runtime is based on an extension of the Habanero-C programming system. We evaluate our implementation using task-parallel benchmarks on a Hawking board, and demonstrate excellent scaling compared to sequential implementations on a single ARM processor.\",\"\",\"978-1-4673-9286-0\",\"10.1109/HPEC.2015.7322452\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7322452\",\"Habanero;Keystone-II;load balancing;scheduling;work-stealing\",\"Digital signal processing;Runtime;Programming;Program processors;Hardware;Benchmark testing;Multicore processing\",\"digital signal processing chips;low-power electronics;multiprocessing systems;parallel programming;synchronisation;system-on-chip\",\"heterogeneous work-stealing;DSP cores;power constraints;high-performance computer nodes;multicore general-purpose CPU;power-efficient special purpose processing units;GPU;FPGAs;power-to-performance ratio;heterogeneous systems;lower-level direct programming;special purpose processors;data transfer;synchronization;HC-K2H;runtime system;Texas Instruments Keystone II Hawking platform;ARM CPU;DSP processors;system-on-a-chip;SoC;floating-point performance;lower power requirements;hybrid programming model;work-stealing runtime;Habanero-C programming system;parallel programming model\",\"\",\"6\",\"\",\"23\",\"\",\"12 Nov 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Efficient Mapping of Graphic Software on DSP\",\"M. Mody; A. Jayaraj; H. Hariyani; A. Balagopalakrishnan; J. Jones; E. Narvaez; S. Govindarajan; P. Shankar; H. Garud\",\"Embedded Processor Business, Texas Instruments Inc; Embedded Processor Business, Texas Instruments Inc; Embedded Processor Business, Texas Instruments Inc; Embedded Processor Business, Texas Instruments Inc; Embedded Processor Business, Texas Instruments Inc; Embedded Processor Business, Texas Instruments Inc; Embedded Processor Business, Texas Instruments Inc; Embedded Processor Business, Texas Instruments Inc; Embedded Processor Business, Texas Instruments Inc\",\"2021 IEEE International Conference on Electronics, Computing and Communication Technologies (CONECCT)\",\"7 Dec 2021\",\"2021\",\"\",\"\",\"1\",\"4\",\"High Performance GPU is critical to render sophisticated user interfaces and general-purpose compute for image and vision processing in the Automotive and Industrial applications. The paper provides an overview of methods that can be used for offloading of part of GPU software (namely shaders) on DSP keeping traditional GPU software programming model intact to improve overall performance in the system. The methods allow efficient and transparent mapping of GPU shaders to DSP without alterations to existing software model. The proposed solution is prototyped in Jacinoto6 Platform of Texas Instruments. Experiments indicate that multiple shader primitives can be efficiently mapped to DSP achieving performance similar to GPU, with exception of trigonometric primitives. This allows DSP to be used as co-processor for graphics rendering applications. Leveraging compute capabilities of dual core C66x DSP in J acinto6 Platform using proposed solution can improve overall GPU Shader performance by up-to 41 % for different shaders corresponding to different use-cases.\",\"2766-2101\",\"978-1-6654-2849-1\",\"10.1109/CONECCT52877.2021.9622613\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9622613\",\"GPu;DSP;GLOPS;Shader;LLVM;OpenGL;Vulkan;Compute Primitives;Jacinto\",\"Computational modeling;Conferences;Graphics processing units;User interfaces;Programming;Rendering (computer graphics);Software\",\"\",\"\",\"\",\"\",\"\",\"12\",\"\",\"7 Dec 2021\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"An investigation of Unified Memory Access performance in CUDA\",\"R. Landaverde; Tiansheng Zhang; A. K. Coskun; M. Herbordt\",\"Electrical and Computer Engineering Department, Boston University, MA, USA; Electrical and Computer Engineering Department, Boston University, MA, USA; Electrical and Computer Engineering Department, Boston University, MA, USA; Electrical and Computer Engineering Department, Boston University, MA, USA\",\"2014 IEEE High Performance Extreme Computing Conference (HPEC)\",\"12 Feb 2015\",\"2014\",\"\",\"\",\"1\",\"6\",\"Managing memory between the CPU and GPU is a major challenge in GPU computing. A programming model, Unified Memory Access (UMA), has been recently introduced by Nvidia to simplify the complexities of memory management while claiming good overall performance. In this paper, we investigate this programming model and evaluate its performance and programming model simplifications based on our experimental results. We find that beyond on-demand data transfers to the CPU, the GPU is also able to request subsets of data it requires on demand. This feature allows UMA to outperform full data transfer methods for certain parallel applications and small data sizes. We also find, however, that for the majority of applications and memory access patterns, the performance overheads associated with UMA are significant, while the simplifications to the programming model restrict flexibility for adding future optimizations.\",\"\",\"978-1-4799-6233-4\",\"10.1109/HPEC.2014.7040988\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7040988\",\"\",\"Graphics processing units;Benchmark testing;Kernel;Data transfer;Programming;Runtime;Acceleration\",\"electronic data interchange;graphics processing units;parallel architectures;performance evaluation;shared memory systems;storage management\",\"unified memory access performance;CUDA;memory management;CPU;GPU computing;UMA;Nvidia;performance evaluation;programming model simplification;on-demand data transfer;data transfer method;memory access pattern\",\"\",\"46\",\"\",\"10\",\"\",\"12 Feb 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Measurement and Analysis of GPU-Accelerated OpenCL Computations on Intel GPUs\",\"A. T. Cherian; K. Zhou; D. Grubisic; X. Meng; J. Mellor-Crummey\",\"Rice University,Dept. of Computer Science; Rice University,Dept. of Computer Science; Rice University,Dept. of Computer Science; Rice University,Dept. of Computer Science; Rice University,Dept. of Computer Science\",\"2021 IEEE/ACM International Workshop on Programming and Performance Visualization Tools (ProTools)\",\"22 Dec 2021\",\"2021\",\"\",\"\",\"26\",\"35\",\"Graphics Processing Units (GPUs) have become a key technology for accelerating node performance in supercomputers, including the US Department of Energy’s forthcoming exascale systems. Since the execution model for GPUs differs from that for conventional processors, applications need to be rewritten to exploit GPU parallelism. Performance tools are needed for such GPU-accelerated systems to help developers assess how well applications offload computation onto GPUs.In this paper, we describe extensions to Rice University’s HPC-Toolkit performance tools that support measurement and analysis of Intel’s DPC++ programming model for GPU-accelerated systems atop an implementation of the industry-standard OpenCL framework for heterogeneous parallelism on Intel GPUs. HPCToolkit supports three techniques for performance analysis of programs atop OpenCL on Intel GPUs. First, HPC-Toolkit supports profiling and tracing of OpenCL kernels. Second, HPCToolkit supports CPU-GPU blame shifting for OpenCL kernel executions—a profiling technique that can identify code that executes on one or more CPUs while GPUs are idle. Third, HPCToolkit supports fine-grained measurement, analysis, and attribution of performance metrics to OpenCL GPU kernels, including instruction counts, execution latency, and SIMD waste. The paper describes these capabilities and then illustrates their application in case studies with two applications that offload computations onto Intel GPUs.\",\"\",\"978-1-6654-1110-3\",\"10.1109/ProTools54808.2021.00009\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9651230\",\"Supercomputers;High performance computing;Performance analysis;Parallel programming\",\"Measurement;Visualization;Parallel programming;Computational modeling;High performance computing;Graphics processing units;Parallel processing\",\"\",\"\",\"\",\"\",\"\",\"25\",\"\",\"22 Dec 2021\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"X<sup>e</sup><inf>HPC</inf> Ponte Vecchio\",\"D. Blythe\",\"Chief GPU Architect,Intel\",\"2021 IEEE Hot Chips 33 Symposium (HCS)\",\"20 Oct 2021\",\"2021\",\"\",\"\",\"1\",\"34\",\"500X Increase In Compute Performance Scalable Compute & Memory Packaging & Interconnect For Density & Scale Full Software Stack/Programming Model\",\"2573-2048\",\"978-1-6654-1397-8\",\"10.1109/HCS52781.2021.9567038\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9567038\",\"\",\"Computational modeling;Packaging;Software\",\"\",\"\",\"\",\"\",\"\",\"0\",\"\",\"20 Oct 2021\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"A Case Study of k-means Clustering using SYCL\",\"Z. Jin; H. Finkel\",\"Leadership Computing Facility Argonne National Laboratory,Lemont,IL,USA; Leadership Computing Facility Argonne National Laboratory,Lemont,IL,USA\",\"2019 IEEE International Conference on Big Data (Big Data)\",\"24 Feb 2020\",\"2019\",\"\",\"\",\"4466\",\"4471\",\"As opposed to the OpenCL programming model in which host and device codes are written in two programming languages, the SYCL programming model combines them for an application in a type-safe way to improve development productivity. As a popular cluster analysis algorithm, k-means has been implemented using programming models such as OpenMP, OpenCL, and CUDA. Developing a SYCL implementation of k-means as a case study allows us to have a better understanding of performance portability and programming productivity of the SYCL programming model. Specifically, we explained the k-means benchmark in Rodinia, described our efforts of porting the OpenCL k-means benchmark, and evaluated the performance of the OpenCL and SYCL implementations on the Intel<sup>®</sup> Haswell, Broadwell, and Skylake processors. We summarized the migration steps from OpenCL to SYCL, compiled the SYCL program using Codeplay and Intel<sup>®</sup> SYCL compilers, analyzed the SYCL and OpenCL programs using an open-source profiling tool which can intercept OpenCL runtime calls, and compared the performance of the implementations on Intel<sup>®</sup> CPUs and integrated GPU. The experimental results show that the SYCL version in which the kernels run on the GPU is 2% and 8% faster than the OpenCL version for the two large datasets. However, the OpenCL version is still much faster than the SYCL version on the CPUs. Compared to the Intel<sup>®</sup> Haswell and Skylake CPUs, running the k-means benchmark on the Intel<sup>®</sup> Broadwell low-power processor with a CPU and an integrated GPU can achieve the lowest energy consumption. In terms of programming productivity, the lines of code of the SYCL program are 51% fewer than those of the OpenCL program.\",\"\",\"978-1-7281-0858-2\",\"10.1109/BigData47090.2019.9005555\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9005555\",\"\",\"Kernel;Graphics processing units;Programming;Benchmark testing;C++ languages;Productivity\",\"application program interfaces;graphics processing units;parallel programming;pattern clustering;program compilers;programming languages\",\"OpenCL programming model;programming languages;SYCL programming model;cluster analysis algorithm;SYCL program;SYCL compilers;OpenCL runtime calls\",\"\",\"3\",\"\",\"14\",\"\",\"24 Feb 2020\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"A Validation Testsuite for OpenACC 1.0\",\"C. Wang; R. Xu; S. Chandrasekaran; B. Chapman; O. Hernandez\",\"Dept. of Comput. Sci., Univ. of Houston, Houston, TX, USA; Dept. of Comput. Sci., Univ. of Houston, Houston, TX, USA; Dept. of Comput. Sci., Univ. of Houston, Houston, TX, USA; Dept. of Comput. Sci., Univ. of Houston, Houston, TX, USA; Comput. Sci. & Math. Div., Oak Ridge Nat. Lab., Oak Ridge, TN, USA\",\"2014 IEEE International Parallel & Distributed Processing Symposium Workshops\",\"4 Dec 2014\",\"2014\",\"\",\"\",\"1407\",\"1416\",\"Directive-based programming models provide high-level of abstraction thus hiding complex low-level details of the underlying hardware from the programmer. One such model is OpenACC that is also a portable programming model allowing programmers to write applications that offload portions of work from a host CPU to an attached accelerator (GPU or a similar device). The model is gaining popularity and being used for accelerating many types of applications, ranging from molecular dynamics codes to particle physics models. It is critical to evaluate the correctness of the OpenACC implementations and determine its conformance to the specification. In this paper, we present a robust and scalable testing infrastructure that serves this purpose. We worked very closely with three main vendors that offer compiler support for OpenACC and assisted them in identifying and resolving compiler bugs helping them improve the quality of their compilers. The testsuite also aims to identify and resolve ambiguities within the OpenACC specification. This testsuite has been integrated into the harness infrastructure of the TITAN machine at Oak Ridge National Lab and is being used for production. The testsuite consists of test cases for all the directives and clauses of OpenACC, both for C and Fortran languages. The testsuite discussed in this paper focuses on the OpenACC 1.0 feature set. The framework of the testsuite is robust enough to create test cases for 2.0 and future releases. This work is in progress.\",\"\",\"978-1-4799-4116-2\",\"10.1109/IPDPSW.2014.158\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6969543\",\"Validation;OpenACC;Compiler\",\"Arrays;Programming;Computer bugs;Vectors;Performance evaluation;Standards;Graphics processing units\",\"C language;formal specification;FORTRAN;graphics processing units;molecular dynamics method;program compilers;program debugging\",\"validation testsuite;OpenACC 1.0;directive-based programming model;high-level of abstraction;programmer;portable programming model;attached accelerator;GPU;molecular dynamics codes;particle physics model;OpenACC implementation;testing infrastructure;compiler support;compiler bugs;OpenACC specification;harness infrastructure;TITAN machine;Oak Ridge National Lab;C language;Fortran language\",\"\",\"7\",\"1\",\"12\",\"\",\"4 Dec 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Accelerating the reconstruction of magnetic resonance imaging by three-dimensional dual-dictionary learning using CUDA\",\"J. Li; J. Sun; Y. Song; Y. Xu; J. Zhao\",\"School of Biomedical Engineering, Shanghai Jiao Tong University, China; School of Biomedical Engineering, Shanghai Jiao Tong University, China; School of Biomedical Engineering, Shanghai Jiao Tong University, China; School of Biomedical Engineering, Shanghai Jiao Tong University, China; School of Biomedical Engineering, Shanghai Jiao Tong University, China\",\"2014 36th Annual International Conference of the IEEE Engineering in Medicine and Biology Society\",\"6 Nov 2014\",\"2014\",\"\",\"\",\"2412\",\"2415\",\"An effective way to improve the data acquisition speed of magnetic resonance imaging (MRI) is using under-sampled k-space data, and dictionary learning method can be used to maintain the reconstruction quality. Three-dimensional dictionary trains the atoms in dictionary in the form of blocks, which can utilize the spatial correlation among slices. Dual-dictionary learning method includes a low-resolution dictionary and a high-resolution dictionary, for sparse coding and image updating respectively. However, the amount of data is huge for three-dimensional reconstruction, especially when the number of slices is large. Thus, the procedure is time-consuming. In this paper, we first utilize the NVIDIA Corporation's compute unified device architecture (CUDA) programming model to design the parallel algorithms on graphics processing unit (GPU) to accelerate the reconstruction procedure. The main optimizations operate in the dictionary learning algorithm and the image updating part, such as the orthogonal matching pursuit (OMP) algorithm and the k-singular value decomposition (K-SVD) algorithm. Then we develop another version of CUDA code with algorithmic optimization. Experimental results show that more than 324 times of speedup is achieved compared with the CPU-only codes when the number of MRI slices is 24.\",\"1558-4615\",\"978-1-4244-7929-0\",\"10.1109/EMBC.2014.6944108\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6944108\",\"\",\"Graphics processing units;Dictionaries;Image reconstruction;Matching pursuit algorithms;Acceleration;Magnetic resonance imaging;Instruction sets\",\"biomedical MRI;data acquisition;graphics processing units;image coding;image matching;image reconstruction;iterative methods;learning (artificial intelligence);medical image processing;optimisation;parallel algorithms;singular value decomposition;time-frequency analysis\",\"three-dimensional dual-dictionary learning;data acquisition;magnetic resonance imaging;sampled k-space data;spatial correlation;low-resolution dictionary;high-resolution dictionary;sparse coding;image updating;image reconstruction quality;three-dimensional image reconstruction;Corporation compute unified device architecture programming model;NVIDIA-CUDA programming model;parallel algorithms;graphics processing unit;GPU;orthogonal matching pursuit algorithm;OMP algorithm;k-singular value decomposition;K-SVD algorithm;algorithmic optimization;CPU-only codes;MRI slices\",\"Algorithms;Computer Graphics;Humans;Imaging, Three-Dimensional;Magnetic Resonance Imaging;Models, Theoretical;Signal-To-Noise Ratio\",\"\",\"\",\"12\",\"\",\"6 Nov 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Many-Core Accelerated LIBOR Swaption Portfolio Pricing\",\"J. Lotze; P. D. Sutton; H. Lahlou\",\"Xcelerit, Dublin, Ireland; Xcelerit, Dublin, Ireland; Xcelerit, Dublin, Ireland\",\"2012 SC Companion: High Performance Computing, Networking Storage and Analysis\",\"11 Apr 2013\",\"2012\",\"\",\"\",\"1185\",\"1192\",\"This paper describes the acceleration of a MonteCarlo algorithm for pricing a LIBOR swaption portfolio using multi-core CPUs and GPUs. Speedups of up to 305x are achieved on two Nvidia Tesla M2050 GPUs and up to 20.8x on two Intel Xeon E5620 CPUs, compared to a sequential CPU implementation. This performance is achieved by using the Xcelerit platform - writing sequential, high-level C++ code and adopting a simple dataflow programming model. It avoids the complexity involved when using low-level high-performance computing frameworks such as OpenMP, OpenCL, CUDA, or SIMD intrinsics. The paper provides an overview of the Xcelerit platform, details how high performance is achieved through various automatic optimisation and parallelisation techniques, and shows how the tool can be used to implement portable accelerated Monte-Carlo algorithms in finance. It illustrates the implementation of the Monte-Carlo LIBOR swaption portfolio pricer and gives performance results. A comparison of the Xcelerit platform implementation with an equivalent low-level CUDA version shows that the overhead introduced is less than 1.5% in all scenarios.\",\"\",\"978-0-7695-4956-9\",\"10.1109/SC.Companion.2012.143\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6495925\",\"finance;swaption;GPU;GPGPU;derivatives pricing;HPC;CUDA\",\"\",\"C++ language;financial data processing;graphics processing units;investment;Monte Carlo methods;optimisation;parallel programming;pricing\",\"Monte Carlo algorithm;optimisation technique;parallelisation technique;high performance computing framework;dataflow programming model;C++ code;Xcelerit platform;sequential CPU implementation;Intel Xeon E5620 CPU;Nvidia Tesla M2050 GPU;graphics processing unit;multicore CPU;portfolio pricing;many-core accelerated LIBOR swaption portfolio\",\"\",\"6\",\"\",\"15\",\"\",\"11 Apr 2013\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Stream Processing on Multi-cores with GPUs: Parallel Programming Models' Challenges\",\"D. A. Rockenbach; C. M. Stein; D. Griebler; G. Mencagli; M. Torquati; M. Danelutto; L. G. Fernandes\",\"School of Technology, Pontifical Catholic University of Rio Grande do Sul (PUCRS) / Laboratory of Advanced Research on Cloud Computing (LARCC), Três de Maio Faculty (SETREM); Laboratory of Advanced Research on Cloud Computing (LARCC), Três de Maio Faculty (SETREM); School of Technology, Pontifical Catholic University of Rio Grande do Sul (PUCRS) / Laboratory of Advanced Research on Cloud Computing (LARCC), Três de Maio Faculty (SETREM); Computer Science Department, University of Pisa (UNIPI); Computer Science Department, University of Pisa (UNIPI); Computer Science Department, University of Pisa (UNIPI); School of Technology, Pontifical Catholic University of Rio Grande do Sul (PUCRS)\",\"2019 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW)\",\"29 Jul 2019\",\"2019\",\"\",\"\",\"834\",\"841\",\"The stream processing paradigm is used in several scientific and enterprise applications in order to continuously compute results out of data items coming from data sources such as sensors. The full exploitation of the potential parallelism offered by current heterogeneous multi-cores equipped with one or more GPUs is still a challenge in the context of stream processing applications. In this work, our main goal is to present the parallel programming challenges that the programmer has to face when exploiting CPUs and GPUs' parallelism at the same time using traditional programming models. We highlight the parallelization methodology in two use-cases (the Mandelbrot Streaming benchmark and the PARSEC's Dedup application) to demonstrate the issues and benefits of using heterogeneous parallel hardware. The experiments conducted demonstrate how a high-level parallel programming model targeting stream processing like the one offered by SPar can be used to reduce the programming effort still offering a good level of performance if compared with state-of-the-art programming models.\",\"\",\"978-1-7281-3510-6\",\"10.1109/IPDPSW.2019.00137\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8778359\",\"Parallel Programming;GPU;multi core;high performance computing;stream processing;structured parallel programming\",\"Graphics processing units;Parallel processing;Parallel programming;Kernel;Instruction sets;Computational modeling\",\"graphics processing units;multiprocessing systems;parallel programming\",\"programming effort;state-of-the-art programming models;parallel programming models;stream processing paradigm;scientific enterprise applications;data items;data sources;potential parallelism;current heterogeneous multicores;stream processing applications;parallel programming challenges;traditional programming models;parallelization methodology;Mandelbrot Streaming benchmark;heterogeneous parallel hardware;high-level parallel programming model targeting stream processing;CPU;GPU parallelism;PARSEC Dedup application\",\"\",\"1\",\"\",\"24\",\"\",\"29 Jul 2019\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"A Statistical-Feature ML Approach to IP Traffic Classification Based on CUDA\",\"Z. Chen; R. Chen; Y. Zhang; J. Zhang; J. Xu\",\"Coll. of Comput. & Control Eng., Nankai Univ., Tianjin, China; Coll. of Comput. & Control Eng., Nankai Univ., Tianjin, China; Coll. of Comput. & Control Eng., Nankai Univ., Tianjin, China; Coll. of Comput. & Control Eng., Nankai Univ., Tianjin, China; Coll. of Comput. & Control Eng., Nankai Univ., Tianjin, China\",\"2016 IEEE Trustcom/BigDataSE/ISPA\",\"9 Feb 2017\",\"2016\",\"\",\"\",\"2235\",\"2239\",\"In modern networks, there exist different applications which generate various different types of network traffic. In order to improve the performance of network management, it is important to identify and classify the internet traffic. The machine learning (ML) technique based on per-flow statistics has been widely used in traffic classification. Different from traditional classification methods, it is insensitive to port number and payload on application level. Our approach in this work is also based on a machine learning method kNN. kNN is a special case of a variable-bandwidth, kernel density \"\"balloon\"\" estimator with a uniform kernel [1]. Although there is no time taken for the construction of the classification model using kNN, it is computationally intensive since it relies on searching neighbor among large sets of d-dimensional vectors. The kNN algorithm may have quite expensive classification steps. CUDA (Compute Unified Device Architecture) is a parallel computing platform and programming model invented by NVIDIA. It enables dramatic increases in computing performance by harnessing the power of the graphics processing unit (GPU) [2]. This paper puts forward a CUDA-based kNN algorithm to classify internet traffic. The experimental results show that the peek speed of traffic classification based on GPU improves greatly compared with that based on CPU. Our approach presents a significant speed improvement through GPU, meanwhile, the results demonstrate the potential applicability of GPU in the field of traffic classification.\",\"2324-9013\",\"978-1-5090-3205-1\",\"10.1109/TrustCom.2016.0344\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7847227\",\"Traffic Classification;CUDA;k-Nearest Neighbor;GPU\",\"Graphics processing units;Classification algorithms;Kernel;Training;IP networks;Ports (Computers);Internet\",\"graphics processing units;Internet;learning (artificial intelligence);parallel architectures;pattern classification;telecommunication traffic\",\"statistical-feature ML approach;IP traffic classification;machine learning method;compute unified device architecture;parallel computing platform;NVIDIA;graphics processing unit;CUDA-based kNN algorithm;Internet traffic;GPU\",\"\",\"1\",\"\",\"12\",\"\",\"9 Feb 2017\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Image registration techniques using parallel computing in multicore environment and its applications in medical imaging: An overview\",\"S. Saxena; S. Sharma; N. Sharma\",\"School of Biomedical engineering, Indian Institute of Technology (BHU), Varanasi, UP, India; School of Biomedical engineering, Indian Institute of Technology (BHU), Varanasi, UP, India; School of Biomedical engineering, Indian Institute of Technology (BHU), Varanasi, UP, India\",\"2014 International Conference on Computer and Communication Technology (ICCCT)\",\"8 Jan 2015\",\"2014\",\"\",\"\",\"97\",\"104\",\"Image Registration is the key step of Image Processing as it is the process to locate most accurate relative orientation among two or more images, captured at the same or different times by distinguishable or indistinguishable sensors to increase the information content. For speed optimization of Image Registration, There have been developed numerous approaches till now based on CPU platforms, GPU, CUDA Programming Models etc. Purpose of this paper is to provide a comprehensive review of the existing literature available on Image registration methods based on parallel computing in Multi core architecture. Another considerable intention of this paper is to describe the various applications of image registration using parallel computing in Medical imaging as it can be applied for different modalities of medical images.\",\"\",\"978-1-4799-6758-2\",\"10.1109/ICCCT.2014.7001475\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7001475\",\"Image Registration;GPU;CUDA;Parallel Computing;CPU\",\"Image registration;Graphics processing units;Biomedical imaging;Parallel processing;Computational modeling;Histograms;MATLAB\",\"graphics processing units;image registration;medical image processing;parallel architectures\",\"image registration techniques;parallel computing;multicore environment;medical imaging;image processing;information content;speed optimization;CPU platform;GPU;CUDA programming model;multicore architecture;medical images\",\"\",\"3\",\"\",\"70\",\"\",\"8 Jan 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Towards Achieving Performance Portability Using Directives for Accelerators\",\"M. G. Lopez; V. V. Larrea; W. Joubert; O. Hernandez; A. Haidar; S. Tomov; J. Dongarra\",\"Comput. Sci. & Math. Div., Oak Ridge Nat. Lab., Oak Ridge, TN, USA; Nat. Center for Comput. Sci., Oak Ridge Nat. Lab., Oak Ridge, TN, USA; Comput. Sci. & Math. Div., Oak Ridge Nat. Lab., Oak Ridge, TN, USA; Comput. Sci. & Math. Div., Oak Ridge Nat. Lab., Oak Ridge, TN, USA; Innovative Comput. Lab., Univ. of Tennessee, Knoxville, TN, USA; Innovative Comput. Lab., Univ. of Tennessee, Knoxville, TN, USA; Innovative Comput. Lab., Univ. of Tennessee, Knoxville, TN, USA\",\"2016 Third Workshop on Accelerator Programming Using Directives (WACCPD)\",\"2 Feb 2017\",\"2016\",\"\",\"\",\"13\",\"24\",\"In this paper we explore the performance portability of directives provided by OpenMP 4 and OpenACC to program various types of node architectures with attached accelerators, both self-hosted multicore and offload multicore/GPU. Our goal is to examine how successful OpenACC and the newer offload features of OpenMP 4.5 are for moving codes between architectures, how much tuning might be required and what lessons we can learn from this experience. To do this, we use examples of algorithms with varying computational intensities for our evaluation, as both compute and data access efficiency are important considerations for overall application performance. We implement these kernels using various methods provided by newer OpenACC and OpenMP implementations, and we evaluate their performance on various platforms including both X86_64 with attached NVIDIA GPUs, self-hosted Intel Xeon Phi KNL, as well as an X86_64 host system with Intel Xeon Phi coprocessors. In this paper, we explain what factors affected the performance portability such as how to pick the right programming model, its programming style, its availability on different platforms, and how well compilers can optimize and target to multiple platforms.\",\"\",\"978-1-5090-6152-5\",\"10.1109/WACCPD.2016.006\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7836577\",\"\",\"Programming;Computer architecture;Computational modeling;Kernel;Writing;Government;Graphics processing units\",\"graphics processing units;multiprocessing systems;parallel architectures;performance evaluation;program compilers\",\"performance portability;OpenMP 4;OpenACC;node architectures;offload multicore-GPU;self-hosted multicore;computational intensities;data access efficiency;X86_64;NVIDIA GPU;KNL;self-hosted Intel Xeon Phi KNL;Intel Xeon Phi coprocessors;programming model;compilers\",\"\",\"16\",\"\",\"29\",\"\",\"2 Feb 2017\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Map-reduce as a Programming Model for Custom Computing Machines\",\"J. H. C. Yeung; C. C. Tsang; K. H. Tsoi; B. S. H. Kwan; C. C. C. Cheung; A. P. C. Chan; P. H. W. Leong\",\"Dept. of Comput. Sci. & Eng., Chinese Univ. of Hong Kong, Shatin, China; Dept. of Comput. Sci. & Eng., Chinese Univ. of Hong Kong, Shatin, China; Dept. of Comput. Sci. & Eng., Chinese Univ. of Hong Kong, Shatin, China; Dept. of Comput. Sci. & Eng., Chinese Univ. of Hong Kong, Shatin, China; Hong Kong Sci. & Technol. Park, Cluster Technol. Ltd., Hong Kong, China; Hong Kong Sci. & Technol. Park, Cluster Technol. Ltd., Hong Kong, China; Dept. of Comput. Sci. & Eng., Chinese Univ. of Hong Kong, Shatin, China\",\"2008 16th International Symposium on Field-Programmable Custom Computing Machines\",\"22 Dec 2008\",\"2008\",\"\",\"\",\"149\",\"159\",\"The map-reduce model requires users to express their problem in terms of a map function that processes single records in a stream, and a reduce function that merges all mapped outputs to produce a final result. By exposing structural similarity in this way, a number of key issues associated with the design of custom computing machines including parallelisation; design complexity; software-hardware partitioning; hardware-dependency, portability and scalability can be easily addressed. We present an implementation of a map-reduce library supporting parallel field programmable gate arrays (FPGAs) and graphics processing units (GPUs). Parallelisation due to pipelining, multiple data paths and concurrent execution of FPGA/GPU hardware is automatically achieved. Users first specify the map and reduce steps for the problem in ANSI Cand no knowledge of the underlying hardware or parallelisation is needed. The source code is then manually translated into a pipelined data path which, along with the map-reduce library, is compiled into appropriate binary configurations for the processing units. We describe our experience in developing a number of benchmark problems in signal processing, Monte Carlo simulation and scientific computing as well as report on the performance of FPGA, GPU and heterogeneous systems.\",\"\",\"978-0-7695-3307-0\",\"10.1109/FCCM.2008.19\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=4724898\",\"reconfigurable computing;map reduce;hardware/software codesign\",\"Field programmable gate arrays;Hardware;Concurrent computing;Parallel processing;Graphics;Signal processing;Computer science;Scalability;Software libraries;Pipeline processing\",\"computer graphics;field programmable gate arrays;functional languages;Monte Carlo methods;parallel machines\",\"custom computing machines;map-reduce model;map function;parallelisation;design complexity;software-hardware partitioning;hardware-dependency;field programmable gate arrays;graphics processing units;ANSI C;source code;map-reduce library;Monte Carlo simulation\",\"\",\"50\",\"\",\"17\",\"\",\"22 Dec 2008\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"On the Design of a Demo for Exhibiting rCUDA\",\"C. Reaño; F. Pérez; F. Silla\",\"Univ. Politec. de Valencia, Valencia, Spain; Univ. Politec. de Valencia, Valencia, Spain; Univ. Politec. de Valencia, Valencia, Spain\",\"2015 15th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing\",\"9 Jul 2015\",\"2015\",\"\",\"\",\"1169\",\"1172\",\"CUDA is a technology developed by NVIDIA which provides a parallel computing platform and programming model for NVIDIA GPUs and compatible ones. It takes benefit from the enormous parallel processing power of GPUs in order to accelerate a wide range of applications, thus reducing their execution time. rCUDA (remote CUDA) is a middleware which grants applications concurrent access to CUDA-compatible devices installed in other nodes of the cluster in a transparent way so that applications are not aware of being accessing a remote device. In this paper we present a demo which shows, in real time, the overhead introduced by rCUDA in comparison to CUDA when running image filtering applications. The approach followed in this work is to develop a graphical demo which contains both an appealing design and technical contents.\",\"\",\"978-1-4799-8006-2\",\"10.1109/CCGrid.2015.53\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7152613\",\"GPGPU;CUDA;HPC;virtualization\",\"Graphics processing units;Gray-scale;Servers;Parallel processing;Acceleration;Middleware;Color\",\"graphics processing units;image filtering;middleware;parallel architectures;parallel programming\",\"rCUDA;demo design;NVIDIA;parallel computing platform;programming model;NVIDIA GPU;parallel processing power;remote CUDA;middleware;concurrent access;CUDA-compatible devices;image filtering applications\",\"\",\"\",\"\",\"4\",\"\",\"9 Jul 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Heterogeneous tasking on SMP/FPGA SoCs: The case of OmpSs and the Zynq\",\"A. Filgueras; E. Gil; C. Alvarez; D. Jimenez; X. Martorell; J. Langer; J. Noguera\",\"Barcelona Supercomputing Center, Barcelona; Universitat Politecnica de Catalunya, Barcelona; Barcelona Supercomputing Center, Barcelona; Barcelona Supercomputing Center, Barcelona; Barcelona Supercomputing Center, Barcelona; Xilinx Research Lab, Dublin; Xilinx Research Lab, Dublin\",\"2013 IFIP/IEEE 21st International Conference on Very Large Scale Integration (VLSI-SoC)\",\"25 Nov 2013\",\"2013\",\"\",\"\",\"290\",\"291\",\"OmpSs is a directive-based programming model that uses OpenMP-like directives, that allow to execute the tasks annotated on both the SMPs and as FPGA kernels on modern SoC processors, like the Xilinx Zynq platform. OmpSs includes the support for accelerators (MIC, GPUs, FPGAs) and task dependencies, like OpenMP 4.0 will support. In this paper we present our approach for the support of FPGAs and the Zynq SoC, the current status of the implementation, its analysis and performance evaluation.\",\"2324-8440\",\"978-1-4799-0524-9\",\"10.1109/VLSI-SoC.2013.6673293\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6673293\",\"\",\"Field programmable gate arrays;Hardware;Runtime;System-on-chip;Ecosystems;Programming;Software\",\"field programmable gate arrays;system-on-chip\",\"heterogeneous tasking;SMP-FPGA SoC;OmpS;directive-based programming model;OpenMP-like directives;FPGA kernels;SoC processors;Xilinx Zynq platform;MIC;GPU;OpenMP 4.0\",\"\",\"3\",\"\",\"1\",\"\",\"25 Nov 2013\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"A Compiler-assisted Runtime-prefetching Scheme for Heterogenous Platforms\",\"B. Shou; X. Hou; L. Chen\",\"ICT, Beijing, China; ICT, Beijing, China; ICT, Beijing, China\",\"2011 International Conference on Parallel Architectures and Compilation Techniques\",\"29 Dec 2011\",\"2011\",\"\",\"\",\"215\",\"215\",\"GPGPU has been widely adopted by industry and academia. For real applications on industry, however, the data communications between CPUs and GPUs often dramatically slow down the overall performance. Another difficulty raised by GPGPU is the programming productivity. OpenMP is a high-level programming model widely accepted by industry. A software distributed shared memory system (DSM) is implemented to provide a logic shared memory space and to manage data communications between CPUs and GPUs. The DSM is block-based, and the block size is adjustable based on loop partitioning parameters. In this work, we optimize the DSM system using a compiler-assisted data-prefetching scheme. There is a prefetching thread and a prefetching worker for each sepa rated memory. The prefetching thread looks into the future, applies inter-thread use-def analysis to judge which part of the USE region has already been generated by computing threads and produces prefetching requests. The prefetching worker carries out the prefetching operations.\",\"1089-795X\",\"978-1-4577-1794-9\",\"10.1109/PACT.2011.48\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6113825\",\"\",\"Prefetching;Runtime;Data communication;Kernel;Industries;Programming\",\"distributed shared memory systems;graphics processing units;multiprocessing systems;parallel architectures;program compilers;program control structures;storage management\",\"compiler assisted runtime prefetching scheme;heterogenous platforms;OpenMP;high level programming model;Pthreads;CUDA code;software distributed shared memory system;logic shared memory space;data communications manage;CPU;GPU;DSM;loop partitioning parameters;prefetching thread;prefetching worker;interthread use-def analysis;USE region\",\"\",\"\",\"\",\"\",\"\",\"29 Dec 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"A Scheduling and Runtime Framework for a Cluster of Heterogeneous Machines with Multiple Accelerators\",\"T. Beri; S. Bansal; S. Kumar\",\"Indian Inst. of Technol. Delhi, New Delhi, India; Indian Inst. of Technol. Delhi, New Delhi, India; Indian Inst. of Technol. Delhi, New Delhi, India\",\"2015 IEEE International Parallel and Distributed Processing Symposium\",\"20 Jul 2015\",\"2015\",\"\",\"\",\"146\",\"155\",\"We present a runtime system for simple and efficient programming of CPU+GPU clusters. The programmer focuses on core logic, while the system undertakes task allocation, load balancing, scheduling, data transfer, etc. Our programming model is based on a shared global address space, made efficient by transaction style bulk-synchronous semantics. This model broadly targets coarse-grained data parallel computation particularly suited to multi-GPU heterogeneous clusters. We describe our computation and communication scheduling system and report its performance ona few prototype applications. For example, parallelization of matrix multiplication or 2D FFT using our system requires the regular CPU/GPU implementations and about 30 lines of additional C code to set up the runtime. Our runtime system achieves a performance of 5.61 TFlop/s while multiplying two square matrices of 1.56 billion elements each over a 10-nodecluster with 20 GPUs. This performance is possible due toa number of critical optimizations working in concert. These include perfecting, pipelining, maximizing overlap between computation and communication, and scheduling efficiently across heterogeneous devices of vastly different capacities.\",\"1530-2075\",\"978-1-4799-8649-1\",\"10.1109/IPDPS.2015.12\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7161504\",\"High Performance Computing;Heterogeneous Architectures;Hybrid CPU-GPU Clusters;Work Stealing;Multi Scheduling\",\"Graphics processing units;Runtime;Kernel;Programming;Message systems;Data transfer;Subscriptions\",\"graphics processing units;parallel processing;resource allocation;scheduling\",\"scheduling framework;runtime framework;heterogeneous machine;accelerator;CPU+GPU cluster programming;graphics processing unit;task allocation;load balancing;data transfer;transaction style bulk-synchronous semantics;high-performance computing\",\"\",\"7\",\"\",\"47\",\"\",\"20 Jul 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Evaluating Multi-core and Many-Core Architectures through Accelerating an Alternating Direction Implicit CFD Solver\",\"L. Deng; J. Fang; F. Wang; H. Bai\",\"Comput. Aerodynamics Inst., China Aerodynamics R&D Center, Mianyang, China; Software Institue, Nat. Univ. of Defense Technol., Changsha, China; Software Institue, Nat. Univ. of Defense Technol., Changsha, China; Comput. Aerodynamics Inst., China Aerodynamics R&D Center, Mianyang, China\",\"2016 15th International Symposium on Parallel and Distributed Computing (ISPDC)\",\"24 Apr 2017\",\"2016\",\"\",\"\",\"1\",\"10\",\"In this paper, we accelerate a double-precision alternating direction implicit (ADI) solver for three-dimensional compressible Navier-Stokes equations from our in-house computational fluid dynamics (CFD) software on the latest multi-core and many-core architectures (Intel Ivy Bridge CPU, Intel Xeon Phi 7110P coprocessor and NVIDIA Kepler K20c GPU). For the GPU platform, both the OpenACC-based and the CUDA-based versions of the ADI solver are developed. To achieve high performance, we use a series of optimization techniques. For the Ivy Bridge CPU and Xeon Phi, we focus on three categories of optimization techniques: thread parallelism for multi-/many-core scaling, data parallelism to exploit the SIMD mechanism and improving on-chip data reuse, to maximize the performance. Also, we provide an in-depth analysis on the performance differences between Ivy Bridge and Xeon Phi. Our numerical experiments show that the proposed CUDA-based ADI solver can achieve a speedup of 9.7 on a Kepler GPU in contrast to a single naive serial version and our optimization techniques can improve the performance of the ADI solver by 2.5x on two Ivy Bridge CPUs and 1.7x on the Intel Xeon Phi coprocessor. We also notice that the OpenACC-based version runs around 29% slower than the CUDA-based one with careful manual optimizations. Besides, we systematically evaluate the programmability of the three platforms. Our insights facilitate the programmers to select a right platform with a suitable programming model according to their target applications.\",\"\",\"978-1-5090-4152-7\",\"10.1109/ISPDC.2016.9\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7904262\",\"performance;programmability;optimization techniques;alternating direction implicit;CFD solver;Ivy Bridge;Xeon Phi;GPU;CUDA;OpenACC\",\"Graphics processing units;Mathematical model;Optimization;Instruction sets;Programming;Computer architecture;Bridges\",\"computational fluid dynamics;graphics processing units;microprocessor chips;multiprocessing systems;multi-threading;Navier-Stokes equations;parallel architectures\",\"multicore architectures;many-core architectures;alternating direction implicit CFD solver;double-precision alternating direction implicit solver;ADI solver;three-dimensional compressible Navier-Stokes equations;computational fluid dynamics software;CFD software;Intel Ivy Bridge CPU;Intel Xeon Phi 7110P coprocessor;NVIDIA Kepler K20c GPU;OpenACC;CUDA;optimization techniques;thread parallelism;data parallelism;on-chip data reuse\",\"\",\"\",\"\",\"26\",\"\",\"24 Apr 2017\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Characteristic mode analysis of arbitrary electromagnetic structures using FEKO\",\"D. J. Ludick; E. Lezar; U. Jakobus\",\"EM Software & Systems - S.A. (Pty) Ltd, 32 Techno Avenue, Technopark, Stellenbosch, 7600, South Africa; EM Software & Systems - S.A. (Pty) Ltd, 32 Techno Avenue, Technopark, Stellenbosch, 7600, South Africa; EM Software & Systems - S.A. (Pty) Ltd, 32 Techno Avenue, Technopark, Stellenbosch, 7600, South Africa\",\"2012 International Conference on Electromagnetics in Advanced Applications\",\"11 Oct 2012\",\"2012\",\"\",\"\",\"208\",\"211\",\"This paper considers the characteristic mode analysis (CMA) of arbitrary electromagnetic structures using the comprehensive 3D electromagnetic field solver, FEKO [1]. The theory of characteristic modes, as presented in [2], is used to derive the real orthogonal current modes. These modes are obtained by solving a generalised symmetric eigenvalue problem defined by the real and imaginary parts of the Method-of-Moments (MoM) impedance matrix. The research presented in this article discusses the techniques used in FEKO to solve this generalised eigenproblem. Furthermore, paralleli-sation using both distributed and shared memory programming models, as well as GPU computation is considered within the FEKO framework to accelerate the CMA.\",\"\",\"978-1-4673-0335-4\",\"10.1109/ICEAA.2012.6328622\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6328622\",\"\",\"Eigenvalues and eigenfunctions;Moment methods;Runtime;Graphics processing unit;Impedance;Symmetric matrices;Equations\",\"distributed memory systems;eigenvalues and eigenfunctions;electromagnetic field theory;matrix algebra;method of moments;shared memory systems\",\"characteristic mode analysis;arbitrary electromagnetic structures;CMA;comprehensive 3D electromagnetic field solver;real orthogonal current modes;generalised symmetric eigenvalue problem;method-of-moments impedance matrix;MoM impedance matrix;GPU computation;FEKO framework;shared memory programming model\",\"\",\"14\",\"\",\"10\",\"\",\"11 Oct 2012\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Efficient parallel CKY parsing using GPUs\",\"Y. Yi; C. Lai; S. Petrov\",NA; NA; NA,\"Journal of Logic and Computation\",\"18 Jan 2018\",\"2014\",\"24\",\"2\",\"375\",\"393\",\"Low-latency solutions for syntactic parsing are needed if parsing is to become an integral part of user-facing natural language applications. Unfortunately, most state-of-the-art constituency parsers employ large probabilistic context-free grammars for disambiguation, which renders them impractical for real-time use. Meanwhile, Graphics Processor Units (GPUs) have become widely available, offering the opportunity to alleviate this bottleneck by exploiting the fine-grained data parallelism found in the Cocke–Kasami–Younger (CKY) algorithm. In this article, we explore the design space of parallelizing the dynamic programming computations carried out by the CKY algorithm. We use the Compute Unified Device Architecture (CUDA) programming model to reimplement a state-of-the-art parser, and compare its performance on three recent GPUs with different architectural features. Our best results show a 33-fold speedup for the CUDAparser compared to a sequential C implementation.\",\"1465-363X\",\"\",\"10.1093/logcom/exs078\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8200101\",\"CKY parsing;Viterbi parsing;parallel parsing;GPU;CUDA\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"18 Jan 2018\",\"\",\"\",\"OUP\",\"OUP Journals\"\n\"Performance and Portability Studies with OpenACC Accelerated Version of GTC-P\",\"Y. Wei; Y. Wang; L. Cai; W. Tang; B. Wang; S. Ethier; S. See; J. Lin\",\"Center for High Performance Comput., Shanghai Jiao Tong Univ., Shanghai, China; Center for High Performance Comput., Shanghai Jiao Tong Univ., Shanghai, China; Center for High Performance Comput., Shanghai Jiao Tong Univ., Shanghai, China; Princeton Inst. of Comput. Sci. & Eng., Princeton Univ., Princeton, NJ, USA; Princeton Inst. of Comput. Sci. & Eng., Princeton Univ., Princeton, NJ, USA; Princeton Plasma Phys. Lab., Princeton, NJ, USA; Center for High Performance Comput., Shanghai Jiao Tong Univ., Shanghai, China; Center for High Performance Comput., Shanghai Jiao Tong Univ., Shanghai, China\",\"2016 17th International Conference on Parallel and Distributed Computing, Applications and Technologies (PDCAT)\",\"8 Jun 2017\",\"2016\",\"\",\"\",\"13\",\"18\",\"Accelerator-based heterogeneous computing is of paramount importance to High Performance Computing. The increasing complexity of the cluster architectures requires more generic, high-level programming models. OpenACC is a directive-based parallel programming model, which provides performance on and portability across a wide variety of platforms, including GPU, multicore CPU, and many-core processors. GTC-P is a discovery-science-capable real-world application code based on the Particle-In-Cell (PIC) algorithm that is well-established in the HPC area. Several native versions of GTC-P have been developed for supercomputers on TOP500 with different architectures, including Titan, Mira, etc. Motivated by the state-of-art portability, we implemented the first OpenACC version of GTC-P and evaluated its performance portability across NVIDIA GPUs, Intel x86 and OpenPOWER CPUs. In this paper, we also proposed two key optimization methods for OpenACC implementation of PIC algorithm on multicore CPU and GPU including removing atomic operation and taking advantage of shared memory. OpenACC shows both impressive productivity and performance in a perspective of portability and scalability. The OpenACC version achieves more than 90% performance compared with the native versions with only about 300 LOC.\",\"\",\"978-1-5090-5081-9\",\"10.1109/PDCAT.2016.019\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7943324\",\"Gyrokinetic PIC code;GTC-P;OpenACC;CUDA;GPU;OpenPOWER\",\"Graphics processing units;Multicore processing;Instruction sets;Optimization;Acceleration;Scalability\",\"computational complexity;graphics processing units;multiprocessing systems;parallel processing;performance evaluation\",\"GTC-P;accelerator-based heterogeneous computing;high performance computing;cluster architecture complexity;directive-based parallel programming model;multicore CPU;many-core processors;discovery-science-capable real-world application code;particle-in-cell algorithm;PIC algorithm;performance portability;NVIDIA GPUs;Intel x86;OpenPOWER CPUs;optimization methods;OpenACC implementation\",\"\",\"1\",\"\",\"10\",\"\",\"8 Jun 2017\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"HSAemu - A full system emulator for HSA platforms\",\"J. -H. Ding; W. Hsu; BaiCheng Jeng; S. Hung; Y. Chung\",\"National Tsing Hua University, Hsinchu, 30013, Taiwan; National Taiwan University, Taipei, 10617, Taiwan; National Tsing Hua University, Hsinchu, 30013, Taiwan; National Taiwan University, Taipei, 10617, Taiwan; National Tsing Hua University, Hsinchu, 30013, Taiwan\",\"2014 International Conference on Hardware/Software Codesign and System Synthesis (CODES+ISSS)\",\"4 Dec 2014\",\"2014\",\"\",\"\",\"1\",\"10\",\"Heterogeneous System Architecture (HSA) is an open industry standard designed to support a large variety of data-parallel and task-parallel programming models. Currently, most of HSA hardware and software components are still in development. It is helpful to provide various heterogeneous simulation environments for HSA developers in developing HSA software stacks. This paper presents the design of HSAemu, a full system emulator for the HSA platform, and illustrates how those HSA features are implemented in the simulator. HSAemu provides an infrastructure of heterogeneous simulation environments by supporting required HSA features, including hUMA, hQ and HSAIL. Based on the infrastructure, HSAemu provide two simulation models, FastSim and DeepSim, for high-speed functional emulation and slow cycle-accurate simulation, respectively. In our preliminary experiments, HSAemu helps test a complete HSA software stack and profile system performance. Our case studies show that HSAemu is very useful as a hardware/software co-design tool for heterogeneous systems.\",\"\",\"978-1-4503-3051-0\",\"10.1145/2656075.2656088\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6971842\",\"HSA;GPU simulation;parallel simulation\",\"Graphics processing units;Computational modeling;Kernel;Hardware;Computer architecture;Synchronization\",\"digital simulation;graphics processing units\",\"HSAemu;full-system emulator;HSA platforms;heterogeneous system architecture;open industry standard;data-parallel programming model;task-parallel programming model;HSA hardware components;HSA software components;heterogeneous simulation environments;HSA software stacks;hUMA;hQ;HSAIL;FastSim simulation model;DeepSim simulation model;high-speed functional emulation;slow-cycle-accurate simulation;profile system performance;hardware/software co-design tool\",\"\",\"3\",\"\",\"27\",\"\",\"4 Dec 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Evaluation of Performance Portability of Applications and Mini-Apps across AMD, Intel and NVIDIA GPUs\",\"J. Kwack; J. Tramm; C. Bertoni; Y. Ghadar; B. Homerding; E. Rangel; C. Knight; S. Parker\",\"Leadership Computing Facility / Computational Science Division, Argonne National Laboratory,Lemont,IL,USA; Leadership Computing Facility / Computational Science Division, Argonne National Laboratory,Lemont,IL,USA; Leadership Computing Facility / Computational Science Division, Argonne National Laboratory,Lemont,IL,USA; Leadership Computing Facility / Computational Science Division, Argonne National Laboratory,Lemont,IL,USA; Leadership Computing Facility / Computational Science Division, Argonne National Laboratory,Lemont,IL,USA; Leadership Computing Facility / Computational Science Division, Argonne National Laboratory,Lemont,IL,USA; Leadership Computing Facility / Computational Science Division, Argonne National Laboratory,Lemont,IL,USA; Leadership Computing Facility / Computational Science Division, Argonne National Laboratory,Lemont,IL,USA\",\"2021 International Workshop on Performance, Portability and Productivity in HPC (P3HPC)\",\"28 Dec 2021\",\"2021\",\"\",\"\",\"45\",\"56\",\"This paper will evaluate the progress being made on achieving performance portability by a sub-set of ECP applications, or their related mini-apps, across a diverse spectrum of applications domains and approaches to achieving performance portability. The applications or mini-apps evaluated are AMR-Wind, HACC, SW4, GAMESS RI-MP2, XSBench, and TestSNAP. These codes are being redeveloped using the SYCL, OpenMP, RAJA, or Kokkos programming models, or the AMReX framework and in this paper we assess their performance portability across the AMD MI100, Intel Gen9, and NVIDIA A100 GPUs. Since each GPU has different performance characteristics we have utilized the roofline performance model to compute the performance efficiency and evaluate performance portability across the three platforms. The merits of different metrics for quantifying performance portability are considered and a metric based on the standard deviation of roofline efficiencies is proposed as a preferred metric. Finally, observations on developer productivity are made based on the experience gained working with these applications.\",\"\",\"978-1-6654-2439-4\",\"10.1109/P3HPC54578.2021.00008\",\"DOE Office of Science User Facility(grant numbers:DE-AC02-06CHl1357); National Nuclear Security Administration; \",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9652861\",\"high performance computing;performance portability;performance efficiency;roofline performance analysis;GPU;portable programming model;software framework\",\"Measurement;Productivity;Analytical models;Codes;Computational modeling;Conferences;Graphics processing units\",\"\",\"\",\"\",\"\",\"\",\"40\",\"\",\"28 Dec 2021\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"A Compiler-Based Tool for Array Analysis in HPC Applications\",\"A. Qawasmeh; B. Chapman; A. Banerjee\",\"Dept. of Comput. Sci., Univ. of Houston, Houston, TX, USA; Dept. of Comput. Sci., Univ. of Houston, Houston, TX, USA; Pet. Geo-Services, Houston, TX, USA\",\"2012 41st International Conference on Parallel Processing Workshops\",\"25 Oct 2012\",\"2012\",\"\",\"\",\"454\",\"463\",\"Array region analysis plays a significant role in various optimizations at compile time. Displaying array access information efficiently in HPC applications has been a vital challenge for scientists and developers for the past few years. Dragon array region analysis tool is a powerful and interactive tool that was built on top of the Open UH compiler, an open source C/C++/Fortran compiler, that supports OpenMP and CAF programming models. We have extended the linear-based Region analysis method and the high level IR (WHIRL) of Open UH to visualize the static and interprocedural array region accesses, the frequency of these accesses per access mode, the access mode in which the array is processed, the number of dimensions, the size of each dimension, the total size in bytes allocated to this array statically, and the memory location. We have also defined the access density term which illustrates the frequency of accesses per bytes allocated to these arrays. The information provided enables users to efficiently develop and optimize HPC applications by understanding procedure side effects and finding inefficiencies in defining arrays, which guides to a better memory allocation and cache usage. Moreover, we demonstrate the access density of the portions of arrays that have been accessed, which is crucial to reduce data transfers between host and device when using directive-based GPU programming models.\",\"2332-5690\",\"978-1-4673-2509-7\",\"10.1109/ICPPW.2012.63\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6337513\",\"Analysis tool;Linear-based techniques;Compiler-based tool;Array Region Analysis\",\"Arrays;Optimization;Programming;Data mining;Indexes;Graphics processing unit\",\"application program interfaces;C++ language;cache storage;data visualisation;FORTRAN;graphics processing units;multi-threading;program compilers;public domain software;shared memory systems\",\"compiler-based tool;Dragon array region analysis tool;HPC applications;interactive tool;Open UH compiler;open source C compiler;open source C++ compiler;open source Fortran compiler;OpenMP programming model;CAF programming model;linear-based region analysis method;high level IR;WHIRL;static array region access visualization;interprocedural array region access visualization;memory location;memory allocation;cache usage;data transfer reduction;directive-based GPU programming models;multithreaded programming API\",\"\",\"3\",\"\",\"28\",\"\",\"25 Oct 2012\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Exploration of OpenCL for FPGAs using SDAccel and comparison to GPUs and multicore CPUs\",\"L. Kalms; D. Göhringer\",\"Technische Universität Dresden, Dresden, Germany; Technische Universität Dresden, Dresden, Germany\",\"2017 27th International Conference on Field Programmable Logic and Applications (FPL)\",\"5 Oct 2017\",\"2017\",\"\",\"\",\"1\",\"4\",\"Due to energy efficiency, heterogeneous computing is gaining more and more attention. Since FPGA implementations are time consuming, high-level synthesis (HLS) is used to close the productivity gap. OpenCL has become accepted as a good programming model for HLS, due to its portability, good capability of design verification and rich instruction set. This work implements different optimization strategies using OpenCL for a heterogeneous system containing CPU, integrated GPU, GPU and FPGA. Energy efficiency and performance of the architectures are compared using a feature detection algorithm. It is shown how to maximize performance while hitting the maximum memory bandwidth and keeping the resource utilization low for the SDAccel tool from Xilinx. The evaluation shows the great streaming capability of OpenCL for FPGAs. The FPGA achieves a speed up of 62.8 and consumes 49 times less energy for the application in comparison to an optimized single threaded CPU implementation in full HD.\",\"1946-1488\",\"978-9-0903-0428-1\",\"10.23919/FPL.2017.8056847\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8056847\",\"OpenCL;SDAccel;GPU;CPU;FPGA;Energy Efficiency;Performance;Image Processing;Accelerators\",\"Kernel;Field programmable gate arrays;Graphics processing units;Bandwidth;Optimization;Resource management\",\"electronic engineering computing;energy conservation;feature extraction;field programmable gate arrays;graphics processing units;high level synthesis;microprocessor chips;multiprocessing systems;optimisation;power aware computing;public domain software\",\"optimization strategies;integrated GPU;Xilinx;HLS;high-level synthesis;FPGA implementations;heterogeneous computing;SDAccel tool;feature detection algorithm;energy efficiency;heterogeneous system;OpenCL;multicore CPU\",\"\",\"7\",\"\",\"18\",\"\",\"5 Oct 2017\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Resource Centered Computing Delivering High Parallel Performance\",\"J. Gustedt; S. Vialle; P. Mercier\",\"INRIA Nancy - Grand Est, Nancy, France; SUPELEC, Metz, France; SUPELEC, Metz, France\",\"2014 IEEE International Parallel & Distributed Processing Symposium Workshops\",\"4 Dec 2014\",\"2014\",\"\",\"\",\"77\",\"88\",\"Modern parallel programming requires a combination of different paradigms, expertise and tuning, that correspond to the different levels in today's hierarchical architectures. To cope with the inherent difficulty, ORWL (ordered read-write locks) presents a new paradigm and toolbox centered around local or remote resources, such as data, processors or accelerators. ORWL programmers describe their computation in terms of access to these resources during critical sections. Exclusive or shared access to the resources is granted through FIFOs and with read-write semantic. ORWL partially replaces a classical runtime and offers a new API for resource centric parallel programming. We successfully ran an ORWL benchmark application on different parallel architectures (a multicore CPU cluster, a NUMA machine, a CPU+GPU cluster). When processing large data we achieved scalability and performance similar to a reference code built on top of MPI+OpenMP+CUDA. The integration of optimized kernels of scientific computing libraries (ATLAS and cuBLAS) has been almost effortless, and we were able to increase performance using both CPU and GPU cores on our hybrid hierarchical cluster simultaneously. We aim to make ORWL a new easy-to-use and efficient programming model and toolbox for parallel developers.\",\"\",\"978-1-4799-4116-2\",\"10.1109/IPDPSW.2014.14\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6969373\",\"resource centered computing;read-write locks;clusters;accelerators;GPU;experiments;performance\",\"Computational modeling;Graphics processing units;Kernel;Computer architecture;Parallel processing;Parallel programming\",\"application program interfaces;graphics processing units;natural sciences computing;parallel architectures;parallel programming\",\"resource centered computing;high parallel performance;ordered read-write locks;ORWL programmers;remote resources;local resources;critical sections;read-write semantic;API;resource centric parallel programming;parallel architectures;MPI+OpenMP+CUDA;scientific computing libraries;CPU cores;GPU cores;hybrid hierarchical cluster;parallel developers\",\"\",\"\",\"\",\"26\",\"\",\"4 Dec 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Implementation and Evaluation of One-Sided PGAS Communication in XcalableACC for Accelerated Clusters\",\"A. Tabuchi; M. Nakao; H. Murai; T. Boku; M. Sato\",\"Grad. Sch. of Syst. & Inf. Eng., Univ. of Tsukuba, Tsukuba, Japan; RIKEN Adv. Inst. for Comput. Sci., Kobe, Japan; RIKEN Adv. Inst. for Comput. Sci., Kobe, Japan; Center for Comput. Sci., Univ. of Tsukuba, Tsukuba, Japan; RIKEN Adv. Inst. for Comput. Sci., Kobe, Japan\",\"2017 17th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing (CCGRID)\",\"13 Jul 2017\",\"2017\",\"\",\"\",\"625\",\"634\",\"Clusters equipped with accelerators such as graphics processing unit (GPU) and Many Integrated Core (MIC) are widely used. For such clusters, programmers write programs for their applications by combining MPI with one of the available accelerator programming models. In particular, OpenACC enables programmers to develop their applications easily, but with lower productivity owing to complex MPI programming. XcalableACC (XACC) is a new programming model, which is an \"\"orthogonal\"\" integration of a partitioned global address space (PGAS) language XcalableMP (XMP) and OpenACC. While XMP enables distributed-memory programming on both global-view and local-view models, OpenACC allows operations to be offloaded to a set of accelerators. In the local-view model, programmers can describe communication with the coarray features adopted from Fortran 2008, and we extend them to communication between accelerators. We have designed and implemented an XACC compiler for NVIDIA GPU and evaluated its performance and productivity by using two benchmarks, Himeno benchmark and NAS Parallel Benchmarks CG (NPB-CG). The performance of the XACC version with the Himeno benchmark and NPB-CG are over 85% and 97% in the local-view model against the MPI+OpenACC version, respectively. Moreover, using non-blocking communication makes the performance of local-view version over 89% with the Himeno benchmark. From the viewpoint of productivity, the local-view model provides an intuitive form of array assignment statement for communication.\",\"\",\"978-1-5090-6611-7\",\"10.1109/CCGRID.2017.81\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7973750\",\"Accelerator;GPU;Cluster;PGAS;Coarray;OpenACC\",\"Graphics processing units;Programming;Synchronization;Electronics packaging;Syntactics;Benchmark testing;Productivity\",\"distributed memory systems;distributed programming;FORTRAN;graphics processing units;message passing;parallel processing\",\"one-sided PGAS communication;XcalableACC;accelerated clusters;graphics processing unit;many integrated core;MIC;accelerator programming models;OpenACC;complex MPI programming;partitioned global address space;PGAS language XcalableMP;distributed-memory programming;global-view models;local-view models;coarray features;Fortran 2008;XACC compiler;NVIDIA GPU;Himeno benchmark;NAS Parallel Benchmarks CG;NPB-CG;nonblocking communication;array assignment statement\",\"\",\"3\",\"\",\"25\",\"\",\"13 Jul 2017\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Complete solution of eight puzzle problem using BFS in CUDA environment\",\"M. Sultana; R. N. Dutta; S. K. Setua\",\"Dept. of CSE, University of Calcutta, Kolkata, India; Dept. of CSE, University of Calcutta, Kolkata, India; Dept. of CSE, University of Calcutta, Kolkata, India\",\"2015 IEEE International WIE Conference on Electrical and Computer Engineering (WIECON-ECE)\",\"31 Mar 2016\",\"2015\",\"\",\"\",\"333\",\"337\",\"The eight puzzle problem is the largest completely solvable problem of n×n sliding puzzle problems. It is combinatorial in nature, but there is a large problem space of 9! /2. Objective of this work is to find the complete solution of eight puzzle problem i.e. examining all the permutations for solvability. Using Breadth First search (BFS) graph traversal we can reach the solution for a definite goal. The parallel algorithm is capable of providing us with much more faster solution using Compute Unified Device Architecture (CUDA). CUDA facility enables us to use best possible available computation power of GPU (Graphics Processing Unit). In this paper, we present fast implementation of common graph operation like breadth-first search to find out complete solution of eight puzzle problem on the GPU using the CUDA programming model. Our implementations exhibit better performance. The availability and spread of GPUs to desktops and laptops make them ideal candidates to accelerate graph operations over the CPU-only implementations.\",\"\",\"978-1-4673-8786-6\",\"10.1109/WIECON-ECE.2015.7443931\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7443931\",\"Eight puzzle problem;Complete Solution;Breadth-first search;GPU;CUDA\",\"Graphics processing units;Arrays;Indexes;Instruction sets;Search problems;Computational modeling\",\"computability;graph theory;graphics processing units;parallel algorithms;parallel architectures;tree searching\",\"eight puzzle problem;sliding puzzle problems;permutations;solvability;breadth first search graph traversal;BFS graph traversal;parallel algorithm;compute unified device architecture;GPU;graphics processing unit;CUDA programming\",\"\",\"\",\"\",\"12\",\"\",\"31 Mar 2016\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"On the Programmability and Performance of Heterogeneous Platforms\",\"K. Krommydas; T. R. W. Scogland; W. -C. Feng\",\"Dept. of Comput. Sci., Virginia Tech, Blacksburg, VA, USA; Dept. of Comput. Sci., Virginia Tech, Blacksburg, VA, USA; Dept. of Comput. Sci., Virginia Tech, Blacksburg, VA, USA\",\"2013 International Conference on Parallel and Distributed Systems\",\"1 May 2014\",\"2013\",\"\",\"\",\"224\",\"231\",\"General-purpose computing on an ever-broadening array of parallel devices has led to an increasingly complex and multi-dimensional landscape with respect to programmability and performance optimization. The growing diversity of parallel architectures presents many challenges to the domain scientist, including device selection, programming model, and level of investment in optimization. All of these choices influence the balance between programmability and performance. In this paper, we characterize the performance achievable across a range of optimizations, along with their programmability, for multi- and many-core platforms - specifically, an Intel Sandy Bridge CPU, Intel Xeon Phi co-processor, and NVIDIA Kepler K20 GPU - in the context of an n-body, molecular-modeling application called GEM. Our systematic approach to optimization delivers implementations with speed-ups of 194.98×, 885.18×, and 1020.88× on the CPU, Xeon Phi, and GPU, respectively, over the naive serial version. Beyond the speed-ups, we characterize the incremental optimization of the code from naive serial to fully hand-tuned on each platform through four distinct phases of increasing complexity to expose the strengths and weaknesses of the programming models offered by each platform.\",\"1521-9097\",\"978-1-4799-2081-5\",\"10.1109/ICPADS.2013.41\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6808178\",\"performance;programmability;optimization;AVX;GPU;Intel MIC;NVIDIA Kepler K20;Xeon Phi;CUDA;OpenACC\",\"Optimization;Graphics processing units;Vectors;Computer architecture;Programming;Performance evaluation;Mathematical model\",\"coprocessors;general purpose computers;multiprocessing systems;optimisation;parallel architectures;performance evaluation\",\"programmability;heterogeneous platform performance;general-purpose computing;parallel devices;performance optimization;parallel architectures;device selection;optimization investment level;multicore platform;many-core platforms;Intel Sandy Bridge CPU;Intel Xeon Phi coprocessor;NVIDIA Kepler K20 GPU;n-body molecular-modeling application;GEM;incremental optimization;naive serial;programming models\",\"\",\"6\",\"\",\"12\",\"\",\"1 May 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Compute Intensive Algorithm on Heterogeneous System: A Case Study about Fourier Transform\",\"A. Galizia; E. Danovaro; G. Ripepi; A. Clematis\",\"Inst. for Appl. Math. & Inf. Technol., Genoa, Italy; Inst. for Appl. Math. & Inf. Technol., Genoa, Italy; Inst. for Appl. Math. & Inf. Technol., Genoa, Italy; Inst. for Appl. Math. & Inf. Technol., Genoa, Italy\",\"2014 22nd Euromicro International Conference on Parallel, Distributed, and Network-Based Processing\",\"14 Apr 2014\",\"2014\",\"\",\"\",\"223\",\"227\",\"Current workstations can offer really amazing raw computational power: up to 10 TFlops on a single machine equipped with multiple CPUs and accelerators as the Intel Xeon Phi or GPU devices. Such results can only be achieved with a massive parallelism of computational devices, thus the actual barrier posed by the exploitation of modern heterogeneous HPC resources is the difficulty in development and/or (performance) efficient porting of software on such architectures. In this paper, we present an experimental study about achievable performance of a widely used, computational intensive application the Fourier Transform, i.e. Discrete Fourier Transform (DFT) and Fast Fourier Transform. We propose an evaluation of the benefits obtained exploiting such resources in terms of performance and programming efforts in the development of the code with a emphasis on the programming approach adopted for code parallelization. With the exception of the interesting performance achieved exploiting GPU for the DFT algorithm, the use state-ofthe- art software libraries provide the best solution since they represent a good compromise to balance programming efforts and performance achievements.\",\"2377-5750\",\"978-1-4799-2729-6\",\"10.1109/PDP.2014.55\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6787277\",\"Complex Heterogeneous System;Parallel Programming Model;Fourier Transform\",\"Graphics processing units;Discrete Fourier transforms;Computer architecture;Programming;Libraries;Hardware\",\"discrete Fourier transforms;fast Fourier transforms;graphics processing units;multiprocessing systems\",\"compute intensive algorithm;heterogeneous system;multiple CPU;multiple accelerators;GPU device;Intel Xeon Phi device;heterogeneous HPC resources;discrete Fourier transform;fast Fourier transform;code parallelization;DFT algorithm;software libraries\",\"\",\"\",\"\",\"10\",\"\",\"14 Apr 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"VComputeBench: A Vulkan Benchmark Suite for GPGPU on Mobile and Embedded GPUs\",\"N. Mammeri; B. Juurlink\",Technische Universität Berlin; Technische Universität Berlin,\"2018 IEEE International Symposium on Workload Characterization (IISWC)\",\"13 Dec 2018\",\"2018\",\"\",\"\",\"25\",\"35\",\"GPUs have become immensely important computational units on embedded and mobile devices. However, GPGPU developers are often not able to exploit the compute power offered by GPUs on these devices mainly due to the lack of support of traditional programming models such as CUDA and OpenCL. The recent introduction of the Vulkan API provides a new programming model that could be explored for GPGPU computing on these devices, as it supports compute and promises to be portable across different architectures. In this paper we propose VComputeBench, a set of benchmarks that help developers understand the differences in performance and portability of Vulkan. We also evaluate the suitability of Vulkan as an emerging cross-platform GPGPU framework by conducting a thorough analysis of its performance compared to CUDA and OpenCL on mobile as well as on desktop platforms. Our experiments show that Vulkan provides better platform support on mobile devices and can be regarded as a good cross-platform GPGPU framework. It offers comparable performance and with some low-level optimizations it can offer average speedups of 1.53× and 1.66× compared to CUDA and OpenCL respectively on desktop platforms and 1.59× average speedup compared to OpenCL on mobile platforms. However, while Vulkan's low-level control can enhance performance, it requires a significantly higher programming effort.\",\"\",\"978-1-5386-6780-4\",\"10.1109/IISWC.2018.8573477\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8573477\",\"VComputeBench;Vulkan;SPIR-V;GPGPU;CUDA;OpenCL;Rodinia;Mobile\",\"Graphics processing units;Benchmark testing;Programming;Computational modeling;Performance evaluation;Mobile handsets;Computer architecture\",\"application program interfaces;electronic engineering computing;graphics processing units;optimisation\",\"VComputeBench;Vulkan benchmark suite;computational units;mobile devices;GPGPU developers;traditional programming models;Vulkan API;programming model;GPGPU computing;desktop platforms;platform support;mobile platforms;embedded GPU;cross-platform GPGPU framework;Vulkan low-level control;mobile GPU;low-level optimizations\",\"\",\"2\",\"\",\"34\",\"\",\"13 Dec 2018\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Using Graphics Processor Units (GPUs) for Automatic Video Structuring\",\"P. Kehoe; A. F. Smeaton\",\"Dublin City University, Glasnevin, Dublin 9, Ireland.; Dublin City University, Glasnevin, Dublin 9, Ireland.\",\"Eighth International Workshop on Image Analysis for Multimedia Interactive Services (WIAMIS '07)\",\"30 Jul 2007\",\"2007\",\"\",\"\",\"18\",\"18\",\"The rapid pace of development of graphic processor units (GPUs) in recent years in terms of performance and programmability has attracted the attention of those seeking to leverage alternative architectures for better performance than that which commodity CPUs can provide. In this paper, the potential of the GPU in automatically structuring video is examined, specifically in shot boundary detection and representative keyframe selection techniques. We first introduce the programming model of the GPU and outline the implementation of techniques for shot boundary detection and representative keyframe selection on both the CPU and GPU, using histogram comparisons. We compare the approaches and present performance results for both the CPU and GPU. Overall these results demonstrate the significant potential for the GPU in this domain.\",\"\",\"0-7695-2818-X\",\"10.1109/WIAMIS.2007.85\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=4279126\",\"\",\"Graphics;Gunshot detection systems;Rendering (computer graphics);Bandwidth;Random access memory;Read-write memory;Histograms;Video compression;Programming profession;Acceleration\",\"digital signal processing chips;image representation;video signal processing\",\"graphics processor units;automatic video structuring;programmability h;alternative architectures;shot boundary detection;representative keyframe selection;programming model;histogram comparisons\",\"\",\"2\",\"\",\"4\",\"\",\"30 Jul 2007\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Streaming FFT Asynchronously on Graphics Processor Units\",\"L. Zhao; Z. Shengbing; Z. Meng; Z. Yi\",\"NA; Eng. Res. Center of Embedded Syst. Integration, Northwestern Polytech. Univ. (NWPU), Xi'an, China; Eng. Res. Center of Embedded Syst. Integration, Northwestern Polytech. Univ. (NWPU), Xi'an, China; Sch. of Comput., Northwestern Polytech. Univ. (NWPU), Xi'an, China\",\"2010 International Forum on Information Technology and Applications\",\"11 Nov 2010\",\"2010\",\"1\",\"\",\"308\",\"312\",\"The Fast Fourier Transform (FFT), which charactered in memory-access-intensive, follows a divide-and-conquer strategy, is one of the most important and heavily used kernel in scientific computing. The newest generation of Graphics Processor Units (GPUs) implement a stream architecture besides acting as powerful massively parallel coprocessor. Fouthermore, the intruduction of APIs for general-purpose computation on GPUs mades GPUs an attractive choice for high-performance numerical and scientific computing. In this work we deal with the implementation of the FFT on a novel NVIDIA GPU, using the CUDA programming model. By optimizing the organiztion of signal data, exploiting the memory hierairchy, and associating the stream to different operations, we efficiently overlap kernel execution and data transfer. Our results indicate a significant performance improvement over GPU-based and CPU-based FFT algorithms. The speedup is 18 percent higher than the original GPU-based on average.\",\"\",\"978-1-4244-7622-0\",\"10.1109/IFITA.2010.76\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5635067\",\"FFT;GPUs;stream;asynchronous communication\",\"Graphics processing unit;Instruction sets;Kernel;Graphics;Programming;Memory management\",\"application program interfaces;computer graphic equipment;coprocessors;fast Fourier transforms;general purpose computers;parallel programming\",\"graphics processor units;streaming;FFT;fast Fourier Transform;divide and conquer strategy;stream architecture;parallel coprocessor;API;general purpose computation;GPU;CUDA programming model\",\"\",\"1\",\"\",\"17\",\"\",\"11 Nov 2010\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Accelerating SVMs by integrating GPUs into MapReduce clusters\",\"S. Herrero-Lopez\",\"Intelligent Engineering Systems Laboratory, Massachusetts Institute of Technology, Cambridge, 02139, USA\",\"2011 IEEE International Conference on Systems, Man, and Cybernetics\",\"21 Nov 2011\",\"2011\",\"\",\"\",\"1298\",\"1305\",\"The uninterrupted growth of information repositories has progressively lead data-intensive applications, such as MapReduce-based systems, to the mainstream. The MapReduce paradigm has frequently proven to be a simple yet flexible and scalable technique to distribute algorithms across thousands of nodes and petabytes of information. Under these circumstances, classic data mining algorithms have been adapted to this model, in order to run in production environments. Unfortunately, the high latency nature of this architecture has relegated the applicability of these algorithms to batch-processing scenarios. In spite of this shortcoming, the emergence of massively threaded shared-memory multiprocessors, such as Graphics Processing Units (GPU), on the commodity computing market has enabled these algorithms to be executed orders of magnitude faster, while keeping the same MapReduce based model. In this paper, we propose the integration of massively threaded shared-memory multiprocessors into MapReduce-based clusters creating a unified heterogeneous architecture that enables executing Map and Reduce operators on thousands of threads across multiple GPU devices and nodes, while maintaining the built-in reliability of the baseline system. For this purpose, we created a programming model that facilitates the collaboration of multiple CPU cores and multiple GPU devices towards the resolution of a data intensive problem. In order to prove the potential of this hybrid system, we take a popular NP-Hard supervised learning algorithm, the Support Vector Machine (SVM) and show that a 36x - 192x speedup can be achieved on large datasets without changing the model or leaving the commodity hardware paradigm.\",\"1062-922X\",\"978-1-4577-0653-0\",\"10.1109/ICSMC.2011.6083839\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6083839\",\"Multiprocessing;Parallel Algorithms;Pattern Classification\",\"Message systems;Graphics processing unit;Support vector machines;Computer architecture;Parallel processing;Computational modeling;Instruction sets\",\"computational complexity;coprocessors;data mining;learning (artificial intelligence);shared memory systems;support vector machines\",\"SVM;GPU;MapReduce clusters;information repositories;data-intensive applications;MapReduce-based systems;MapReduce paradigm;data mining;massively threaded shared-memory multiprocessors;graphics processing units;programming model;NP-hard supervised learning;support vector machine\",\"\",\"11\",\"\",\"22\",\"\",\"21 Nov 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Exploiting bit-level parallelism in GPGPUs: A case study on KeeLoq exhaustive key search attack\",\"G. Agosta; A. Barenghi; G. Pelosi\",\"Dipartimento di Elettronica e Informazione (DEI) Politecnico di Milano, 20133 Milano (MI), Italy; Dipartimento di Elettronica e Informazione (DEI) Politecnico di Milano, 20133 Milano (MI), Italy; Dipartimento di Elettronica e Informazione (DEI) Politecnico di Milano, 20133 Milano (MI), Italy\",\"ARCS 2012\",\"21 Jun 2012\",\"2012\",\"\",\"\",\"1\",\"7\",\"Graphic Processing Units (GPU) are increasingly popular in the field of high-performance computing for their ability to provide computational power for massively parallel problems at a reduced cost. However, the programming model exposed by the GPGPU software development tools is often insufficient to achieve full performance, and a major rethinking of algorithmic choices is needed. In this paper, we showcase such an effect on a case study drawn from the cryptography application domain. The pervasive use of cryptographic primitives in modern embedded systems is a growing trend. Small, efficient cryptosystems have been effectively employed to design and implement keyless password-based access control systems in various wireless authentication applications. The security margin provided by these lightweight ciphers should be accurately examined in light of the speed and area constraints imposed by the target environment. We present a re-design of the ASIC-oriented KEELOQ implementation to perform efficient exhaustive key search attacks while fitting tightly the parallel programming model exposed by modern GPUs. Indeed, the bitslicing technique allows the intrinsic parallelism offered by word-oriented SIMD computations to be effectively exploited. Through proper adaptation of the algorithm implementation to a platform radically different from the one it was designed for, we achieved a ×40 speedup in the computation time with respect to a single-core CPU bruteforce attack, employing only consumer grade hardware. The outstanding speedup obtainable points to a significant weakening of the cipher security margin, since it proves that anyone with off-the-shelf hardware is able to circumvent the security measures in place.\",\"\",\"978-3-00-037922-2\",\"\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6222213\",\"\",\"Graphics processing unit;Parallel processing;Registers;Programming;Instruction sets;Computer architecture;Hardware\",\"authorisation;cryptography;embedded systems;graphics processing units;message authentication;parallel programming\",\"bit-level parallelism;KEELOQ exhaustive key search attack;general purpose computing on graphics processing units;high-performance computing;massively parallel problems;programming model;GPGPU software development tools;algorithmic choice thinking;cryptography;cryptographic primitives;embedded systems;cryptosystems;keyless password-based access control systems;wireless authentication applications;lightweight ciphers;ASIC-oriented KEELOQ implementation redesign;parallel programming model;bitslicing technique;word-oriented SIMD computations;single-core CPU bruteforce attack;consumer grade hardware;cipher security margin;off-the-shelf hardware\",\"\",\"\",\"\",\"17\",\"\",\"21 Jun 2012\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Study of BDRM Asynchronous Parallel Computing Model Based on Multiple CUDA Streams\",\"X. Sun; L. Da; Y. Li\",\"Navy Underwater Battlefield Environ. Instn., Navy Submarine Acad., Qingdao, China; Navy Underwater Battlefield Environ. Instn., Navy Submarine Acad., Qingdao, China; Navy Underwater Battlefield Environ. Instn., Navy Submarine Acad., Qingdao, China\",\"2014 Seventh International Symposium on Computational Intelligence and Design\",\"9 Apr 2015\",\"2014\",\"1\",\"\",\"181\",\"184\",\"In order to improve the computing speed of ocean acoustic field using the Beam-Displacement Ray-Mode (BDRM) theory, a BDRM parallel computing model based on Compute Unified Device Architecture (CUDA) is designed by virtue of the powerful parallel computing ability of GPU and the character of BDRM theory. The emphasis is how to implement parallel computing of eigen value and eigen function in CUDA programming model. The results of simulation experiment show that the CPU elapsed time increases fast but the GPU elapsed time increases slow with the frequency of the sound source reaching higher. The speedup in blue-water is bigger than that in shallow-water under the same frequency of the sound source. The speedups are 7.84× and 33.36× respectively in shallow-water and blue-water when the frequency of the sound source is 1000Hz. The BDRM parallel computing model based on CUDA has higher computing efficiency than the BDRM serial computing model based on CPU under large scale operations. It could achieve the requirement of fast forecast of ocean acoustic field and engineering application.\",\"\",\"978-1-4799-7005-6\",\"10.1109/ISCID.2014.104\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7064168\",\"CUDA;BDRM;eigenvalue;eigenfunction;acoustic field;parallel computing\",\"Graphics processing units;Computational modeling;Parallel processing;Acoustics;Eigenvalues and eigenfunctions;Oceans;Instruction sets\",\"eigenvalues and eigenfunctions;graphics processing units;parallel architectures;parallel programming\",\"BDRM asynchronous parallel computing model;multiple CUDA stream;beam-displacement ray-mode theory;Compute Unified Device Architecture;GPU parallel computing ability;graphics processing unit;CUDA programming;eigenvalue;eigenfunction;CPU elapsed time;GPU elapsed time;sound source frequency;ocean acoustic field;engineering application;BDRM serial computing model\",\"\",\"2\",\"\",\"11\",\"\",\"9 Apr 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Numerical Simulation of Transit-Time Ultrasonic Flowmeters by a Direct Approach\",\"A. Luca; R. Marchiano; J. Chassaing\",\"Ultraflux, Éragny, France; Institut Jean Le Rond d’Alembert, 4 place Jussieu, Sorbonne Universités, UPMC Univ Paris 06, CNRS, UMR 7190, Paris, France; Institut Jean Le Rond d’Alembert, 4 place Jussieu, Sorbonne Universités, UPMC Univ Paris 06, CNRS, UMR 7190, Paris, France\",\"IEEE Transactions on Ultrasonics, Ferroelectrics, and Frequency Control\",\"23 May 2016\",\"2016\",\"63\",\"6\",\"886\",\"897\",\"This paper deals with the development of a computational code for the numerical simulation of wave propagation through domains with a complex geometry consisting in both solids and moving fluids. The emphasis is on the numerical simulation of ultrasonic flowmeters (UFMs) by modeling the wave propagation in solids with the equations of linear elasticity (ELE) and in fluids with the linearized Euler equations (LEEs). This approach requires high performance computing because of the high number of degrees of freedom and the long propagation distances. Therefore, the numerical method should be chosen with care. In order to minimize the numerical dissipation which may occur in this kind of configuration, the numerical method employed here is the nodal discontinuous Galerkin (DG) method. Also, this method is well suited for parallel computing. To speed up the code, almost all the computational stages have been implemented to run on graphical processing unit (GPU) by using the compute unified device architecture (CUDA) programming model from NVIDIA. This approach has been validated and then used for the two-dimensional simulation of gas UFMs. The large contrast of acoustic impedance characteristic to gas UFMs makes their simulation a real challenge.\",\"1525-8955\",\"\",\"10.1109/TUFFC.2016.2545714\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7439838\",\"Numerical simulation;transit-time flowmeters;linear elasticity;Euler equations;discontinuous Galerkin methods;GPU computing;Discontinuous Galerkin methods;Euler equations;graphical processing unit computing;linear elasticity;numerical simulation;transit-time flowmeters\",\"Mathematical model;Acoustics;Solids;Numerical simulation;Propagation;Computational modeling;Transducers\",\"elasticity;flowmeters;Galerkin method;ultrasonic measurement;wave propagation\",\"numerical simulation;transit-time ultrasonic flowmeters;computational code;wave propagation;complex geometry;solids;moving fluids;linear elasticity;linearized Euler equations;nodal discontinuous Galerkin method;graphical processing unit;compute unified device architecture programming model;NVIDIA;acoustic impedance characteristic\",\"Computer Simulation;Image Processing, Computer-Assisted;Rheology;Ultrasonics\",\"21\",\"\",\"51\",\"IEEE\",\"23 Mar 2016\",\"\",\"\",\"IEEE\",\"IEEE Journals\"\n\"GPGPU implementation of fractal image coding\",\"O. Alvarado-Nava; H. M. Chablé Martínez; E. Rodríguez-Martínez\",\"Departamento de Electrónica, Divisi ón de Ciencias Básicas e Ingeniería, Universidad Autónoma Metropolitana, Unidad Azcapotzalco, México D.F., México; Departamento de Electrónica, Divisi ón de Ciencias Básicas e Ingeniería, Universidad Autónoma Metropolitana, Unidad Azcapotzalco, México D.F., México; Departamento de Electrónica, Divisi ón de Ciencias Básicas e Ingeniería, Universidad Autónoma Metropolitana, Unidad Azcapotzalco, México D.F., México\",\"3rd IEEE International Work-Conference on Bioinspired Intelligence\",\"2 Oct 2014\",\"2014\",\"\",\"\",\"106\",\"110\",\"The programming model of general propose computing on graphic processing units (GPGPU) offers great efficiency for applications acceleration. This feature is granted by the ability of partitioning a sequential application into smaller subproblems with high computing requirements; those subproblems can be executed in parallel by a graphics processing unit (GPU) and partial results can be transferred to main memory where the central processing unit (CPU) collects and presents them. On the other hand, Fractal Image Coding (FIC) is a lossy compression technique with promising features, however it has been relegated due to its large coding time. The present article propose a parallel implementation of FIC on a GPGPU system which achieves an acceleration on coding time of about 129 times.\",\"\",\"978-1-4799-6174-0\",\"10.1109/IWOBI.2014.6913947\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6913947\",\"Fractal Image Compression;GPGPU;GPU;Parallel Computing\",\"Graphics processing units;Image coding;Instruction sets;Fractals;Image resolution;Central Processing Unit;Acceleration\",\"fractals;graphics processing units;image coding\",\"GPGPU implementation;fractal image coding;programming model;applications acceleration;partitioning;sequential application;high computing requirements;central processing unit;CPU;FIC;lossy compression technique;parallel implementation;graphic processing units\",\"\",\"2\",\"\",\"15\",\"\",\"2 Oct 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Self-Adaptive OmpSs Tasks in Heterogeneous Environments\",\"J. Planas; R. M. Badia; E. Ayguadé; J. Labarta\",\"Barcelona Supercomput. Center, Univ. Politec. de Catalunya, Barcelona, Spain; Artificial Intell. Res. Inst. (IIIA), Barcelona Supercomput. Center, Barcelona, Spain; Barcelona Supercomput. Center, Univ. Politec. de Catalunya, Barcelona, Spain; Barcelona Supercomput. Center, Univ. Politec. de Catalunya, Barcelona, Spain\",\"2013 IEEE 27th International Symposium on Parallel and Distributed Processing\",\"29 Jul 2013\",\"2013\",\"\",\"\",\"138\",\"149\",\"As new heterogeneous systems and hardware accelerators appear, high performance computers can reach a higher level of computational power. Nevertheless, this does not come for free: the more heterogeneity the system presents, the more complex becomes the programming task in terms of resource management. OmpSs is a task-based programming model and framework focused on the runtime exploitation of parallelism from annotated sequential applications. This paper presents a set of extensions to this framework: we show how the application programmer can expose different specialized versions of tasks (i.e. pieces of specific code targeted and optimized for a particular architecture) and how the system can choose between these versions at runtime to obtain the best performance achievable for the given application. From the results obtained in a multi-GPU system, we prove that our proposal gives flexibility to application's source code and can potentially increase application's performance.\",\"1530-2075\",\"978-1-4673-6066-1\",\"10.1109/IPDPS.2013.53\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6569807\",\"multi-gpu management;heterogeneous architectures;parallel programming models;scheduling techniques\",\"Runtime;Graphics processing units;Programming;Computer architecture;Reliability;Proposals;Kernel\",\"graphics processing units;parallel programming;resource allocation;scheduling;source coding\",\"self-adaptive OmpSs tasks;heterogeneous environments;heterogeneous systems;hardware accelerators;high performance computers;task-based programming model;resource management;computational power;runtime parallelism exploitation;sequential applications;application programmer;multiGPU system;application source code;application performance\",\"\",\"34\",\"\",\"25\",\"\",\"29 Jul 2013\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Design and Performance Evaluation of Image Processing Algorithms on GPUs\",\"I. K. Park; N. Singhal; M. H. Lee; S. Cho; C. Kim\",\"Inha University, Incheon; Samsung Electronics Co., Ltd., Suwon; Inha University, Incheon; Samsung Electronics Co., Ltd., Suwon; NVIDIA Corporation, Seoul\",\"IEEE Transactions on Parallel and Distributed Systems\",\"29 Nov 2010\",\"2011\",\"22\",\"1\",\"91\",\"104\",\"We construe key factors in design and evaluation of image processing algorithms on the massive parallel graphics processing units (GPUs) using the compute unified device architecture (CUDA) programming model. A set of metrics, customized for image processing, is proposed to quantitatively evaluate algorithm characteristics. In addition, we show that a range of image processing algorithms map readily to CUDA using multiview stereo matching, linear feature extraction, JPEG2000 image encoding, and nonphotorealistic rendering (NPR) as our example applications. The algorithms are carefully selected from major domains of image processing, so they inherently contain a variety of subalgorithms with diverse characteristics when implemented on the GPU. Performance is evaluated in terms of execution time and is compared to the fastest host-only version implemented using OpenMP. It is shown that the observed speedup varies extensively depending on the characteristics of each algorithm. Intensive analysis is conducted to show the appropriateness of the proposed metrics in predicting the effectiveness of an application for parallel implementation.\",\"1558-2183\",\"\",\"10.1109/TPDS.2010.115\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5477417\",\"GPU;CUDA;image processing;parallel implementation;GPGPU.\",\"Algorithm design and analysis;Image processing;Concurrent computing;Computer architecture;Graphics processing unit;Parallel programming;Computer vision;Scattering;Parallel processing\",\"computer graphic equipment;coprocessors;feature extraction;image coding;performance evaluation\",\"image processing algorithms;massive parallel graphics processing units;compute unified device architecture programming model;performance evaluation;multiview stereo matching;linear feature extraction;JPEG2000 image encoding;nonphotorealistic rendering;OpenMP;execution time\",\"\",\"90\",\"2\",\"38\",\"IEEE\",\"3 Jun 2010\",\"\",\"\",\"IEEE\",\"IEEE Journals\"\n\"Software Pipelined Execution of Stream Programs on GPUs\",\"A. Udupa; R. Govindarajan; M. J. Thazhuthaveetil\",\"Dept. of Comput. Sci. & Autom., Indian Inst. of Sci., Bangalore; Dept. of Comput. Sci. & Autom., Indian Inst. of Sci., Bangalore; Dept. of Comput. Sci. & Autom., Indian Inst. of Sci., Bangalore\",\"2009 International Symposium on Code Generation and Optimization\",\"5 May 2009\",\"2009\",\"\",\"\",\"200\",\"209\",\"The StreamIt programming model has been proposed to exploit parallelism in streaming applications on general purpose multi-core architectures. This model allows programmers to specify the structure of a program as a set of filters that act upon data, and a set of communication channels between them. The StreamIt graphs describe task, data and pipeline parallelism which can be exploited on modern graphics processing units (GPUs), as they support abundant parallelism in hardware. In this paper, we describe the challenges in mapping StreamIt to GPUs and propose an efficient technique to software pipeline the execution of stream programs on GPUs. We formulate this problem - both scheduling and assignment of filters to processors - as an efficient integer linear program (ILP), which is then solved using ILP solvers. We also describe a novel buffer layout technique for GPUs which facilitates exploiting the high memory bandwidth available in GPUs. The proposed scheduling utilizes both the scalar units in GPU, to exploit data parallelism, and multiprocessors, to exploit task and pipeline parallelism. Further it takes into consideration the synchronization and bandwidth limitations of GPUs, and yields speedups between 1.87X and 36.83X over a single threaded CPU.\",\"\",\"978-0-7695-3576-0\",\"10.1109/CGO.2009.20\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=4907664\",\"CUDA;GPU Programming;Software Pipelining;Stream Programming\",\"Pipelines;Filters;Processor scheduling;Bandwidth;Parallel programming;Application software;Computer architecture;Programming profession;Communication channels;Graphics\",\"linear programming;parallel programming;pipeline processing\",\"software pipelined execution;stream programs;StreamIt programming model;multi-core architectures;StreamIt graphs;graphics processing units;integer linear program;high memory bandwidth\",\"\",\"60\",\"2\",\"23\",\"\",\"5 May 2009\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Exploring Memory Persistency Models for GPUs\",\"Z. Lin; M. Alshboul; Y. Solihin; H. Zhou\",North Carolina State University; North Carolina State University; University of Central Florida; North Carolina State University,\"2019 28th International Conference on Parallel Architectures and Compilation Techniques (PACT)\",\"7 Nov 2019\",\"2019\",\"\",\"\",\"311\",\"323\",\"Given its high integration density, high speed, byte addressability, and low standby power, non-volatile or persistent memory is expected to supplement/replace DRAM as main memory. Through persistency programming model (which defines durability ordering of stores) and durable transaction constructs, the programmer can provide recoverable data structure (RDS) which allows programs to recover to a consistent state after a failure. While persistency models have been well studied for CPUs, they have been neglected for graphics processing units (GPUs). Considering the importance of GPUs as a dominant accelerator for high performance computing, we investigate persistency models for GPUs. GPU applications exhibit substantial differences with CPUs applications, hence in this paper we adapt, re-architect, and optimize CPU persistency models for GPUs. We design a pragma-based compiler scheme for expressing persistency model for GPUs. We identify that the thread hierarchy in GPUs offers intuitive scopes to form epochs and durable transactions. We find that undo logging produces significant performance overheads. We propose to use idempotency analysis to reduce both logging frequency and the size of logs. Through both real-system and simulation evaluations, we show low overheads of our proposed architecture support.\",\"2641-7936\",\"978-1-7281-3613-4\",\"10.1109/PACT.2019.00032\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8891613\",\"GPU;Memory Persistency\",\"Graphics processing units;Instruction sets;Adaptation models;Nonvolatile memory;Kernel;Bandwidth;Random access memory\",\"data structures;DRAM chips;graphics processing units;microprocessor chips;parallel processing;program compilers\",\"memory persistency models;GPUs;high integration density;low standby power;persistent memory;persistency programming model;persistency model;high performance computing;CPU persistency models;durable transactions;byte addressability;nonvolatile memory;recoverable data structure;graphics processing units;DRAM;pragma-based compiler scheme\",\"\",\"4\",\"\",\"28\",\"\",\"7 Nov 2019\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"HadoopCL2: Motivating the Design of a Distributed, Heterogeneous Programming System With Machine-Learning Applications\",\"M. Grossman; M. Breternitz; V. Sarkar\",\"Department of Computer Science, 6100 Main St., Rice University, Houston, TX; AMD Research, 7171 Southwest Parkway, Austin, TX; Department of Computer Science, 6100 Main St., Rice University, Houston, TX\",\"IEEE Transactions on Parallel and Distributed Systems\",\"11 Feb 2016\",\"2016\",\"27\",\"3\",\"762\",\"775\",\"Machine learning (ML) algorithms have garnered increased interest as they demonstrate improved ability to extract meaningful trends from large, diverse, and noisy data sets. While research is advancing the state-of-the-art in ML algorithms, it is difficult to drastically improve the real-world performance of these algorithms. Porting new and existing algorithms from single-node systems to multi-node clusters, or from architecturally homogeneous systems to heterogeneous systems, is a promising optimization technique. However, performing optimized ports is challenging for domain experts who may lack experience in distributed and heterogeneous software development. This work explores how challenges in ML application development on heterogeneous, distributed systems shaped the development of the HadoopCL2 (HCL2) programming system. ML applications guide this work because they exhibit features that make application development difficult: large & diverse datasets, complex algorithms, and the need for domain-specific knowledge. The goal of this work is a general, MapReduce programming system that outperforms existing programming systems. This work evaluates the performance and portability of HCL2 against five ML applications from the Mahout ML framework on two hardware platforms. HCL2 demonstrates speedups of greater than 20x relative to Mahout for three computationally heavy algorithms and maintains minor performance improvements for two I/O bound algorithms.\",\"1558-2183\",\"\",\"10.1109/TPDS.2015.2414943\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7064791\",\"MapReduce;heterogeneous;distributed;programming model;GPU;auto-scheduling\",\"Programming;Performance evaluation;Vectors;Java;Kernel;Object oriented modeling;Computational modeling\",\"data handling;distributed programming;learning (artificial intelligence);optimisation;parallel processing;software engineering\",\"distributed programming system;heterogeneous programming system;machine-learning applications;optimization technique;distributed software development;heterogeneous software development;ML application development;HadoopCL2 programming system;HCL2 programming system;domain-specific knowledge;MapReduce programming system;Mahout ML framework;I/O bound algorithms\",\"\",\"6\",\"\",\"16\",\"IEEE\",\"20 Mar 2015\",\"\",\"\",\"IEEE\",\"IEEE Journals\"\n\"Running High Performance Linpack on CPUGPU clusters\",\"D. Tomić; D. Ogrizović\",\"Hewlett-Packard Croatia, Zagreb, Croatia; Center for advanced computing and modeling / Faculty of Maritime Studies, Rijeka, Croatia\",\"2012 Proceedings of the 35th International Convention MIPRO\",\"16 Jul 2012\",\"2012\",\"\",\"\",\"400\",\"404\",\"A trend is developing in High-Performance Computing with cluster nodes built of general purpose CPUs and GPU accelerators. The common name of these systems is CPUGPU clusters. High Performance Linpack (HPL) benchmarking of High Performance Clusters consisting of nodes with both CPUs and GPUs is still a challenging task and deserves a high attention. In order to make HPL on such clusters more efficient, a multi-layered programming model consisting of at least Message Passing Interface (MPI), Multiprocessing (MP) and Streams Programming (Streams) needs to be utilized. Besides multi-layered programming model, it is crucial to deploy a right load-balancing scheme if someone wants to run HPL efficiently on CPUGPU systems. That means, besides the highest possible utilization rate, both fast and slow processors needs to receive appropriate portion of load, in order to avoid faster resources waiting on slower to finish their jobs. Moreover, in HPC clusters on Cloud, one has to take into account not only computing nodes of different processing power, but also a communication links of different speed between nodes as well. For this reasons we propose a load balancing method based on a semidefinite optimization. We hope that this method, coupled with a multi-layered programming, can perform a HPL benchmark on CPUGPU clusters and HPC Cloud systems more efficiently than methods used today.\",\"\",\"978-953-233-068-7\",\"\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6240677\",\"\",\"Benchmark testing;Graphics processing unit;Programming;Symmetric matrices;Load management;Optimization;Clustering algorithms\",\"application program interfaces;benchmark testing;graphics processing units;message passing;multiprocessing systems;parallel programming;performance evaluation;resource allocation\",\"high performance Linpack;CPUGPU clusters;high-performance computing;general purpose CPU;GPU accelerators;HPL benchmarking;multilayered programming model;least message passing interface;multiprocessing;stream programming;load-balancing scheme;processing power;load balancing method;semidefinite optimization\",\"\",\"2\",\"\",\"10\",\"\",\"16 Jul 2012\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"OpenMP 4.5 compiler optimization for GPU offloading\",\"E. Tiotto; B. Mahjour; W. Tsang; X. Xue; T. Islam; W. Chen\",NA; NA; NA; NA; NA; NA,\"IBM Journal of Research and Development\",\"15 May 2020\",\"2020\",\"64\",\"3/4\",\"14:1\",\"14:11\",\"Ability to efficiently offload computational workloads to graphic processing units (GPUs) is critical for the success of hybrid CPU–GPU architectures, such as the Summit and Sierra supercomputing systems. OpenMP 4.5 is a high-level programming model that enables the development of architecture- and accelerator-independent applications. This article describes aspects of the OpenMP implementation in the IBM XL C/C++ and XL Fortran OpenMP compilers that aid programmers to achieve performance objectives. This includes an interprocedural static analysis the XL optimizer uses to specialize code generation of the OpenMP <italic>distribute parallel do</italic> loop within the dynamic context of a target region, and other compiler optimizations designed to reduce the overhead of data transferred to an offloaded target region. We introduce the heuristic used at runtime to select optimal grid sizes for offloaded target team constructs. These tuned heuristics lead to an average improvement of 2× in the runtime of several target regions in the SPEC ACCEL V1.2 benchmark suite. In addition to performance enhancement, this article also presents an advanced diagnostic feature implemented in the XL Fortran compiler to aid in debugging OpenMP applications offloaded to accelerators.\",\"0018-8646\",\"\",\"10.1147/JRD.2019.2962428\",\"CORAL; U.S. Department of Energy(grant numbers:B604142); \",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8943339\",\"\",\"Graphics processing units;Runtime;Programming;Context;Computer architecture;Optimization\",\"\",\"\",\"\",\"\",\"\",\"11\",\"IBM\",\"25 Dec 2019\",\"\",\"\",\"IBM\",\"IBM Journals\"\n\"A Runtime Library for Platform-Independent Task Parallelism\",\"P. E. Hadjidoukas; E. Lappas; V. V. Dimakopoulos\",\"Dept. of Comput. Sci., Univ. of Ioannina, Ioannina, Greece; Dept. of Comput. Sci., Univ. of Ioannina, Ioannina, Greece; Dept. of Comput. Sci., Univ. of Ioannina, Ioannina, Greece\",\"2012 20th Euromicro International Conference on Parallel, Distributed and Network-based Processing\",\"15 Mar 2012\",\"2012\",\"\",\"\",\"229\",\"236\",\"With the increasing diversity of computing systems and the rapid performance improvement of commodity hardware, heterogeneous clusters become the dominant platform for low-cost, high-performance computing. Grid-enabled and heterogeneous implementations of MPI establish it as the de facto programming model for these environments. On the other hand, task parallelism provides a natural way for exploiting their hierarchical architecture. This hierarchy has been further extended with the advent of general-purpose GPU devices. In this paper we present the implementation of an MPI-based task library for heterogeneous and GPU clusters. The library offers an intuitive programming interface for multilevel task parallelism with transparent data management and load balancing. We discuss design and implementation issues regarding heterogeneity support and report performance results on heterogeneous cluster computing environments.\",\"2377-5750\",\"978-1-4673-0226-5\",\"10.1109/PDP.2012.89\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6169554\",\"task parallelism;heterogeneous computing;runtime support;message passing\",\"Graphics processing unit;Kernel;Programming;Parallel processing;Libraries;Central Processing Unit;Computer architecture\",\"application program interfaces;data handling;graphics processing units;message passing;parallel processing;resource allocation\",\"runtime library;platform-independent task parallelism;computing system;commodity hardware;heterogeneous cluster computing environment;high-performance computing;Grid-enabled MPI implementation;heterogeneous MPI implementation;message passing interface;de facto programming model;general-purpose GPU device;graphics processing unit;intuitive programming interface;transparent data management;load balancing;MPI-based task library;multilevel task parallelism\",\"\",\"6\",\"\",\"22\",\"\",\"15 Mar 2012\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Parallel Computing Experiences with CUDA\",\"M. Garland; S. Le Grand; J. Nickolls; J. Anderson; J. Hardwick; S. Morton; E. Phillips; Y. Zhang; V. Volkov\",\"NVIDIA; NVIDIA; NVIDIA; Iowa State University and Ames Laboratory; TechniScan Medical Systems; Hess; University of California, Davis; University of California, Davis; University of California, Berkeley\",\"IEEE Micro\",\"19 Sep 2008\",\"2008\",\"28\",\"4\",\"13\",\"27\",\"The CUDA programming model provides a straightforward means of describing inherently parallel computations, and NVIDIA's Tesla GPU architecture delivers high computational throughput on massively parallel problems. This article surveys experiences gained in applying CUDA to a diverse set of problems and the parallel speedups over sequential codes running on traditional CPU architectures attained by executing key computations on the GPU.\",\"1937-4143\",\"\",\"10.1109/MM.2008.57\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=4626815\",\"\",\"Parallel processing;Programming profession;Parallel programming;Concurrent computing;Computer architecture;Computer graphics;Kernel;Throughput;Central Processing Unit\",\"coprocessors;parallel processing\",\"parallel computing;CUDA programming model;NVIDIA;Tesla GPU architecture;sequential codes\",\"\",\"291\",\"10\",\"22\",\"IEEE\",\"19 Sep 2008\",\"\",\"\",\"IEEE\",\"IEEE Magazines\"\n\"An Initial Assessment of NVSHMEM for High Performance Computing\",\"C. Hsu; N. Imam; A. Langer; S. Potluri; C. J. Newburn\",\"Oak Ridge National Laboratory Oak Ridge TN,Computing & Computational Sciences,USA; Oak Ridge National Laboratory Oak Ridge TN,Computing & Computational Sciences,USA; NVIDIA Corporation,Compute Software,Santa Clara, CA,USA; NVIDIA Corporation,Compute Software,Santa Clara, CA,USA; NVIDIA Corporation,Compute Software,Santa Clara, CA,USA\",\"2020 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW)\",\"28 Jul 2020\",\"2020\",\"\",\"\",\"1\",\"10\",\"High Performance Computing has been a driving force behind important tasks such as scientific discovery and deep learning. It tends to achieve performance through greater concurrency and heterogeneity, where the underlying complexity of richer topologies is managed through software abstraction.In this paper, we present our initial assessment of NVSHMEM, an experimental programming library that supports the Partitioned Global Address Space programming model for NVIDIA GPU clusters. NVSHMEM offers several concrete advantages. One is that it reduces overheads and software complexity by allowing communication and computation to be interleaved vs. separating them into different phases. Another is that it implements the OpenSHMEM specification to provide efficient finegrained one-sided communication, streamlining away overheads due to tag matching, wildcards, and unexpected messages which have compounding effect with increasing concurrency. It also offers ease of use by abstracting away low-level configuration operations that are required to enable low-overhead communication and direct loads and stores across processes.We evaluated NVSHMEM in terms of usability, functionality, and scalability by running two math kernels, matrix multiplication and Jacobi solver, on the 27,648-GPU Summit supercomputer. Our exercise of NVSHMEM at scale contributed to making NVSHMEM more robust and preparing it for production release.\",\"\",\"978-1-7281-7445-7\",\"10.1109/IPDPSW50202.2020.00104\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9150438\",\"high Performance Computing (HPC);CUDA;openSHMEM;scalability\",\"Graphics processing units;Programming;Kernel;Message systems;Jacobian matrices;Electronics packaging\",\"application program interfaces;graphics processing units;matrix multiplication;message passing;parallel programming;software libraries;software performance evaluation\",\"NVIDIA GPU clusters;Partitioned Global Address Space programming model;experimental programming library;software abstraction;deep learning;scientific discovery;driving force;high Performance Computing;low-overhead communication;one-sided communication;software complexity;NVSHMEM\",\"\",\"1\",\"\",\"8\",\"\",\"28 Jul 2020\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Accelerating a C++ CFD Code with OpenACC\",\"J. Kraus; M. Schlottke; A. Adinetz; D. Pleiter\",\"NVIDIA GmbH, Wurselen, Germany; RWTH Aachen Univ., Aachen, Germany; Forschungszentrum Jυlich, Julich, Germany; Forschungszentrum Jυlich, Julich, Germany\",\"2014 First Workshop on Accelerator Programming using Directives\",\"9 Apr 2015\",\"2014\",\"\",\"\",\"47\",\"54\",\"Todays HPC systems are increasingly utilizing accelerators to lower time to solution for their users and reduce power consumption. To utilize the higher performance and energy efficiency of these accelerators, application developers need to rewrite at least parts of their codes. Taking the C++ flow solver ZFS as an example, we show that the directive-based programming model allows one to achieve good performance with reasonable effort, even for mature codes with many lines of code. Using OpenACC directives permitted us to incrementally accelerate ZFS, focusing on the parts of the program that are relevant for the problem at hand. The two new OpenACC 2.0 features, unstructured data regions and atomics, are required for this. OpenACC's interoperability with existing GPU libraries via the host_data use_device construct allowed to use CUDAaware MPI to achieve multi-GPU scalability comparable to the CPU version of ZFS. Like many other codes, the data structures of ZFS have been designed with traditional CPUs and their relatively large private caches in mind. This leads to suboptimal memory access patterns on accelerators, such as GPUs. We show how the texture cache on NVIDIA GPUs can be used to minimize the performance impact of these suboptimal patterns without writing platform specific code. For the kernel most affected by the memory access pattern, we compare the initial array of structures memory layout with a structure of arrays layout.\",\"\",\"978-1-4673-6753-0\",\"10.1109/WACCPD.2014.11\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7081677\",\"\",\"Graphics processing units;Acceleration;Computer architecture;Microprocessors;Programming;Kernel\",\"application program interfaces;C++ language;computational fluid dynamics;graphics processing units;message passing;open systems;parallel architectures\",\"C++ flow solver;CFD code;computational fluid dynamics;OpenACC interoperability;directive-based programming model;CUDA aware MPI;NVIDIA GPU\",\"\",\"16\",\"\",\"21\",\"\",\"9 Apr 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Accelerating bootstrapping in FHEW using GPUs\",\"M. S. Lee; Y. Lee; J. H. Cheon; Y. Paek\",\"Dept. of Mathematical Sciences, Seoul National University, Korea; Dept. of Electrical and Computer Engineering and Inter-University Semiconductor Research Center (ISRC), Seoul National University, Korea; Dept. of Mathematical Sciences, Seoul National University, Korea; Dept. of Electrical and Computer Engineering and Inter-University Semiconductor Research Center (ISRC), Seoul National University, Korea\",\"2015 IEEE 26th International Conference on Application-specific Systems, Architectures and Processors (ASAP)\",\"10 Sep 2015\",\"2015\",\"\",\"\",\"128\",\"135\",\"Recently, the usage of GPU is not limited to the jobs associated with graphics and a wide variety of applications take advantage of the flexibility of GPUs to accelerate the computing performance. Among them, one of the most emerging applications is the fully homomorphic encryption (FHE) scheme, which enables arbitrary computations on encrypted data. Despite much research effort, it cannot be considered as practical due to the enormous amount of computations, especially in the bootstrapping procedure. In this paper, we accelerate the performance of the recently suggested fast bootstrapping method in FHEW scheme using GPUs, as a case study of a FHE scheme. In order to optimize, we explored the reference code and carried out profiling to find out candidates for performance acceleration. Based on the profiling results, combined with more flexible tradeoff method, we optimized the bootstrapping algorithm in FHEW using GPU and CUDA's programming model. The empirical result shows that the bootstrapping of FHEW ciphertext can be done in less than 0.11 second after optimization.\",\"2160-052X\",\"978-1-4799-1925-3\",\"10.1109/ASAP.2015.7245720\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7245720\",\"\",\"Graphics processing units;Encryption;Acceleration;Libraries;Noise;Polynomials\",\"cryptography;graphics processing units;parallel programming\",\"bootstrapping algorithm;FHEW scheme;fully homomorphic encryption scheme;GPU;graphics processing unit;performance acceleration;fast bootstrapping method;CUDA programming model;Compute Unified Device Architecture;FHEW ciphertext bootstrapping\",\"\",\"7\",\"\",\"26\",\"\",\"10 Sep 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n"
  },
  {
    "path": "notebooks/data/ieee_3.csv",
    "content": "\"Document Title\",Authors,\"Author Affiliations\",\"Publication Title\",Date Added To Xplore,\"Publication Year\",\"Volume\",\"Issue\",\"Start Page\",\"End Page\",\"Abstract\",\"ISSN\",ISBNs,\"DOI\",Funding Information,PDF Link,\"Author Keywords\",\"IEEE Terms\",\"INSPEC Controlled Terms\",\"INSPEC Non-Controlled Terms\",\"Mesh_Terms\",Article Citation Count,Patent Citation Count,\"Reference Count\",\"License\",Online Date,Issue Date,\"Meeting Date\",\"Publisher\",Document Identifier\n\"MR-Graph: A Customizable GPU MapReduce\",\"Z. Qiao; S. Liang; H. Jiang; S. Fu\",\"Dept. of Comput. Sci. & Eng., Univ. of North Texas, Denton, TX, USA; Dept. of Comput. Sci. & Eng., Univ. of North Texas, Denton, TX, USA; Dept. of Comput. Sci., Arkansas State Univ., AR, USA; NA\",\"2015 IEEE 2nd International Conference on Cyber Security and Cloud Computing\",\"7 Jan 2016\",\"2015\",\"\",\"\",\"417\",\"422\",\"The MapReduce programming model has been widely used in Big Data and Cloud applications. Criticism on its inflexibility when being applied to complicated scientific applications recently emerges. Several techniques have been proposed to enhance its flexibility. However, some of them exert special requirements on applications, while others fail to support the increasingly popular coprocessors, such as Graphics Processing Unit (GPU). In this paper, we propose MR-Graph, a customizable and unified framework for GPU-based MapReduce, which aims to improve the flexibility, scalability and performance of MapReduce. MR-Graph addresses the limitations and restrictions of the traditional MapReduce execution paradigm. The three execution modes integrated in MR-Graph facilitates users to write their applications in a more flexible fashion by defining a Map and Reduce function call graph. MR-Graph efficiently explores the memory hierarchy in GPUs to reduce the data transfer overhead between execution stages and accommodate big data applications. We have implemented a prototype of MR-Graph and experimental results show the effectiveness of using MR-Graph for flexible and scalable GPU-based MapReduce computing.\",\"\",\"978-1-4673-9300-3\",\"10.1109/CSCloud.2015.49\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7371516\",\"MapReduce;GPU;Configurable;Flexible;Iterative;Recursive\",\"Graphics processing units;Programming;Parallel processing;Computational modeling;Big data;Cloud computing;Data models\",\"graphics processing units;parallel programming\",\"MR-Graph framework;GPU MapReduce;MapReduce programming model;graphics processing unit;MapReduce execution paradigm;memory hierarchy;Big Data applications\",\"\",\"\",\"\",\"15\",\"\",\"7 Jan 2016\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Performance Optimization of Top-k Queries on GPU\",\"T. Luo; G. -Z. Sun; G. Chen\",\"Key Lab. on High Performance Comput., Anhui Province Univ. of Sci. & Technol. of China, Hefei, China; Key Lab. on High Performance Comput., Anhui Province Univ. of Sci. & Technol. of China, Hefei, China; Key Lab. on High Performance Comput., Anhui Province Univ. of Sci. & Technol. of China, Hefei, China\",\"2011 Fourth International Symposium on Parallel Architectures, Algorithms and Programming\",\"12 Jan 2012\",\"2011\",\"\",\"\",\"9\",\"13\",\"With the development of web search engines, the concern on real-time performance of Top-k queries has attracted more and more attention. The author studies implement of classic algorithm - No Random Access Algorithm in order to optimize performance of Top-k queries on GPU. We give a novel GPU algorithm by using the features of CUDA's programming model. Experiment results show that an implementation of the algorithm on one GPU runs more than 7000 times faster than a single core implementation on a latest CPU.\",\"2168-3042\",\"978-1-4577-1808-3\",\"10.1109/PAAP.2011.11\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6128467\",\"GPU;performance optimization;top-k queries\",\"Graphics processing unit;Instruction sets;Upper bound;Programming;Algorithm design and analysis;Optimization;Vectors\",\"graphics processing units;optimisation;parallel architectures;parallel programming;performance evaluation;query processing\",\"performance optimization;top-k queries;GPU;Web search engines;classic algorithm;no random access algorithm;CUDA programming model\",\"\",\"1\",\"\",\"15\",\"\",\"12 Jan 2012\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Towards an Effective Unified Programming Model for Many-Cores\",\"A. L. Varbanescu; P. Hijma; R. van Nieuwpoort; H. Bal\",\"Comput. Syst. Group, Vrije Univ. Amsterdam, Amsterdam, Netherlands; Comput. Syst. Group, Vrije Univ. Amsterdam, Amsterdam, Netherlands; Comput. Syst. Group, Vrije Univ. Amsterdam, Amsterdam, Netherlands; Comput. Syst. Group, Vrije Univ. Amsterdam, Amsterdam, Netherlands\",\"2011 IEEE International Symposium on Parallel and Distributed Processing Workshops and Phd Forum\",\"1 Sep 2011\",\"2011\",\"\",\"\",\"681\",\"692\",\"Building an effective programming model for many-core processors is challenging. On the one hand, the increasing variety of platforms and their specific programming models force users to take a hardware-centric approach not only for implementing parallel applications, but also for designing them. This approach diminishes portability and, eventually, limits performance. On the other hand, to effectively cope with the increased number of large-scale workloads that require parallelization, a portable, application-centric programming model is desirable. Such a model enables programmers to focus first on extracting and exploiting parallelism from their applications, as opposed to generating parallelism for specific hardware, and only second on platform-specific implementation and optimizations. In this paper, we first present a survey of programming models designed for programming three families of many-cores: general purpose many-cores (GPMCs), graphics processing units (GPUs), and the Cell/B.E.. We analyze the usability of these models, their ability to improve platform programmability, and the specific features that contribute to this improvement. Next, we also discuss two types of generic models: parallelism-centric and application-centric. We also analyze their features and impact on platform programmability. Based on this analysis, we recommend two application-centric models (OmpSs and OpenCL) as promising candidates for a unified programming model for many-cores and we discuss potential enhancements for them.\",\"1530-2075\",\"978-1-61284-425-1\",\"10.1109/IPDPS.2011.210\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6008837\",\"\",\"Programming;Parallel processing;Computer architecture;Data models;Concurrent computing;Computational modeling;Productivity\",\"application program interfaces;computer graphic equipment;coprocessors;multiprocessing systems\",\"unified programming model;many-core processors;application-centric programming model;parallelism generation;general purpose many-cores;GPMC;graphics processing units;GPU;Cell/B.E;parallelism-centric model;OmpS;OpenCL;multicore processors;many-core accelerators\",\"\",\"7\",\"\",\"26\",\"\",\"1 Sep 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Lit: A high performance massive data computing framework based on CPU/GPU cluster\",\"Y. Zhai; E. Mbarushimana; W. Li; J. Zhang; Y. Guo\",\"Beijing Engineering Research Center of Massive Language Information Processing and Cloud Computing Application, School of Computer Science, Beijing Institute of Technology, China 100081; Beijing Engineering Research Center of Massive Language Information Processing and Cloud Computing Application, School of Computer Science, Beijing Institute of Technology, China 100081; Science and Technology on Complex Systems Simulation Laboratory, Beijing, China; Science and Technology on Complex Systems Simulation Laboratory, Beijing, China; Beijing Engineering Research Center of Massive Language Information Processing and Cloud Computing Application, School of Computer Science, Beijing Institute of Technology, China 100081\",\"2013 IEEE International Conference on Cluster Computing (CLUSTER)\",\"9 Jan 2014\",\"2013\",\"\",\"\",\"1\",\"8\",\"Big data processing is receiving significant amount of interest as an important technology to reveal the information behind the data, such as trends, characteristics, etc. MapReduce is considered as the most efficient distributed parallel data processing framework. However, some high-end applications, especially some scientific analyses have both data-intensive and computation-intensive features. Current big data processing techniques like Hadoop are not designed for computation-intensive applications, thus have insufficient computation power. In this paper, we presented Lit, a high performance massive data computing framework based on CPU/GPU cluster. Lit integrated GPU with Hadoop to improve the computational power of each node in the cluster. Since the architecture and programming model of GPU is different from CPU, Lit provided an annotation based approach to automatically generate CUDA codes from Hadoop codes. Lit hided the complexity of programming on CPU/GPU cluster by providing extended compiler and optimizer. To utilize the simplified programming, scalability and fault tolerance benefits of Hadoop and combine them with the high performance computation power of GPU, Lit extended the Hadoop by applying a GPUClassloader to detect the GPU, generate and compile CUDA codes, and invoke the shared library. Our experimental results show that Lit can achieve an average speedup of 1x to 3x on three typical applications over Hadoop.\",\"2168-9253\",\"978-1-4799-0898-1\",\"10.1109/CLUSTER.2013.6702614\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6702614\",\"\",\"Graphics processing units;Computational modeling;Handheld computers;Data models;Load modeling;Semantics\",\"Big Data;fault tolerant computing;graphics processing units;parallel architectures;program compilers\",\"Lit;high performance massive data computing framework;CPU cluster;GPU cluster;Big Data processing;MapReduce;distributed parallel data processing framework;data-intensive feature;computation-intensive feature;programming model;annotation based approach;CUDA code generation;Hadoop codes;extended compiler;extended optimizer;fault tolerance;high performance computation power;GPUClassloader;GPU detection;CUDA code compiling\",\"\",\"6\",\"1\",\"19\",\"\",\"9 Jan 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"LOOG: Improving GPU Efficiency With Light-Weight Out-Of-Order Execution\",\"K. Iliakis; S. Xydis; D. Soudris\",\"National Technical University of Athens, Zografou, Greece; National Technical University of Athens, Zografou, Greece; National Technical University of Athens, Zografou, Greece\",\"IEEE Computer Architecture Letters\",\"10 Jan 2020\",\"2019\",\"18\",\"2\",\"166\",\"169\",\"GPUs are one of the most prevalent platforms for accelerating general-purpose workloads due to their intuitive programming model, computing capacity, and cost-effectiveness. GPUs rely on massive multi-threading and fast context switching to overlap computations with memory operations. Among the diverse GPU workloads, there exists a class of kernels that fail to maintain a sufficient number of active warps to hide the latency of memory operations, and thus suffer from frequent stalling. We observe that these kernels will benefit from increased levels of Instruction-Level Parallelism and we propose a novel architecture with lightweight Out-Of-Order execution capability. To minimize hardware overheads, we carefully design our extension to highly re-use the existing micro-architectural structures. We show that the proposed architecture outperforms traditional platforms by 15 to 46 percent on average for low occupancy kernels, with an area overhead of 0.74 to 3.94 percent. Finally, we prove the potential of our proposal as a GPU u-arch alternative, by providing a 5 percent speedup over a wide collection of 63 general-purpose kernels with as little as 0.74 percent area overhead.\",\"1556-6064\",\"\",\"10.1109/LCA.2019.2951161\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8890662\",\"GPGPU;Out-of-Order execution;micro-architecture\",\"Graphics processing units;Kernel;Registers;Radio access technologies;Copper;Radio frequency;Out of order\",\"graphics processing units;multi-threading;parallel architectures;storage management\",\"light-weight out-of-order execution;out-of-order execution capability;GPU u-arch;general-purpose kernels;area overhead;low occupancy kernels;hardware overheads;instruction-level parallelism;stalling;active warps;GPU workloads;memory operations;massive multithreading;cost-effectiveness;intuitive programming model;general-purpose workloads;GPU efficiency;LOOG\",\"\",\"\",\"\",\"18\",\"IEEE\",\"4 Nov 2019\",\"\",\"\",\"IEEE\",\"IEEE Journals\"\n\"Template matching of aerial images using GPU\",\"N. Nazneen; M. Shafiq; A. Hameed\",\"KICSIT, Rawalpindi, Pakistan; CESAT, Islamabad, Pakistan; CESAT, Islamabad, Pakistan\",\"2016 13th International Bhurban Conference on Applied Sciences and Technology (IBCAST)\",\"10 Mar 2016\",\"2016\",\"\",\"\",\"206\",\"212\",\"During the last decade, processor architectures have emerged with hundreds and thousands of high speed processing cores in a single chip. These cores can work in parallel to share a work load for faster execution. This paper presents performance evaluations on such multicore and many-core devices by mapping a computationally expensive correlation kernel of a template matching process using various programming models. The work builds a base performance case by a sequential mapping of the algorithm on an Intel processor. In the second step, the performance of the algorithm is enhanced by parallel mapping of the kernel on a shared memory multicore machine using OpenMP programming model. Finally, the Normalized Cross-Correlation (NCC) kernel is scaled to map on a many-core K20 GPU using CUDA programming model. In all steps, the correctness of the implementation of algorithm is taken care by comparing computed data with reference results from a high level implementation in MATLAB. The performance results are presented with various optimization techniques for MATLAB, Sequential, OpenMP and CUDA based implementations. The results show that GPU based implementation achieves 32x and 5x speed-ups respectively to the base case and multicore implementations respectively. Moreover, using inter-block sub-sampling on an 8-bit 4000×4000 reference gray-scale image achieves the execution time upto 2.8sec with an error growth less than 20% for the selected templates of size 96×96.\",\"2151-1411\",\"978-1-4673-9127-6\",\"10.1109/IBCAST.2016.7429878\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7429878\",\"\",\"Graphics processing units;MATLAB;Kernel;Computational modeling;Correlation;Instruction sets;Multicore processing\",\"graphics processing units;image matching;parallel programming;shared memory systems\",\"template matching;aerial image matching;graphics processing unit;multicore devices;many-core devices;correlation kernel mapping;sequential mapping;parallel mapping;shared memory multicore machine;OpenMP programming model;normalized cross-correlation kernel;NCC kernel;many-core K20 GPU;CUDA programming model;Compute Unified Device Architecture;Matlab;inter-block sub-sampling\",\"\",\"\",\"\",\"13\",\"\",\"10 Mar 2016\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Sparse Matrix Formats Evaluation and Optimization on a GPU\",\"M. R. Hugues; S. G. Petiton\",\"TOTAL Exploration & Production, Pau, France; Lab. d'Inf. Fondamentale de Lille, CNRS/LIFL, Lille, France\",\"2010 IEEE 12th International Conference on High Performance Computing and Communications (HPCC)\",\"27 Sep 2010\",\"2010\",\"\",\"\",\"122\",\"129\",\"The data parallel programming model comes back with massive multicore architectures. The GPU is one of these and offers important possibilities to accelerate linear algebra. However, the irregular structure of sparse matrix operations generates problems with this programming model to obtain efficient performance. This depends on the used format to store values and the matrix structure. The sparse matrix-vector product (SpMV) is one of the most used kernel in scientific computing and is the main performance source of iterative methods. We propose an evaluation and optimization of several sparse formats for the SpMV kernel which have succeeded at the time of data parallel computer. This study is realized by analyzing the performances following the distribution of the non zeros values in the matrix to determine the best and the worst reachable value. The results show that all sparse formats converge to the same efficiency and perform poorly with a strong distribution of elements.\",\"\",\"978-1-4244-8335-8\",\"10.1109/HPCC.2010.85\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5581446\",\"Sparse Format;SpMV;GPU;Many-Core;Data Parallel Programming\",\"Arrays;Sparse matrices;Graphics processing unit;Indexes;Instruction sets;Artificial neural networks;Finite element methods\",\"computer graphic equipment;coprocessors;iterative methods;multiprocessing systems;parallel programming;sparse matrices\",\"sparse matrix format evaluation;GPU;sparse matrix format optimization;data parallel programming model;massive multicore;linear algebra;sparse matrix vector product;iterative method;SpMV kernel\",\"\",\"10\",\"\",\"14\",\"\",\"27 Sep 2010\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Beyond the Socket: NUMA-Aware GPUs\",\"U. Milic; O. Villa; E. Bolotin; A. Arunkumar; E. Ebrahimi; A. Jaleel; A. Ramirez; D. Nellans\",\"Barcelona Supercomputing Center (BSC), Universitat Politècnica de Catalunya (UPC); NVIDIA; NVIDIA; Arizona State University; NVIDIA; NVIDIA; Google; NVIDIA\",\"2017 50th Annual IEEE/ACM International Symposium on Microarchitecture (MICRO)\",\"11 Apr 2019\",\"2017\",\"\",\"\",\"123\",\"135\",\"GPUs achieve high throughput and power efficiency by employing many small single instruction multiple thread (SIMT) cores. To minimize scheduling logic and performance variance they utilize a uniform memory system and leverage strong data parallelism exposed via the programming model. With Moore’s law slowing, for GPUs to continue scaling performance (which largely depends on SIMT core count) they are likely to embrace multi-socket designs where transistors are more readily available. However when moving to such designs, maintaining the illusion of a uniform memory system is increasingly difficult. In this work we investigate multi-socket non-uniform memory access (NUMA) GPU designs and show that significant changes are needed to both the GPU interconnect and cache architectures to achieve performance scalability. We show that application phase effects can be exploited allowing GPU sockets to dynamically optimize their individual interconnect and cache policies, minimizing the impact of NUMA effects. Our NUMA-aware GPU outperforms a single GPU by $1.5 \\times, 2.3 \\times$, and $3.2 \\times$ while achieving 89%, 84%, and 76% of theoretical application scalability in 2, 4, and 8 sockets designs respectively. Implementable today, NUMA-aware multi-socket GPUs may be a promising candidate for scaling GPU performance beyond a single socket.CCS CONCEPTS• Computing methodologies → Graphics processors; • Computer systems organization → Single instruction, multiple data;\",\"2379-3155\",\"978-1-4503-4952-9\",\"\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8686671\",\"Graphics Processing Units;Multi-socket GPUs;NUMA Systems\",\"Graphics processing units;Bandwidth;Programming;Runtime;Sockets;Transistors;Throughput\",\"cache storage;graphics processing units;integrated circuit design;multiprocessing systems;multi-threading;power aware computing\",\"multisocket nonuniform memory access GPU designs;cache architectures;performance scalability;application phase effects;GPU sockets;individual interconnect;cache policies;NUMA effects;single GPU;scaling GPU performance;single socket;high throughput;power efficiency;single instruction multiple thread cores;scheduling logic;performance variance;uniform memory system;programming model;Moore's law slowing;scaling performance;SIMT core count;multisocket designs;NUMA-aware multisocket GPU;strong data parallelism\",\"\",\"\",\"\",\"63\",\"\",\"11 Apr 2019\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"A Branch-and-Bound algorithm using multiple GPU-based LP solvers\",\"X. Meyer; B. Chopard; P. Albuquerque\",\"Dept. of Computer Science, University of Geneva, Switzerland; Dept. of Computer Science, University of Geneva, Switzerland; Institute for Informatics & Telecommunications, University of Applied Sciences of Western Switzerland, Geneva, Switzerland\",\"20th Annual International Conference on High Performance Computing\",\"17 Apr 2014\",\"2013\",\"\",\"\",\"129\",\"138\",\"The Branch-and-Bound (B&B) method is a well-known optimization algorithm for solving integer linear programming (ILP) models in the field of operations research. It is part of software often employed by businesses for finding solutions to problems such as airline scheduling problems. It operates according to a divide-and-conquer principle by building a tree-like structure with nodes that represent linear programming (LP) problems. A LP solver commonly used to process the nodes is the simplex method. Nowadays its sequential implementation can be found in almost all commercial ILP solvers. In this paper, we present a hybrid CPU-GPU implementation of the B&B algorithm. The B&B tree is managed by the CPU, while the revised simplex method is mainly a GPU implementation, relying on the CUDA technology of NVIDIA. The CPU manages concurrently multiple instances of the LP solver. The principal difference with a sequential implementation of the B&B algorithm pertains to the LP solver, provided that the B&B tree is managed with the same strategy. We thus compared our GPU-based implementation of the revised simplex to a well-known open-source sequential solver, named CLP, of the COIN-OR project. For given problem densities, we measured a size threshhold beyond which our GPU implementation outperformed its sequential counterpart.\",\"1094-7256\",\"978-1-4799-0730-4\",\"10.1109/HiPC.2013.6799105\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6799105\",\"\",\"Graphics processing units;Linear programming;Indexes;Mathematical model;Standards;Central Processing Unit;Equations\",\"graphics processing units;integer programming;linear programming;public domain software;scheduling;travel industry;tree searching\",\"branch-and-bound algorithm;multiple GPU-based LP solver;B&B method;optimization algorithm;integer linear programming model;ILP model;operations research;airline scheduling problem;divide-and-conquer principle;tree-like structure;LP problem;hybrid CPU-GPU implementation;B&B algorithm;B&B tree;simplex method;CUDA technology;NVIDIA;sequential implementation;GPU-based implementation;open-source sequential solver;CLP;COIN-OR project\",\"\",\"4\",\"\",\"33\",\"\",\"17 Apr 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Early evaluation of directive-based GPU programming models for productive exascale computing\",\"S. Lee; J. S. Vetter\",\"Oak Ridge Nat. Lab., Oak Ridge, TN, USA; Oak Ridge Nat. Lab., Georgia Inst. of Technol., Atlanta, GA, USA\",\"SC '12: Proceedings of the International Conference on High Performance Computing, Networking, Storage and Analysis\",\"25 Feb 2013\",\"2012\",\"\",\"\",\"1\",\"11\",\"Graphics Processing Unit (GPU)-based parallel computer architectures have shown increased popularity as a building block for high performance computing, and possibly for future Exascale computing. However, their programming complexity remains as a major hurdle for their widespread adoption. To provide better abstractions for programming GPU architectures, researchers and vendors have proposed several directive-based GPU programming models. These directive-based models provide different levels of abstraction, and required different levels of programming effort to port and optimize applications. Understanding these differences among these new models provides valuable insights on their applicability and performance potential. In this paper, we evaluate existing directive-based models by porting thirteen application kernels from various scientific domains to use CUDA GPUs, which, in turn, allows us to identify important issues in the functionality, scalability, tunability, and debuggability of the existing models. Our evaluation shows that directive-based models can achieve reasonable performance, compared to hand-written GPU codes.\",\"2167-4337\",\"978-1-4673-0806-9\",\"10.1109/SC.2012.51\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6468490\",\"\",\"Graphics processing units;Programming;Computational modeling;Optimization;Data models;Computer architecture;Kernel\",\"graphics processing units;parallel architectures;parallel programming;software performance evaluation\",\"directive-based GPU programming model early evaluation;productive exascale computing;graphics processing unit-based parallel computer architectures;high performance computing;exascale computing;programming complexity;GPU architecture programming;abstraction levels;performance potential;programming effort levels;CUDA GPUs;hand-written GPU codes;program scalability;program functionality;program tunability;program debuggability\",\"\",\"40\",\"\",\"25\",\"\",\"25 Feb 2013\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"GAGM: Genome assembly on GPU using mate pairs\",\"A. Jain; A. Garg; K. Paul\",\"Dept. of Computer Science and Engineering, IIT Delhi, New Delhi, India; Dept. of Computer Science and Engineering, IIT Delhi, New Delhi, India; Dept. of Computer Science and Engineering, IIT Delhi, New Delhi, India\",\"20th Annual International Conference on High Performance Computing\",\"17 Apr 2014\",\"2013\",\"\",\"\",\"176\",\"185\",\"Genome fragment assembly has long been a time and computation intensive problem in the field of bioinformatics. Many parallel assemblers have been proposed to accelerate the process but there hasn't been any effective approach proposed for GPUs. Also with the increasing power of GPUs, applications from various research fields are being parallelized to take advantage of the massive number of “cores” available in GPUs. In this paper we present the design and development of a GPU based assembler (GAGM) for sequence assembly using Nvidia's GPUs with the CUDA programming model. Our assembler utilizes the mate pair reads produced by the current NGS technologies to build paired de Bruijn graph. Every paired read is broken into paired k-mers and l-mers. Every paired k-mer represents a vertex and paired l-mers are mapped as edges. Contigs are formed by grouping the regions of graph which can be unambiguously connected. We present parallel algorithms for k - mer extraction, paired de Bruijn graph construction and grouping of edges. We have benchmarked GAGM on four bacterial genomes. Our results show that the design on GPU is effective in terms of time as well as the quality of assembly produced.\",\"1094-7256\",\"978-1-4799-0730-4\",\"10.1109/HiPC.2013.6799107\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6799107\",\"parallel processing;bioinformatics;GPU;genome assembly\",\"Graphics processing units;Genomics;Bioinformatics;Benchmark testing;DNA;Encoding\",\"biocomputing;graph theory;graphics processing units;parallel algorithms;parallel architectures;program assemblers\",\"GAGM;mate pairs;genome fragment assembly;bioinformatics;parallel assemblers;GPU based assembler;sequence assembly;CUDA programming model;NGS technologies;paired read;paired k-mers;paired l-mers;vertex;parallel algorithms;k-mer extraction;paired de Bruijn graph construction;edge grouping;bacterial genomes\",\"\",\"6\",\"\",\"31\",\"\",\"17 Apr 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Task Scheduling for GPU Heterogeneous Cluster\",\"K. Zhang; B. Wu\",\"Sch. of Comput. Sci., Fudan Univ., Shanghai, China; Sch. of Comput. Sci., Fudan Univ., Shanghai, China\",\"2012 IEEE International Conference on Cluster Computing Workshops\",\"20 Nov 2012\",\"2012\",\"\",\"\",\"161\",\"169\",\"Modern GPUs are gradually used by more and more cluster computing systems as the high performance computing units due to their outstanding computational power, whereas bringing node-level architectural heterogeneity to cluster. In this paper, based on MPI and CUDA programming model, we aim to investigate task scheduling for GPU heterogeneous cluster by taking into account the node-level heterogeneous characteristics. At first, based on our GPU heterogeneous cluster, we classify executing tasks to six major classifications according to their parallelism degrees, input data sizes, and processing workloads. Then, aiming to realize optimal mapping between tasks and computing resources, a task scheduling strategy is presented. The strategy consists of two key algorithms. The first is packing task algorithm (PTA) used to pack multiple tasks into a single task, such packing provides us a way of task classification converting according to the characteristic of computing resources. The second is system-level scheduling algorithm(SLSA) used to distribute parallel and sequential tasks to corresponding nodes, to maintain the load balance.\",\"\",\"978-0-7695-4844-9\",\"10.1109/ClusterW.2012.20\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6355860\",\"Task Scheduling;GPU Heterogeneous Cluster;PTA Algorithm;SLSA Algorithm\",\"Graphics processing units;Kernel;Processor scheduling;Scheduling;Clustering algorithms;Computer architecture\",\"application program interfaces;graphics processing units;message passing;parallel architectures;pattern classification;pattern clustering;resource allocation;scheduling\",\"task scheduling strategy;GPU heterogeneous cluster;cluster computing systems;high performance computing units;node-level architectural heterogeneity;MPI;CUDA programming model;node-level heterogeneous characteristics;parallelism degrees;input data sizes;processing workloads;packing task algorithm;PTA;task classification;system-level scheduling algorithm;SLSA;parallel tasks;sequential tasks;load balance\",\"\",\"4\",\"2\",\"25\",\"\",\"20 Nov 2012\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Parallelized computation for Edge Histogram Descriptor using CUDA on the Graphics Processing Units (GPU)\",\"A. A. Mohammadabadi; A. Chalechale; H. Heidari\",\"Department of Computer Engineering, Razi University, Kermanshah, Iran; Department of Computer Engineering, Razi University, Kermanshah, Iran; Department of Computer Engineering, Razi University, Kermanshah, Iran\",\"The 17th CSI International Symposium on Computer Architecture & Digital Systems (CADS 2013)\",\"20 Jan 2014\",\"2013\",\"\",\"\",\"9\",\"14\",\"Most image processing algorithms are inherently parallel, so multithreading processors are suitable in such applications. In huge image databases, image processing takes very long time for run on a single core processor because of single thread execution of algorithms. GPU is more common in most image processing applications due to multithread execution of algorithms, programmability and low cost. In this paper we show how to implement the MPRG-7 Edge Histogram Descriptor in parallel using CUDA programming model on a GPU. The Edge Histogram Descriptor describes the distribution of various types of edges with a histogram that can be a tool for image matching. This feature is applied to search images from a database which are similar to a query image. We evaluated the retrieval of the proposed technique using recall, precision, and average precision measures. Experimental results showed that parallel implementation led to an average speed up of 14.74×over the serial implementation. The average precision and the average recall of presented method are 67.02% and 55.00% respectively.\",\"2325-937X\",\"978-1-4799-0565-2\",\"10.1109/CADS.2013.6714231\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6714231\",\"content based image retrieval;CUDA;edge histogram descriptor;GPU\",\"Image edge detection;Graphics processing units;Instruction sets;Feature extraction;Histograms;Image retrieval;Kernel\",\"edge detection;graphics processing units;image matching;image retrieval;multi-threading;parallel architectures;visual databases\",\"parallelized computation;MPRG-7 edge histogram descriptor;CUDA programming model;graphics processing unit;GPU;image processing algorithm;multithreading processors;image database;image matching;image searching;query image;recall measures;average precision measures\",\"\",\"\",\"\",\"11\",\"\",\"20 Jan 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Implementation and Performance Analysis of a Parallel Oil Reservoir Simulator Tool Using a CG Method on a GPU-Based System\",\"L. Ismail; J. Abou-Kassem; B. Qamar\",\"Comput. & Software Eng., UAE Univ., Al-Ain, United Arab Emirates; Dept. of Chem. & Pet. Eng., UAE Univ., Al-Ain, United Arab Emirates; HPGCL Res. Lab., UAE Univ., Al-Ain, United Arab Emirates\",\"2014 UKSim-AMSS 16th International Conference on Computer Modelling and Simulation\",\"23 Feb 2015\",\"2014\",\"\",\"\",\"375\",\"380\",\"An oil reservoir simulator is a crucial tool used by petroleum engineering to analyze reservoir conditions. To increase its performance, we implement a parallel version of the tool on a Graphic Processing Unit (GPU), using Computer Unified Device Architecture (CUDA) programming model and the Single Instruction Multiple Threads (SIMT). This paper presents our parallel implementation and performance analysis for 1-D, 2-D, and 3-D oil-phase reservoirs. The implementation and the performance evaluation reveal the gains and the losses achieved by the parallelization of a reservoir simulator on a Graphics Processing Unite (GPU) system. The performance results show that despite the interdependency between the different computational parts of the Conjugate Gradient (CG) method used as a linear solver in the parallel reservoirs, a speedup of 26 can be easily obtained for an oil reservoir simulator using 15 streaming multiprocessors (SMs), compared to a sequential CPU execution. The parallel execution scales well with grid dimensionality.\",\"\",\"978-1-4799-4922-9\",\"10.1109/UKSim.2014.113\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7046095\",\"Oil Reservoir Simulator; Conjugate Gradient (CG) Method; GPU; High Performance Computing\",\"Reservoirs;Graphics processing units;Sparse matrices;Vectors;Instruction sets;Memory management;Clustering algorithms\",\"conjugate gradient methods;graphics processing units;hydrocarbon reservoirs;multiprocessing systems;parallel programming\",\"parallel oil reservoir simulator tool;CG method;conjugate gradient method;GPU based system;graphics processing unit;computer unified device architecture;CUDA programming model;single instruction multiple threads;SIMT;linear solver;streaming multiprocessors;sequential CPU execution;grid dimensionality\",\"\",\"1\",\"\",\"40\",\"\",\"23 Feb 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"GPU accelerate parallel Odd-Even merge sort: An OpenCL method\",\"K. Zhang; J. Li; G. Chen; B. Wu\",\"School of Computer Science, Fudan University, Shanghai 201203, China; School of Computer Science, Fudan University, Shanghai 201203, China; School of Computer Science, Fudan University, Shanghai 201203, China; School of Computer Science, Fudan University, Shanghai 201203, China\",\"Proceedings of the 2011 15th International Conference on Computer Supported Cooperative Work in Design (CSCWD)\",\"21 Jul 2011\",\"2011\",\"\",\"\",\"76\",\"83\",\"Odd-Even merge sort is a basic problem in computer supported cooperative work in design area. However, it is not effective because of the high complexity O(nlg<sup>2</sup>n) in CPU platform. In this paper, we present a novel implementation based on the OpenCL programming model on recent GPU (Graphic Processing Unit). Our implementation was based on Knuth's algorithm and do some change. Due to limitations of OpenCL, we utilize a flag variable to make it avoid the direct backward control flow. As results, our implementation achieves 18× speedups compared with the CPU C++ STL quick sort. And it gets almost linear speedup for next generations of GPU because of the complete parallelism in each iteration process. Meanwhile, our approach makes the odd-even merge sort effectively in practice because of the high performance. Furthermore, the approach used in this paper for cooperating thousands of processing units to parallel process can also be used in other cooperation areas.\",\"\",\"978-1-4577-0387-4\",\"10.1109/CSCWD.2011.5960058\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5960058\",\"GPGPU;GPU;Odd-Even Merge Sort;OpenCL\",\"Graphics processing unit;Sorting;Arrays;Computational modeling;Complexity theory;Instruction sets\",\"computer graphic equipment;coprocessors;iterative methods\",\"GPU accelerate parallel odd even merge sort;computer supported cooperative work;OpenCL programming model;graphic processing unit;Knuth algorithm;direct backward control flow;CPU C++ STL quick sort;parallel process;processing units;iteration process\",\"\",\"5\",\"2\",\"35\",\"\",\"21 Jul 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"GPU Acceleration of Clustered DPCM for Lossless Compression of Hyperspectral Images\",\"J. Li; J. Wu; G. Jeon\",\"School of Electronic Engineering, Xidian University, Xi'an, China; School of Electronic Engineering, Xidian University, Xi'an, China; School of Electronic Engineering, Xidian University, Xi'an, China\",\"IEEE Transactions on Industrial Informatics\",\"14 Feb 2020\",\"2020\",\"16\",\"5\",\"2906\",\"2916\",\"With the development of remote sensing technology, spatial and spectral resolutions of hyperspectral images have become increasingly dense. In order to overcome difficulties in the storage, transmission, and manipulation of hyperspectral images, an effective compression algorithm is requisite. The clustered differential pulse code modulation (C-DPCM), which is a prediction-based hyperspectral image lossless compression algorithm, can achieve a relatively high compression ratio, but its efficiency still requires improvement. This paper presents a parallel implementation of the C-DPCM algorithm on graphics processing units (GPUs) with the compute unified device architecture, which is a parallel computing platform and programming model developed by NVIDIA. Three optimization strategies are utilized to implement the C-DPCM algorithm in parallel, including a version that uses shared memory and registers, a version that employs multistream, and a version that uses multi-GPU. In addition, we studied how to assign all classes to each GPU to minimize the processing time. Finally, we reduced the compression time from approximately half an hour to an hour to several seconds, with almost no loss in accuracy.\",\"1941-0050\",\"\",\"10.1109/TII.2019.2893437\",\"National Natural Science Foundation of China(grant numbers:61775175,61771378); \",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8613877\",\"Clustered differential pulse code modulation (C-DPCM);compute unified device architecture (CUDA);graphics processing unit (GPU);hyperspectral image lossless compression\",\"Image coding;Hyperspectral imaging;Prediction algorithms;Graphics processing units;Correlation;Bit rate\",\"data compression;differential pulse code modulation;geophysical image processing;graphics processing units;image coding;parallel architectures;remote sensing\",\"hyperspectral images;remote sensing technology;spatial resolutions;spectral resolutions;effective compression algorithm;clustered differential pulse code modulation;prediction-based hyperspectral image lossless compression;compression ratio;parallel implementation;C-DPCM algorithm;compute unified device architecture;parallel computing platform;programming model;compression time;GPU acceleration;clustered DPCM\",\"\",\"4\",\"\",\"30\",\"IEEE\",\"16 Jan 2019\",\"\",\"\",\"IEEE\",\"IEEE Journals\"\n\"A parallel design of computer Go engine on CUDA-enabled GPU\",\"Q. Zhang; Z. Liu\",\"School of Software Beijing University of Posts and Telecommunications, Beijing, China; School of Software Beijing University of Posts and Telecommunications, Beijing, China\",\"2011 IEEE International Conference on Cloud Computing and Intelligence Systems\",\"13 Oct 2011\",\"2011\",\"\",\"\",\"85\",\"88\",\"With the rapid growth of Graphics Processing Unit (GPU) processing capability, using GPU as a coprocessor to assist the CPU in parallel computing has become indispensable. CUDA (Compute Unified Device Architecture) programming model also gives C/C++ language support which makes programming easily. This paper details how to design an engine of computer Go with Monte-Carlo algorithm which is based on GPU with Fermi architecture. We analyze the characteristics of Monte-Carlo algorithm, combined with the CUDA architecture features, divide the algorithm into various sub-modules for GPU computing fast and easily.\",\"2376-595X\",\"978-1-61284-204-2\",\"10.1109/CCIS.2011.6045037\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6045037\",\"Parallelization;CUDA;Monte-Carlo\",\"Graphics processing unit;Games;Monte Carlo methods;Computers;Instruction sets;Engines;Computational modeling\",\"C++ language;computer graphic equipment;coprocessors;Monte Carlo methods;parallel processing\",\"parallel design;computer Go engine;CUDA enabled GPU;graphics processing unit;parallel computing;compute unified device architecture;C++ language support;C language support;Monte-Carlo algorithm;Fermi architecture\",\"\",\"\",\"\",\"7\",\"\",\"13 Oct 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Advanced genetic algorithm to solve MINLP problems over GPU\",\"A. Munawar; M. Wahib; M. Munetomo; K. Akama\",\"Graduate School of Information, Science and Technology, Hokkaido University, Sapporo, Japan; Graduate School of Information, Science and Technology, Hokkaido University, Sapporo, Japan; Information Systems Design Laboratory, Information Initiative Center, Hokkaido University, Sapporo, Japan; Information Systems Design Laboratory, Information Initiative Center, Hokkaido University, Sapporo, Japan\",\"2011 IEEE Congress of Evolutionary Computation (CEC)\",\"14 Jul 2011\",\"2011\",\"\",\"\",\"318\",\"325\",\"In this paper we propose a many-core implementation of evolutionary computation for GPGPU (General-Purpose Graphic Processing Unit) to solve non-convex Mixed Integer Non-Linear Programming (MINLP) and non-convex Non Linear Programming (NLP) problems using a stochastic algorithm. Stochastic algorithms being random in their behavior are difficult to implement over GPU like architectures. In this paper we not only succeed in implementation of a stochastic algorithm over GPU but show considerable speedups over CPU implementations. The stochastic algorithm considered for this paper is an adaptive resolution approach to genetic algorithm (arGA), developed by the authors of this paper. The technique uses the entropy measure of each variable to adjust the intensity of the genetic search around promising individuals. Performance is further improved by hybridization with adaptive resolution local search (arLS) operator. In this paper, we describe the challenges and design choices involved in parallelization of this algorithm to solve complex MINLPs over a commodity GPU using Compute Unified Device Architecture (CUDA) programming model. Results section shows several numerical tests and performance measurements obtained by running the algorithm over an nVidia Fermi GPU. We show that for difficult problems we can obtain a speedup of up to 20x with double precision and up to 42x with single precision.\",\"1941-0026\",\"978-1-4244-7835-4\",\"10.1109/CEC.2011.5949635\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5949635\",\"Adaptive Resolution Genetic Algorithm;Parallel Genetic Algorithms;General-Purpose computation on Graphics Processing Units (GPGPU);Compute Unified Device Architecture (CUDA)\",\"Graphics processing unit;Genetic algorithms;Kernel;Stochastic processes;Entropy;Algorithm design and analysis;Genetics\",\"computer graphic equipment;coprocessors;genetic algorithms;integer programming;nonlinear programming;parallel algorithms;parallel architectures;stochastic processes\",\"advanced genetic algorithm;MINLP problems;evolutionary computation;GPGPU;general-purpose graphic processing unit;many-core implementation;nonconvex mixed integer nonlinear programming;stochastic algorithm;GPU like architectures;CPU implementations;adaptive resolution local search operator;parallelization;compute unified device architecture programming model;nVidia Fermi GPU\",\"\",\"10\",\"\",\"28\",\"\",\"14 Jul 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Hybrid CPU and GPU Computation to Detect Lung Nodule in Computed Tomography Images\",\"I. W. B. Sentana; N. Jawas; A. E. Wardani\",\"Department of Information, Systems Bali State Polytechnic, J1. Raya Bukit Jimbaran, Badung, Bali, Indonesia; Department of Computer, System STMIK STIKOM, Bali Jalan Raya Puputan No. 86, Renon, Denpasar, Indonesia; Radiology Unit, Airlangga university, Hospital Jalan Mayjen Dr. Moestopo No. 6–8, Surabaya, Indonesia\",\"2018 Third International Conference on Informatics and Computing (ICIC)\",\"1 Aug 2019\",\"2018\",\"\",\"\",\"1\",\"6\",\"Lung Nodule is a white patch on the thorax medical image, usually used as an early marker of lung cancer. Although there were some research deals with lung nodule detection, but none of those researches tailoring Graphical Processing Unit (GPU) to assist the computing process. This research aims to produce algorithms that can detect lung nodules automatically in CT images, by utilizing a combination of hybrid computing between Central Processing Unit (CPU) and Graphical Processing Unit. The framework used is Compute Unified Device Architecture, which consists of platform and programming model. The algorithm consists of several steps: read dicom and data normalization, lung segmentation, candidate nodule extraction, and classification. Normalization is required to facilitate calculation by changing the data type ui16 to ui8. Furthermore, segmentation is used to separate the lung parts with other organs, where at this stage the Otsu Algorithm and Moore Neighborhood Tracing (MNT) are used. The next step is Lung Nodule Extraction, which aims to find the nodule candidate. The last step is a classification that utilizes the Support Vector Machine (SVM) to distinguish which one is nodule or not. The algorithm successfully detects near round nodules that are free-standing or not attached to other parts of organs. After undergoing ground truth tests, it was found that under some conditions, the algorithm has not been able to distinguish nodules and other strokes that resemble nodules. While in terms of computing speed is found a very surprising result because overall single CPU computing provides better results compared to hybrid CPU and GPU computing.\",\"\",\"978-1-5386-6921-1\",\"10.1109/IAC.2018.8780573\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8780573\",\"Lung Nodule;Hybrid Computing;GPU and CPU;CT images\",\"Lung;Graphics processing units;Support vector machines;Computed tomography;Central Processing Unit;Kernel;Classification algorithms\",\"cancer;computerised tomography;image segmentation;lung;medical image processing;support vector machines\",\"compute unified device architecture;Otsu algorithm;graphical processing unit;central processing unit;hybrid CPU computing;lung nodule extraction;hybrid computing;CT images;lung nodules;computing process;lung nodule detection;lung cancer;thorax medical image;computed tomography;GPU computation;GPU computing;round nodules;lung segmentation;data normalization\",\"\",\"1\",\"\",\"18\",\"\",\"1 Aug 2019\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"GPU-Accelerated High-Throughput Online Stream Data Processing\",\"Z. Chen; J. Xu; J. Tang; K. A. Kwiat; C. A. Kamhoua; C. Wang\",\"Department of Electrical Engineering and Computer Science, Syracuse University, Syracuse, NY; Department of Electrical Engineering and Computer Science, Syracuse University, Syracuse, NY; Department of Electrical Engineering and Computer Science, Syracuse University, Syracuse, NY; US Air Force Research Lab (AFRL), Rome, NY; US Air Force Research Lab (AFRL), Rome, NY; InterDigital, Inc, King of Prussia, PA\",\"IEEE Transactions on Big Data\",\"1 Jun 2018\",\"2018\",\"4\",\"2\",\"191\",\"202\",\"The Single Instruction Multiple Data (SIMD) architecture of Graphic Processing Units (GPUs) makes them perfect for parallel processing of big data. In this paper, we present the design, implementation and evaluation of G-Storm, a GPU-enabled parallel system based on Storm, which harnesses the massively parallel computing power of GPUs for high-throughput online stream data processing. G-Storm has the following desirable features: 1) G-Storm is designed to be a general data processing platform as Storm, which can handle various applications and data types. 2) G-Storm exposes GPUs to Storm applications while preserving its easy-to-use programming model. 3) G-Storm achieves high-throughput and low-overhead data processing with GPUs. 4) G-Storm accelerates data processing further by enabling Direct Data Transfer (DDT), between two executors that process data at a common GPU. We implemented G-Storm based on Storm 0.9.2 and tested it using three different applications, including continuous query, matrix multiplication and image resizing. Extensive experimental results show that 1) Compared to Storm, G-Storm achieves over 7χ improvement on throughput for continuous query, while maintaining reasonable average tuple processing time. It also leads to 2.3χ and 1.3χ throughput improvements on the other two applications, respectively. 2) DDT significantly reduces data processing time.\",\"2332-7790\",\"\",\"10.1109/TBDATA.2016.2616116\",\"Air Force Office of Scientific Research(grant numbers:FA9550-16-1-0077); \",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7587437\",\"Stream data processing;GPU;parallel computing;big data infrastructure\",\"Graphics processing units;Storms;Fasteners;Programming;Computer architecture;Big data\",\"Big Data;graphics processing units;matrix multiplication;parallel architectures;query processing\",\"low-overhead data processing;parallel processing;big data;image resizing;matrix multiplication;continuous query;easy-to-use programming;GPU-enabled parallel system;G-Storm;storm applications;direct data transfer;tuple processing time;online stream data processing;GPU-accelerated high-throughput;parallel computing;graphic processing units;single instruction multiple data architecture\",\"\",\"7\",\"\",\"37\",\"IEEE\",\"10 Oct 2016\",\"\",\"\",\"IEEE\",\"IEEE Journals\"\n\"Poster: GPU Accelerated Ultrasonic Tomography Using Propagation and Backpropagation Method\",\"P. D. Bello; Y. Jin; E. Lu\",NA; NA; NA,\"2012 SC Companion: High Performance Computing, Networking Storage and Analysis\",\"11 Apr 2013\",\"2012\",\"\",\"\",\"1447\",\"1447\",\"This paper develops implementation strategy and method to accelerate the propagation and backpropagation (PBP) tomographic imaging algorithm using Graphic Processing Units (GPUs). The Compute Unified Device Architecture (CUDA) programming model is used to develop our parallelized algorithm since the CUDA model allows the user to interact with the GPU resources more efficiently than traditional shader methods. The results show an improvement of more than 80x when compared to the C/C++ version of the algorithm, and 515x when compared to the MATLAB version while achieving high quality imaging for both cases. We test different CUDA kernel configurations in order to measure changes in the processing-time of our algorithm. By examining the acceleration rate and the image quality, we develop an optimal kernel configuration that maximizes the throughput of CUDA implementation for the PBP method.\",\"\",\"978-0-7695-4956-9\",\"10.1109/SC.Companion.2012.249\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6496032\",\"Medical Imaging;Ultrasonic Tomography;GPU;CUDA;Parallel Computing\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"11 Apr 2013\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"A Compute Unified System Architecture for Graphics Clusters Incorporating Data Locality\",\"C. Muller; S. Frey; M. Strengert; C. Dachsbacher; T. Ertl\",Visualisierungsinstitut der Universität Stuttgart; Visualisierungsinstitut der Universität Stuttgart; Visualisierungsinstitut der Universität Stuttgart; Visualisierungsinstitut der Universität Stuttgart; Visualisierungsinstitut der Universität Stuttgart,\"IEEE Transactions on Visualization and Computer Graphics\",\"12 May 2009\",\"2009\",\"15\",\"4\",\"605\",\"617\",\"We present a development environment for distributed GPU computing targeted for multi-GPU systems, as well as graphics clusters. Our system is based on CUDA and logically extends its parallel programming model for graphics processors to higher levels of parallelism, namely, the PCI bus and network interconnects. While the extended API mimics the full function set of current graphics hardware-including the concept of global memory-on all distribution layers, the underlying communication mechanisms are handled transparently for the application developer. To allow for high scalability, in particular for network-interconnected environments, we introduce an automatic GPU-accelerated scheduling mechanism that is aware of data locality. This way, the overall amount of transmitted data can be heavily reduced, which leads to better GPU utilization and faster execution. We evaluate the performance and scalability of our system for bus and especially network-level parallelism on typical multi-GPU systems and graphics clusters.\",\"1941-0506\",\"\",\"10.1109/TVCG.2008.188\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=4653488\",\"GPU computing;graphics clusters;parallel programming.;Distributed/network graphics;Graphics Systems;Computer Graphics;Computing Methodologies;Concurrent Programming;Programming Techniques;Software/Software Engineering;Concurrent;distributed;and parallel languages;Language Classifications;Programming Languages Software;Graphics processors;Hardware Architecture;Computing Methodologies\",\"Computer architecture;Graphics;Parallel processing;Concurrent computing;Distributed computing;Hardware;Parallel programming;Scalability;Power generation;Rendering (computer graphics)\",\"computer graphics;coprocessors;parallel programming\",\"compute unified system architecture;graphics clusters;data locality;distributed GPU computing;multi-GPU systems;parallel programming model;graphics processors;PCI bus;network interconnects;graphics hardware;communication mechanism;network-interconnected environment;automatic GPU-accelerated scheduling;GPU utilization;network-level parallelism\",\"\",\"17\",\"\",\"23\",\"\",\"17 Oct 2008\",\"\",\"\",\"IEEE\",\"IEEE Journals\"\n\"Exploring Compiler Optimization Opportunities for the OpenMP 4.× Accelerator Model on a POWER8+GPU Platform\",\"A. Hayashi; J. Shirako; E. Tiotto; R. Ho; V. Sarkar\",NA; NA; NA; NA; NA,\"2016 Third Workshop on Accelerator Programming Using Directives (WACCPD)\",\"2 Feb 2017\",\"2016\",\"\",\"\",\"68\",\"78\",\"While GPUs are increasingly popular for high-performance computing, optimizing the performance of GPU programs is a time-consuming and non-trivial process in general. This complexity stems from the low abstraction level of standard GPU programming models such as CUDA and OpenCL: programmers are required to orchestrate low-level operations in order to exploit the full capability of GPUs. In terms of software productivity and portability, a more attractive approach would be to facilitate GPU programming by providing high-level abstractions for expressing parallel algorithms.OpenMP is a directive-based shared memory parallel programming model and has been widely used for many years. From OpenMP 4.0 onwards, GPU platforms are supported by extending OpenMP's high-level parallel abstractions with accelerator programming. This extension allows programmers to write GPU programs in standard C/C++ or Fortran languages, without exposing too many details of GPU architectures.However, such high-level parallel programming strategies generally impose additional program optimizations on compilers, which could result in lower performance than fully hand-tuned code with low-level programming models. To study potential performance improvements by compiling and optimizing high-level GPU programs, in this paper, we 1) evaluate a set of OpenMP 4.× benchmarks on an IBM POWER8 and NVIDIA Tesla GPU platform and 2) conduct a comparable performance analysis among hand-written CUDA and automatically-generated GPU programs by the IBM XL and clang/LLVM compilers.\",\"\",\"978-1-5090-6152-5\",\"10.1109/WACCPD.2016.011\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7836582\",\"Parallel programming\",\"Graphics processing units;Optimization;Kernel;Instruction sets;Programming;Performance evaluation\",\"C++ language;FORTRAN;graphics processing units;optimisation;parallel algorithms;parallel architectures;parallel programming;program compilers;shared memory systems;software portability\",\"clang/LLVM compilers;IBM XL compilers;NVIDIA Tesla GPU platform;IBM POWER8 platform;FORTRAN languages;C/C++ languages;accelerator programming;directive-based shared memory parallel programming;parallel algorithms;high-level abstractions;software portability;software productivity;OpenCL;CUDA;GPU programming models;high-performance computing;POWER8+GPU platform;OpenMP 4.x accelerator model;compiler optimization\",\"\",\"4\",\"1\",\"26\",\"\",\"2 Feb 2017\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"GPu-based framework for interactive visualization of SAR data\",\"M. Lambers; A. Kolb; H. Nies; M. Kalkuhl\",\"Institute for Vision and Graphics, University of Siegen, Germany; Institute for Vision and Graphics, University of Siegen, Germany; Center for Sensorsystems (ZESS), University of Siegen, Germany; Department of Simulation, University of Siegen, Germany\",\"2007 IEEE International Geoscience and Remote Sensing Symposium\",\"7 Jan 2008\",\"2007\",\"\",\"\",\"4076\",\"4079\",\"Synthetic aperture radar data presents specific problems for interactive visualization. The high amount of multiplicative speckle noise has to be reduced. The high dynamic range of the amplitude data must be mapped to the lower dynamic range of display devices in a way that makes image features appropriately visible. In addition to interactive navigation in the data, it is desirable to allow interactive selection of despeckling and dynamic range reduction methods and adjustment of their parameters. Graphics processing units (GPUs) can be seen as ubiquitous parallel coprocessors with extreme computational power. In this paper, we propose a GPU-based framework for interactive visualization of SAR data. Data management techniques are used to make full use of the GPU. We reworked well-known despeckling and dynamic range reduction techniques for the GPU programming model and implemented them in our framework. Both navigation in large data sets and adjustment of processing parameters are fully interactive.\",\"2153-7003\",\"978-1-4244-1211-2\",\"10.1109/IGARSS.2007.4423745\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=4423745\",\"\",\"Data visualization;Dynamic range;Navigation;Speckle;Noise reduction;Displays;Graphics;Coprocessors;Concurrent computing;Pervasive computing\",\"coprocessors;data visualisation;geophysical signal processing;image denoising;interactive systems;radar signal processing;speckle;synthetic aperture radar\",\"GPU based framework;interactive SAR data visualization;synthetic aperture radar;multiplicative speckle noise reduction;interactive despeckling selection;dynamic range reduction;graphics processing unit;parallel coprocessors;data management techniques;GPU programming model;large dataset navigation;processing parameter adjustment\",\"\",\"4\",\"1\",\"8\",\"\",\"7 Jan 2008\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"A Dynamically Balanced OpenMP-CUDA Implementation of PDE-Based Contrast Source Inversion for Microwave Imaging\",\"N. Geddert; I. Jeffrey\",\"Department of Electrical and Computer Engineering, University of Manitoba, Winnipeg, Canada; Department of Electrical and Computer Engineering, University of Manitoba, Winnipeg, Canada\",\"2018 18th International Symposium on Antenna Technology and Applied Electromagnetics (ANTEM)\",\"13 Dec 2018\",\"2018\",\"\",\"\",\"1\",\"2\",\"An implementation of a PDE-based Contrast Source Inversion (CSI) algorithm using a hybrid Open MP-CUDA parallel programming model is presented for the acceleration of microwave imaging. The CSI algorithm uses a time-harmonic discontinuous Galerkin method forward solver. The programming model ensures high computational throughput by dynamically balancing the amount of work performed on the GPU and CPU. The resulting implementation is capable of substantial speed-up, bringing the computational performance to near real-time. Implementation and optimization details are discussed; results show GPU acceleration alone gives a speedup of at least 5 times.\",\"2473-3555\",\"978-1-5386-1338-2\",\"10.1109/ANTEM.2018.8572994\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8572994\",\"Graphics processing unit (GPU);Open MP;hybrid parallel programming;contrast source inversion;microwave imaging\",\"Graphics processing units;Acceleration;Programming;Computational modeling;Magnetic resonance imaging;Magnetic domains\",\"Galerkin method;graphics processing units;Maxwell equations;microwave imaging;parallel architectures;parallel programming\",\"microwave imaging;CSI algorithm;time-harmonic discontinuous Galerkin method;high computational throughput;computational performance;GPU acceleration;dynamically balanced OpenMP-CUDA implementation;PDE-based Contrast Source Inversion algorithm;hybrid Open MP-CUDA parallel programming model\",\"\",\"1\",\"\",\"9\",\"\",\"13 Dec 2018\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Using graphics devices in reverse: GPU-based Image Processing and Computer Vision\",\"J. Fung; S. Mann\",\"NVIDIA Corporation, 2701 San Tomas Expressway, Santa Clara, California, USA; University of Toronto, Dept. of Electrical and Computer Engineering, 10 King's College Road, Mailstop. B540, Ontario, Canada\",\"2008 IEEE International Conference on Multimedia and Expo\",\"26 Aug 2008\",\"2008\",\"\",\"\",\"9\",\"12\",\"Graphics and vision are approximate inverses of each other: ordinarily graphics processing units (GPUs) are used to convert ldquonumbers into picturesrdquo (i.e. computer graphics). In this paper, we discuss the use of GPUs in approximately the reverse way: to assist in ldquoconverting pictures into numbersrdquo (i.e. computer vision). For graphical operations, GPUs currently provide many hundreds of gigaflops of processing power. This paper discusses how this processing power is being harnessed for image processing and computer vision, thereby providing dramatic speedups on commodity, readily available graphics hardware. A brief review of algorithms mapped to the GPU by using the graphics API for vision is presented. The NVIDIA CUDA programming model is then introduced as a way of expressing program parallelism without the need for graphics expertise.\",\"1945-788X\",\"978-1-4244-2570-9\",\"10.1109/ICME.2008.4607358\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=4607358\",\"GPU;Graphics Processing Unit;Computer Vision;Image Processing\",\"Graphics;Hardware;Computer architecture;Computer vision;Programming;Acceleration;Pattern recognition\",\"application program interfaces;computer graphics;computer vision;coprocessors;image processing equipment\",\"computer vision;graphics processing units;computer graphics;graphics API;NVIDIA CUDA programming model;program parallelism;GPU-based image processing\",\"\",\"49\",\"\",\"32\",\"\",\"26 Aug 2008\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Parallel AMG solver for three dimensional unstructured grids using GPU\",\"K. R. Tej; N. Sivadasan; V. Sharma; R. Banerjee\",\"Dept. of Computer Science and Engineering, Indian Institute of Technology Hyderabad, Hyderabad, India; Dept. of Computer Science and Engineering, Indian Institute of Technology Hyderabad, Hyderabad, India; Dept. of Mechanical Engineering, Indian Institute of Technology Hyderabad, Hyderabad, India; Dept. of Mechanical Engineering, Indian Institute of Technology Hyderabad, Hyderabad, India\",\"2014 21st International Conference on High Performance Computing (HiPC)\",\"4 Jun 2015\",\"2014\",\"\",\"\",\"1\",\"10\",\"Graphics Processing Units (GPUs) have evolved over the years from being graphics accelerator to scalable coprocessor. We implement an algebraic multigrid solver for three dimensional unstructured grids using GPU. Such a solver has extensive applications in Computational Fluid Dynamics (CFD). Using a combination of vertex coloring, optimized memory representations, multi-grid and improved coarsening techniques, we obtain considerable speedup in our parallel implementation. Our solver provides significant acceleration for solving pressure Poisson equations, which is the most time consuming part while solving Navier-Stokes equations. In our experimental study, we solve pressure Poisson equations for flow over lid driven cavity and for laminar flow past square cylinder. Our implementation achieves 915 times speed up for the lid driven cavity problem on a grid of size 2.6 million and a speed up of 1020 times for the laminar flow past square cylinder problem on a grid of size 1.7 million, compared to serial non-multigrid implementations. For our implementation, we used NVIDIA's CUDA programming model.\",\"1094-7256\",\"978-1-4799-5976-1\",\"10.1109/HiPC.2014.7116899\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7116899\",\"GPU Computing;Computational Fluid Dynamics;Multigrid Flow Solver;Gauss-Seidel;Navier-Stokes\",\"Graphics processing units;Image color analysis;Instruction sets;Smoothing methods;Kernel;Mathematical model;Computational fluid dynamics\",\"computational fluid dynamics;external flows;graphics processing units;laminar flow;Navier-Stokes equations;parallel architectures;parallel programming;Poisson equation\",\"parallel AMG solver;three-dimensional unstructured grids;GPU;graphics processing units;graphics accelerator;scalable co-processor;algebraic multigrid solver;computational fluid dynamics;CFD;vertex coloring;optimized memory representations;improved coarsening techniques;parallel implementation;pressure Poisson equations;Navier-Stokes equations;laminar flow;lid driven cavity problem;square cylinder problem;NVIDIA CUDA programming model\",\"\",\"1\",\"\",\"37\",\"\",\"4 Jun 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Evaluation of GPU Architectures Using Spiking Neural Networks\",\"V. K. Pallipuram; M. A. Bhuiyan; M. C. Smith\",\"Dept. of Electr. & Comput. Eng., Clemson Univ., Clemson, SC, USA; Dept. of Electr. & Comput. Eng., Clemson Univ., Clemson, SC, USA; Dept. of Electr. & Comput. Eng., Clemson Univ., Clemson, SC, USA\",\"2011 Symposium on Application Accelerators in High-Performance Computing\",\"29 Sep 2011\",\"2011\",\"\",\"\",\"93\",\"102\",\"During recent years General-Purpose Graphical Processing Units (GP-GPUs) have entered the field of High-Performance Computing (HPC) as one of the primary architectural focuses for many research groups working with complex scientific applications. Nvidia's Tesla C2050, codenamed Fermi, and AMD's Radeon 5870 are two devices positioned to meet the computationally demanding needs of supercomputing research groups across the globe. Though Nvidia GPUs powered by CUDA have been the frequent choices of the performance centric research groups, the introduction and growth of OpenCL has promoted AMD GP-GPUs as potential accelerator candidates that can challenge Nvidia's stronghold. These architectures not only offer a plethora of features for application developers to explore, but their radically different architectures calls for a detailed study that weighs their merits and evaluates their potential to accelerate complex scientific applications. In this paper, we present our performance analysis research comparing Nvidia's Fermi and AMD's Radeon 5870 using OpenCL as the common programming model. We have chosen four different neuron models for Spiking Neural Networks (SNNs), each with different communication and computation requirements, namely the Izhikevich, Wilson, Morris Lecar (ML), and the Hodgkin Huxley (HH) models. We compare the runtime performance of the Fermi and Radeon GPUs with an implementation that exhausts all optimization techniques available with OpenCL. Several equivalent architectural parameters of the two GPUs are studied and correlated with the application performance. In addition to the comparative study effort, our implementations were able to achieve a speed-up of 857.3x and 658.51x on the Fermi and Radeon architectures respectively for the most compute intensive HH model with a dense network containing 9.72 million neurons. The final outcome of this research is a detailed architectural comparison of the two GPU architectures with a common programming platform.\",\"2166-515X\",\"978-1-4577-0635-6\",\"10.1109/SAAHPC.2011.20\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6031572\",\"Fermi;AMD;OpenCL;GPU Architecture Comparison;Profiler Counters;SNNs;speed-up\",\"Graphics processing unit;Computer architecture;Neurons;Computational modeling;Mathematical model;Optimization;Firing\",\"computer graphic equipment;coprocessors;neural nets\",\"GPU architectures;spiking neural networks;general-purpose graphical processing units;high-performance computing;Nvidia Tesla C2050;Fermi;AMD Radeon 5870;supercomputing research groups;CUDA;performance centric research groups;OpenCL;application developers;programming model;Morris Lecar models;Hodgkin Huxley models;optimization techniques\",\"\",\"5\",\"\",\"27\",\"\",\"29 Sep 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"CUKNN: A parallel implementation of K-nearest neighbor on CUDA-enabled GPU\",\"Shenshen Liang; Cheng Wang; Ying Liu; Liheng Jian\",\"Graduate University of Chinese Academy of Sciences, Beijing, China 100190; Agilent Technologies Co. Ltd., Beijing, China 100102; Graduate University of Chinese Academy of Sciences, Beijing, China 100190; Graduate University of Chinese Academy of Sciences, Beijing, China 100190\",\"2009 IEEE Youth Conference on Information, Computing and Telecommunication\",\"15 Jan 2010\",\"2009\",\"\",\"\",\"415\",\"418\",\"Recent development in Graphics Processing Units (GPUs) has enabled inexpensive high performance computing for general-purpose applications. Due to GPU's tremendous computing capability, it has emerged as the co-processor of the CPU to achieve a high overall throughput. CUDA programming model provides the programmers adequate C language like APIs to better exploit the parallel power of the GPU. K-nearest neighbor is a widely used classification technique and has significant applications in various domains. The computational-intensive nature of KNN requires a high performance implementation. In this paper, we present a CUDA-based parallel implementation of KNN, CUKNN, using CUDA multi-thread model. Various CUDA optimization techniques are applied to maximize the utilization of the GPU. CUKNN outperforms significantly and achieve up to 15.2X speedup. It also shows good scalability when varying the dimension of the training dataset and the number of records in training dataset.\",\"\",\"978-1-4244-5074-9\",\"10.1109/YCICT.2009.5382329\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5382329\",\"KNN;classification;CUDA;parallel computing\",\"High performance computing;Graphics;Coprocessors;Central Processing Unit;Throughput;Parallel programming;Programming profession;Scalability\",\"C language;computer graphics;coprocessors;multi-threading;parallel architectures\",\"CUDA-enabled GPU;graphics processing units;C language;CUDA multi-thread model;k-nearest neighbor parallel implementation;coprocessor;compute unified device architecture;high performance computing\",\"\",\"8\",\"\",\"6\",\"\",\"15 Jan 2010\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"GPU Accelerated Krylov Subspace Methods for Computational Electromagnetics\",\"S. Velamparambil; S. MacKinnon-Cormier; J. Perry; R. Lemos; M. Okoniewski; J. Leon\",\"Acceleware Corporation, 1600 37th St. SW, Calgary, Alberta-T3E 3P1, Canada. sanjay.velamparambil@acceleware.com; Acceleware Corporation, 1600 37th St. SW, Calgary, Alberta-T3E 3P1, Canada; Acceleware Corporation, 1600 37th St. SW, Calgary, Alberta-T3E 3P1, Canada; Acceleware Corporation, 1600 37th St. SW, Calgary, Alberta-T3E 3P1, Canada; Dept. Elect. & Comp. Engg., University of Calgary, Calgary, Canada. michal.okoniewski@acceleware.com; Faculty of Engineering, Dalhousie University, Halifax, Canada. Joshua.Leon@dal.ca\",\"2008 38th European Microwave Conference\",\"19 Jan 2009\",\"2008\",\"\",\"\",\"1312\",\"1314\",\"Programmable graphics processor units (GPU), such as the NVIDIA<sup>R</sup> Geforce 8800 series, offer a raw computing power that is often an order of magnitude larger than even the most modern multicore CPUs, making them a relatively inexpensive platform for high performance computing. In this paper, we report the development of two Krylov subspace solvers, the generalized minimal residual (GMRES) and the quasi-minimal residual (QMR) algorithms, on the GPU using the NVIDIA CUDA<sup>R</sup> programming model. The algorithms have been implemented as a stand-alone library. We report a speed-up of up to 13 times, on a single GPU, in our preliminary experiments with the classic problem of computing the capacitance of conductors using an integral equation method.\",\"\",\"978-2-87487-006-4\",\"10.1109/EUMC.2008.4751704\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=4751704\",\"\",\"Acceleration;Computational electromagnetics;Integral equations;Computer interfaces;Graphics;High performance computing;Multicore processing;Libraries;Concurrent computing;Kernel\",\"capacitance;computational electromagnetics;computer graphics;integral equations\",\"programmable graphics processor units;Krylov subspace methods;computational electromagnetics;NVIDIA Geforce 8800 series;generalized minimal residual algorithm;quasiminimal residual algorithm;stand-alone library;single GPU;integral equation;capacitance;conductors;high performance computing;multicore CPUs\",\"\",\"6\",\"\",\"7\",\"\",\"19 Jan 2009\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"DDGSim: GPU based simulator for large multicore with bufferless NoC\",\"N. Kumar; A. Sahu\",\"Deptt. of Comp. Sc. and Engg., Indian Institute of Technology Guwahati, Assam, India, 781039; Deptt. of Comp. Sc. and Engg., Indian Institute of Technology Guwahati, Assam, India, 781039\",\"2014 Annual IEEE India Conference (INDICON)\",\"5 Feb 2015\",\"2014\",\"\",\"\",\"1\",\"6\",\"In large scale chip multicore, last level cache management and core interconnection network play important roles in performance and power consumption. And in large scale chip multicore, mesh interconnect is used widely due to scalability and simplicity of design. As interconnection network occupied significant area and consumes significant percent of system power, bufferless network is an appealing alternative design to reduce power consumption and hardware cost. We have designed and implemented a simulator for simulation of distributed cache management of large chip multicore where cores are connected using bufferless interconnection network. Also, we have redesigned and implemented the DDGSim, which is a GPU compatible parallel version of the same simulator using CUDA programming model. We have simulated target large chip multicore with up to 43,000 cores and achieved up to 25 times speedup on NVIDIA GeForce GTX 690 GPU over serial simulation.\",\"2325-9418\",\"978-1-4799-5364-6\",\"10.1109/INDICON.2014.7030460\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7030460\",\"\",\"Multicore processing;Graphics processing units;Ports (Computers);Instruction sets;Kernel;Routing;Radiation detectors\",\"cache storage;digital simulation;multiprocessing systems;network-on-chip;parallel architectures\",\"DDGSim;GPU based simulator;bufferless NoC;distributed cache management;bufferless interconnection network;CUDA programming model;NVIDIA GeForce GTX 690 GPU;large scale chip multicore;LCMP\",\"\",\"\",\"\",\"35\",\"\",\"5 Feb 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Analyzing CUDA workloads using a detailed GPU simulator\",\"A. Bakhoda; G. L. Yuan; W. W. L. Fung; H. Wong; T. M. Aamodt\",\"University of British Columbia, Vancouver, Canada; University of British Columbia, Vancouver, Canada; University of British Columbia, Vancouver, Canada; University of British Columbia, Vancouver, Canada; University of British Columbia, Vancouver, Canada\",\"2009 IEEE International Symposium on Performance Analysis of Systems and Software\",\"12 May 2009\",\"2009\",\"\",\"\",\"163\",\"174\",\"Modern graphic processing units (GPUs) provide sufficiently flexible programming models that understanding their performance can provide insight in designing tomorrow's manycore processors, whether those are GPUs or otherwise. The combination of multiple, multithreaded, SIMD cores makes studying these GPUs useful in understanding tradeoffs among memory, data, and thread level parallelism. While modern GPUs offer orders of magnitude more raw computing power than contemporary CPUs, many important applications, even those with abundant data level parallelism, do not achieve peak performance. This paper characterizes several non-graphics applications written in NVIDIA's CUDA programming model by running them on a novel detailed microarchitecture performance simulator that runs NVIDIA's parallel thread execution (PTX) virtual instruction set. For this study, we selected twelve non-trivial CUDA applications demonstrating varying levels of performance improvement on GPU hardware (versus a CPU-only sequential version of the application). We study the performance of these applications on our GPU performance simulator with configurations comparable to contemporary high-end graphics cards. We characterize the performance impact of several microarchitecture design choices including choice of interconnect topology, use of caches, design of memory controller, parallel workload distribution mechanisms, and memory request coalescing hardware. Two observations we make are (1) that for the applications we study, performance is more sensitive to interconnect bisection bandwidth rather than latency, and (2) that, for some applications, running fewer threads concurrently than on-chip resources might otherwise allow can improve performance by reducing contention in the memory system.\",\"\",\"978-1-4244-4184-6\",\"10.1109/ISPASS.2009.4919648\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=4919648\",\"\",\"Analytical models;Yarn;Graphics;Parallel processing;Microarchitecture;Hardware;Process design;Concurrent computing;Parallel programming;Computational modeling\",\"cache storage;computer graphic equipment;instruction sets;multiprocessing systems;multi-threading;parallel architectures\",\"CUDA workload;GPU simulator;graphic processing unit;flexible programming model;CUDA programming;microarchitecture performance simulator;parallel thread execution;virtual instruction set;GPU hardware;high-end graphics card;microarchitecture design;interconnect topology;caches;memory controller;parallel workload distribution;memory request coalescing hardware\",\"\",\"890\",\"4\",\"46\",\"\",\"12 May 2009\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"SMGuard: A Flexible and Fine-Grained Resource Management Framework for GPUs\",\"C. Yu; Y. Bai; H. Yang; K. Cheng; Y. Gu; Z. Luan; D. Qian\",\"Sino-German Joint Software Institute, School of Computer Science, Beihang University, Beijing, China; Sino-German Joint Software Institute, School of Computer Science, Beihang University, Beijing, China; Sino-German Joint Software Institute, School of Computer Science, Beihang University, Beijing, China; Sino-German Joint Software Institute, School of Computer Science, Beihang University, Beijing, China; Sino-German Joint Software Institute, School of Computer Science, Beihang University, Beijing, China; Sino-German Joint Software Institute, School of Computer Science, Beihang University, Beijing, China; Sino-German Joint Software Institute, School of Computer Science, Beihang University, Beijing, China\",\"IEEE Transactions on Parallel and Distributed Systems\",\"11 Nov 2018\",\"2018\",\"29\",\"12\",\"2849\",\"2862\",\"GPUs have been becoming an indispensable computing platform in data centers, and co-locating multiple applications on the same GPU is widely used to improve resource utilization. However, performance interference due to uncontrolled resource contention severely degrades the performance of co-locating applications and fails to deliver satisfactory user experience. In this paper, we present SMGuard, a software approach to flexibly manage the GPU resource usage of multiple applications under co-location. We also propose a capacity based GPU resource model CapSM, which provisions the GPU resources in a fine-grained granularity among co-locating applications. When co-locating latency-sensitive applications with batch applications, SMGuard can prevent batch applications from occupying resources without constraint using quota based mechanism, and guarantee the resource usage of latency-sensitive applications with reservation based mechanism. In addition, SMGuard supports dynamic resource adjustment through evicting the running thread blocks of batch applications to release the occupied resources and remapping the uncompleted thread blocks to the remaining resources, which avoids the relaunch of the preempted kernel. The SMGuard is a pure software solution that does not rely on special GPU hardware or programming model, which is easy to adopt on commodity GPUs in data centers. Our evaluation shows that SMGuard improves the average performance of latency-sensitive applications by 9.8× when co-located with batch applications. In the meanwhile, the GPU utilization can be improved by 35 percent on average.\",\"1558-2183\",\"\",\"10.1109/TPDS.2018.2848621\",\"National Key Research and Development Program of China(grant numbers:2016YFB1000503); National Science Foundation of China(grant numbers:61572062,61502019); \",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8388218\",\"GPU;parallel computing;resource management;application co-location\",\"Graphics processing units;Task analysis;Instruction sets;Resource management;Quality of service;Data centers\",\"computer centres;graphics processing units;resource allocation\",\"SMGuard;data centers;co-locating multiple applications;resource utilization;uncontrolled resource contention;GPU resource usage;GPU resource model CapSM;fine-grained granularity;latency-sensitive applications;batch applications;quota based mechanism;reservation based mechanism;dynamic resource adjustment;programming model;GPU utilization;flexible resource management framework;fine-grained resource management framework;performance interference\",\"\",\"4\",\"\",\"42\",\"IEEE\",\"19 Jun 2018\",\"\",\"\",\"IEEE\",\"IEEE Journals\"\n\"LU, QR, and Cholesky factorizations: Programming model, performance analysis and optimization techniques for the Intel Knights Landing Xeon Phi\",\"A. Haidar; S. Tomov; K. Arturov; M. Guney; S. Story; J. Dongarra\",\"University of Tennessee, Knoxville, 37916, USA; University of Tennessee, Knoxville, 37916, USA; Intel Corporation, Novosibirsk, Russia; Intel Corporation, Hillsboro, OR 97124, USA; Intel Corporation, Hillsboro, OR 97124, USA; University of Tennessee, Knoxville, Oak Ridge National Laboratory, USA\",\"2016 IEEE High Performance Extreme Computing Conference (HPEC)\",\"1 Dec 2016\",\"2016\",\"\",\"\",\"1\",\"7\",\"A wide variety of heterogeneous compute resources, ranging from multicore CPUs to GPUs and coprocessors, are available to modern computers, making it challenging to design unified numerical libraries that efficiently and productively use all these varied resources. For example, in order to efficiently use Intel's Knights Landing (KNL) processor, the next-generation of Xeon Phi architectures, one must design and schedule an application in multiple degrees of parallelism and task grain sizes in order to obtain efficient performance. We propose a productive and portable programming model that allows us to write a serial-looking code, which, however, achieves parallelism and scalability by using a lightweight runtime environment to manage the resource-specific workload, and to control the dataflow and the parallel execution. This is done through multiple techniques ranging from multi-level data partitioning to adaptive task grain sizes, and dynamic task scheduling. In addition, our task abstractions enable unified algorithmic development across all the heterogeneous resources. Finally, we outline the strengths and the effectiveness of this approach - especially in regards to hardware trends and ease of programming high-performance numerical software that current applications need - in order to motivate current work and future directions for the next generation of parallel programming models for high-performance linear algebra libraries on heterogeneous systems.\",\"\",\"978-1-5090-3525-0\",\"10.1109/HPEC.2016.7761591\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7761591\",\"\",\"Hardware;Programming;Libraries;Multicore processing;Parallel processing;Software\",\"data flow computing;data handling;graphics processing units;linear algebra;mathematics computing;multiprocessing systems;parallel programming;processor scheduling;software libraries\",\"LU factorization;QR factorization;Cholesky factorization;performance analysis;optimization technique;Intel Knights Landing Xeon Phi;heterogeneous compute resources;multicore CPU;GPU;coprocessors;unified numerical libraries;Intel KNL processor;Xeon Phi architecture;productive portable programming model;serial-looking code;scalability;lightweight runtime environment;resource-specific workload management;dataflow control;parallel execution;multilevel data partitioning;adaptive task grain size;dynamic task scheduling;task abstraction;unified algorithmic development;high-performance numerical software programming;parallel programming model;high-performance linear algebra libraries;heterogeneous systems\",\"\",\"7\",\"\",\"24\",\"\",\"1 Dec 2016\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Designing a Profiling and Visualization Tool for Scalable and In-depth Analysis of High-Performance GPU Clusters\",\"P. Kousha; B. Ramesh; K. Kandadi Suresh; C. Chu; A. Jain; N. Sarkauskas; H. Subramoni; D. K. Panda\",The Ohio State University; The Ohio State University; The Ohio State University; The Ohio State University; The Ohio State University; The Ohio State University; The Ohio State University; The Ohio State University,\"2019 IEEE 26th International Conference on High Performance Computing, Data, and Analytics (HiPC)\",\"13 Feb 2020\",\"2019\",\"\",\"\",\"93\",\"102\",\"The recent advent of advanced fabrics like NVIDIA NVLink is enabling the deployment of dense Graphics Processing Unit (GPU) systems, e.g., DGX-2 and Summit. The Message Passing Interface (MPI) has been the dominant programming model to design distributed applications on such clusters. The MPI Tools Interface (MPI_T) provides an opportunity for performance tools and external software to introspect and understand MPI runtime behavior at a deeper level to detect performance and scalability issues. However, the lack of low-overhead and scalable monitoring tools have thus far prevented a comprehensive study of efficiency and utilization of high-performance interconnects such as NVLinks on high-performance GPU-enabled clusters. In this paper, we address this deficiency by proposing and designing an in-depth, real-time analysis, profiling, and visualization tool for high-performance GPU-enabled clusters with NVLinks. The proposed tool builds on the top of the OSU InfiniBand Network Analysis and Monitoring Tool (INAM). It provides insights into the efficiency of different communication patterns by examining the utilization of underlying GPU interconnects. The contributions of the proposed tool are two-fold: 1) domain scientists and system administrators can understand how applications and runtime libraries interact with underlying high-performance interconnects, and 2)Proposed tool enables designers of high-performance communication libraries to gain low-level knowledge to optimize existing designs and develop new algorithms to optimally utilize cutting-edge interconnects on GPU clusters. To the best of our knowledge, this is the first such tool which is capable of presenting a unified and holistic view of MPI-level and fabric level information for emerging NVLink-enabled high-performance GPU clusters.\",\"2640-0316\",\"978-1-7281-4535-8\",\"10.1109/HiPC.2019.00022\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8990500\",\"MPI;MPI_T;NVLINK;GPU;Profiling\",\"Graphics processing units;Tools;Libraries;Measurement;Fabrics;Topology;Bandwidth\",\"application program interfaces;data visualisation;graphics processing units;message passing;parallel processing;software libraries\",\"visualization tool;high-performance interconnects;high-performance communication libraries;MPI-level;NVLink-enabled high-performance GPU clusters;in-depth analysis;message passing interface;performance tools;MPI runtime behavior;scalable monitoring tools;NVIDIA NVLink;graphics processing unit;MPI tools interface;low-overhead tools;infiniband network analysis and monitoring tool;cutting-edge interconnects;fabric level information;runtime libraries\",\"\",\"6\",\"\",\"30\",\"\",\"13 Feb 2020\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Code Complexity versus Performance for GPU-accelerated Scientific Applications\",\"A. W. U. Munipala; S. V. Moore\",\"University of Texas at El Paso, TX, USA; Oak Ridge Nat. Lab., Oak Ridge, TN, USA\",\"2016 Fourth International Workshop on Software Engineering for High Performance Computing in Computational Science and Engineering (SE-HPCCSE)\",\"2 Feb 2017\",\"2016\",\"\",\"\",\"50\",\"50\",\"Summary form only given. Graphics Processing Units (GPUs) are becoming widely used as parallel accelerators in high-performance computing. GPU programming until recently, has been done by using low-level programming models such as CUDA and OpenCL. The directive-based OpenACC programming model has been growing in popularity due to its higher level of abstraction. This technique, which uses “directive” or “pragma” statements to annotate source code written in traditional high-level languages such as Fortran, C, and C++, is intended to allow a single code base to work across multiple computational platforms. We attempt to compare code complexity and performance of CUDA, OpenCL, and OpenACC implementations for three benchmark codes - the Game of Life (GOL) example code, the LULESH hydrodynamics proxy application, and the CloverLeaf mini-app from the Mantevo suite For the GOL C, CUDA C, and OpenCL codes and the LULESH C++, CUDA, and OpenCL codes, we measured source lines of code (SLOC) and cyclomatic complexity using the Oxbow toolkit static analysis tools. We ran the commercial McCabe IQ tool on the CloverLeaf Fortran90, Fortran90 + OpenACC, and Fortran portion of CloverLeaf_CUDA to measure cyclomatic complexity, design complexity, and essential complexity. We found that the CUDA and OpenCL implementations have significantly more lines of code than the corresponding OpenACC implementations but that the measured cyclomatic complexity is not always higher. The CUDA and OpenCL implementations generally have better performance, but there is not a drastic difference if the OpenACC code is optimized. We conclude that the available metrics and tools for measuring complexity of GPU programs are inadequate, since they do not quantify the portability and maintainability of the codes, and that specialization and extensions are needed.\",\"\",\"978-1-5090-5224-0\",\"10.1109/SE-HPCCSE.2016.012\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7839472\",\"\",\"Complexity theory;Graphics processing units;Programming;Measurement;Software engineering;Computational modeling;C++ languages\",\"C++ language;graphics processing units;parallel architectures;software metrics;software performance evaluation;source code (software)\",\"code complexity;GPU-accelerated scientific applications;graphics processing units;game of life;GOL;LULESH hydrodynamics proxy application;CloverLeaf mini-app;Mantevo suite;GOL C;CUDA C;OpenCL codes;LULESH C++;source lines of code;SLOC;cyclomatic complexity;Oxbow toolkit static analysis tools;McCabe IQ tool;CloverLeaf Fortran90;Fortran90 + OpenACC;design complexity;essential complexity\",\"\",\"2\",\"\",\"\",\"\",\"2 Feb 2017\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"GPU acceleration of the iterative physical optics (IPO) method\",\"Kan Xu; Z. W. Liu; D. Z. Ding; R. S. Chen\",\"Department of Electronic Engineering, Nanjing University of Science and Technology, China; Department of Electronic Engineering, Nanjing University of Science and Technology, China; Department of Electronic Engineering, Nanjing University of Science and Technology, China; Department of Electronic Engineering, Nanjing University of Science and Technology, China\",\"2008 8th International Symposium on Antennas, Propagation and EM Theory\",\"16 Mar 2009\",\"2008\",\"\",\"\",\"733\",\"735\",\"In this paper, we employ the Programmable Graphics Processing Unit (GPU) to accelerate the IPO computation for analyzing the scattering of open cavities. Since the iterative strategy accounts for multiple reflections on the inner wall, the IPO method provides a more accurate solution than the other high frequency asymptotic methods. However, it suffers from a large requirement of simulation time. To date, the GPU featuring inherent parallelism and powerful floating-point capability has become an attractive alternative to the central processing unit (CPU) for some of computation tasks. Therefore, we map the time-consuming parts of IPO into the graphics hardware following the stream programming model, and the CPU carries out the computation of the far field scattering. In addition, the numerical results demonstrate the accuracy and effectiveness of our proposed method.\",\"\",\"978-1-4244-2192-3\",\"10.1109/ISAPE.2008.4735319\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=4735319\",\"\",\"Acceleration;Iterative methods;Physical optics;Central Processing Unit;Graphics;Optical scattering;Optical reflection;Frequency;Computational modeling;Parallel processing\",\"computational electromagnetics;electromagnetic wave scattering;iterative methods;parallel programming;physical optics\",\"GPU acceleration;programmable graphics processing unit;multiple reflections;central processing unit;inherent parallelism;floating-point capability;time-consuming parts;iterative physical optics method\",\"\",\"\",\"\",\"8\",\"\",\"16 Mar 2009\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"GraphReduce: Large-Scale Graph Analytics on Accelerator-Based HPC Systems\",\"D. Sengupta; K. Agarwal; S. L. Song; K. Schwan\",\"Georgia Inst. of Technol., Atlanta, GA, USA; Georgia Inst. of Technol., Atlanta, GA, USA; Pacific Northwest Nat. Lab., Richland, WA, USA; Georgia Inst. of Technol., Atlanta, GA, USA\",\"2015 IEEE International Parallel and Distributed Processing Symposium Workshop\",\"1 Oct 2015\",\"2015\",\"\",\"\",\"604\",\"609\",\"Recent work on graph analytics has sought to leverage the high performance offered by GPU devices, but challenges remain due to the inherent irregularity of graph algorithm and limitations in GPU-resident memory for storing large graphs. The Graph Reduce methods presented in this paper permit a GPU-based accelerator to operate on graphs that exceed its internal memory capacity. Graph Reduce operates with a combination of both edge- and vertex-centric implementations of the Gather-Apply-Scatter programming model, to achieve high degrees of parallelism supported by methods that partition graphs across GPU and host memories and efficiently move graph data between both. Graph Reduce-based programming is performed via device functions that include gather map, gather reduce, apply, and scatter, implemented by programmers for the graph algorithms they wish to realize. Experimental evaluations for a wide variety of graph inputs, algorithms, and system configuration demonstrate that Graph Reduce outperforms other competing approaches.\",\"\",\"978-1-4673-7684-6\",\"10.1109/IPDPSW.2015.16\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7284365\",\"graph processing;big data;GPU;CUDA\",\"Graphics processing units;Computational modeling;Programming;Parallel processing;Algorithm design and analysis;Hardware;Data structures\",\"graph theory;graphics processing units;storage management\",\"GraphReduce;large-scale graph analytics;accelerator-based HPC systems;GPU devices;graph algorithm irregularity;GPU-resident memory;GPU-based accelerator;internal memory capacity;edge-centric implementations;vertex-centric implementations;gather-apply-scatter programming model;partition graphs;gather_map;gather_reduce\",\"\",\"3\",\"\",\"22\",\"\",\"1 Oct 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Automatic Code Tuning for Improving GPU Resource Utilization\",\"R. Takeshima; T. Tsumura\",\"Nagoya Inst. of Technol., Nagoya, Japan; Nagoya Inst. of Technol., Nagoya, Japan\",\"2014 Second International Symposium on Computing and Networking\",\"2 Mar 2015\",\"2014\",\"\",\"\",\"419\",\"425\",\"Utilizing a GPU to perform general purpose computation is called GPGPU. The high theoretical performance of GPU draws attention to GPGPU. CUDA supplies a platform for the developers of GPU applications. In CUDA programming model, massive threads are allocated to GPU's calculation units. Besides, CUDA has various kinds of memories on GPU. These memories have different features of access latency, capacity, and so on. Therefore, to produce high-performance GPU programs, developers should consider how to allocate the massive threads to cores and which memory should be used for storing data. Hence, developers should have deep understanding of the GPU architecture and CUDA APIs. To address this problem, we propose an auto tuning framework for GPU programs, and explain an implementation of a preprocessor for the framework, in this paper.\",\"2379-1896\",\"978-1-4799-4152-0\",\"10.1109/CANDAR.2014.48\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7052220\",\"\",\"Graphics processing units;Kernel;Message systems;Instruction sets;Registers;Tuning\",\"application program interfaces;graphics processing units;parallel architectures;resource allocation\",\"code tuning;GPU resource utilization;general purpose graphics processing unit;GPGPU;Compute Unified Device Architecture;high-performance GPU program;CUDA API;application program interface\",\"\",\"1\",\"\",\"11\",\"\",\"2 Mar 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Multi-Level Graph Layout on the GPU\",\"Y. Frishman; A. Tal\",\"Technion, Israel Institute of Technology; Technion, Israel Institute of Technology\",\"IEEE Transactions on Visualization and Computer Graphics\",\"5 Nov 2007\",\"2007\",\"13\",\"6\",\"1310\",\"1319\",\"This paper presents a new algorithm for force directed graph layout on the GPU. The algorithm, whose goal is to compute layouts accurately and quickly, has two contributions. The first contribution is proposing a general multi-level scheme, which is based on spectral partitioning. The second contribution is computing the layout on the GPU. Since the GPU requires a data parallel programming model, the challenge is devising a mapping of a naturally unstructured graph into a well-partitioned structured one. This is done by computing a balanced partitioning of a general graph. This algorithm provides a general multi-level scheme, which has the potential to be used not only for computation on the GPU, but also on emerging multi-core architectures. The algorithm manages to compute high quality layouts of large graphs in a fraction of the time required by existing algorithms of similar quality. An application for visualization of the topologies of ISP (Internet service provider) networks is presented.\",\"1941-0506\",\"\",\"10.1109/TVCG.2007.70580\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=4376155\",\"Graph layout;GPU;graph partitioning.\",\"Partitioning algorithms;Acceleration;Application software;Visualization;High performance computing;Parallel programming;Computer architecture;Quality management;Network topology;Web and internet services\",\"computer graphics;graph theory;parallel programming\",\"multi-level graph layout;directed graph layout;general multi-level scheme;spectral partitioning;data parallel programming model;naturally unstructured graph;multi-core architectures;Internet service provider;graph partitioning\",\"\",\"70\",\"1\",\"41\",\"\",\"5 Nov 2007\",\"\",\"\",\"IEEE\",\"IEEE Journals\"\n\"On the Portability of the OpenCL Dwarfs on Fixed and Reconfigurable Parallel Platforms\",\"K. Krommydas; M. Owaida; C. D. Antonopoulos; N. Bellas; W. -C. Feng\",NA; NA; NA; NA; NA,\"2013 International Conference on Parallel and Distributed Systems\",\"1 May 2014\",\"2013\",\"\",\"\",\"432\",\"433\",\"The proliferation of heterogeneous computing systems presents the parallel computing community with the challenge of porting legacy and emerging applications to multiple processors with diverse programming abstractions. OpenCL is a vendor-agnostic and industry-supported programming model that offers code portability on heterogeneous platforms, allowing applications to be developed once and deployed \"\"anywhere.\"\" In this paper, we use the OpenCL implementation of the Open Dwarfs, a benchmark suite that captures patterns of computation and communication common to classes of important applications, as delineated by Berkeley's Dwarfs. We evaluate portability across multicore CPU, GPU, APU (CPUs+GPUs on a die), the Intel Xeon Phi co-processor, and the FPGA. To realize FPGA portability, we exploit SOpenCL (Silicon OpenCL), a CAD tool that automatically converts OpenCL kernels to customizable hardware accelerators. We show that a single, unmodified OpenCL code base, i.e., Open Dwarfs, can be effectively used to target multiple, architecturally diverse platforms.\",\"1521-9097\",\"978-1-4799-2081-5\",\"10.1109/ICPADS.2013.71\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6808208\",\"OpenCL;CPU;GPU;APU;Xeon Phi;FPGA;dwarfs;portability\",\"Field programmable gate arrays;Graphics processing units;Hardware;Hardware design languages;Kernel;Programming;Parallel processing\",\"parallel processing\",\"OpenCL Dwarfs;reconfigurable parallel platforms;heterogeneous computing systems;parallel computing community;porting legacy;diverse programming abstractions;industry-supported programming model;code portability;heterogeneous platforms;multicore CPU;GPU;APU;Intel Xeon Phi coprocessor;FPGA portability;SOpenCL;Silicon OpenCL;CAD tool;OpenCL kernels;OpenCL code base\",\"\",\"4\",\"\",\"5\",\"\",\"1 May 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Using CUDA GPU to Accelerate the Ant Colony Optimization Algorithm\",\"K. Wei; C. Wu; C. Wu\",\"Comput. Sci. & Inf. Eng., Nat. Changhua Univ. of Educ., Changhua, Taiwan; Comput. Sci. & Inf. Eng., Nat. Changhua Univ. of Educ., Changhua, Taiwan; Comput. Sci. & Inf. Eng., Nat. Changhua Univ. of Educ., Changhua, Taiwan\",\"2013 International Conference on Parallel and Distributed Computing, Applications and Technologies\",\"22 Sep 2014\",\"2013\",\"\",\"\",\"90\",\"95\",\"Graph Processing Units (GPUs) have recently evolved into a super multi-core and a fully programmable architecture. In the CUDA programming model, the programmers can simply implement parallelism ideas of a task on GPUs. The purpose of this paper is to accelerate Ant Colony Optimization (ACO) for Traveling Salesman Problems (TSP) with GPUs. In this paper, we propose a new parallel method, which is called the Transition Condition Method. Experimental results are extensively compared and evaluated on the performance side and the solution quality side. The TSP problems are used as a standard benchmark for our experiments. In terms of experimental results, our new parallel method achieves the maximal speed-up factor of 4.74 than the previous parallel method. On the other hand, the quality of solutions is similar to the original sequential ACO algorithm. It proves that the quality of solutions does not be sacrificed in the cause of speed-up.\",\"2379-5352\",\"978-1-4799-2419-6\",\"10.1109/PDCAT.2013.21\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6904238\",\"GPU;CUDA;Ant Colony Optimization;ACO;TSP\",\"Cities and towns;Graphics processing units;Instruction sets;Arrays;Wheels;Memory management\",\"ant colony optimisation;graphics processing units;parallel architectures;parallel programming;travelling salesman problems\",\"CUDA GPU;ant colony optimization algorithm;graph processing units;programmable architecture;ant colony optimization;traveling salesman problems;TSP;Transition Condition Method;parallel method;super multi-core;CUDA programming model\",\"\",\"2\",\"\",\"14\",\"\",\"22 Sep 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Comparison of Xeon Phi and Kepler GPU Performance for Finite Element Numerical Integration\",\"K. Banas; F. Kruzel\",\"Dept. of Appl. Comput. Sci. & Modelling, AGH Univ. of Sci. & Technol., Krakόw, Poland; Inst. of Comput. Sci., Cracow Univ. of Technol., Krakόw, Poland\",\"2014 IEEE Intl Conf on High Performance Computing and Communications, 2014 IEEE 6th Intl Symp on Cyberspace Safety and Security, 2014 IEEE 11th Intl Conf on Embedded Software and Syst (HPCC,CSS,ICESS)\",\"12 Mar 2015\",\"2014\",\"\",\"\",\"145\",\"148\",\"We consider two recently introduced massively multi-core architectures designed for high performance computing, the Xeon Phi coprocessor and Kepler graphics processor. We discuss the OpenCL programming model, as one that allows to look at the platforms in a unified way and to construct efficient algorithms for both of them. As an example application we investigate a typical algorithm employed in finite element codes for numerical integration. We create kernels implementing the algorithm for the two considered platforms and compare the performance obtained.\",\"\",\"978-1-4799-6123-8\",\"10.1109/HPCC.2014.27\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7056730\",\"OpenCL;performance analysis;Xeon Phi coprocessor;GPU;Kepler architecture;finite elements;numerical integration\",\"Finite element analysis;Registers;Instruction sets;Computer architecture;Kernel;Graphics processing units;Numerical models\",\"finite element analysis;graphics processing units;integration;multiprocessing systems;parallel processing\",\"Xeon Phi coprocessor;Kepler GPU graphics processor;finite element numerical integration;massively multicore architectures;high performance computing;OpenCL programming model\",\"\",\"2\",\"\",\"8\",\"\",\"12 Mar 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Evaluating Optimization Strategies for HMMer Acceleration on GPU\",\"S. Ferraz; N. Moreano\",\"Sch. of Comput., Fed. Univ. of Mato Grosso do Sul, Campo Grande, Brazil; Sch. of Comput., Fed. Univ. of Mato Grosso do Sul, Campo Grande, Brazil\",\"2013 International Conference on Parallel and Distributed Systems\",\"1 May 2014\",\"2013\",\"\",\"\",\"59\",\"68\",\"Comparing a biological sequence to a family of sequences is an important task in Bioinformatics, commonly performed using tools such as HMMer. The Viterbi algorithm is applied as HMMer main step to compute the similarity between the sequence and the family. Due to the exponential growth of biological sequence databases, implementations of the Viterbi algorithm on several high performance platforms have been proposed. Nevertheless, few implementations of the Viterbi algorithm use GPUs as main platform. In this paper, we present the development and optimization of an accelerator for the Viterbi algorithm applied to biological sequence analysis on GPUs. Some of the optimizations analyzed are applied to the sequence comparison problem for the first time in the literature and others are evaluated in more depth than in related works. Our main contributions are: (a) an accelerator that achieves speedups up to 102.90 and 60.46, with respect to HMMer2 and HMMer3 execution on a general purpose computer, respectively, (b) the use of the multi-platform OpenCL programming model for the accelerator, (c) a detailed evaluation of several optimizations such as memory, control flow, execution space, instruction scheduling, and loop optimizations, and (d) a methodology of optimizations and evaluation that can also be applied to other sequence comparison algorithms, such as the HMMer3 MSV.\",\"1521-9097\",\"978-1-4799-2081-5\",\"10.1109/ICPADS.2013.21\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6808158\",\"Sequence-profile alignment;Viterbi algorithm;GPU;Accelerator;Optimization;OpenCL\",\"Hidden Markov models;Graphics processing units;Viterbi algorithm;Memory management;Optimization;Databases;Parallel processing\",\"bioinformatics;graphics processing units;hidden Markov models;optimisation;scheduling\",\"optimization strategies;HMMer acceleration;GPU;bioinformatics;Viterbi algorithm;biological sequence databases;HMMer2;general purpose computer;multiplatform OpenCL programming model;accelerator;control flow;execution space;instruction scheduling;loop optimizations;HMMer3 MSV;sequence comparison algorithms\",\"\",\"1\",\"15\",\"26\",\"\",\"1 May 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"The Heterogeneous System Architecture: It's beyond the GPU\",\"P. Blinzer\",\"Advanced Micro Devices, Inc., United States\",\"2014 International Conference on Embedded Computer Systems: Architectures, Modeling, and Simulation (SAMOS XIV)\",\"8 Sep 2014\",\"2014\",\"\",\"\",\"iii\",\"iii\",\"Summary form only given. The use of GPUs in computation intensive tasks has an ever increasing impact across all platforms - including embedded - sometimes even used to create new forms of currency (Bitcoin, Litecoin, ...). And the exponential improvements in Performance per Watt gains are still ongoing unabated. At the same time, due to their “design heritage” as primarily 3D accelerators, GPUs have several properties that make it a SW challenge to unlock their full benefit in many real-world application scenarios, be it due to limiting API's (proprietary or limited functionality) or properties that require an advanced understanding of the platform architecture and managing the memory and other system resources, beyond the reach of the “average programmer”. The Heterogeneous System Architecture is established by the HSA Foundation to address many of the current shortcomings at a system architecture and programming model level while providing a great foundation for already established SW models, and in addition to the GPU allow extending the architecture to other specialty processors like DSPs, FPGAs and others to interoperate within the SW framework, a main task for the next level of work in the HSA Foundation. The HSA Foundation, a not-for-profit consortium of SOC and SOC IP vendors, OEMs, academia, OSVs and ISVs defining a consistent heterogeneous platform architecture to make it dramatically easier to program heterogeneous parallel devices like GPUs and other accelerators. The presentation gives the audience a high-level understanding of the goals of HSA, the HSA system architecture properties and its use models by system software, tools and applications.\",\"\",\"978-1-4799-3770-7\",\"10.1109/SAMOS.2014.6893187\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6893187\",\"\",\"Computer architecture;Computational modeling;Graphics processing units;System-on-chip;Graphics;Computers\",\"application program interfaces;computer architecture;graphics processing units\",\"heterogeneous system architecture;GPU;computation intensive tasks;performance per watt gains;design heritage;3D accelerators;SW challenge;API;HSA foundation;DSP;FPGA;SOC IP vendors;OEM;OSV;ISV\",\"\",\"\",\"\",\"\",\"\",\"8 Sep 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Detailed Performance Analysis of Distributed Tensorflow on a GPU Cluster using Deep Learning Algorithms\",\"A. Malik; M. Lu; N. Wang; Y. Lin; S. Yoo\",\"Computer Science Initiative, Brookhaven National Laboratory; Computer Science Initiative, Brookhaven National Laboratory; Computer Science Initiative, Brookhaven National Laboratory; Computer Science Initiative, Brookhaven National Laboratory; Computer Science Initiative, Brookhaven National Laboratory\",\"2018 New York Scientific Data Summit (NYSDS)\",\"18 Nov 2018\",\"2018\",\"\",\"\",\"1\",\"8\",\"Long training times for building a high accuracy deep neural networks (DNNs) is impeding research for new DNN architectures. For example, time for training GoogleNet with the ImageNet dataset on a single Nvidia K20 GPU almost takes 25 days. Therefore, there is a great need in the AI community to speed up the training phase, especially when using a large dataset. For this, we need Distributed Deep Neural Networks (DDNNs) that can scale well with more computation resources. However, this involves two challenges.First, the deep learning framework or training library must support inter-node communication. Second, the user must modify the code to take advantage of the inter-node communication. The changes to the code can be minimal to significant depending upon the user expertize in the distributed systems. Current DNN frameworks support distributed learning using MPI. However, these frameworks come with poorly understood overheads associated with communication and data management. Tensorflow provides APIs for distributed learning using MPI programming model and gRPC. These APIs are not easy to use for a domain expert for designing an efficient distributed learning model. Recently, Uber Inc. provides the Horovod Framework which gives a fast and easy way to support distributed learning using Tensorflow, Pytorach, and Keras. In this paper we provide a detailed performance analysis of distributed Tensorflow using Horovod. We implemented distributed learning for AlexNet, GoogleNet, and ResNet50 using Horovod. We used Nvidia K 40,K80, and P100 GPUs for our experimentation. We used synthetic image data with different runtime variables (batch size and number of GPUs). Our results shows that the Horovod framework gives almost linear throughput (images/sec) scalability up to 256 GPUs.\",\"\",\"978-1-5386-7933-3\",\"10.1109/NYSDS.2018.8538946\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8538946\",\"High Performance Computing;Tensorflow;Deep Learning;Distributed Learning;Performance Analysis\",\"Training;Neural networks;Parallel processing;Computer architecture;Graphics processing units;Computational modeling\",\"application program interfaces;graphics processing units;learning (artificial intelligence);message passing;neural nets;parallel architectures\",\"computation resources;deep learning framework;inter-node communication;distributed systems;current DNN frameworks;data management;MPI programming model;domain expert;distributed learning model;Horovod Framework;distributed tensorflow;Horovod framework;GPU cluster;deep learning algorithms;high accuracy deep neural networks;DNN architectures;training GoogleNet;ImageNet dataset;single Nvidia K20 GPU;AI community;API\",\"\",\"\",\"\",\"28\",\"\",\"18 Nov 2018\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"An improved vision-based wastewater velocity measurement system using discontinuity-preserving smoothing and GPU acceleration\",\"C. Cao Pham; T. Tuong Nguyen; J. Jae Wook\",\"School of Information and Communication Engineering, Sungkyunkwan University, Suwon, Korea; School of Information and Communication Engineering, Sungkyunkwan University, Suwon, Korea; School of Information and Communication Engineering, Sungkyunkwan University, Suwon, Korea\",\"2011 11th International Conference on Control, Automation and Systems\",\"19 Dec 2011\",\"2011\",\"\",\"\",\"1303\",\"1308\",\"Automatic long-term measuring wastewater velocity is an important and challenging task in hydraulic systems. This paper proposed a vision-based wastewater velocity measurement method using Bilateral filter that is a discontinuity-preserving smoothing as a prior-processing step. Experimental results showed that using Bilateral filter can improve estimation accuracy over existing methods. An effective background creation algorithm and simple floating waste tracking algorithm based on binary blob properties are also discussed in this paper. Furthermore, by implementing the proposed method on massively parallel GPU (graphics processing units) using the CUDA (compute unified device architecture) programming model, we can achieve a satisfactory acceleration to apply in real-time applications. Memory usage optimization methods are discussed and analyzed for effective implementation in graphics hardware.\",\"2093-7121\",\"978-89-93215-03-8\",\"\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6106126\",\"Water flow measurement;image processing;graphics processing units\",\"Graphics processing unit;Particle measurements;Atmospheric measurements;Velocity measurement;Accuracy;Smoothing methods;Noise\",\"computer vision;filtering theory;flow measurement;graphics processing units;object tracking;parallel architectures;storage management;velocity measurement;wastewater\",\"vision-based wastewater velocity measurement system;discontinuity-preserving smoothing;GPU acceleration;hydraulic system;bilateral filter;background creation algorithm;floating waste tracking algorithm;binary blob properties;massively parallel GPU;graphics processing units;CUDA programming model;compute unified device architecture;real-time application;memory usage optimization;graphics hardware\",\"\",\"\",\"\",\"16\",\"\",\"19 Dec 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Porting LASG/ IAP Climate System Ocean Model to Gpus Using OpenAcc\",\"J. Jiang; P. Lin; J. Wang; H. Liu; X. Chi; H. Hao; Y. Wang; W. Wang; L. Zhang\",\"Computer Network Information Center, Chinese Academy of Sciences, University of Chinese Academy of Sciences, Beijing, China; LASG, Institute of Atmospheric Physics, Chinese Academy of Sciences, University of Chinese Academy of Sciences, Beijing, China; NVIDIA, Beijing, China; LASG, Institute of Atmospheric Physics, Chinese Academy of Sciences, University of Chinese Academy of Sciences, Beijing, China; Computer Network Information Center, Chinese Academy of Sciences, University of Chinese Academy of Sciences, Beijing, China; Computer Network Information Center, Chinese Academy of Sciences, University of Chinese Academy of Sciences, Beijing, China; School of Information Engineering, China University of Geosciences (Beijing), Beijing, China; Computer Network Information Center, Chinese Academy of Sciences, University of Chinese Academy of Sciences, Beijing, China; Computer Network Information Center, Chinese Academy of Sciences, University of Chinese Academy of Sciences, Beijing, China\",\"IEEE Access\",\"30 Oct 2019\",\"2019\",\"7\",\"\",\"154490\",\"154501\",\"GPUs have become important solutions for accelerating scientific applications. Most of the existing work on climate models now use code rewritten using CUDA to achieve a limited speedup. This restriction also greatly limits followup development and applications. In this paper, we designed and implemented a GPU-based acceleration of the LASG/IAP climate system ocean model (LICOM) version 2, called LICOM2-GPU. Considering the extremely large codebase of the model and the occasional need to modify the code, we implemented the model completely in OpenACC. Several accelerated methods, including OpenACC data locality optimization, loop optimization, and interprocess communication optimization are presented. Developing for GPUs using OpenACC is substantially simpler than using the CUDA port. Thus, the OpenACC is a suitable GPU programming model for complex systems, such as the earth system model and its components. Our experimental results using 4 NVIDIA K80 cards achieved up to a 6.6$ \\times $ speedup compared with 4 Intel(R) Xeon(R) CPU E5-2690 v2 GPUs.\",\"2169-3536\",\"\",\"10.1109/ACCESS.2019.2932443\",\"National Basic Research Program of China (973 Program)(grant numbers:2016YFB0200800); National Natural Science Foundation of China(grant numbers:61602477,61432018); Strategic Priority Research Programme(grant numbers:XDC01040000); Chinese Academy of Sciences(grant numbers:XXH13506-402,XXH13506-302); Open Research Project of the Key Laboratory of Geological Information Technology of Ministry of Natural Resources; Open Research Project of the Hubei Key Laboratory of Intelligent Geo-Information Processing(grant numbers:KLIGIP-2017A04); \",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8784044\",\"High performance computing;parallel algorithm;GPU;LICOM;parallel acceleration\",\"Graphics processing units;Acceleration;Computational modeling;Meteorology;Atmospheric modeling;Optimization;Oceans\",\"geophysics computing;graphics processing units;parallel architectures\",\"accelerated methods;OpenACC data locality optimization;interprocess communication optimization;CUDA port;suitable GPU programming model;complex systems;earth system model;scientific applications;climate models;code rewritten;GPU-based acceleration;LICOM2-GPU\",\"\",\"2\",\"\",\"25\",\"CCBY\",\"1 Aug 2019\",\"\",\"\",\"IEEE\",\"IEEE Journals\"\n\"Hybrid Map Task Scheduling for GPU-Based Heterogeneous Clusters\",\"K. Shirahata; H. Sato; S. Matsuoka\",\"Tokyo Inst. of Technol., Tokyo, Japan; Tokyo Inst. of Technol., Tokyo, Japan; Tokyo Inst. of Technol., Tokyo, Japan\",\"2010 IEEE Second International Conference on Cloud Computing Technology and Science\",\"4 Feb 2011\",\"2010\",\"\",\"\",\"733\",\"740\",\"MapReduce is a programming model that enables efficient massive data processing in large-scale computing environments such as supercomputers and clouds. Such large-scale computers employ GPUs to enjoy its good peak performance and high memory bandwidth. Since the performance of each job is depending on running application characteristics and underlying computing environments, scheduling MapReduce tasks onto CPU cores and GPU devices for efficient execution is difficult. To address this problem, we have proposed a hybrid scheduling technique for GPU-based computer clusters, which minimizes the execution time of a submitted job using dynamic profiles of Map tasks running on CPU cores and GPU devices. We have implemented a prototype of our proposed scheduling technique by extending MapReduce framework, Hadoop. We have conducted some experiments for this prototype by using a K-means application as a benchmark on a supercomputer. The results show that the proposed technique achieves 1.93 times faster than the Hadoop original scheduling algorithm at 64 nodes (1024 CPU cores and 128 GPU devices). The results also indicate that the performance of map tasks, including both CPU and GPU tasks, is significantly affected by the overhead of map task invocation in the Hadoop framework.\",\"\",\"978-1-4244-9405-7\",\"10.1109/CloudCom.2010.55\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5708524\",\"Large-scale data processing;MapReduce;GPGPU;Job Scheduling\",\"Graphics processing unit;Java;Performance evaluation;Processor scheduling;Prototypes;Central Processing Unit;Computers\",\"computer graphic equipment;coprocessors;microcomputers;parallel machines;pattern clustering\",\"hybrid map task scheduling;MapReduce model;programming model;data processing;memory bandwidth;hybrid scheduling technique;GPU-based computer clusters;K-means application;supercomputer;Hadoop original scheduling algorithm\",\"\",\"50\",\"1\",\"15\",\"\",\"4 Feb 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Efficient Fork-Join on GPUs Through Warp Specialization\",\"A. C. Jacob; A. E. Eichenberger; H. Sung; S. F. Antao; G. -T. Bercea; C. Bertolli; A. Bataev; T. Jin; T. Chen; Z. Sura; G. Rokos; K. O'Brien\",\"IBM T.J. Watson Res. Center, Yorktown Heights, NY, USA; IBM T.J. Watson Res. Center, Yorktown Heights, NY, USA; IBM T.J. Watson Res. Center, Yorktown Heights, NY, USA; IBM T.J. Watson Res. Center, Yorktown Heights, NY, USA; IBM T.J. Watson Res. Center, Yorktown Heights, NY, USA; IBM T.J. Watson Res. Center, Yorktown Heights, NY, USA; IBM T.J. Watson Res. Center, Yorktown Heights, NY, USA; IBM T.J. Watson Res. Center, Yorktown Heights, NY, USA; IBM T.J. Watson Res. Center, Yorktown Heights, NY, USA; IBM T.J. Watson Res. Center, Yorktown Heights, NY, USA; IBM T.J. Watson Res. Center, Yorktown Heights, NY, USA; IBM T.J. Watson Res. Center, Yorktown Heights, NY, USA\",\"2017 IEEE 24th International Conference on High Performance Computing (HiPC)\",\"8 Feb 2018\",\"2017\",\"\",\"\",\"358\",\"367\",\"Graphics Processing Units (GPUs) are increasingly used to accelerate portions of general-purpose applications. Higher level language extensions have been proposed to help non-experts bridge the gap between a host and the GPU's threading model. Recent updates to the OpenMP standard allow a user to parallelize code on a GPU using the well known fork-join programming model for CPUs. Mapping this model to the architecturally visible threading model of typical GPUs has been challenging. In this work we propose a novel approach using the technique of Warp Specialization. We show how to specialize one warp (a unit of 32 GPU threads) to handle sequential code on a GPU. When this master warp reaches a user-specified parallel region, it awakens unused GPU warps to collectively execute the parallel code. Based on this method, we have implemented a Clang-based, OpenMP 4.5 compliant, open source compiler for GPUs. Our work achieves a 3.6x (and up to 32x) performance improvement over a baseline that does not exploit fork-join parallelism on an NVIDIA k40m GPU across a set of 25 kernels. Compared to state-of-the-art compilers (Clang-ykt, GCC-OpenMP, GCC-OpenACC) our work is 2.1 - 7.6x faster. Our proposed technique is simpler to implement, robust, and performant.\",\"\",\"978-1-5386-2293-3\",\"10.1109/HiPC.2017.00048\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8287767\",\"OpenMP;Fork-Join;GPU;Warp Specialization\",\"Graphics processing units;Parallel processing;Kernel;Programming;Benchmark testing;Hardware;Data models\",\"graphics processing units;multiprocessing systems;parallel programming;sequential codes\",\"parallelism;GCC-OpenMP;Warp Specialization;Graphics Processing Units;higher level language extensions;GPU's threading model;OpenMP standard;programming model;architecturally visible threading model;sequential code;unused GPU warps;parallel code;Fork-join\",\"\",\"9\",\"\",\"29\",\"\",\"8 Feb 2018\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"How Well do CPU, GPU and Hybrid Graph Processing Frameworks Perform?\",\"T. K. Aasawat; T. Reza; M. Ripeanu\",\"Univ. of British Columbia, Vancouver, BC, Canada; Univ. of British Columbia, Vancouver, BC, Canada; Univ. of British Columbia, Vancouver, BC, Canada\",\"2018 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW)\",\"6 Aug 2018\",\"2018\",\"\",\"\",\"458\",\"466\",\"The importance of high-performance graph processing to solve big data problems targeting high-impact applications is greater than ever before. Recent graph processing frameworks target different hardware platforms (e.g., shared memory systems, accelerators such as GPUs, and distributed systems) and differ with respect to the programming model they adopt (e.g., based on linear algebra formulations of graph algorithms or enabling direct access to the graph structure). To better understand the impact of these choices, this paper, presents a comparative study of five state-of-the-art graph processing frameworks: two CPU-only frameworks - GraphMat and Galois, two GPU-based frameworks - Nvgraph and Gunrock; and Totem, a hybrid (CPU+GPU) framework. We use three popular graph algorithms (PageRank, Single Source Shortest Path, and Breadth-First Search), and massive scale graphs with up to billions of edges. Our evaluation focuses on three performance metrics: (i) execution time, (ii) scalability and (iii) energy consumption.\",\"\",\"978-1-5386-5555-9\",\"10.1109/IPDPSW.2018.00082\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8425449\",\"Graph Processing;CPU;GPU;Hybrid Systems;Performance Evaluation;PageRank;SSSP;BFS\",\"Computational modeling;Graphics processing units;Programming;Linear algebra;Measurement;Sparse matrices;Instruction sets\",\"Big Data;graph theory;graphics processing units;mathematics computing;parallel processing\",\"graph processing frameworks;Nvgraph;GraphMat;Galois;Gunrock;Totem;hybrid graph;massive scale graphs;graph structure;linear algebra formulations;programming model;high-impact applications;big data problems;high-performance graph\",\"\",\"2\",\"\",\"35\",\"\",\"6 Aug 2018\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Overlapping Data Transfers with Computation on GPU with Tiles\",\"B. Bastem; D. Unat; W. Zhang; A. Almgren; J. Shalf\",\"Koc Univ., Istanbul, Turkey; Koc Univ., Istanbul, Turkey; Lawrence Berkeley Nat. Lab., Berkeley, CA, USA; Lawrence Berkeley Nat. Lab., Berkeley, CA, USA; Lawrence Berkeley Nat. Lab., Berkeley, CA, USA\",\"2017 46th International Conference on Parallel Processing (ICPP)\",\"7 Sep 2017\",\"2017\",\"\",\"\",\"171\",\"180\",\"GPUs are employed to accelerate scientific applications however they require much more programming effort from the programmers particularly because of the disjoint address spaces between the host and the device. OpenACC and OpenMP 4.0 provide directive based programming solutions to alleviate the programming burden however synchronous data movement can create a performance bottleneck in fully taking advantage of GPUs. We propose a tiling based programming model and its library that simplifies the development of GPU programs and overlaps the data movement with computation. The programming model decomposes the data and computation into tiles and treats them as the main data transfer and execution units, which enables pipelining the transfers to hide the transfer latency. Moreover, partitioning application data into tiles allows the programmer to still take advantage of GPU even though application data cannot fit into the device memory. The library leverages C++ lambda functions, OpenACC directives, CUDA streams and tiling API from TiDA to support both productivity and performance. We show the performance of the library on a data transfer-intensive and a compute-intensive kernels and compare its speedup against OpenACC and CUDA. The results indicate that the library can hide the transfer latency, handle the cases where there is no sufficient device memory, and achieves reasonable performance.\",\"2332-5690\",\"978-1-5386-1042-8\",\"10.1109/ICPP.2017.26\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8025291\",\"GPUs;Tiles;Programming Models;Overlapping communication with computation;Library;OpenACC;CUDA\",\"Graphics processing units;Kernel;Programming;Data transfer;Performance evaluation;Libraries;Memory management\",\"data handling;graphics processing units;parallel architectures\",\"compute-intensive kernels;data transfer-intensive kernels;TiDA;API;CUDA streams;OpenACC directives;C++ lambda functions;device memory;application data;transfer latency;GPU programs;tiling based programming model;synchronous data movement;directive based programming solutions;OpenMP 4.0;programmers;programming effort;scientific applications;overlapping data transfers\",\"\",\"4\",\"\",\"34\",\"\",\"7 Sep 2017\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"AES finalists implementation for GPU and multi-core CPU based on OpenCL\",\"Xingliang Wang; Xiaochao Li; Mei Zou; Jun Zhou\",\"Department of Electronic Engineering, Xiamen University, China, 361005; Department of Electronic Engineering, Xiamen University, China, 361005; Department of Electronic Engineering, Xiamen University, China, 361005; Department of Electronic Engineering, Xiamen University, China, 361005\",\"2011 IEEE International Conference on Anti-Counterfeiting, Security and Identification\",\"28 Jul 2011\",\"2011\",\"\",\"\",\"38\",\"42\",\"Benefit from the OpenCL (Open Computing Language), applications can be easily transplanted among different GPUs, multi-core CPUs, and other processors. In this paper, we present implementation of AES finalists (Rijndael, Serpent, Twofish) in XTS mode, based on OpenCL. Benchmark testing is performed on 4 mainstream GPUs and multi-core CPUs. The results are also compared with implementations based on traditional serial programming model and CUDA. The resulting data shows that throughputs based on OpenCL are higher than serial programming model, while a little lower than CUDA. Which demonstrates that OpenCL promises a portable language for GPU programming, while entail a performance penalty.\",\"2163-5056\",\"978-1-61284-632-3\",\"10.1109/ASID.2011.5967411\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5967411\",\"OpenCL;GPU;Rijndael;Serpent;Twofish;XTS\",\"Graphics processing unit;Programming;Encryption;Throughput;Kernel;Performance evaluation\",\"computer graphic equipment;coprocessors;cryptography;multiprocessing systems\",\"AES finalists implementation;multicore CPU;OpenCL;open computing language;XTS mode;GPU programming;advanced encryption standard\",\"\",\"5\",\"\",\"16\",\"\",\"28 Jul 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Computing 2D Constrained Delaunay Triangulation Using the GPU\",\"M. Qi; T. Cao; T. Tan\",\"National University of Singapore, Singapore; National University of Singapore, Singapore; National University of Singapore, Singapore\",\"IEEE Transactions on Visualization and Computer Graphics\",\"19 Mar 2013\",\"2013\",\"19\",\"5\",\"736\",\"748\",\"We propose the first graphics processing unit (GPU) solution to compute the 2D constrained Delaunay triangulation (CDT) of a planar straight line graph (PSLG) consisting of points and edges. There are many existing CPU algorithms to solve the CDT problem in computational geometry, yet there has been no prior approach to solve this problem efficiently using the parallel computing power of the GPU. For the special case of the CDT problem where the PSLG consists of just points, which is simply the normal Delaunay triangulation (DT) problem, a hybrid approach using the GPU together with the CPU to partially speed up the computation has already been presented in the literature. Our work, on the other hand, accelerates the entire computation on the GPU. Our implementation using the CUDA programming model on NVIDIA GPUs is numerically robust, and runs up to an order of magnitude faster than the best sequential implementations on the CPU. This result is reflected in our experiment with both randomly generated PSLGs and real-world GIS data having millions of points and edges.\",\"1941-0506\",\"\",\"10.1109/TVCG.2012.307\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6361389\",\"GPGPU;parallel computation;computational geometry;Voronoi diagram;image vectorization\",\"Graphics processing units;Instruction sets;Arrays;Strips;Standards;Color\",\"graphics processing units;mesh generation;parallel architectures\",\"computing 2D constrained Delaunay triangulation;graphics processing unit;CDT;planar straight line graph;PSLG;computational geometry;parallel computing power;CUDA programming model;NVIDIA GPU\",\"Algorithms;Computer Graphics;Image Enhancement;Image Enhancement;Image Interpretation, Computer-Assisted;Image Interpretation, Computer-Assisted;Imaging, Three-Dimensional;Imaging, Three-Dimensional;Numerical Analysis, Computer-Assisted;Reproducibility of Results;Sensitivity and Specificity;Signal Processing, Computer-Assisted\",\"17\",\"\",\"30\",\"\",\"26 Nov 2012\",\"\",\"\",\"IEEE\",\"IEEE Journals\"\n\"Kernel Fusion: An Effective Method for Better Power Efficiency on Multithreaded GPU\",\"G. Wang; Y. Lin; W. Yi\",\"Nat. Lab. for Parallel & Distrib. Process. Sch. of Comput., Nat. Univ. of Defense Technol., Changsha, China; Nat. Lab. for Parallel & Distrib. Process. Sch. of Comput., Nat. Univ. of Defense Technol., Changsha, China; Nat. Lab. for Parallel & Distrib. Process. Sch. of Comput., Nat. Univ. of Defense Technol., Changsha, China\",\"2010 IEEE/ACM Int'l Conference on Green Computing and Communications & Int'l Conference on Cyber, Physical and Social Computing\",\"7 Mar 2011\",\"2010\",\"\",\"\",\"344\",\"350\",\"As one of the most popular accelerators, Graphics Processing Unit (GPU) has demonstrated high computing power in several application fields. On the other hand, GPU also produces high power consumption and has been one of the most largest power consumers in desktop and supercomputer systems. However, software power optimization method targeted for GPU has not been well studied. In this work, we propose kernel fusion method to reduce energy consumption and improve power efficiency on GPU architecture. Through fusing two or more independent kernels, kernel fusion method achieves higher utilization and much more balanced demand for hardware resources, which provides much more potential for power optimization, such as dynamic voltage and frequency scaling (DVFS). Basing on the CUDA programming model, this paper also gives several different fusion methods targeted for different situations. In order to make judicious fusion strategy, we deduce the process of fusing multiple independent kernels as a dynamic programming problem, which could be well solved with many existing tools and be simply embedded into compiler or runtime system. To reduce the overhead introduced by kernel fusion, we also propose effective method to reduce the usage of shared memory and coordinate the thread space of the kernels to be fused. Detailed experimental evaluation validates that the proposed kernel fusion method could reduce energy consumption without performance loss for several typical kernels.\",\"\",\"978-1-4244-9779-9\",\"10.1109/GreenCom-CPSCom.2010.102\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5724850\",\"Kernel Fusion;Power Efficiency;Power Optimization;GPGPU\",\"Kernel;Instruction sets;Graphics processing unit;Energy consumption;Hardware;Mathematical model;Dynamic programming\",\"computer graphic equipment;coprocessors;energy conservation;power aware computing\",\"kernel fusion;multithreaded GPU;power efficiency;graphics processing unit;desktop systems;supercomputer systems;dynamic voltage and frequency scaling;CUDA programming model\",\"\",\"59\",\"1\",\"21\",\"\",\"7 Mar 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"HLanc: Heterogeneous Parallel Implementation of the Implicitly Restarted Lanczos Method\",\"S. Zhang; T. Li; X. Jiao; Y. Wang; Y. Yang\",\"Coll. of Comput. & Control Eng., Nankai Univ., Tianjin, China; Coll. of Comput. & Control Eng., Nankai Univ., Tianjin, China; Coll. of Comput. & Control Eng., Nankai Univ., Tianjin, China; Coll. of Comput. & Control Eng., Nankai Univ., Tianjin, China; Coll. of Comput. & Control Eng., Nankai Univ., Tianjin, China\",\"2014 43rd International Conference on Parallel Processing Workshops\",\"11 May 2015\",\"2014\",\"\",\"\",\"403\",\"410\",\"Graphics Processing Unit (GPU) has been used as a ubiquitous accelerator for general purpose computing, such as linear algebra routines and numerical methods. The implicitly restarted Lanczos method (IRLM) is well suited for solving the partial eigenvalue problem for large symmetric sparse matrices, which is important in many real world applications. In this paper, we present the HLanc library, a parallel implementation of IRLM on the heterogeneous CPU-GPU architecture employing the CUDA programming model. The HLanc library is designed with separated heterogeneous parallel IRLM solvers and sparse matrix-vector multiplication (SPMV) operators. The SPMV operators hide the details about the storage of sparse matrices from the IRLM solvers, so the solvers can work with any spare matrix formats. Especially the SPMV operators and IRLM solvers can be combined arbitrarily for achieving the best performance of CPU-GPU heterogeneous system. The HLanc is evaluated using eight sparse matrices with the NVIDIA GTX 480 and GTX TITAN Black GPUs. The results show that HLanc achieves 15 times speedup than the ARPACK library and scales well across different GPU generations.\",\"2332-5690\",\"978-1-4799-5615-9\",\"10.1109/ICPPW.2014.60\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7103478\",\"GPU;CUDA;symmetric sparse matrix;IRLM;SPMV;HLanc\",\"Sparse matrices;Graphics processing units;Eigenvalues and eigenfunctions;Libraries;Computer architecture;Symmetric matrices;Hardware\",\"eigenvalues and eigenfunctions;graphics processing units;mathematics computing;matrix multiplication;parallel architectures;parallel programming;software libraries;sparse matrices;vectors\",\"heterogeneous parallel implementation;implicitly restarted Lanczos method;graphics processing unit;ubiquitous accelerator;general purpose computing;linear algebra routines;numerical methods;partial eigenvalue problem;symmetric sparse matrices;HLanc library;heterogeneous CPU-GPU architecture;CUDA programming model;heterogeneous parallel IRLM solvers;sparse matrix-vector multiplication operators;SPMV operators;CPU-GPU heterogeneous system;NVIDIA GTX 480;GTX TITAN Black GPUs\",\"\",\"2\",\"\",\"26\",\"\",\"11 May 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Stargazer: Automated regression-based GPU design space exploration\",\"W. Jia; K. A. Shaw; M. Martonosi\",\"Princeton University, USA; University of Richmond, USA; Princeton University, USA\",\"2012 IEEE International Symposium on Performance Analysis of Systems & Software\",\"26 Apr 2012\",\"2012\",\"\",\"\",\"2\",\"13\",\"Graphics processing units (GPUs) are of increasing interest because they offer massive parallelism for high-throughput computing. While GPUs promise high peak performance, their challenge is a less-familiar programming model with more complex and irregular performance trade-offs than traditional CPUs or CMPs. In particular, modest changes in software or hardware characteristics can lead to large or unpredictable changes in performance. In response to these challenges, our work proposes, evaluates, and offers usage examples of Stargazer<sup>1</sup>, an automated GPU performance exploration framework based on stepwise regression modeling. Stargazer sparsely and randomly samples parameter values from a full GPU design space and simulates these designs. Then, our automated stepwise algorithm uses these sampled simulations to build a performance estimator that identifies the most significant architectural parameters and their interactions. The result is an application-specific performance model which can accurately predict program runtime for any point in the design space. Because very few initial performance samples are required relative to the extremely large design space, our method can drastically reduce simulation time in GPU studies. For example, we used Stargazer to explore a design space of nearly 1 million possibilities by sampling only 300 designs. For 11 GPU applications, we were able to estimate their runtime with less than 1.1% average error. In addition, we demonstrate several usage scenarios of Stargazer.\",\"\",\"978-1-4673-1146-5\",\"10.1109/ISPASS.2012.6189201\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6189201\",\"\",\"Graphics processing unit;Instruction sets;Mathematical model;Hardware;Space exploration;Runtime;Concurrent computing\",\"computer architecture;graphics processing units;regression analysis\",\"Stargazer;automated regression;GPU design space exploration;graphics processing unit;automated GPU performance exploration framework;stepwise regression modeling\",\"\",\"44\",\"\",\"28\",\"\",\"26 Apr 2012\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"DART-CUDA: A PGAS Runtime System for Multi-GPU Systems\",\"L. Zhou; K. Fuerlinger\",\"Dept. of Comput. Sci., Ludwig-Maximilians-Univ. (LMU) Munchen, Munich, Germany; Dept. of Comput. Sci., Ludwig-Maximilians-Univ. (LMU) Munchen, Munich, Germany\",\"2015 14th International Symposium on Parallel and Distributed Computing\",\"23 Jul 2015\",\"2015\",\"\",\"\",\"110\",\"119\",\"The Partitioned Global Address Space (PGAS) approach is a promising programming model in high performance parallel computing that combines the advantages of distributed memory systems and shared memory systems. The PGAS model has been used on a variety of hardware platforms in the form of PGAS programming languages like Unified Parallel C (UPC), Chapel and Fortress. However, in spite of the increasing adoption in distributed and shared memory systems, the extension of the PGAS model to accelerator platforms is still not well supported. To exploit the immense computational power of multi-GPU systems, this work is concerned with the design and implementation of a Partitioned Global Address Space model for multi-GPU systems. Several issues related to the combination of logically separate GPU memories on multiple graphic cards are addressed. Furthermore, the execution model of modern GPU architectures is studied and a task creation mechanism with load balancing is proposed. Our work is implemented in the context of the DASH project, a C++ template library that realizes PGAS semantics through operator overloading. Experimental results suggest promising performance of the design and its implementation.\",\"2379-5352\",\"978-1-4673-7148-3\",\"10.1109/ISPDC.2015.20\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7165137\",\"PGAS;Partitioned Global Address Space;MultiGPU systems;CUDA;Heterogeneous computing\",\"Graphics processing units;Resource management;Electronics packaging;Runtime;Programming;Computational modeling;Kernel\",\"C++ language;distributed memory systems;graphics processing units;parallel processing;resource allocation;software libraries\",\"C++ template library;DASH project;load balancing;task creation mechanism;GPU architecture;multiple graphic card;GPU memories;PGAS programming language;Chapel;UPC;unified parallel C;shared memory system;distributed memory system;high performance parallel computing;PGAS approach;partitioned global address space approach;multiGPU system;PGAS runtime system;DART-CUDA\",\"\",\"2\",\"\",\"11\",\"\",\"23 Jul 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"GPU acceleration of the dynamics routine in the HIRLAM weather forecast model\",\"V. T. Vu; G. Cats; L. Wolters\",\"Leiden Institute of Advanced Computer Science, Leiden University, 2333 CA, The Netherlands; Royal Netherlands, Meteorological Institute, 3730 AE De Bilt, The Netherlands; Leiden Institute of Advanced Computer Science, Leiden University, 2333 CA, The Netherlands\",\"2010 International Conference on High Performance Computing & Simulation\",\"12 Aug 2010\",\"2010\",\"\",\"\",\"31\",\"38\",\"Programmable graphics processing units (GPUs) nowadays offer very high performance computing power at relatively low hardware cost and power consumption. In this paper, we present the implementation of the dynamics routine of the HIRLAM weather forecast model on the NVIDIA GeForce 9800 GX2 GPU card using the Compute Unified Device Architecture (CUDA) as parallel programming model. We converted the original Fortran to C and CUDA by hand, straightforwardly, without much concern about optimization. On a single GPU, we observe speed-ups by an order of magnitude over our hosting CPU (Intel quad core, 1998 MHz). This includes the relatively very costly copying of data between GPU and CPU memories. Calculation times proper decreased by a factor of 2000. A single GPU, however, has not enough memory for practical use. Therefore, we investigated a parallel implementation on 4 GPUs. We found a parallel speed-up of 3.6, which is not very promising if memory limitations force the use of many GPUs in parallel. We discuss several options to solve this issue.\",\"\",\"978-1-4244-6830-0\",\"10.1109/HPCS.2010.5547152\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5547152\",\"GPGPU;Large Scale Scientific Computing;Parallelization of Simulation;CUDA;Numerical Weather Prediction model;Dynamics\",\"Graphics processing unit;Kernel;Weather forecasting;Predictive models\",\"computer graphic equipment;coprocessors;geophysics computing;parallel programming;weather forecasting\",\"GPU acceleration;dynamics routine;programmable graphics processing unit;high performance computing power;HIRLAM weather forecast model;NVIDIA GeForce 9800 GX2 GPU card;Compute Unified Device Architecture;CUDA;parallel programming;Intel quad core\",\"\",\"6\",\"\",\"18\",\"\",\"12 Aug 2010\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"CUDA-Based Computation for Visual Odometry\",\"S. -H. Liu; C. -C. Hsu; W. -Y. Wang; C. -H. Lin\",\"Department of Electrical Engineering, National Taiwan Normal University, Taipei, Taiwan; Department of Electrical Engineering, National Taiwan Normal University, Taipei, Taiwan; Department of Mechatronic Engineering, National Taiwan Normal University, Taipei, Taiwan; Department of Mechatronic Engineering, National Taiwan Normal University, Taipei, Taiwan\",\"2018 IEEE 7th Global Conference on Consumer Electronics (GCCE)\",\"13 Dec 2018\",\"2018\",\"\",\"\",\"64\",\"65\",\"An enhanced visual odometry (VO) system is proposed to improve the accuracy of pose estimation based on a corrected model, and the matching algorithm is implemented on graphical processing units (GPUs) so that the computation can be accelerated in parallel and in real-time using the compute unified device architecture (CUDA) programming model. To evaluate the performance of the proposed approach, an ASUS Xtion 3D camera, laptop, and NVIDIA TX2 are employed to conduct extensive experiments. The experimental results show that compared with the traditional VO algorithm, the proposed approach gives better results over the traditional VO algorithm.\",\"2378-8143\",\"978-1-5386-6309-7\",\"10.1109/GCCE.2018.8574869\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8574869\",\"Visual odometry;GPU;CUDA\",\"Graphics processing units;Cameras;Feature extraction;Pose estimation;Computational modeling;Visual odometry;Computational efficiency\",\"cameras;computerised instrumentation;distance measurement;graphics processing units;parallel architectures;pose estimation;robot vision\",\"graphical processing units;compute unified device architecture programming model;ASUS Xtion 3D camera;NVIDIA TX2;CUDA-based computation;matching algorithm;visual odometry system;VO algorithm;GPU\",\"\",\"\",\"\",\"6\",\"\",\"13 Dec 2018\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Empowering Visual Categorization With the GPU\",\"K. E. A. van de Sande; T. Gevers; C. G. M. Snoek\",\"Intelligent Systems Lab Amsterdam, Informatics Institute, University of Amsterdam, Amsterdam, The Netherlands; Intelligent Systems Lab Amsterdam, Informatics Institute, University of Amsterdam, Amsterdam, The Netherlands; Intelligent Systems Lab Amsterdam, Informatics Institute, University of Amsterdam, Amsterdam, The Netherlands\",\"IEEE Transactions on Multimedia\",\"17 Jan 2011\",\"2011\",\"13\",\"1\",\"60\",\"70\",\"Visual categorization is important to manage large collections of digital images and video, where textual metadata is often incomplete or simply unavailable. The bag-of-words model has become the most powerful method for visual categorization of images and video. Despite its high accuracy, a severe drawback of this model is its high computational cost. As the trend to increase computational power in newer CPU and GPU architectures is to increase their level of parallelism, exploiting this parallelism becomes an important direction to handle the computational cost of the bag-of-words approach. When optimizing a system based on the bag-of-words approach, the goal is to minimize the time it takes to process batches of images. this paper, we analyze the bag-of-words model for visual categorization in terms of computational cost and identify two major bottlenecks: the quantization step and the classification step. We address these two bottlenecks by proposing two efficient algorithms for quantization and classification by exploiting the GPU hardware and the CUDA parallel programming model. The algorithms are designed to (1) keep categorization accuracy intact, (2) decompose the problem, and (3) give the same numerical results. In the experiments on large scale datasets, it is shown that, by using a parallel implementation on the Geforce GTX260 GPU, classifying unseen images is 4.8 times faster than a quad-core CPU version on the Core i7 920, while giving the exact same numerical results. In addition, we show how the algorithms can be generalized to other applications, such as text retrieval and video retrieval. Moreover, when the obtained speedup is used to process extra video frames in a video retrieval benchmark, the accuracy of visual categorization is improved by 29%.\",\"1941-0077\",\"\",\"10.1109/TMM.2010.2091400\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5625914\",\"Bag-of-words;computational efficiency;General-Purpose computation on Graphics Processing Units (GPGPU);image classification;image/video retrieval;multicore processing;parallel processing;support vector machines\",\"Visualization;Graphics processing unit;Kernel;Computational modeling;Feature extraction;Vector quantization;Acceleration\",\"computer graphic equipment;coprocessors;image classification;image segmentation;meta data;parallel programming;video signal processing\",\"visual categorization;GPU;digital image;digital video;textual metadata;parallel architecture;quantization step;classification step;CUDA;parallel programming model;Geforce GTX260;image classification;Core i7 920;computational efficiency;graphics processing unit;general purpose computation\",\"\",\"51\",\"5\",\"51\",\"IEEE\",\"11 Nov 2010\",\"\",\"\",\"IEEE\",\"IEEE Journals\"\n\"Parallelization and Optimization of SIFT on GPU Using CUDA\",\"Z. Yonglong; M. Kuizhi; J. Xiang; D. Peixiang\",\"NA; NA; Xian Jiaotong Univ., Xian, China; NA\",\"2013 IEEE 10th International Conference on High Performance Computing and Communications & 2013 IEEE International Conference on Embedded and Ubiquitous Computing\",\"12 Jun 2014\",\"2013\",\"\",\"\",\"1351\",\"1358\",\"Scale-invariant feature transform (SIFT) based feature extraction algorithm is widely applied to extract features from images, and it is very attractive to accelerate these SIFT based algorithms on GPU. In this paper, we present several parallel computing strategies, implement and optimize the SIFT algorithm using CUDA programming model on GPU. Each stage of SIFT is analyzed in detail to choose the parallel strategy. On the basis of the elementary CUDA-SIFT and CUDA architecture, we optimize the implementation from several aspects to speedup the CUDA-SIFT. Experimental results demonstrate that our implementation after optimization is 2.5 times faster than previous optimization, and our CUDA based SIFT can run at the speed of 20 frames per second on most images with 1280x 960 resolution in the test. Using 1920 x1440 image to test, we have obtained a speed of 11 frames per second on average, which is about 60 times faster than the CPU implementation of SIFT. In short, our implementation obtains appropriate accuracy and higher efficiency compared to CPU implementations and other GPU implementations, which is attributed to our dedicated optimization strategies.\",\"\",\"978-0-7695-5088-6\",\"10.1109/HPCC.and.EUC.2013.192\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6832074\",\"\",\"Graphics processing units;Instruction sets;Feature extraction;Convolution;Histograms;Optimization;Vectors\",\"graphics processing units;parallel architectures;parallel processing;transforms\",\"GPU;SIFT optimization;SIFT parallelization;scale invariant feature transform;feature extraction algorithm;parallel computing strategies;CUDA programming model;parallel strategy;CUDA architecture;CUDA-SIFT;CPU implementation\",\"\",\"5\",\"\",\"13\",\"\",\"12 Jun 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Simplifying the multi-GPU programming of a hyperspectral image registration algorithm\",\"J. Fernàndez-Fabeiro; A. Gonzalez-Escribano; D. R. Llanos\",\"Universidad de Valladolid,Departamento de Informaticá,Valladolid,Spain; Universidad de Valladolid,Departamento de Informaticá,Valladolid,Spain; Universidad de Valladolid,Departamento de Informaticá,Valladolid,Spain\",\"2019 International Conference on High Performance Computing & Simulation (HPCS)\",\"9 Sep 2020\",\"2019\",\"\",\"\",\"11\",\"18\",\"Hyperspectral image registration is a relevant task for real-time applications like environmental disasters management or search and rescue scenarios. Traditional algorithms for this problem were not really devoted to real-time performance. The HYFMGPU algorithm arose as a high-performance GPU-based solution to solve such a lack. Nevertheless, a single-GPU solution is not enough, as sensors are evolving and then generating images with finer resolutions and wider wavelength ranges. An MPI+CUDA multi-GPU implementation of HYFMGPU was previously presented. However, this solution shows the programming complexity of combining MPI with an accelerator programming model. In this paper we present a new and more abstract programming approach for this type of applications, which provides a high efficiency while simplifying the programming of the multi-device parts of the code. The solution uses Hitmap, a library to ease the programming of parallel applications based on distributed arrays. It uses a more algorithm-oriented approach than MPI, including abstractions for the automatic partition and mapping of arrays at runtime with arbitrary granularity, as well as techniques to build flexible communication patterns that transparently adapt to the data partitions. We show how these abstractions apply to this application class. We present a comparison of development effort metrics between the original MPI implementation and the one based on Hitmap, with reductions of up to 95% for the Halstead score in specific work redistribution steps. We finally present experimental results showing that these abstractions are internally implemented in a high efficient way that can reduce the overall performance time in up to 37% comparing with the original MPI implementation.\",\"\",\"978-1-7281-4484-9\",\"10.1109/HPCS48598.2019.9188064\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9188064\",\"Hyperspectral imaging;image registration;parallel libraries;distributed arrays;MPI;CUDA;GPGPU\",\"Programming;Graphics processing units;Hyperspectral imaging;Real-time systems;Libraries;Principal component analysis\",\"application program interfaces;emergency management;graphics processing units;hyperspectral imaging;image registration;message passing;parallel architectures\",\"multiGPU programming;hyperspectral image registration algorithm;real-time applications;environmental disasters management;search and rescue scenario;real-time performance;HYFMGPU algorithm;high-performance GPU-based solution;programming complexity;accelerator programming model;abstract programming approach;multidevice parts;Hitmap;parallel applications;distributed arrays;algorithm-oriented approach;application class;performance time\",\"\",\"\",\"\",\"29\",\"\",\"9 Sep 2020\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Two-stage Asynchronous Iterative Solvers for multi-GPU Clusters\",\"P. Nayak; T. Cojean; H. Anzt\",\"Karlsruhe Institute of Technology,Germany; Karlsruhe Institute of Technology,Germany; Karlsruhe Institute of Technology,Germany\",\"2020 IEEE/ACM 11th Workshop on Latest Advances in Scalable Algorithms for Large-Scale Systems (ScalA)\",\"31 Dec 2020\",\"2020\",\"\",\"\",\"9\",\"18\",\"Given the trend of supercomputers accumulating much of their compute power in GPU accelerators composed of thousands of cores and operating in streaming mode, global synchronization points become a bottleneck, severely confining the performance of applications. In consequence, asynchronous methods breaking up the bulk-synchronous programming model are becoming increasingly attractive. In this paper, we study a GPU-focused asynchronous version of the Restricted Additive Schwarz (RAS) method that employs preconditioned Krylov subspace methods as subdomain solvers. We analyze the method for various parameters such as local solver tolerance and iteration counts. Leveraging the multi-GPU architecture on Summit, we show that these two-stage methods are more memory and time efficient than asynchronous RAS using direct solvers. We also demonstrate the superiority over synchronous counterparts, and present results using one-sided CUDA-aware MPI on up to 36 NVIDIA V100 GPUs.\",\"\",\"978-1-6654-2270-3\",\"10.1109/ScalA51936.2020.00007\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9308758\",\"Asynchronous iterative methods;Schwarz methods;GPUs;Krylov subspace solvers\",\"Iterative methods;Convergence;Synchronization;Additives;Symmetric matrices;Sparse matrices;Programming\",\"graphics processing units;hardware accelerators;iterative methods;multiprocessing systems;parallel architectures;parallel machines\",\"multiGPU clusters;GPU accelerators;global synchronization points;GPU-focused asynchronous version;restricted additive Schwarz method;preconditioned Krylov subspace methods;subdomain solvers;local solver tolerance;iteration counts;multiGPU architecture;two-stage asynchronous iterative solvers;supercomputers;Summit;asynchronous RAS;one-sided CUDA-aware MPI;NVIDIA V100 GPUs\",\"\",\"\",\"\",\"14\",\"\",\"31 Dec 2020\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Parallel Fast Pencil Drawing Generation Algorithm Based on GPU\",\"J. Qiu; B. Liu; J. He; C. Liu; Y. Li\",\"College of Information Engineering, Northwest A&F University, Yangling, China; College of Information Engineering, Northwest A&F University, Yangling, China; College of Mathematics and Computer Science, Yan’an University, Yan’an, China; College of Information Engineering, Northwest A&F University, Yangling, China; School of Computer Science and Technology, Xi’an University of Science and Technology, Xi’an, China\",\"IEEE Access\",\"5 Jul 2019\",\"2019\",\"7\",\"\",\"83543\",\"83555\",\"With the development of image processing technology, pencil drawing has been widely used in video games and mobile phone applications. However, the existing pencil drawing algorithms require a large amount of time to convert a real picture into a pencil drawing; hence, it is difficult to apply them to real-time systems. This paper proposes a parallel fast pencil drawing generation algorithm based on the graphics processing unit (GPU) to accelerate the real-time rendering process of sketch painting. The parallelism of the pencil drawing generation algorithm is identified via a theoretical analysis at first. Then, sub-algorithms of the sequential algorithm are designed in parallel using the compute unified device architecture (CUDA) programming model and executed via thread-level parallel techniques. Furthermore, an optimal cache pattern of data that reduce the access time of the most frequently used data is structured using shared memory and constant memory. Finally, task-level parallelism is achieved by the CUDA stream technology, which overlaps independent sub-tasks for further acceleration. On the CUDA platform, the experimental results demonstrate that the proposed parallel algorithm can achieve a significant increase in speedup. The proposed algorithm achieves a performance improvement of 448.59 times compared with the sequential algorithm, on 2560×1920-resolution images, and maintains a high degree of similarity with the real pencil paintings. Hence, the proposed algorithm is suitable for real-time pencil drawing rendering and has promising application prospects in non-photorealistic rendering.\",\"2169-3536\",\"\",\"10.1109/ACCESS.2019.2924658\",\"National Natural Science Foundation of China(grant numbers:61602388); Natural Science Basic Research Plan in Shaanxi Province of China(grant numbers:2017JM6059); Fundamental Research Funds for the Central Universities(grant numbers:2452019064); Postdoctoral Science Foundation of Shaanxi Province of China(grant numbers:2016BSHEDZZ121); China Postdoctoral Science Foundation(grant numbers:2017M613216,2018M633585); Natural Science Basic Research Plan in Shaanxi Province of China(grant numbers:2018JQ6060); Key Program of the National Natural Science Foundation of China(grant numbers:61834005); Fundamental Research Funds for the Central Universities(grant numbers:2452016081); Doctoral Starting up Foundation of Yan’an University(grant numbers:YDBK2019-06); Northwest A and F University(grant numbers:2201810712307); \",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8744506\",\"Non-photorealistic rendering;pencil drawing;parallel algorithm;GPU platform;convolution operation;CUDA\",\"Graphics processing units;Rendering (computer graphics);Instruction sets;Histograms;Parallel processing;STEM;Real-time systems\",\"graphics processing units;image resolution;parallel architectures;real-time systems;rendering (computer graphics)\",\"parallel algorithm;sequential algorithm;parallel fast pencil drawing generation algorithm;image processing technology;real-time rendering process;thread-level parallel techniques;task-level parallelism;CUDA programming model;compute unified device architecture;real-time pencil drawing rendering;pencil drawing algorithms\",\"\",\"3\",\"\",\"37\",\"CCBY\",\"24 Jun 2019\",\"\",\"\",\"IEEE\",\"IEEE Journals\"\n\"An Asynchronous Parallel Implementation of Multilevel Fast Multipole Algorithm on GPU Cluster for 3D Electromagnetic Scattering Problems\",\"R. -P. Xi; W. -J. He; M. -L. Yang; X. -Q. Sheng\",\"Center for Electromagnetic Simulation, School of Information and Electronics, Beijing Institute of Technology,Beijing,China,100081; Center for Electromagnetic Simulation, School of Information and Electronics, Beijing Institute of Technology,Beijing,China,100081; Center for Electromagnetic Simulation, School of Information and Electronics, Beijing Institute of Technology,Beijing,China,100081; Center for Electromagnetic Simulation, School of Information and Electronics, Beijing Institute of Technology,Beijing,China,100081\",\"2021 International Applied Computational Electromagnetics Society (ACES-China) Symposium\",\"8 Nov 2021\",\"2021\",\"\",\"\",\"1\",\"2\",\"This paper presents a CPU/GPU asynchronous computing pattern based improved parallel multilevel fast multipole algorithm (MLFMA) for 3D electromagnetic scattering problems on GPU Cluster. In the presented parallel implementation, the matrix assembly process of the MLFMA is decomposed into CPU execution and GPU execution two parts. The former is performed on CPU using OpenMP multi-threading programming model, while the latter is performed on GPU with CUDA programming model. The execution time between the two parts is overlapped by using the feature of asynchronous execution between CPU and GPU. The performance of the proposed parallel implementation is investigated in terms of accuracy and efficiency. Numerical results show that, with the proposed parallel approach, over 10% speed-up can be attained, compared with the original parallel implementation.\",\"\",\"978-1-7335096-1-9\",\"10.23919/ACES-China52398.2021.9581392\",\"National Key R&D Program of China(grant numbers:2017YFB0202500); NSFC(grant numbers:61971034); \",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9581392\",\"Multilevel fast multipole algorithm;OpenMP;CUDA;Asynchronous Computing;scattering\",\"Three-dimensional displays;Runtime;Computational modeling;Electromagnetic scattering;Graphics processing units;Programming;Computational electromagnetics\",\"\",\"\",\"\",\"\",\"\",\"4\",\"\",\"8 Nov 2021\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Accelerating DNN Inference with GraphBLAS and the GPU\",\"X. Wang; Z. Lin; C. Yang; J. D. Owens\",\"University of California, Davis,Department of Computer Science,Davis,California,95616; University of California, Davis,Department of Electrical & Computer Engineering,Davis,California,95616; University of California, Davis,Department of Electrical & Computer Engineering,Davis,California,95616; University of California, Davis,Department of Electrical & Computer Engineering,Davis,California,95616\",\"2019 IEEE High Performance Extreme Computing Conference (HPEC)\",\"28 Nov 2019\",\"2019\",\"\",\"\",\"1\",\"6\",\"This work addresses the 2019 Sparse Deep Neural Network Graph Challenge with an implementation of this challenge using the GraphBLAS programming model. We demonstrate our solution to this challenge with GraphBLAST, a GraphBLAS implementation on the GPU, and compare it to SuiteSparse, a GraphBLAS implementation on the CPU. The GraphBLAST implementation is 1.94 × faster than Suite-Sparse; the primary opportunity to increase performance on the GPU is a higher-performance sparse-matrix-times-sparse-matrix (SpGEMM) kernel.\",\"2643-1971\",\"978-1-7281-5020-8\",\"10.1109/HPEC.2019.8916498\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8916498\",\"\",\"Sparse matrices;Graphics processing units;Neurons;Matlab;Runtime;Neural networks;Memory management\",\"graph theory;graphics processing units;inference mechanisms;multiprocessing systems;neural nets;sparse matrices\",\"GraphBLAS implementation;GPU;GraphBLAST implementation;Suite-Sparse;DNN Inference;2019 Sparse Deep Neural Network Graph Challenge;GraphBLAS programming model;sparse-matrix-times-sparse-matrix kernel\",\"\",\"4\",\"\",\"14\",\"\",\"28 Nov 2019\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"CNN based high performance computing for real time image processing on GPU\",\"S. Potluri; A. Fasih; L. K. Vutukuru; F. A. Machot; K. Kyamakya\",\"Transportation Informatics Group, Alpen-Adria University of Klagenfurt, Klagenfurt, Austria; Transportation Informatics Group, Alpen-Adria University of Klagenfurt, Klagenfurt, Austria; Transportation Informatics Group, Alpen-Adria University of Klagenfurt, Klagenfurt, Austria; Transportation Informatics Group, Alpen-Adria University of Klagenfurt, Klagenfurt, Austria; Transportation Informatics Group, Alpen-Adria University of Klagenfurt, Klagenfurt, Austria\",\"Proceedings of the Joint INDS'11 & ISTET'11\",\"22 Sep 2011\",\"2011\",\"\",\"\",\"1\",\"7\",\"Many of the basic image processing tasks suffer from processing overhead to operate over the whole image. In real time applications the processing time is considered as a big obstacle for its implementations. A High Performance Computing (HPC) platform is necessary in order to solve this problem. The usage of hardware accelerator make the processing time low. In recent developments, the Graphics Processing Unit (GPU) is being used in many applications. Along with the hardware accelerator a proper choice of the computing algorithm makes it an added advantage for fast processing of images. The Cellular Neural Network (CNN) is a large-scale nonlinear analog circuit able to process signals in real time [1]. In this paper, we develop a new design in evaluation of image processing algorithms on the massively parallel GPUs with CNN implementation using Open Computing Language (OpenCL) programming model. This implementation uses the Discrete Time CNN (DT-CNN) model which is derived from originally proposed CNN model. The inherent massive parallelism of CNN along with GPUs makes it an advantage for high performance computing platform [2]. The advantage of OpenCL makes the design to be portable on all the available graphics processing devices and multi core processors. Performance evaluation is done in terms of execution time with both device (i.e. GPU) and host (i.e. CPU).\",\"2324-8335\",\"978-1-4577-0762-9\",\"10.1109/INDS.2011.6024781\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6024781\",\"Image processing;Hardware accelerators;Cellular Neural Networks;GPUs;High Performance Computing;OpenCL\",\"Graphics processing unit;Mathematical model;Kernel;Image processing;Equations;Computer architecture\",\"analogue circuits;cellular neural nets;computer graphic equipment;coprocessors;image processing;multiprocessing systems;parallel programming\",\"CNN based high performance computing;real time image processing;hardware accelerator;graphical processing unit;cellular neural network;large-scale nonlinear analog circuit;signal processing;parallel GPU;open computing language programming model;discrete time CNN model;DT-CNN model;OpenCL;multicore processor;performance evaluation\",\"\",\"23\",\"\",\"17\",\"\",\"22 Sep 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Accelerating scientific applications using GPU's\",\"M. Taher\",\"Ain Shams University, Cairo, Egypt\",\"2009 4th International Design and Test Workshop (IDT)\",\"2 Feb 2010\",\"2009\",\"\",\"\",\"1\",\"6\",\"Graphics processing units (GPUs) have emerged as a powerful platform for high-performance computation. They have been successfully used to accelerate many scientific workloads. Typically, the computationally intensive parts of the application are offloaded to the GPU, which serves as the CPU's parallel coprocessor. The key to effective utilization of GPUs for scientific computing is the design and implementation of efficient data-parallel algorithms that can scale to hundreds of tightly coupled processing units. Many compute intensive scientific applications are well suited to GPUs, due to their extensive computational requirements, and because they lend themselves to parallel processing implementations. The use of multiple GPUs can bring even more computational power to bear on highly parallelizable computational problems. This paper discusses performance results for some fundamental cores of scientific applications such as fft, smith-waterman sequence alignment algorithm, and data encryption standard (DES) on the Nvidia GPUs using the CUDA programming model. Results have demonstrated acceleration up to 25 times speedup using a single G80 Nvidia GPU.\",\"2162-061X\",\"978-1-4244-5750-2\",\"10.1109/IDT.2009.5404114\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5404114\",\"\",\"Acceleration;Yarn;Graphics;Concurrent computing;Hardware;Parallel processing;Computer architecture;Coprocessors;Computer applications;Cryptography\",\"computer graphic equipment;coprocessors\",\"graphics processing units;CPU parallel coprocessor;scientific computing;efficient data parallel algorithms;parallel processing;smith-waterman sequence alignment algorithm;data encryption standard;CUDA programming model;Nvidia GPU\",\"\",\"2\",\"\",\"11\",\"\",\"2 Feb 2010\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"A large-scale cross-architecture evaluation of thread-coarsening\",\"A. Magni; C. Dubach; M. F. P. O'Boyle\",\"University of Edinburgh, UK; University of Edinburgh, UK; University of Edinburgh, UK\",\"SC '13: Proceedings of the International Conference on High Performance Computing, Networking, Storage and Analysis\",\"14 Aug 2014\",\"2013\",\"\",\"\",\"1\",\"11\",\"OpenCL has become the de-facto data parallel programming model for parallel devices in today's high-performance supercomputers. OpenCL was designed with the goal of guaranteeing program portability across hardware from different vendors. However, achieving good performance is hard, requiring manual tuning of the program and expert knowledge of each target device. In this paper we consider a data parallel compiler transformation - thread-coarsening - and evaluate its effects across a range of devices by developing a source-to-source OpenCL compiler based on LLVM. We thoroughly evaluate this transformation on 17 benchmarks and five platforms with different coarsening parameters giving over 43,000 different experiments. We achieve speedups over 9x on individual applications and average speedups ranging from 1.15x on the Nvidia Kepler GPU to 1.50x on the AMD Cypress GPU. Finally, we use statistical regression to analyse and explain program performance in terms of hardware-based performance counters.\",\"2167-4337\",\"978-1-4503-2378-9\",\"10.1145/2503210.2503268\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6877444\",\"GPU;OpenCL;Thread coarsening;Regression trees\",\"Instruction sets;Performance evaluation;Kernel;Hardware;Benchmark testing;Graphics processing units;Multicore processing\",\"graphics processing units;multi-threading;program compilers;regression analysis;software architecture;software performance evaluation;software portability\",\"large-scale cross-architecture evaluation;thread-coarsening parameters;de-facto data parallel programming model;high-performance supercomputers;program portability;data parallel compiler trans- formation;source-to-source OpenCL compiler;LLVM;Nvidia Kepler GPU;AMD Cypress GPU;statistical regression;program performance;hardware-based performance counters\",\"\",\"24\",\"\",\"28\",\"\",\"14 Aug 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"StreamMR: An Optimized MapReduce Framework for AMD GPUs\",\"M. Elteir; H. Lin; W. Feng; T. Scogland\",\"City of Sci. Researches & Technol. Applic., Egypt; Dept. of Comput. Sci., Virginia Tech, Blacksburg, VA, USA; Dept. of Comput. Sci., Virginia Tech, Blacksburg, VA, USA; Dept. of Comput. Sci., Virginia Tech, Blacksburg, VA, USA\",\"2011 IEEE 17th International Conference on Parallel and Distributed Systems\",\"2 Jan 2012\",\"2011\",\"\",\"\",\"364\",\"371\",\"MapReduce is a programming model from Google that facilitates parallel processing on a cluster of thousands of commodity computers. The success of MapReduce in cluster environments has motivated several studies of implementing MapReduce on a graphics processing unit (GPU), but generally focusing on the NVIDIA GPU. Our investigation reveals that the design and mapping of the MapReduce framework needs to be revisited for AMD GPUs due to their notable architectural differences from NVIDIA GPUs. For instance, current state-of-the-art MapReduce implementations employ atomic operations to coordinate the execution of different threads. However, atomic operations can implicitly cause inefficient memory access, and in turn, severely impact performance. In this paper, we propose Streamer, an OpenCL MapReduce framework optimized for AMD GPUs. With efficient atomic-free algorithms for output handling and intermediate result shuffling, Stream MR is superior to atomic-based MapReduce designs and can outperform existing atomic-free MapReduce implementations by nearly five-fold on an AMD Radeon HD 5870.\",\"1521-9097\",\"978-0-7695-4576-9\",\"10.1109/ICPADS.2011.131\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6121299\",\"atomics;parallel computing;AMD GPU;GPGPU;MapReduce;Mars;MapCG;OpenCL\",\"Instruction sets;Kernel;Mars;Graphics processing unit;Programming;High definition video;Optimization\",\"graphics processing units;parallel processing;workstation clusters\",\"StreamMR;optimized MapReduce framework;AMD GPU;programming model;parallel processing;commodity computers;cluster environments;graphics processing unit;NVIDIA GPU;OpenCL MapReduce framework;atomic-free algorithm\",\"\",\"20\",\"1\",\"19\",\"\",\"2 Jan 2012\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Evaluating OpenMP 4.0's Effectiveness as a Heterogeneous Parallel Programming Model\",\"M. Martineau; S. McIntosh-Smith; W. Gaudin\",\"HPC Group, Univ. of Bristol, Bristol, UK; HPC Group, Univ. of Bristol, Bristol, UK; Atomic Weapons Establ., Aldermaston, UK\",\"2016 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW)\",\"4 Aug 2016\",\"2016\",\"\",\"\",\"338\",\"347\",\"Although the OpenMP 4.0 standard has been available since 2013, support for GPUs has been absent up until very recently, with only a handful of experimental compilers available. In this work we evaluate the performance of Cray's new NVIDIA GPU targeting implementation of OpenMP 4.0, with the mini-apps TeaLeaf, CloverLeaf and BUDE. We successfully port each of the applications, using a simple and consistent design throughout, and achieve performance on an NVIDIA K20X that is comparable to Cray's OpenACC in all cases. BUDE, a compute bound code, required 2.2x the runtime of an equivalently optimised CUDA code, which we believe is caused by an inflated frequency of control flow operations and less efficient arithmetic optimisation. Impressively, both TeaLeaf and CloverLeaf, memory bandwidth bound codes, only required 1.3x the runtime of hand-optimised CUDA implementations. Overall, we find that OpenMP 4.0 is a highly usable open standard capable of performant heterogeneous execution, making it a promising option for scientific application developers.\",\"\",\"978-1-5090-3682-0\",\"10.1109/IPDPSW.2016.70\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7529889\",\"high performance computing;parallel computing;application programming interfaces;OpenMP;performance portability\",\"Standards;Graphics processing units;Performance evaluation;Complexity theory;Parallel processing;Parallel programming;Runtime\",\"application program interfaces;graphics processing units;optimising compilers;parallel architectures;parallel programming;software performance evaluation\",\"OpenMP 4.0 effectiveness evaluation;heterogeneous parallel programming model;OpenMP 4.0 standard;compilers;NVIDIA GPU targeting implementation;mini-apps;TeaLeaf;CloverLeaf;BUDE;NVIDIA K20X;OpenACC;BUDE;compute bound code;equivalently optimised CUDA code;control flow operations;arithmetic optimisation;memory bandwidth bound codes;hand-optimised CUDA implementations;heterogeneous execution;scientific application developers\",\"\",\"18\",\"\",\"19\",\"\",\"4 Aug 2016\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"The Research on Parallel Optimization of SAR Imaging R-D Algorithm Based on CUDA\",\"P. Wei; J. Du; S. Sui; Y. Chen\",\"Luoyang Electronic Equipment Test Center,LEETC, Luoyang, China; Luoyang Electronic Equipment Test Center,LEETC, Luoyang, China; Luoyang Electronic Equipment Test Center,LEETC, Luoyang, China; Luoyang Electronic Equipment Test Center,LEETC, Luoyang, China\",\"2018 10th International Conference on Communication Software and Networks (ICCSN)\",\"11 Oct 2018\",\"2018\",\"\",\"\",\"526\",\"530\",\"Synthetic Aperture Radar (SAR) imaging technology is widely used in the field of remote sensing observation, navigation positioning and so on, SAR imaging is large in data scale and long in operating time. Based on the Compute Unified Device Architecture (CUDA) programming model, the SAR imaging R-D algorithm is designed and implemented for parallel optimization on the CPU-GPU heterogeneous platform and tested on the GPU Tesla K20. The test shows that the efficiency of the core steps of R-D algorithm has been greatly improved.\",\"2472-8489\",\"978-1-5386-7223-5\",\"10.1109/ICCSN.2018.8488250\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8488250\",\"SAR;parallel optimization;CUDA programming model\",\"Graphics processing units;Azimuth;Imaging;Instruction sets;Radar polarimetry;Radar imaging;Programming\",\"graphics processing units;microprocessor chips;parallel architectures;radar imaging;synthetic aperture radar\",\"parallel optimization;R-D algorithm;CUDA;Synthetic Aperture Radar imaging technology;remote sensing observation;navigation positioning;SAR imaging;data scale;Compute Unified Device Architecture;CPU-GPU heterogeneous platform\",\"\",\"\",\"\",\"13\",\"\",\"11 Oct 2018\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Exploiting Task-Parallelism on GPU Clusters via OmpSs and rCUDA Virtualization\",\"A. Castelló; R. Mayo; J. Planas; E. S. Quintana-Ortí\",\"Dept. de Ing. y Cienc. de Comput., Univ. Jaume I, Castellon, Spain; Dept. de Ing. y Cienc. de Comput., Univ. Jaume I, Castellon, Spain; Barcelona Supercomput. Center, Barcelona, Spain; Dept. de Ing. y Cienc. de Comput., Univ. Jaume I, Castellon, Spain\",\"2015 IEEE Trustcom/BigDataSE/ISPA\",\"3 Dec 2015\",\"2015\",\"3\",\"\",\"160\",\"165\",\"OmpSs is a task-parallel programming model consisting of a reduced collection of OpenMP-like directives, a front-end compiler, and a runtime system. This directive-based programming interface helps developers accelerate their application's execution, e.g. in a cluster equipped with graphics processing units (GPUs), with a low programming effort. On the other hand, the virtualization package rCUDA provides seamless and transparent remote access to any CUDA GPU in a cluster, via the CUDA Driver and Runtime programming interfaces. In this paper we investigate the hurdles and practical advantages of combining these two technologies. Our experimental study targets two cluster configurations: a system where all the GPUs are located into a single cluster node, and a cluster with the GPUs distributed among the nodes. Two applications, the N-body particle simulation and the Cholesky factorization of a dense matrix, are employed to expose the bottlenecks and performance of a remote virtualization solution applied to these two OmpSs task-parallel codes.\",\"\",\"978-1-4673-7952-6\",\"10.1109/Trustcom.2015.626\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7345642\",\"Task parallelism;graphics processing units (GPUs);OmpSs;CUDA;remote virtualization\",\"Graphics processing units;Servers;Virtualization;Runtime;Message systems;Programming;Instruction sets\",\"device drivers;graphics processing units;matrix decomposition;parallel architectures;parallel programming;pattern clustering;program compilers;task analysis;virtualisation\",\"OmpSs task parallel code;task parallel programming model;OpenMP-like directive;frontend compiler;runtime system;directive-based programming interface;application execution;graphics processing unit;GPU;rCUDA;CUDA driver;runtime programming interface;cluster configuration;single cluster node;N-body particle simulation;Cholesky factorization;dense matrix;remote virtualization package\",\"\",\"1\",\"\",\"20\",\"\",\"3 Dec 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"A Translation Framework for Virtual Execution Environment on CPU/GPU Architecture\",\"G. Dong; K. Chen; E. Zhu; Y. Zhang; Z. Qi; H. Guan\",\"Sch. of Software, Shanghai Jiaotong Univ., Shanghai, China; Sch. of Inf. Security Eng., Shanghai Jiaotong Univ., Shanghai, China; Dept. of Comput. Sci. & Eng., Shanghai Jiaotong Univ., Shanghai, China; Sch. of Software, Shanghai Jiaotong Univ., Shanghai, China; Sch. of Software, Shanghai Jiaotong Univ., Shanghai, China; Dept. of Comput. Sci. & Eng., Shanghai Jiaotong Univ., Shanghai, China\",\"2010 3rd International Symposium on Parallel Architectures, Algorithms and Programming\",\"17 Feb 2011\",\"2010\",\"\",\"\",\"130\",\"137\",\"GPUs are many-core processors with tremendous computational power. However, as automatic parallelization has not been realized yet, developing high-performance parallel code for GPUs is still very challenging. The paper presents a novel translation framework designed for virtual execution environment based on CPU/GPU architecture. It addresses two major challenges of taking advantage of general purpose computation on graphics processing units (GPGPU) to improve performance: no rewriting the existing source code and resolving binary compatibility issues between different GPUs. The translation framework uses semi-automatic parallelization technology to port existing code to explicitly parallel programming models. It not only offers a mapping strategy from X86 platform to CUDA programming model, but also synchronizes the execution between the CPU and the GPUs. The input to our translation framework is parallelizable part of the program within binary code. With an additional information related to the parallelizable part, the translation framework transforms the sequential code into PTX code and execute it on GPUs. Experimental results on several programs from CUDA SDK Code Samples and Parboil Benchmark Suite show that our translation framework could achieve very high performance, even up to several tens of times speedup over the X86 native version.\",\"2168-3042\",\"978-1-4244-9482-8\",\"10.1109/PAAP.2010.53\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5715074\",\"GPGPU;Parallelization;Translator;CUDA\",\"Graphics processing unit;Registers;Kernel;Instruction sets;Driver circuits;Programming;Computer architecture\",\"computer graphic equipment;coprocessors;multiprocessing systems;parallel architectures\",\"virtual execution environment;CPU-GPU Architecture;many core processors;X86 platform;CUDA programming model;CUDA SDK code samples;Parboil benchmark suite\",\"\",\"\",\"1\",\"25\",\"\",\"17 Feb 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Parallel quantum computer simulation on the GPU\",\"A. Amariutei; S. Caraiman\",\"Faculty of Automatic Control and Computer Engineering, Technical University of Iasi, Romania; Faculty of Automatic Control and Computer Engineering, Technical University of Iasi, Romania\",\"15th International Conference on System Theory, Control and Computing\",\"28 Nov 2011\",\"2011\",\"\",\"\",\"1\",\"6\",\"Simulation of quantum computers using classical computers is a hard problem with high memory and computational requirements. Parallelization can alleviate this problem, allowing the simulation of more qubits at the same time or the same number of qubits to be simulated in less time. A promising approach is to exploit the high performance computing capabilities provided by the latest graphical processing units. In this paper we present a parallel implementation of the QC-lib quantum computer simulator on the GPU using the CUDA programming model. The proposed scheme for partitioning the terms that describe the state of a quantum register takes advantage of the specific characteristics of the CUDA memory spaces and allows for an efficient parallelization of the general singe qubit operator. Experimental results indicate that very good speed-ups can be obtained in contrast with the sequential implementation.\",\"\",\"978-973-621-321-2\",\"\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6085728\",\"\",\"Quantum computing;Graphics processing unit;Computational modeling;Registers;Computers;Instruction sets;Quantum cascade lasers\",\"computer graphic equipment;coprocessors;parallel programming;quantum computing\",\"parallel quantum computer simulation;GPU;high performance computing capability;graphical processing unit;parallel implementation;QC-lib quantum computer simulator;CUDA programming model;quantum register\",\"\",\"\",\"\",\"33\",\"\",\"28 Nov 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Solving N-Queens problem on GPU architecture using OpenCL with special reference to synchronization issues\",\"K. Thouti; S. R. Sathe\",\"Dept. of Computer Science & Engg., Visvesvaraya National Institute of Technology, Nagpur, India; Dept. of Computer Science & Engg., Visvesvaraya National Institute of Technology, Nagpur, India\",\"2012 2nd IEEE International Conference on Parallel, Distributed and Grid Computing\",\"7 Feb 2013\",\"2012\",\"\",\"\",\"806\",\"810\",\"The N-Queens problem is to place N queens on an N × N chessboard such that no two queens attack each other. General purpose computing on graphics processing units (GPGPU) is fast becoming a common feature of high performance computing. This paper investigates cost of finding the solutions to N-Queens problem on GPGPU architecture using OpenCL programming model. We extensively analyze the N-Queen problem with respect to local, global memory parameters and atomicity and synchronization issues in OpenCL and its effects on performance. Experimental results are shown on NVidia Quadro FX 3800 GPU. Using Queens between 16 and 21, we observed average speedup of 20x.\",\"\",\"978-1-4673-2925-5\",\"10.1109/PDGC.2012.6449926\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6449926\",\"GPGPU;OpenCL;N-Queen problem;Parallel copmuting;Graphical processors\",\"Performance evaluation;Graphics processing units;Artificial neural networks;Synchronization\",\"application program interfaces;game theory;graphics processing units;multiprocessing systems;parallel architectures\",\"many-core processor;NVidia Quadro FX 3800 GPU;synchronization issues;atomicity issues;global memory parameters;local memory parameters;OpenCL programming model;general purpose computing-on-graphics processing units;GPGPU architecture;N-queens problem\",\"\",\"6\",\"\",\"26\",\"\",\"7 Feb 2013\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Efficient Parallel Preconditioned Conjugate Gradient Solver on GPU for FE Modeling of Electromagnetic Fields in Highly Dissipative Media\",\"A. F. P. de Camargos; V. C. Silva; J. Guichon; G. Munier\",\"Escola Politécnica da Universidade de São Paulo, São Paulo, Brazil; V. C. Silva is with the Escola Politécnica da Universidade de São Paulo, São Paulo, SP, 05508-010, Brazil; Laboratoire de Génie Electrique de Grenoble, CNRS, Saint Martin d'Hères, France; Laboratoire de Génie Electrique de Grenoble, CNRS, Saint Martin d'Hères, France\",\"IEEE Transactions on Magnetics\",\"26 Feb 2014\",\"2014\",\"50\",\"2\",\"569\",\"572\",\"We present a performance analysis of a parallel implementation of preconditioned conjugate gradient solvers using graphic processing units with compute unified device architecture programming model. The solvers were optimized for the solution of sparse systems of equations arising from finite-element analysis of electromagnetic phenomena involved in the diffusion of underground currents in both steady state and under time-harmonic current excitation. We used both shifted incomplete Cholesky factorization and incomplete LU factorization as preconditioners. The results show a significant speedup using the graphics processing unit compared with a serial CPU implementation.\",\"1941-0069\",\"\",\"10.1109/TMAG.2013.2285091\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6749203\",\"FEMs;graphic processing unit (GPU);linear systems;performance analysis\",\"Graphics processing units;Linear systems;Mathematical model;Convergence;Silicon carbide;Computer architecture;Sparse matrices\",\"absorbing media;electromagnetic fields;finite element analysis;graphics processing units;matrix decomposition\",\"parallel preconditioned conjugate gradient solver;graphic processing units;GPU;electromagnetic fields;dissipative media;unified device architecture programming;sparse systems;finite element analysis;electromagnetic phenomena;underground currents;time-harmonic current excitation;Cholesky factorization;graphics processing unit\",\"\",\"12\",\"\",\"15\",\"IEEE\",\"26 Feb 2014\",\"\",\"\",\"IEEE\",\"IEEE Journals\"\n\"Unlocking bandwidth for GPUs in CC-NUMA systems\",\"N. Agarwal; D. Nellans; M. O'Connor; S. W. Keckler; T. F. Wenisch\",University of Michigan; NVIDIA; NVIDIA; NVIDIA; University of Michigan,\"2015 IEEE 21st International Symposium on High Performance Computer Architecture (HPCA)\",\"9 Mar 2015\",\"2015\",\"\",\"\",\"354\",\"365\",\"Historically, GPU-based HPC applications have had a substantial memory bandwidth advantage over CPU-based workloads due to using GDDR rather than DDR memory. However, past GPUs required a restricted programming model where application data was allocated up front and explicitly copied into GPU memory before launching a GPU kernel by the programmer. Recently, GPUs have eased this requirement and now can employ on-demand software page migration between CPU and GPU memory to obviate explicit copying. In the near future, CC-NUMA GPU-CPU systems will appear where software page migration is an optional choice and hardware cache-coherence can also support the GPU accessing CPU memory directly. In this work, we describe the trade-offs and considerations in relying on hardware cache-coherence mechanisms versus using software page migration to optimize the performance of memory-intensive GPU workloads. We show that page migration decisions based on page access frequency alone are a poor solution and that a broader solution using virtual address-based program locality to enable aggressive memory prefetching combined with bandwidth balancing is required to maximize performance. We present a software runtime system requiring minimal hardware support that, on average, outperforms CC-NUMA-based accesses by 1.95 ×, performs 6% better than the legacy CPU to GPU memcpy regime by intelligently using both CPU and GPU memory bandwidth, and comes within 28% of oracular page placement, all while maintaining the relaxed memory semantics of modern GPUs.\",\"2378-203X\",\"978-1-4799-8930-0\",\"10.1109/HPCA.2015.7056046\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7056046\",\"\",\"Graphics processing units;Bandwidth;Memory management;Hardware;Runtime;Random access memory\",\"cache storage;graphics processing units;parallel processing;storage management\",\"GPU-based HPC applications;GDDR memory;GPU kernel;on-demand software page migration;CC-NUMA GPU-CPU systems;hardware cache-coherence;memory-intensive GPU workloads;virtual address-based program locality;aggressive memory prefetching;bandwidth balancing;software runtime system;minimal hardware support;CPU memory bandwidth;GPU memory bandwidth;oracular page placement;GPU relaxed memory semantics\",\"\",\"54\",\"1\",\"44\",\"\",\"9 Mar 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Design evaluation of OpenCL compiler framework for Coarse-Grained Reconfigurable Arrays\",\"H. Kim; M. Ahn; J. A. Stratton; W. W. Hwu\",\"Electrical and Computer Engineering, University of Illinois at Urbana-Champaign, USA; Samsung Advanced Institute of Technology, San 14-1, Nongseo-dong, Giheung-gu, Yongin-si, Geyonggi-do, Korea; Electrical and Computer Engineering, University of Illinois at Urbana-Champaign, USA; Electrical and Computer Engineering, University of Illinois at Urbana-Champaign, USA\",\"2012 International Conference on Field-Programmable Technology\",\"17 Jan 2013\",\"2012\",\"\",\"\",\"313\",\"320\",\"OpenCL is undoubtedly becoming one of the most popular parallel programming languages as it provides a standardized and portable programming model. However, adopting OpenCL for Coarse-Grained Reconfigurable Arrays (CGRA) is challenging due to divergent architecture capability compared to GPUs. In particular, CGRAs are designed to accelerate loop execution by software pipelining on a grid of functional units exploiting instruction-level parallelism. This is vastly different from a GPU in that it executes data parallel kernels using a large number of parallel threads. Therefore, an OpenCL compiler and runtime for CGRAs must map the threaded parallel programming model to a loop-parallel execution model so that the architecture can best utilize its resources. In this paper, we propose and evaluate a design for an OpenCL compiler framework for CGRAs. The proposed design is composed of a serializer and post optimizer. The serializer transforms parallel execution of work-items to an equivalent loop-based iterative execution in order to avoid expensive multithreading on CGRAs. The resulting code is further optimized by the post optimizer to maximize the coverage of software-pipelinable innermost loops. In order to achieve the goal, various loop-level optimizations can take place in the post optimizer using the loops introduced by the serializer for iterative execution of OpenCL kernels. We provide an analysis of the propose framework from a set of well-studied standard OpenCL kernels by comparing performance of various implementations of benchmarks.\",\"\",\"978-1-4673-2845-6\",\"10.1109/FPT.2012.6412155\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6412155\",\"OpenCL;GPU;Coarse-Grained Reconfigurable Arrays;CGRA;Samsung Reconfigurable Processor;SRP;RP\",\"Kernel;Computer architecture;Graphics processing units;Optimization;Programming;Hardware\",\"multi-threading;optimising compilers;parallel languages;pipeline processing;reconfigurable architectures;software performance evaluation\",\"design evaluation;OpenCL compiler framework;coarse-grained reconfigurable arrays;parallel programming languages;standardized programming model;portable programming model;CGRA;software pipelining;functional unit grid;instruction-level parallelism;parallel kernels;data execution;parallel threads;threaded parallel programming model;loop-parallel execution model;serializer;post optimizer;loop-based iterative execution;multithreading;innermost loop coverage maximization;loop-level optimizations;iterative OpenCL kernel execution\",\"\",\"6\",\"\",\"19\",\"\",\"17 Jan 2013\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"A programming model and runtime system for approximation-aware heterogeneous computing\",\"I. Parnassos; N. Bellas; N. Katsaros; N. Patsiatzis; A. Gkaras; K. Kanellis; C. D. Antonopoulos; M. Spyrou; M. Maroudas\",\"Electrical and Computer Engineering Department, University of Thessaly, Volos, Greece; Electrical and Computer Engineering Department, University of Thessaly, Volos, Greece; Electrical and Computer Engineering Department, University of Thessaly, Volos, Greece; Electrical and Computer Engineering Department, University of Thessaly, Volos, Greece; Electrical and Computer Engineering Department, University of Thessaly, Volos, Greece; Electrical and Computer Engineering Department, University of Thessaly, Volos, Greece; Electrical and Computer Engineering Department, University of Thessaly, Volos, Greece; Electrical and Computer Engineering Department, University of Thessaly, Volos, Greece; Electrical and Computer Engineering Department, University of Thessaly, Volos, Greece\",\"2017 27th International Conference on Field Programmable Logic and Applications (FPL)\",\"5 Oct 2017\",\"2017\",\"\",\"\",\"1\",\"4\",\"Heterogeneous platforms that include diverse architectures such as multicore CPUs, FPGAs and GPUs are becoming very popular due to their superior performance and energy efficiency. Besides heterogeneity, a promising approach for minimizing energy consumption is through approximate computing which relaxes the requirement that all parts of a program are considered equally important to the output quality, thus, all should be executed at full accuracy. Our work extends a traditional OpenMP-like programming model and runtime system to support seamless execution on hybrid architectures with approximation semantics. Starting from a common application code, annotated with our programming model, the programmer can not only target heterogeneous architectures comprising CPU, FPGA and GPU components, but can also regulate the amount of approximation. We evaluate our framework on a number of large-scale applications and demonstrate that the combination of heterogeneous and approximate computing can provide a powerful dynamic interplay between performance and output quality.\",\"1946-1488\",\"978-9-0903-0428-1\",\"10.23919/FPL.2017.8056774\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8056774\",\"\",\"Field programmable gate arrays;Kernel;Runtime;Graphics processing units;Programming;Histograms\",\"multiprocessing systems;parallel architectures;parallel programming;power aware computing\",\"energy consumption;approximate computing;runtime system;hybrid architectures;approximation semantics;heterogeneous architectures;approximation-aware heterogeneous computing;energy efficiency;OpenMP-like programming model\",\"\",\"1\",\"\",\"8\",\"\",\"5 Oct 2017\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Performance Models for Hybrid Programs Accelerated by GPUs\",\"A. Sasidharan\",\"Ansys, Inc,Lebanon,NH,USA\",\"2021 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW)\",\"24 Jun 2021\",\"2021\",\"\",\"\",\"641\",\"651\",\"This paper describes the use of statistical tools to model the performance of mixed device (hosts and devices) programs where hosts are CPUs and devices are GPUs. The purpose of GPUs is to accelerate compute-intensive sections of a program, thereby reducing total execution time, with side-effects including reduced machine usage and energy consumption. To model major and minor factors that affect the execution time of offloaded programs, we used a compute-intensive program with several GPU kernels. We have abstracted the hybrid program as a sequence of computations that access various types of memories (device caches, device shared memory, memory of other devices and host memory). In the programming model discussed, the role of a host is reduced to scheduling and coordinating execution of kernels across devices and communicating with other hosts. It can be extended to models where hosts perform computations or are obliterated. Experiments were designed to include a range of memory sizes and types. The performance models were trained, and their predictions were verified using test data.\",\"\",\"978-1-6654-3577-2\",\"10.1109/IPDPSW52791.2021.00098\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9460650\",\"Hybrid Programming Models;Multi-GPU architectures;Unified Memory;Performance Models;Statistics\",\"Performance evaluation;Processor scheduling;Multiprocessor interconnection;Computational modeling;Graphics processing units;Programming;Tools\",\"cache storage;graphics processing units;mathematics computing;message passing;multiprocessing systems;scheduling\",\"offloaded programs;compute-intensive program;GPU kernels;hybrid program;device caches;host memory;programming model;scheduling;memory sizes;performance models;hybrid programs;GPU;statistical tools;mixed device;compute-intensive sections;total execution time;reduced machine usage;energy consumption\",\"\",\"\",\"\",\"37\",\"\",\"24 Jun 2021\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"A GPU-inspired soft processor for high-throughput acceleration\",\"J. Kingyens; J. Gregory Steffan\",\"Department of Electrical and Computer Engineering, University of Toronto, Canada; Department of Electrical and Computer Engineering, University of Toronto, Canada\",\"2010 IEEE International Symposium on Parallel & Distributed Processing, Workshops and Phd Forum (IPDPSW)\",\"24 May 2010\",\"2010\",\"\",\"\",\"1\",\"8\",\"There is building interest in using FPGAs as accelerators for high-performance computing, but existing systems for programming them are so far inadequate. In this paper we propose a soft processor programming model and architecture inspired by graphics processing units (GPUs) that are well-matched to the strengths of FPGAs, namely highly-parallel and pipelinable computation. In particular, our soft processor architecture exploits multithreading and vector operations to supply a floating-point pipeline of 64 stages via hardware support for up to 256 concurrent thread contexts. The key new contributions of our architecture are mechanisms for managing threads and register files that maximize data-level and instruction-level parallelism while overcoming the challenges of port limitations of FPGA block memories, as well as memory and pipeline latency. Through simulation of a system that (i) supports AMD's CTM r5xx GPU ISA [1], and (ii) is realizable on an XtremeData XD1000 FPGA-based accelerator system, we demonstrate that our soft processor can achieve 100% utilization of the deeply-pipelined floating-point datapath.\",\"\",\"978-1-4244-6534-7\",\"10.1109/IPDPSW.2010.5470679\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5470679\",\"\",\"Acceleration;Field programmable gate arrays;Computer architecture;Memory management;Graphics processing unit;Multithreading;Hardware\",\"computer graphic equipment;coprocessors;field programmable gate arrays;multi-threading;parallel processing;pipeline processing\",\"high-throughput acceleration;soft processor programming;graphics processing units;pipelinable computation;highly-parallel computation;floating-point pipeline;multithreading process;instruction-level parallelism;AMD CTM r5xx GPU ISA;XtremeData XD1000 FPGA-based accelerator system;GPU\",\"\",\"7\",\"\",\"15\",\"\",\"24 May 2010\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"DistributedCL: A Framework for Transparent Distributed GPU Processing Using the OpenCL API\",\"A. Tupinambá; A. Sztajnberg\",\"Programa de Eng. Eletron. - PEL, Univ. do Estado do Rio de Janeiro - UERJ, Rio de Janeiro, Brazil; Dept. de Inf. e Cienc. da Comput., Univ. do Estado do Rio de Janeiro - UERJ, Rio de Janeiro, Brazil\",\"2012 13th Symposium on Computer Systems\",\"24 Dec 2012\",\"2012\",\"\",\"\",\"187\",\"193\",\"This paper presents the DistributedCL, a framework that provides the applications developed using the OpenCL interface location-transparent GPU processing. The application can explore distributed processing with no modification. The architecture of the framework and the programming model are presented, and the possible performance bottlenecks are discussed.\",\"\",\"978-1-4673-4468-5\",\"10.1109/WSCAD-SSC.2012.36\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6391781\",\"OpenCL;GPGPU;framework;distributed systems\",\"Graphics processing units;Kernel;Computational modeling;Electronic mail;Linux;Distributed processing;Computer architecture\",\"application program interfaces;graphics processing units\",\"transparent distributed GPU processing;OpenCL API;DistributedCL;OpenCL interface location-transparent GPU processing;performance bottlenecks\",\"\",\"1\",\"\",\"20\",\"\",\"24 Dec 2012\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Performance Analysis of Sequential and Parallel Programming Paradigms on CPU-GPUs Cluster\",\"B. N. Chandrashekhar; H. A. Sanjay\",\"Nitte Meenakshi Institute of Technology,Department of ISE,Bangalore,India,560064; Nitte Meenakshi Institute of Technology,Department of ISE,Bangalore,India,560064\",\"2021 Third International Conference on Intelligent Communication Technologies and Virtual Mobile Networks (ICICV)\",\"31 Mar 2021\",\"2021\",\"\",\"\",\"1205\",\"1213\",\"The entire world of parallel computing endured a change when accelerators are gradually embraced in today's high-performance computing cluster. A hybrid CPU-GPU cluster is required to speed up the complex computations by using parallel programming paradigms. This paper deals with performance evaluation of sequential, parallel and hybrid programming paradigms on the hybrid CPU-GPU cluster using the sorting strategies such as quick sort, heap sort and merge sort. In this research work performance comparison of C, MPI, and hybrid [MPI+CUDA] on CPU-GPUs hybrid systems are performed by using the sorting strategies. From the analysis it is observed that, the performance of parallel programming paradigm MPI is better when compared against sequential programming model. Also, research work evaluates the performance of CUDA on GPUs and hybrid programming model [MPI+CUDA] on CPU+GPU cluster using merge sort strategies and noticed that hybrid programming model [MPI+CUDA] has better performance against traditional approach and parallel programming paradigms MPI and CUDA When the overall performance of all three programming paradigms are compared, MPI+CUDA based on CPU+GPU environment gives the best speedup.\",\"\",\"978-1-6654-1960-4\",\"10.1109/ICICV50876.2021.9388469\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9388469\",\"Parallel programming pardigms;Performance model;hybrid parallel computing models;Central Processing Unit;compute unified device architecture;Graphics Processing Unit;message passing interface\",\"Performance evaluation;Parallel programming;Computational modeling;Graphics processing units;Programming;Parallel processing;Sorting\",\"application program interfaces;graphics processing units;merging;message passing;parallel architectures;parallel programming;pattern clustering;software performance evaluation;sorting\",\"sorting strategies;quick sort;heap sort;parallel programming paradigm MPI;sequential programming model;hybrid programming model;performance analysis;parallel computing;high performance computing cluster;hybrid CPU GPU cluster;CUDA performance evaluation;merge sort strategies\",\"\",\"\",\"\",\"21\",\"\",\"31 Mar 2021\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"An MPI/GPU parallelization of an interior penalty discontinuous Galerkin time domain method for Maxwell's equations\",\"S. Dosopoulos; J. D. Gardiner; J. Lee\",\"Electrical and Computer Engineering Department, Ohio State University, Columbus, Ohio, USA.; Ohio Supercomputer Center, Columbus, Ohio, USA.; Electrical and Computer Engineering Department, Ohio State University, Columbus, Ohio, USA.\",\"Radio Science\",\"9 Dec 2016\",\"2011\",\"46\",\"03\",\"1\",\"10\",\"In this paper we discuss our approach to the MPI/GPU implementation of an Interior Penalty Discontinuous Galerkin Time domain (IPDGTD) method to solve the time dependent Maxwell's equations. In our approach, we exploit the inherent DGTD parallelism and describe a combined MPI/GPU and local time stepping implementation. This combination is aimed at increasing efficiency and reducing computational time, especially for multiscale applications. The CUDA programming model was used, together with non-blocking MPI calls to overlap communications across the network. A 10X speedup compared to CPU clusters is observed for double precision arithmetic. Finally, for p = 1 basis functions, a good scalability with parallelization efficiency of 85% for up to 40 GPUs and 80% for up to 160 CPU cores was achieved on the Ohio Supercomputer Center's Glenn cluster.\",\"1944-799X\",\"\",\"10.1029/2011RS004689\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7776116\",\"\",\"Graphics processing units;Finite element analysis;Time-domain analysis;Scalability;Method of moments;Mathematical model;Hardware\",\"\",\"\",\"\",\"4\",\"\",\"\",\"\",\"9 Dec 2016\",\"\",\"\",\"AGU\",\"AGU Journals\"\n\"Parallel implementation of Multi-dimensional Ensemble Empirical Mode Decomposition\",\"L. Chang; M. Lo; N. Anssari; K. Hsu; N. E. Huang; W. W. Hwu\",\"University of Illinois at Urbana-Champaign, USA 61801; National Central University, Chungli, Taiwan 32001; University of Illinois at Urbana-Champaign, USA 61801; National Central University, Chungli, Taiwan 32001; National Central University, Chungli, Taiwan 32001; University of Illinois at Urbana-Champaign, USA 61801\",\"2011 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP)\",\"11 Jul 2011\",\"2011\",\"\",\"\",\"1621\",\"1624\",\"In this paper, we propose and evaluate two parallel implementations of Multi-dimensional Ensemble Empirical Mode Decomposition (MEEMD) for multi-core (CPU) and many-core (GPU) architectures. Relative to a sequential C implementation, our double precision GPU implementation, using the CUDA programming model, achieves up to 48.6x speedup on NVIDIA Tesla C2050. Our multi-core CPU implementation, using the OpenMP programming model, achieves up to 11.3x speedup on two octal-core Intel Xeon x7550 CPUs.\",\"2379-190X\",\"978-1-4577-0539-7\",\"10.1109/ICASSP.2011.5946808\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5946808\",\"Multi-dimensional Ensemble Empirical Mode Decomposition;GPGPU;OpenMP;CUDA\",\"Graphics processing unit;Parallel processing;Instruction sets;Spline;Interpolation;Programming\",\"computer graphic equipment;coprocessors;multiprocessing systems;parallel architectures;parallel programming\",\"parallel implementation;multidimensional ensemble empirical mode decomposition;multicore architecture;many-core architecture;sequential C implementation;double precision GPU implementation;CUDA programming model;NVIDIA Tesla C2050;multicore CPU implementation;OpenMP programming model;octal-core Intel Xeon CPU\",\"\",\"15\",\"\",\"17\",\"\",\"11 Jul 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"OpenCL - An effective programming model for data parallel computations at the Cell Broadband Engine\",\"J. Breitbart; C. Fohry\",\"Research Group Programming Languages / Methodologies, Universität Kassel, Germany; Research Group Programming Languages / Methodologies, Universität Kassel, Germany\",\"2010 IEEE International Symposium on Parallel & Distributed Processing, Workshops and Phd Forum (IPDPSW)\",\"24 May 2010\",\"2010\",\"\",\"\",\"1\",\"8\",\"Current processor architectures are diverse and heterogeneous. Examples include multicore chips, CPUs and the Cell Broadband Engine (CBE). The recent Open Compute Language (OpenCL) standard aims at efficiency and portability. This paper explores its efficiency when implemented on the CBE, without using CBE-specific features such as explicit asynchronous memory transfers. We based our experiments on two applications: matrix multiplication, and the client side of the Einstein@Home distributed computing project. Both were programmed in OpenCL, and then translated to the CBE. For matrix multiplication, we deployed different levels of OpenCL performance optimization, and observed that they pay off on the CBE. For the Einstein@Home application, our translated OpenCL version achieves almost the same speed as a native CBE version. Another main contribution of the paper is a proposal for an additional memory level in OpenCL, called static local memory. With little programming expense, it can lead to significant speedups such as factor seven for reduction. Finally, we studied two versions of the OpenCL to CBE mapping, in which the PPE component of the CBE does or does not take the role of a compute unit.\",\"\",\"978-1-4244-6534-7\",\"10.1109/IPDPSW.2010.5470823\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5470823\",\"\",\"Parallel programming;Concurrent computing;Engines;Computer architecture;Multicore processing;Hardware;Computer languages;Distributed computing;Optimization;Proposals\",\"computer graphics;coprocessors;matrix multiplication;parallel programming\",\"programming model;data parallel computations;cell broadband engine;multicore chips;GPU;open compute language;explicit asynchronous memory transfers;matrix multiplication;Einstein@Home distributed computing project;static local memory\",\"\",\"7\",\"\",\"12\",\"\",\"24 May 2010\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"GraphReduce: processing large-scale graphs on accelerator-based systems\",\"D. Sengupta; S. L. Song; K. Agarwal; K. Schwan\",NA; NA; NA; NA,\"SC '15: Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis\",\"26 Jan 2017\",\"2015\",\"\",\"\",\"1\",\"12\",\"Recent work on real-world graph analytics has sought to leverage the massive amount of parallelism offered by GPU devices, but challenges remain due to the inherent irregularity of graph algorithms and limitations in GPU-resident memory for storing large graphs. We present GraphReduce, a highly efficient and scalable GPU-based framework that operates on graphs that exceed the device's internal memory capacity. GraphReduce adopts a combination of edge- and vertex-centric implementations of the Gather-Apply-Scatter programming model and operates on multiple asynchronous GPU streams to fully exploit the high degrees of parallelism in GPUs with efficient graph data movement between the host and device. GraphReduce-based programming is performed via device functions that include gatherMap, gatherReduce, apply, and scatter, implemented by programmers for the graph algorithms they wish to realize. Extensive experimental evaluations for a wide variety of graph inputs and algorithms demonstrate that GraphReduce significantly outperforms other competing out-of-memory approaches.\",\"2167-4337\",\"978-1-4503-3723-6\",\"10.1145/2807591.2807655\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7832802\",\"\",\"Graphics processing units;Parallel processing;Programming;Memory management;Computational modeling;Acceleration;Partitioning algorithms\",\"data handling;graph theory;parallel processing\",\"GraphReduce;large-scale graphs processing;accelerator-based systems;graph analytics;parallelism;GPU devices;GPU-based framework;internal memory capacity;edge-centric implementations;vertex-centric implementations;gather-apply-scatter programming model;multiple asynchronous GPU streams;graph data movement;device functions;gatherMap;gatherReduce\",\"\",\"12\",\"1\",\"43\",\"\",\"26 Jan 2017\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Student Session: Practical Insights on Acceleration for 3D Lidar Data Processing\",\"I. Baek; K. Fuseini; R. R. Rajkumar\",Carnegie Mellon University; Carnegie Mellon University; Carnegie Mellon University,\"2020 IEEE 26th International Conference on Embedded and Real-Time Computing Systems and Applications (RTCSA)\",\"22 Sep 2020\",\"2020\",\"\",\"\",\"1\",\"2\",\"3D Lidar has become a widely used sensor technology in autonomous vehicles by providing accurate distance information. However, lidar pointcloud processing often involves sophisticated algorithms, and takes a lot of computational power. Many prior approaches relied on a GPU-based parallel programming model, such as CUDA, to accelerate these computations. However, little attention has been given to comparing different methods for selecting the most-suited programming and parallelization approaches for a given computing system. We present our findings and insights identified by implementing various parallel approaches considering both CPUs and GPUs. We also demonstrate significant acceleration results using a real-world perception algorithm developed to detect road boundaries. Finally, we compare the pros and cons of each method in terms of system architecture, programming model, and resource utilization to yield a better understanding of choosing the best parallelization approach for a given optimization objective.\",\"2325-1301\",\"978-1-7281-4403-0\",\"10.1109/RTCSA50079.2020.9203651\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9203651\",\"\",\"Graphics processing units;Data structures;Acceleration;Laser radar;Runtime;Sorting;Kernel\",\"data structures;graphics processing units;optical information processing;optical radar;parallel programming\",\"sensor technology;autonomous vehicles;accurate distance information;computational power;GPU-based parallel programming model;system architecture;parallelization approach;optimization objective;lidar point cloud processing;real-world perception algorithm;CUDA;CPUs;road boundaries detection;programming model;resource utilization;3D Lidar data processing acceleration\",\"\",\"\",\"\",\"2\",\"\",\"22 Sep 2020\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Connecting the dots: Triangle completion and related problems on large data sets using GPUs\",\"A. Chatterjee; S. Radhakrishnan; C. N. Sekharan\",\"School of Computer Science, University of Oklahoma, Norman, USA; School of Computer Science, University of Oklahoma, Norman, USA; Department of Computer Science, Loyola University Chicago, Chicago, IL, USA\",\"2014 IEEE International Conference on Big Data (Big Data)\",\"8 Jan 2015\",\"2014\",\"\",\"\",\"1\",\"8\",\"Studying the properties of Online Social Networks (OSNs) and other real world graphs have gained importance due to the large amount of information available from them. These large graphs contain data that can be analyzed and effectively used in advertising, security and improving the overall experience of the users of these networks. However, the analysis of these graphs for studying specific properties requires combinatorially explosive number of computations. Compute Unified Device Architecture (CUDA) is a programming model available from Nvidia for solving general-purpose problems using the massively parallel and highly multi-threaded Graphics Processing Units (GPUs). Therefore, using GPUs to solve these types of problems is appropriate. In addition, due to the properties of real-world data, the graphs being considered are sparse and have irregular data dependencies. Hence, using efficient techniques to store the graph data for initial preprocessing and final computation by taking advantage of heterogeneous CPU-GPU systems can address these issues. In this paper, we are interested in studying different properties of these real-world entities that transform into the following graph problems: a) identifying a missing edge, which when added would result in maximum increase in the number of triangles, b) identifying an existing edge whose removal would result in the maximum decrease in the number of triangles, c) identifying an existing edge whose removal would increase the number of connected components in the graph. In this paper, we develop and implement algorithms to solve the above problems using both CPU and GPU. Specifically, given a graph G = (V, E), we provide algorithms for the following: a) find (v<sub>i</sub>, V<sub>j</sub>) ∉ E, such that Δ<sub>f</sub> - Δ<sub>c</sub> is maximized, where Δ<sub>f</sub> and Δ<sub>c</sub> are the number of triangles in G<sub>m</sub> = (V, E ∪(v<sub>i</sub>, V<sub>j</sub>)) and G, respectively, b) find a (v<sub>i</sub>, V<sub>j</sub>) ϵ E, such that Δ<sub>c</sub> - Δ<sub>f</sub> is maximized, where Δ<sub>f</sub> and Δ<sub>c</sub> are the number of triangles in G<sub>m</sub> = (V, E \\ (v<sub>i</sub>, V<sub>j</sub>)) and G = (V, E), respectively, c) find a (v<sub>i</sub>, V<sub>j</sub>) ϵ E, such that Φ<sub>c</sub> > Φ<sub>c</sub>, where Φ<sub>c</sub> and Φ<sub>c</sub> are the number of connected components in G<sub>m</sub> = (V, E \\ (v<sub>i</sub>, V<sub>j</sub>)) and G = (V, E), respectively. We implement the algorithms using a GPU and achieve a 10 × speedup as compared to a sequential implementation. Thereafter, we design a heuristic for finding an edge whose existence would result in the maximum increase in the number of triangles. The heuristic is implemented and the results are reported and compared to those of the regular algorithm on the GPU.\",\"\",\"978-1-4799-5666-1\",\"10.1109/BigData.2014.7004365\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7004365\",\"Graph problems;Online Social Networks;Triangle completion;CUDA;GPU\",\"Joining processes;Graphics processing units;Algorithm design and analysis;Social network services;Testing;Educational institutions;Advertising\",\"computer graphics;graphics processing units;Internet\",\"triangle completion;large data sets;online social networks;OSN;compute unified device architecture;CUDA;programming model;Nvidia;general-purpose problems;multithreaded graphics processing units;irregular data dependencies;graph data;heterogeneous CPU-GPU systems\",\"\",\"3\",\"\",\"18\",\"\",\"8 Jan 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Speculative execution on multi-GPU systems\",\"G. Diamos; S. Yalamanchili\",\"School of Electrical and Computer Engineering, Georgia Institute of Technology, Atlanta, Georgia 30332-0250; School of Electrical and Computer Engineering, Georgia Institute of Technology, Atlanta, Georgia 30332-0250\",\"2010 IEEE International Symposium on Parallel & Distributed Processing (IPDPS)\",\"24 May 2010\",\"2010\",\"\",\"\",\"1\",\"12\",\"The lag of parallel programming models and languages behind the advance of heterogeneous many-core processors has left a gap between the computational capability of modern systems and the ability of applications to exploit them. Emerging programming models, such as CUDA and OpenCL, force developers to explicitly partition applications into components (kernels) and assign them to accelerators in order to utilize them effectively. An accelerator is a processor with a different ISA and micro-architecture than the main CPU. These static partitioning schemes are effective when targeting a system with only a single accelerator. However, they are not robust to changes in the number of accelerators or the performance characteristics of future generations of accelerators. In previous work, we presented the Harmony execution model for computing on heterogeneous systems with several CPUs and accelerators. In this paper, we extend Harmony to target systems with multiple accelerators using control speculation to expose parallelism. We refer to this technique as Kernel Level Speculation (KLS). We argue that dynamic parallelization techniques such as KLS are sufficient to scale applications across several accelerators based on the intuition that there will be fewer distinct accelerators than cores within each accelerator. In this paper, we use a complete prototype of the Harmony runtime that we developed to explore the design decisions and trade-offs in the implementation of KLS. We show that KLS improves parallelism to a sufficient degree while retaining a sequential programming model. We accomplish this by demonstrating good scaling of KLS on a highly heterogeneous system with three distinct accelerator types and ten processors.\",\"1530-2075\",\"978-1-4244-6443-2\",\"10.1109/IPDPS.2010.5470427\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5470427\",\"\",\"Parallel programming;Kernel;Parallel processing;Concurrent computing;Instruction sets;Robustness;Character generation;Control systems;Prototypes;Runtime\",\"coprocessors;multiprocessing systems;parallel programming\",\"speculative execution;multi-GPU systems;parallel programming models;parallel programming languages;heterogeneous many-core processors;computational capability;CUDA;OpenCL;application partitioning;components;accelerator;ISA;micro-architecture;Harmony execution model;kernel level speculation;dynamic parallelization techniques;Harmony runtime;sequential programming model;heterogeneous system\",\"\",\"12\",\"\",\"28\",\"\",\"24 May 2010\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"A GPU-Accelerated SVD Algorithm, Based on QR Factorization and Givens Rotations, for DWI Denoising\",\"L. Marcellino; G. Navarra\",\"Dept. of Sci. & Technol., Univ. of Naples Parthenope, Naples, Italy; Dept. of Sci. & Technol., Univ. of Naples Parthenope, Naples, Italy\",\"2016 12th International Conference on Signal-Image Technology & Internet-Based Systems (SITIS)\",\"24 Apr 2017\",\"2016\",\"\",\"\",\"699\",\"704\",\"In this work, we present a parallel implementation of the Singular Value Decomposition (SVD) method on Graphics Processing Units (GPUs) using CUDA programming model. Our approach is based on an iterative parallel version of the QR factorization by means Givens plane rotations using the Sameh and Kuck scheme. The parallel algorithm is driven by an outer loop executed on the CPU. Therefore, threads and blocks configuration is organized in order to use the shared memory and avoid multiple accesses to global memory. However, the main kernel provides coalesced accesses to global memory using contiguous indices. As case study, we consider the application of the SVD in the Overcomplete Local Principal Component Analysis (OLPCA) algorithm for the Diffusion Weighted Imaging (DWI) denoising process. Our results show significant improvements in terms of performances with respect to the CPU version that encourage its usability for this expensive application.\",\"\",\"978-1-5090-5698-9\",\"10.1109/SITIS.2016.117\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7907544\",\"SVD;QR factorization;Givens Rotations;GPGPU;PCA;DWI denoising\",\"Matrix decomposition;Graphics processing units;Central Processing Unit;Noise reduction;Principal component analysis;Parallel algorithms;Image processing\",\"biomedical MRI;graphics processing units;image denoising;matrix decomposition;medical image processing;parallel architectures;parallel programming;principal component analysis;singular value decomposition\",\"GPU-accelerated SVD algorithm;DWI denoising;singular value decomposition;SVD method;graphics processing units;CUDA programming model;iterative parallel QR factorization;Givens plane rotations;Sameh-and-Kuck scheme;parallel algorithm;outer loop;thread configuration;block configuration;shared memory;global memory;contiguous indices;SVD;overcomplete local principal component analysis;OLPCA algorithm;diffusion weighted imaging denoising process;DWI denoising process;performance improvement;diffusion tensor imaging\",\"\",\"1\",\"\",\"24\",\"\",\"24 Apr 2017\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Game developer's perspective on OpenCL\",\"E. Schenk\",\"EA, USA\",\"2009 IEEE Hot Chips 21 Symposium (HCS)\",\"26 May 2016\",\"2009\",\"\",\"\",\"1\",\"44\",\"Presents a collection of slides covering the following topics: game development; OpenCL; concurrent programming model; Amdahl's law; game experiences; memory objects; data flow; command queue; vectorization; scalar integrator; vector integrator; parallelism; GPU memory; and GPU device performance.\",\"\",\"978-1-4673-8873-3\",\"10.1109/HOTCHIPS.2009.7478347\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7478347\",\"\",\"Art;Open systems;Data models;Games;Computer platforms;Concurrent computing;Standards;Computer graphics;Videos\",\"computer games;concurrency control;graphics processing units;parallel programming;specification languages;storage management\",\"game development;OpenCL;concurrent programming model;Amdahl law;game experience;memory objects;data flow;command queue;vectorization;scalar integrator;vector integrator;parallelism;GPU memory;GPU device performance;graphics processing unit\",\"\",\"\",\"\",\"\",\"\",\"26 May 2016\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Efficient Data Communication between CPU and GPU through Transparent Partial-Page Migration\",\"S. Zhang; Y. Yang; L. Shen; Z. Wang\",\"Dept. of Comput. Sci. & Technol., Nat. Univ. of Defense Technol., Changsha, China; Dept. of Comput. Sci. & Technol., Nat. Univ. of Defense Technol., Changsha, China; Dept. of Comput. Sci. & Technol., Nat. Univ. of Defense Technol., Changsha, China; Dept. of Comput. Sci. & Technol., Nat. Univ. of Defense Technol., Changsha, China\",\"2018 IEEE 20th International Conference on High Performance Computing and Communications; IEEE 16th International Conference on Smart City; IEEE 4th International Conference on Data Science and Systems (HPCC/SmartCity/DSS)\",\"24 Jan 2019\",\"2018\",\"\",\"\",\"618\",\"625\",\"Despite the increasing investment in integrated GPUs and next-generation interconnect research, discrete GPUs connected by PCI Express still account for the dominant position of the market, the management of data communication between CPU and GPU continues to evolve. Initially, the programmer controls the data transfer between CPU and GPU explicitly. To simplify programming and enable system-wide atomic memory operations, GPU vendors have developed a programming model that provides a single virtual address space. The page migration engine in this model migrates pages between CPU and GPU on demand automatically. To meet the needs of high-performance workloads, the page size tends to be larger. Limited by low bandwidth and high latency interconnects, larger page migration has longer delay, which may reduce the overlap of computation and transmission and cause serious performance decline. In this paper, we propose partial-page migration that only migrates the requested part of a page to shorten the migration latency and avoid the performance degradation of the whole-page migration when the page becomes larger. Experiments show that partial-page migration is possible to significantly hide the performance overheads of whole-page migration when the page size is 2MB and the PCI Express bandwidth is 16GB/sec, converting an average 72.72× slowdown to a 1.29× speedup when compared with programmers controlled data transmission. Additionally, we examine the impact of page size on TLB miss rate and the performance impact of migration unit size on execution time, enabling designers to make informed decisions.\",\"\",\"978-1-5386-6614-2\",\"10.1109/HPCC/SmartCity/DSS.2018.00112\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8622850\",\"Unified Memory, Data Communication, Partial Page Migration\",\"Graphics processing units;Data communication;Memory management;Bandwidth;Programming;Delays;Central Processing Unit\",\"data communication;graphics processing units;paged storage\",\"whole-page migration;PCI Express bandwidth;data transmission;transparent partial-page migration;next-generation interconnect research;system-wide atomic memory operations;GPU vendors;high-performance workloads;data communication\",\"\",\"1\",\"\",\"23\",\"\",\"24 Jan 2019\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Acceleration of regular grid traversals using extended chessboard distance transformation on GPU\",\"A. Es; V. Isler\",\"Tubitak-Bilten, METU, Turkey; NA\",\"Ninth International Conference on Computer Aided Design and Computer Graphics (CAD-CG'05)\",\"13 Mar 2006\",\"2005\",\"\",\"\",\"8 pp.\",\"\",\"In the recent years graphics processing units (GPU) have evolved into general purpose programmable streaming parallel processors. This evolution makes it possible to implement high quality photo realistic rendering techniques on graphics processors. There have been a few studies to show how to map ray tracing to the GPU. Since graphics processors are not designed to process complex data structures, it is crucial to explore data structures and algorithms for efficient stream processing. In particular ray traversal is one of the most time consuming parts of ray tracing methods. In this work we focus on the efficient ray traversals on GPU. Several known techniques have been redesigned and adapted to the GPU programming model. Also a new traversal method based on extended anisotropic chessboard distance metric has been introduced.\",\"\",\"0-7695-2473-7\",\"10.1109/CAD-CG.2005.16\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=1604672\",\"\",\"Acceleration;Data structures;Ray tracing;Computer graphics;Anisotropic magnetoresistance;Concurrent computing;Rendering (computer graphics);Process design;Algorithm design and analysis;Parallel processing\",\"coprocessors;parallel processing;rendering (computer graphics);ray tracing\",\"regular grid traversals;chessboard distance transformation;GPU;graphics processing units;general purpose programmable streaming parallel processors;photo realistic rendering;ray tracing;ray traversals;anisotropic chessboard distance metric\",\"\",\"2\",\"\",\"18\",\"\",\"13 Mar 2006\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Achieving High Performance on Supercomputers with a Sequential Task-based Programming Model\",\"E. Agullo; O. Aumage; M. Faverge; N. Furmento; F. Pruvost; M. Sergent; S. P. Thibault\",\"HiePACS, Inria Centre de recherche Bordeaux Sud-Ouest, 113923 Talence, Aquitaine France (e-mail: emmanuel.agullo@inria.fr); STORM, Inria Centre de recherche Bordeaux Sud-Ouest, 113923 Talence, Aquitaine France (e-mail: olivier.aumage@inria.fr); HiePACS, Bordeaux INP, Talence, Aquitaine France (e-mail: mathieu.faverge@inria.fr); STORM, LaBRI, TALENCE, Aquitaine France (e-mail: nathalie.furmento@labri.fr); HiePACS, Inria Centre de recherche Bordeaux Sud-Ouest, 113923 Talence, Aquitaine France (e-mail: florent.pruvost@inria.fr); STORM, Inria Centre de recherche Bordeaux Sud-Ouest, 113923 Talence, Aquitaine France (e-mail: marc.sergent@inria.fr); Computer science, LaBRI, TALENCE, - France 33405 (e-mail: samuel.thibault@u-bordeaux.fr)\",\"IEEE Transactions on Parallel and Distributed Systems\",\"\",\"2017\",\"PP\",\"99\",\"1\",\"1\",\"The emergence of accelerators as standard computing resources on supercomputers and the subsequent architectural complexity increase revived the need for high-level parallel programming paradigms. Sequential task-based programming model has been shown to efficiently meet this challenge on a single multicore node possibly enhanced with accelerators, which motivated its support in the OpenMP 4.0 standard. In this paper, we show that this paradigm can also be employed to achieve high performance on modern supercomputers composed of multiple such nodes, with extremely limited changes in the user code. To prove this claim, we have extended the StarPU runtime system with an advanced inter-node data management layer that supports this model by posting communications automatically. We illustrate our discussion with the task-based tile Cholesky algorithm that we implemented on top of this new runtime system layer. We show that it allows for very high productivity while achieving a performance competitive with both the pure Message Passing Interface (MPI)-based ScaLAPACK Cholesky reference implementation and the DPLASMA Cholesky code, which implements another (non sequential) task-based programming paradigm.\",\"1558-2183\",\"\",\"10.1109/TPDS.2017.2766064\",\"ANR SOLHAR(grant numbers:ANR-13-MONU-0007); \",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8226789\",\"runtime system;sequential task flow;task-based programming;heterogeneous computing;distributed computing;multicore;GPU;Cholesky factorization\",\"Runtime;Programming;Supercomputers;Libraries;Algorithm design and analysis;Productivity\",\"\",\"\",\"\",\"12\",\"\",\"\",\"IEEE\",\"19 Dec 2017\",\"\",\"\",\"IEEE\",\"IEEE Early Access Articles\"\n\"Asynchronous Task-Based Execution of the Reverse Time Migration for the Oil and Gas Industry\",\"A. AlOnazi; H. Ltaief; D. Keyes; I. Said; S. Thibault\",\"King Abdullah University of Science and Technology,Extreme Computing Research Center,Thuwal,Jeddah 23955,Saudi Arabia; King Abdullah University of Science and Technology,Extreme Computing Research Center,Thuwal,Jeddah 23955,Saudi Arabia; King Abdullah University of Science and Technology,Extreme Computing Research Center,Thuwal,Jeddah 23955,Saudi Arabia; NVIDIA,Oil and Gas Department,Paris,France; Univ. Bordeaux,Talence,33400 France\",\"2019 IEEE International Conference on Cluster Computing (CLUSTER)\",\"7 Nov 2019\",\"2019\",\"\",\"\",\"1\",\"11\",\"We propose a new framework for deploying Reverse Time Migration (RTM) simulations on distributed-memory systems equipped with multiple GPUs. Our software, TB-RTM, infrastructure engine relies on the StarPU dynamic runtime system to orchestrate the asynchronous scheduling of RTM computational tasks on the underlying resources. Besides dealing with the challenging hardware heterogeneity, TB-RTM supports tasks with different workload characteristics, which stress disparate components of the hardware system. RTM is challenging in that it operates intensively at both ends of the memory hierarchy, with compute kernels running at the highest level of the memory system, possibly in GPU main memory, while I/O kernels are saving solution data to fast storage. We consider how to span the wide performance gap between the two extreme ends of the memory system, i.e., GPU memory and fast storage, on which large-scale RTM simulations routinely execute. To maximize hardware occupancy while maintaining high memory bandwidth throughout the memory subsystem, our framework presents the new-of-core (OOC) feature from StarPU to prefetch data solutions in and out not only from/to the GPU/CPU main memory but also from/to the fast storage system. The OOC technique may trigger opportunities for overlapping expensive data movement with computations. TB-RTM framework addresses this challenging problem of heterogeneity with a systematic approach that is oblivious to the targeted hardware architectures. Our resulting RTM framework can effectively be deployed on massively parallel GPU-based systems, while delivering performance scalability up to 500 GPUs.\",\"2168-9253\",\"978-1-7281-4734-5\",\"10.1109/CLUSTER.2019.8891054\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8891054\",\"Reverse Time Migration;Task-Based Programming Model;Out-Of-Core Algorithms;Asynchronous Executions;Overlapping I/O with Computation;STARPU OOC\",\"Task analysis;Kernel;Computational modeling;Hardware;Runtime;Graphics processing units\",\"gas industry;graphics processing units;multiprocessing systems;parallel processing;scheduling;shared memory systems;storage management\",\"asynchronous task-based execution;oil and gas industry;distributed-memory systems;multiple GPUs;StarPU dynamic runtime system;asynchronous scheduling;RTM computational tasks;workload characteristics;hardware system;memory hierarchy;compute kernels;memory system;GPU main memory;large-scale RTM simulations;hardware occupancy;memory bandwidth;memory subsystem;data solutions;fast storage system;targeted hardware architectures;massively parallel GPU-based systems;RTM framework;hardware heterogeneity;reverse time migration simulation\",\"\",\"2\",\"\",\"49\",\"\",\"7 Nov 2019\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Efficient integral image computation on the GPU\",\"B. Bilgic; B. K. P. Horn; I. Masaki\",\"Department of Electrical Engineering and Computer Science, MIT, Cambridge, MA 02139, USA; Department of Electrical Engineering and Computer Science and CSAIL, MIT, Cambridge, MA 02139, USA; Department of Electrical Engineering and Computer Science and MTL, MIT, Cambridge, MA 02139, USA\",\"2010 IEEE Intelligent Vehicles Symposium\",\"16 Aug 2010\",\"2010\",\"\",\"\",\"528\",\"533\",\"We present an integral image algorithm that can run in real-time on a Graphics Processing Unit (GPU). Our system exploits the parallelisms in computation via the NIVIDA CUDA programming model, which is a software platform for solving non-graphics problems in a massively parallel high-performance fashion. This implementation makes use of the work-efficient scan algorithm that is explicated in. Treating the rows and the columns of the target image as independent input arrays for the scan algorithm, our method manages to expose a second level of parallelism in the problem. We compare the performance of the parallel approach running on the GPU with the sequential CPU implementation across a range of image sizes and report a speed up by a factor of 8 for a 4 megapixel input. We further investigate the impact of using packed vector type data on the performance, as well as the effect of double precision arithmetic on the GPU.\",\"1931-0587\",\"978-1-4244-7868-2\",\"10.1109/IVS.2010.5548142\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5548142\",\"\",\"Signal processing algorithms;Graphics processing unit;Parallel processing;Concurrent computing;Parallel programming;Central Processing Unit;Detectors\",\"computer graphic equipment;coprocessors;image processing\",\"integral image computation;graphics processing unit;NIVIDA CUDA programming model;nongraphics problems;scan algorithm;feature evaluation\",\"\",\"51\",\"2\",\"12\",\"\",\"16 Aug 2010\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Database processing by Linear Regression on GPU using CUDA\",\"J. B. Kulkarni; A. A. Sawant; V. S. Inamdar\",\"Department of Computer Engineering and Information Technology, College of Engineering, Pune - 411001, India; Department of Computer Engineering and Information Technology, College of Engineering, Pune - 411001, India; Department of Computer Engineering and Information Technology, College of Engineering, Pune - 411001, India\",\"2011 International Conference on Signal Processing, Communication, Computing and Networking Technologies\",\"22 Sep 2011\",\"2011\",\"\",\"\",\"20\",\"23\",\"In today's era, there is a great importance to parallel programming to gain high performance in terms of time required for data computation. There are some constraints to achieve parallelism on CPU (Central Processing Unit). It is possible to achieve data parallelism by SIMD (Single Instruction Multiple Data) on General Purpose Graphics Processing Unit (GPGPU) integrated with Central Processing Unit (CPU). In Database processing, most of the research is going on. In this implementation, Linear Regression Algorithm is used to achieve parallelism in database processing on images using a programming model, Compute Unified Device Architecture (CUDA) which uses multithreading technique. Most of the time is required to perform various operations on huge content-based database e.g. to read big images, datasets, etc. Linear Regression is one of the algorithm to predict, forecast, mine huge amount of data. Linear Regression using CUDA can achieve high performance. Here, Linear Regression is implemented on Graphics Processing Unit (GPU) and on CPU to process image database for prediction of data by finding Covariance matrix, Eigen values and Eigen vectors. The strongest Eigen vector is the best fit line. The time spent for computation is compared in both the implementations.\",\"\",\"978-1-61284-653-8\",\"10.1109/ICSCCN.2011.6024507\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6024507\",\"Central Processing Unit;Graphics Processing Unit;CUDA;LTI;DirectX;Residual error;Sum of square;etc\",\"Graphics processing unit;Linear regression;Central Processing Unit;Databases;Computer architecture;Covariance matrix;Programming\",\"computer graphic equipment;coprocessors;covariance matrices;eigenvalues and eigenfunctions;multi-threading;regression analysis;visual databases\",\"database processing;linear regression;CUDA;Compute Unified Device Architecture;parallel programming;central processing unit;CPU;data parallelism;SIMD;single instruction multiple data;GPGPU;general purpose graphics processing unit;image database;covariance matrix;eigenvalues;eigenvectors;multithreading technique\",\"\",\"3\",\"\",\"12\",\"\",\"22 Sep 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n"
  },
  {
    "path": "notebooks/data/ieee_4.csv",
    "content": "\"Document Title\",Authors,\"Author Affiliations\",\"Publication Title\",Date Added To Xplore,\"Publication Year\",\"Volume\",\"Issue\",\"Start Page\",\"End Page\",\"Abstract\",\"ISSN\",ISBNs,\"DOI\",Funding Information,PDF Link,\"Author Keywords\",\"IEEE Terms\",\"INSPEC Controlled Terms\",\"INSPEC Non-Controlled Terms\",\"Mesh_Terms\",Article Citation Count,Patent Citation Count,\"Reference Count\",\"License\",Online Date,Issue Date,\"Meeting Date\",\"Publisher\",Document Identifier\n\"Can GPGPU Programming Be Liberated from the Data-Parallel Bottleneck?\",\"B. R. Gaster; L. Howes\",Advanced Micro Devices; Advanced Micro Devices,\"Computer\",\"17 Aug 2012\",\"2012\",\"45\",\"8\",\"42\",\"52\",\"With the growth in transistor counts in modern hardware, heterogeneous systems are becoming commonplace. Core counts are increasing such that GPU and CPU designs are reaching deep into the tens of cores. For performance reasons, different cores in a heterogeneous platform follow different design choices. Based on throughput computing goals, GPU cores tend to support wide vectors and substantial register files. Current designs optimize CPU cores for latency, dedicating logic to caches and out-of-order dependence control. Heterogeneous parallel primitives (HPP) addresses two major shortcomings in current GPGPU programming models: it supports full composability by defining abstractions and increases flexibility in execution by introducing braided parallelism. Heterogeneous parallel primitives is an object-oriented, C++11-based programming model that addresses these shortcomings on both CPUs and massively multithreaded GPUs: it supports full composability by defining abstractions using distributed arrays and barrier objects, and it increases flexibility in execution by introducing braided parallelism. This paper implemented a feature-complete version of HPP, including all syntactic constructs, that runs on top of a task-parallel runtime executing on the CPU. They continue to develop and improve the model, including reducing overhead due to channel management, and plan to make a public version available sometime in the future.\",\"1558-0814\",\"\",\"10.1109/MC.2012.257\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6272260\",\"massively threaded computing systems;heterogeneous parallel primitives;braided parallelism;persistent threading;GPGPU programming;data-parallel execution;distributed arrays;hardware\",\"Graphics processing unit;Programming;Performance evaluation;Parellel processing;Indexes;Hardware;Multithreading\",\"C++ language;graphics processing units;integrated circuit design;multi-threading;object-oriented programming\",\"GPGPU programming;data-parallel bottleneck;heterogeneous systems;core counts;GPU designs;CPU designs;heterogeneous parallel primitives;general-purpose computing-on-graphics processing units;object-oriented C++11-based programming model;distributed arrays;barrier objects;task-parallel runtime;channel management;braided parallelism\",\"\",\"24\",\"2\",\"16\",\"\",\"17 Aug 2012\",\"\",\"\",\"IEEE\",\"IEEE Magazines\"\n\"CUDAsmith: A Fuzzer for CUDA Compilers\",\"B. Jiang; X. Wang; W. K. Chan; T. H. Tse; N. Li; Y. Yin; Z. Zhang\",\"Beihang University, China; Beihang University, China; City University of Hong Kong; The University of Hong Kong, Hong Kong; CAST; Beihang University, China; Chinese Academy of Sciences, China\",\"2020 IEEE 44th Annual Computers, Software, and Applications Conference (COMPSAC)\",\"22 Sep 2020\",\"2020\",\"\",\"\",\"861\",\"871\",\"CUDA is a parallel computing platform and programming model for the graphics processing unit (GPU) of NVIDIA. With CUDA programming, general purpose computing on GPU (GPGPU) is possible. However, the correctness of CUDA programs relies on the correctness of CUDA compilers, which is difficult to test due to its complexity. In this work, we propose CUDAsmith, a fuzzing framework for CUDA compilers. Our tool can randomly generate deterministic and valid CUDA kernel code with several different strategies. Moreover, it adopts random differential testing and EMI testing techniques to solve the test oracle problems of CUDA compiler testing. In particular, we lift live code injection to CUDA compiler testing to help generate EMI variants. Our fuzzing experiments with both the NVCC compiler and the Clang compiler for CUDA have detected thousands of failures, some of which have been confirmed by compiler developers. Finally, the cost-effectiveness of CUDAsmith is also thoroughly evaluated in our fuzzing experiment.\",\"0730-3157\",\"978-1-7281-7303-0\",\"10.1109/COMPSAC48688.2020.0-156\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9202798\",\"Compiler, compute unified device architecture (CUDA), differential testing, equivalence modulo inputs (EMI) testing, fuzzing, general purpose computing on graphics processing unit (GPGPU)\",\"Graphics processing units;Kernel;Electromagnetic interference;Fuzzing;Tools;Computational modeling\",\"computational complexity;graphics processing units;program compilers;program testing\",\"CUDA programming;general purpose computing;GPU;CUDA programs;CUDA compilers;CUDAsmith;deterministic CUDA kernel code;random differential testing;test oracle problems;CUDA compiler testing;NVCC compiler;Clang compiler;compiler developers;parallel computing platform;programming model\",\"\",\"1\",\"\",\"29\",\"\",\"22 Sep 2020\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Task-based parallel breadth-first search in heterogeneous environments\",\"L. Munguía; D. A. Bader; E. Ayguade\",\"Barcelona School of Informatics, Universitat Politècnica de Catalunya, Barcelona, Spain; College of Computing Georgia Institute of Technology, Atlanta GA 30332; Barcelona Supercomputing Center (BSC), Spain\",\"2012 19th International Conference on High Performance Computing\",\"25 Apr 2013\",\"2012\",\"\",\"\",\"1\",\"10\",\"Breadth-first search (BFS) is an essential graph traversal strategy widely used in many computing applications. Because of its irregular data access patterns, BFS has become a non-trivial problem hard to parallelize efficiently. In this paper, we introduce a parallelization strategy that allows the load balancing of computation resources as well as the execution of graph traversals in hybrid environments composed of CPUs and GPUs. To achieve that goal, we use a fine-grained task-based parallelization scheme and the OmpSs programming model. We obtain processing rates up to 2.8 billion traversed edges per second with a single GPU and a multi-core processor. Our study shows high processing rates are achievable with hybrid environments despite the GPU communication latency and memory coherence.\",\"\",\"978-1-4673-2371-0\",\"10.1109/HiPC.2012.6507474\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6507474\",\"\",\"\",\"graph theory;graphics processing units;multiprocessing systems;parallel processing;resource allocation;tree searching\",\"task-based parallel breadth-first search;heterogeneous environment;BFS;graph traversal strategy;irregular data access pattern;parallelization strategy;load balancing;computation resource;hybrid environment;CPU;fine-grained task-based parallelization scheme;OmpSs programming model;processing rate;multicore processor;GPU communication latency;memory coherence\",\"\",\"16\",\"1\",\"15\",\"\",\"25 Apr 2013\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"SOLAR: Services-Oriented Learning Architectures\",\"C. Wang; X. Li; Q. Yu; A. Wang; P. Hung; X. Zhou\",\"Sch. of Comput. Sci., Univ. of Sci. & Technol. of China, Hefei, China; Sch. of Comput. Sci., Univ. of Sci. & Technol. of China, Hefei, China; Sch. of Comput. Sci., Univ. of Sci. & Technol. of China, Hefei, China; Sch. of Comput. Sci., Univ. of Sci. & Technol. of China, Hefei, China; Sch. of Comput. Sci., Univ. of Sci. & Technol. of China, Hefei, China; Sch. of Comput. Sci., Univ. of Sci. & Technol. of China, Hefei, China\",\"2016 IEEE International Conference on Web Services (ICWS)\",\"1 Sep 2016\",\"2016\",\"\",\"\",\"662\",\"665\",\"Deep learning has been an emerging field of machine learning during past decades. However, the diversity and large scale data sizes have posed significant challenge to construct a flexible and high efficient implementations of deep learning neural networks. In order to improve the performance as well to maintain the scalability, in this paper we present SOLAR, a services-oriented deep learning architecture using various accelerators like GPU and FPGA based approaches. SOLAR provides a uniform programming model to users so that the hardware implementation and the scheduling is invisible to the programmers. At runtime, the services can be executed either on the software processors or the hardware accelerators. Experimental results on the real state-of-the-art FPGA board demonstrate that the SOLAR is able to provide a ubiquitous framework for diverse applications without increasing the burden of the programmers. Moreover, the speedup of the GPU and FPGA hardware accelerator in SOLAR can achieve significant speedup comparing to the conventional Intel i5 processors with great scalability.\",\"\",\"978-1-5090-2675-3\",\"10.1109/ICWS.2016.91\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7558064\",\"Services-oriented Architecture;Deep Learning;Neural Network;Accelerator\",\"Hardware;Machine learning;Field programmable gate arrays;Computer architecture;Graphics processing units;Service-oriented architecture\",\"field programmable gate arrays;graphics processing units;learning (artificial intelligence);multiprocessing systems;neural nets;service-oriented architecture\",\"SOLAR;machine learning;deep learning neural networks;services-oriented deep learning architecture;GPU;FPGA based approaches;uniform programming model;ubiquitous framework;Intel i5 processors\",\"\",\"7\",\"\",\"9\",\"\",\"1 Sep 2016\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Massively Parallel Network Coding on GPUs\",\"X. Chu; K. Zhao; M. Wang\",\"Department of Computer Science, Hong Kong Baptist University, Hong Kong, P.R.C, chxw@comp.hkbu.edu.hk; Department of Computer Science, Hong Kong Baptist University, Hong Kong, P.R.C, kyzhao@comp.hkbu.edu.hk; Department of Computer Science, University of Calgary, Alberta, Canada, meawang@ucalgary.ca\",\"2008 IEEE International Performance, Computing and Communications Conference\",\"9 Jan 2009\",\"2008\",\"\",\"\",\"144\",\"151\",\"Network coding has recently been widely applied in various networks for system throughput improvement and/or resilience to network dynamics. However, the computational overhead introduced by the network coding operations is not negligible and has become the cornerstone for real deployment of network coding. In this paper, we exploit the computing power of contemporary Graphic Processing Units (GPUs) to accelerate the network coding operations. We proposed three parallel algorithms that maximize the parallelism of the encoding and decoding processes, i.e., the power of GPUs is fully utilized. This paper also shares our optimization design choices and our workarounds to the challenges encountered in working with GPUs. With our implementation of the algorithms, we are able to achieve up to 12 times of speedup over the highly optimized CPU counterpart, using the NVIDIA GPU and the Computer Unified Device Architecture (CUDA) programming model.\",\"2374-9628\",\"978-1-4244-3368-1\",\"10.1109/PCCC.2008.4745113\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=4745113\",\"Network coding;GPU computing;CUDA\",\"Network coding;Computer networks;Throughput;Resilience;Graphics;Acceleration;Parallel algorithms;Parallel processing;Encoding;Decoding\",\"microprocessor chips;parallel algorithms\",\"massively parallel network coding;system throughput improvement;graphic processing units;parallel algorithms;NVIDIA GPU;computer unified device architecture programming\",\"\",\"22\",\"\",\"21\",\"\",\"9 Jan 2009\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"The Intel® Many Integrated Core Architecture\",\"A. Duran; M. Klemm\",Intel Corporation; Intel Corporation,\"2012 International Conference on High Performance Computing & Simulation (HPCS)\",\"16 Aug 2012\",\"2012\",\"\",\"\",\"365\",\"366\",\"In recent years, an observable trend in High Performance Computing (HPC) architectures has been the inclusion of accelerators, such as GPUs and field programmable arrays (FPGAs), to improve the performance of scientific applications. To rise to this challenge Intel announced the Intel<sup>®</sup> Many Integrated Core Architecture (Intel<sup>®</sup> MIC Architecture). In contrast with other accelerated platforms, the Intel MIC Architecture is a general purpose, manycore coprocessor that improves the programmability of such devices by supporting the well-known shared-memory execution model that is the base of most nodes in HPC machines. In this presentation, we will introduce key properties of the Intel MIC Architecture and we will also cover programming models for parallelization and vectorization of applications targeting this architecture.\",\"\",\"978-1-4673-2362-8\",\"10.1109/HPCSim.2012.6266938\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6266938\",\"\",\"Coprocessors;Computer architecture;Microwave integrated circuits;Programming;Hardware;Program processors;Syntactics\",\"field programmable gate arrays;graphics processing units;parallel architectures;shared memory systems\",\"Intel many integrated core architecture;high performance computing;accelerators;GPU;field programmable arrays;Intel MIC architecture;many core coprocessor;shared-memory execution model;programming model;parallelization;vectorization\",\"\",\"48\",\"1\",\"2\",\"\",\"16 Aug 2012\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Monte Carlo simulation of X-ray imaging using a graphics processing unit\",\"A. Badal; A. Badano\",\"U.S. Food and Drug Administration, Division of Imaging and Applied Mathematics, Office of Science and Engineering Laboratories, Center for Devices and Radiological Health, Silver Spring, MD 20993-0002 USA; U.S. Food and Drug Administration, Division of Imaging and Applied Mathematics, Office of Science and Engineering Laboratories, Center for Devices and Radiological Health, Silver Spring, MD 20993-0002 USA\",\"2009 IEEE Nuclear Science Symposium Conference Record (NSS/MIC)\",\"29 Jan 2010\",\"2009\",\"\",\"\",\"4081\",\"4084\",\"A code for Monte Carlo simulations of radiation transport using a Graphics Processing Unit (GPU) is introduced. The code has been developed using the CUDA¿ programming model, an extension to the C language that allows the execution of general purpose computations on the new generation of GPUs from NVIDIA. The accurate Compton and Rayleigh interaction models and interaction mean free paths from the PENELOPE package, and a generic voxelized geometry model, have been implemented in the new code. The secondary particles generated by Compton, photoelectric and pair-production events are not transported. An ideal x-ray detector and a cone beam source can be defined to reproduce an imaging system and facilitate the simulations of medical imaging applications. A 24-fold speed up factor with the GPU compared to the CPU is reported for a radiographic projection of a detailed anthropomorphic female phantom. A description of the simulation algorithm and the technical implementation in the GPU are provided. This work shows that GPUs are already a good alternative to CPUs for Monte Carlo simulation of x-ray transport.\",\"1082-3654\",\"978-1-4244-3961-4\",\"10.1109/NSSMIC.2009.5402382\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5402382\",\"\",\"X-ray imaging;Graphics;Solid modeling;Medical simulation;Packaging;Geometry;X-ray detectors;Optical imaging;Biomedical imaging;Central Processing Unit\",\"biomedical imaging;Monte Carlo methods;radiography;X-ray detection;X-ray imaging\",\"Monte Carlo simulation;X-ray imaging;graphics processing unit;radiation transport;CUDA¿ programming model;general purpose computations;Compton interaction model;Rayleigh interaction model;PENELOPE package;generic voxelized geometry model;X-ray detector;cone beam source;imaging system;medical imaging applications;radiographic projection;anthropomorphic female phantom;simulation algorithm;X-ray transport\",\"\",\"13\",\"\",\"12\",\"\",\"29 Jan 2010\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Improving 3D lattice boltzmann method stencil with asynchronous transfers on many-core processors\",\"M. Q. Ho; C. Obrecht; B. Tourancheau; B. D. de Dinechin; J. Hascoet\",\"CNRS, LIG UMR 5217, Grenoble Alps University, F-38058 Grenoble, France; Univ Lyon, CNRS, INSA-Lyon, Université Claude Bernard Lyon 1, CETHIL UMR5008, F-69621 Villeurbanne, France; CNRS, LIG UMR 5217, Grenoble Alps University, F-38058 Grenoble, France; Kalray S.A., F-38330 Montbonnot, France; Kalray S.A., F-38330 Montbonnot, France\",\"2017 IEEE 36th International Performance Computing and Communications Conference (IPCCC)\",\"5 Feb 2018\",\"2017\",\"\",\"\",\"1\",\"9\",\"CPU-based many-core processors present an alternative to multicore CPU and GPU processors. In particular, the 93-Petaflops Sunway supercomputer, built from clustered many-core processors, has opened a new era for high performance computing that does not rely on GPU acceleration. However, memory bandwidth remains the main challenge for these architectures. This motivates our endeavor for optimizing one of the most data-intensive kind of stencil computations, namely the three-dimensional applications of the lattice Boltzmann method (LBM). We propose optimizations on many-cores processors by using local memory and asynchronous software-prefetching on a representative 3D LBM solver as an example. We achieve 33 % performance gain on the Kalray MPPA-256 many-core processor by actively streaming data from/to local memory, compared to the “passive” OpenCL programming model.\",\"2374-9628\",\"978-1-5090-6468-7\",\"10.1109/PCCC.2017.8280472\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8280472\",\"\",\"Three-dimensional displays;Program processors;Lattices;Computer architecture;Bandwidth;Computational modeling;Kernel\",\"graphics processing units;lattice Boltzmann methods;multiprocessing systems;parallel processing\",\"3D lattice Boltzmann method stencil;many-core processor cluster;LBM;asynchronous software-prefetching;representative 3D LBM solver;data streaming;OpenCL programming;Kalray MPPA-256 many-core processor;local memory;many-cores processors;stencil computations;GPU acceleration;high performance computing;93-Petaflops Sunway supercomputer;GPU processors;CPU;asynchronous transfers\",\"\",\"\",\"\",\"15\",\"\",\"5 Feb 2018\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Automating CUDA Synchronization via Program Transformation\",\"M. Wu; L. Zhang; C. Liu; S. H. Tan; Y. Zhang\",Southern University of Science and Technology; University of Texas at Dallas; University of Texas at Dallas; Southern University of Science and Technology; Southern University of Science and Technology,\"2019 34th IEEE/ACM International Conference on Automated Software Engineering (ASE)\",\"9 Jan 2020\",\"2019\",\"\",\"\",\"748\",\"759\",\"While CUDA has been the most popular parallel computing platform and programming model for general purpose GPU computing, CUDA synchronization undergoes significant challenges for GPU programmers due to its intricate parallel computing mechanism and coding practices. In this paper, we propose AuCS, the first general framework to automate synchronization for CUDA kernel functions. AuCS transforms the original LLVM-level CUDA program control flow graph in a semantic-preserving manner for exploring the possible barrier function locations. Accordingly, AuCS develops mechanisms to correctly place barrier functions for automating synchronization in multiple erroneous (challenging-to-be-detected) synchronization scenarios, including data race, barrier divergence, and redundant barrier functions. To evaluate the effectiveness and efficiency of AuCS, we conduct an extensive set of experiments and the results demonstrate that AuCS can automate 20 out of 24 erroneous synchronization scenarios.\",\"2643-1572\",\"978-1-7281-2508-4\",\"10.1109/ASE.2019.00075\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8952529\",\"CUDA;program repair;synchronization automation;program transformation\",\"Graphics processing units;Synchronization;Computer bugs;Kernel;Instruction sets;Parallel processing;Computer science\",\"flow graphs;graphics processing units;parallel architectures;parallel programming;program processors\",\"CUDA synchronization;program transformation;parallel computing platform;general purpose GPU computing;GPU programmers;AuCS;CUDA kernel functions;original LLVM-level CUDA;program control flow graph;multiple erroneous synchronization scenarios\",\"\",\"5\",\"\",\"60\",\"\",\"9 Jan 2020\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"One Size Doesn't Fit All: Quantifying Performance Portability of Graph Applications on GPUs\",\"T. Sorensen; S. Pai; A. F. Donaldson\",\"Princeton University, USA,UC Santa Cruz,USA; University of Rochester,USA; Imperial College London,UK\",\"2019 IEEE International Symposium on Workload Characterization (IISWC)\",\"19 Mar 2020\",\"2019\",\"\",\"\",\"155\",\"166\",\"Hand-optimising graph algorithm code for different GPUs is particularly labour-intensive and error-prone, involving complex and ill-understood interactions between GPU chips, applications, and inputs. Although the generation of optimised variants has been automated through graph algorithm DSL compilers, these do not yet use an optimisation policy. Instead they defer to techniques like autotuning, which can produce good results, but at the expense of portability. In this work, we propose a methodology to automatically identify portable optimisation policies that can be tailored (“semi-specialised”) as needed over a combination of chips, applications and inputs. Using a graph algorithm DSL compiler that targets the OpenCL programming model, we demonstrate optimising graph algorithms to run in a portable fashion across a wide range of GPU devices for the first time. We use this compiler and its optimisation space as the basis for a large empirical study across 17 graph applications, 3 diverse graph inputs and 6 GPUs spanning multiple vendors. We show that existing automatic approaches for building a portable optimisation policy fall short on our dataset, providing trivial or biased results. Thus, we present a new statistical analysis which can characterise optimisations and quantify performance trade-offs at various degrees of specialisation. We use this analysis to quantify the performance tradeoffs as portability is sacrificed for specialisation across three natural dimensions: chip, application, and input. Compared to not optimising programs at all, a fully portable approach provides a 1.15× improvement in geometric mean performance, rising to 1.29 × when specialised to application and inputs (but not hardware). Furthermore, these semi-specialised optimisations provide insights into performance-critical features of specialisation. For example, optimisations specialised by chip reveal subtle, yet performance-critical, characteristics of various GPUs.\",\"\",\"978-1-7281-4045-2\",\"10.1109/IISWC47752.2019.9042139\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9042139\",\"\",\"\",\"graph theory;graphics processing units;program compilers;statistical analysis\",\"hand-optimising graph algorithm code;GPU chips;graph algorithm DSL compiler;portable optimisation policies;graph algorithms;optimisation space;GPU;optimising programs;portable optimisation policy\",\"\",\"1\",\"\",\"33\",\"\",\"19 Mar 2020\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Fast parallel cutoff pair interactions for molecular dynamics on heterogeneous systems\",\"Q. Wu; C. Yang; T. Tang; K. Lu\",\"School of Computer Science, National University of Defense Technology, Changsha 410073, China; School of Computer Science, National University of Defense Technology, Changsha 410073, China; School of Computer Science, National University of Defense Technology, Changsha 410073, China; School of Computer Science, National University of Defense Technology, Changsha 410073, China\",\"Tsinghua Science and Technology\",\"15 Jun 2012\",\"2012\",\"17\",\"3\",\"265\",\"277\",\"Heterogeneous systems with both Central Processing Units (CPUs) and Graphics Processing Units (GPUs) are frequently used to accelerate short-ranged Molecular Dynamics (MD) simulations. The most time-consuming task in short-ranged MD simulations is the computation of particle-to-particle interactions. Beyond a certain distance, these interactions decrease to zero. To minimize the operations to investigate distance, previous works have tiled interactions by employing the spatial attribute, which increases the memory access and GPU computations, hence decreasing performance. Other studies ignore the spatial attribute and construct an all-versus-all interaction matrix, which has poor scalability. This paper presents an improved algorithm. The algorithm first bins particles into voxels according to the spatial attributes, and then tiles the all-versus-all matrix into voxel-versus-voxel sub-matrixes. Only the sub-matrixes between neighboring voxels are computed on the GPU. Therefore, the algorithm reduces the distance examine operations and limits additional memory access and GPU computations. This paper also adopts a multi-level programming model to implement the algorithm on multi-nodes of Tianhe-lA. By employing (1) a patch design to exploit parallelism across the simulation domain, (2) a communication overlapping method to overlap the communications between CPUs and GPUs, and (3) a dynamic workload balancing method to adjust the workloads among compute nodes, the implementation achieves a speedup of 4.16× on one NVIDIA Tesla M2050 GPU compared to a 2.93 GHz six-core Intel Xeon X5670 CPU. In addition, it runs 2.41× faster on 256 compute nodes of Tianhe-lA (with two CPUs and one GPU inside a node) than on 256 GPU-excluded nodes.\",\"1007-0214\",\"\",\"10.1109/TST.2012.6216756\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6216756\",\"cutoff pair interactions;molecular dynamics;heterogeneous computing;GPU computing\",\"Graphics processing unit;Instruction sets;Computational modeling;Heuristic algorithms;Computer architecture;Central Processing Unit\",\"\",\"\",\"\",\"1\",\"\",\"\",\"\",\"15 Jun 2012\",\"\",\"\",\"TUP\",\"TUP Journals\"\n\"Integration of CUDA Processing within the C++ Library for Parallelism and Concurrency (HPX)\",\"P. Diehl; M. Seshadri; T. Heller; H. Kaiser\",\"Center for Comput. & Technol., Louisiana State Univ., Baton Rouge, LA, USA; Nanyang Technol. Univ., Singapore, Singapore; Center for Comput. & Technol., Louisiana State Univ., Baton Rouge, LA, USA; Center for Comput. & Technol., Louisiana State Univ., Baton Rouge, LA, USA\",\"2018 IEEE/ACM 4th International Workshop on Extreme Scale Programming Models and Middleware (ESPM2)\",\"14 Feb 2019\",\"2018\",\"\",\"\",\"19\",\"28\",\"Experience shows that on today's high performance systems the utilization of different acceleration cards in conjunction with a high utilization of all other parts of the system is difficult. Future architectures, like exascale clusters, are expected to aggravate this issue as the number of cores are expected to increase and memory hierarchies are expected to become deeper. One big aspect for distributed applications is to guarantee high utilization of all available resources, including local or remote acceleration cards on a cluster while fully using all the available CPU resources and the integration of the GPU work into the overall programming model. For the integration of CUDA code we extended HPX, a general purpose C++ run time system for parallel and distributed applications of any scale, and enabled asynchronous data transfers from and to the GPU device and the asynchronous invocation of CUDA kernels on this data. Both operations are well integrated into the general programming model of HPX which allows to seamlessly overlap any GPU operation with work on the main cores. Any user defined CUDA kernel can be launched on any (local or remote) GPU device available to the distributed application. We present asynchronous implementations for the data transfers and kernel launches for CUDA code as part of a HPX asynchronous execution graph. Using this approach we can combine all remotely and locally available acceleration cards on a cluster to utilize its full performance capabilities. Overhead measurements show, that the integration of the asynchronous operations (data transfer + launches of the kernels) as part of the HPX execution graph imposes no additional computational overhead and significantly eases orchestrating coordinated and concurrent work on the main cores and the used GPU devices.\",\"\",\"978-1-7281-0178-1\",\"10.1109/ESPM2.2018.00006\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8638479\",\"Asynchronous-many-task-systems-(ATM),-CUDA,-parallelism,-concurrency,-HPX\",\"Graphics processing units;Kernel;C++ languages;Data transfer;Task analysis;Programming;Message systems\",\"C++ language;concurrency (computers);graphics processing units;parallel architectures;parallel processing\",\"local acceleration cards;remote acceleration cards;CUDA code;distributed application;asynchronous data transfers;asynchronous invocation;CUDA kernel;GPU operation;data transfer;HPX asynchronous execution graph;CUDA processing;high performance systems;exascale clusters;memory hierarchies;CPU resources;general purpose C++ run time system;parallel applications\",\"\",\"2\",\"\",\"26\",\"\",\"14 Feb 2019\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Parallel computing with CUDA\",\"M. Garland\",NVIDIA,\"2010 IEEE International Symposium on Parallel & Distributed Processing (IPDPS)\",\"24 May 2010\",\"2010\",\"\",\"\",\"1\",\"1\",\"Summary form only given. NVIDIA's CUDA architecture provides a powerful platform for writing highly parallel programs. By providing simple abstractions for hierarchical thread organization, memories, and synchronization, the CUDA programming model allows programmers to write scalable programs without the burden of learning a multitude of new programming constructs. The CUDA architecture can support many languages and programming environments, including C, Fortran, OpenCL, and DirectX Compute. In this tutorial, I will provide an overview of modern GPU processor design and its implications for successful parallel programming models. I will present the programming model adopted by the CUDA architecture, and demonstrate how this is exposed in the C/C++ language. Finally, I will sketch some techniques for implementing common data-parallel algorithms in the CUDA model.\",\"1530-2075\",\"978-1-4244-6443-2\",\"10.1109/IPDPS.2010.5470378\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5470378\",\"\",\"Parallel processing;Computer architecture;Visualization;Parallel programming;Multicore processing;Programming environments;Process design\",\"C++ language;computer graphic equipment;coprocessors;parallel algorithms;parallel architectures;parallel programming\",\"parallel computing;NVIDIA CUDA architecture;hierarchical thread organization;synchronization;C;Fortran;OpenCL;DirectX Compute;GPU processor design;parallel programming;C++ language;data parallel algorithms\",\"\",\"12\",\"\",\"\",\"\",\"24 May 2010\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Programming for GPUs: The Directive-Based Approach\",\"L. Grillo; F. De Sande; J. J. Fumero; R. Reyes\",\"Dept. de EIO y Comput., Univ. de La Laguna, La Laguna, Spain; Dept. de EIO y Comput., Univ. de La Laguna, La Laguna, Spain; Inst. Tecnol. de Energias Renovables, Granadilla de Abona, Spain; Edinburgh Parallel Comput. Centre, Univ. of Edinburgh, Edinburgh, UK\",\"2013 Eighth International Conference on P2P, Parallel, Grid, Cloud and Internet Computing\",\"12 Dec 2013\",\"2013\",\"\",\"\",\"612\",\"617\",\"In the last years, hardware accelerators, such as GPUs have become ubiquitous in the HPC landscape and GPGPU has been massively adopted by the HPC research community. If something is slowing down further expansion of this technology are its difficulties in terms of programmability. Although several libraries and applications providing GPU support are available, the need of implementing new algorithms from scratch, or adapting sequential programs to accelerators, still exist. Writing programs to be executed on accelerators is not easy, particularly for non-expert developers coming from the science or engineering fields, as it requires deep understanding of the underlying architecture. Different alternatives have appeared aimed to diminish the GPU programming effort. In the wake of the success of OpenMP, several directive-oriented programming models have been created. Although future OpenMP releases will integrate accelerators, tools are needed in the meantime. In this work, we present a comparison of directive-based approaches for GPU platforms, hiCUDA, PGI Accelerator and OpenACC. For the last, in addition to the two commercial compilers available, we include results using accULL, our own OpenACC implementation. To illustrate the portability of these alternatives, we show performance figures for both Fermi and Kepler NVIDIA cards.\",\"\",\"978-0-7695-5094-7\",\"10.1109/3PGCIC.2013.106\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6681300\",\"OpenACC;GPGPU;Compilers;PGI;HMPP;accULL;CUDA\",\"Graphics processing units;Kernel;Programming;Standards;Runtime;Parallel processing\",\"graphics processing units;message passing;parallel architectures;program compilers;software libraries\",\"hardware accelerator;HPC;sequential program;program execution;GPU programming;OpenMP;directive-oriented programming model;hiCUDA;PGI accelerator;OpenACC;compiler;accULL;Kepler NVIDIA card;Fermi card;program library\",\"\",\"1\",\"\",\"12\",\"\",\"12 Dec 2013\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Use case analysis of OpenACC directives in the implementation of image processing algorithms\",\"M. J. Mišić; D. D. Dašić; M. V. Tomašević\",\"Elektroteh. Fak., Univ. u Beogradu, Belgrade, Serbia; Elektroteh. Fak., Univ. u Beogradu, Belgrade, Serbia; Elektroteh. Fak., Univ. u Beogradu, Belgrade, Serbia\",\"2013 21st Telecommunications Forum Telfor (TELFOR)\",\"20 Jan 2014\",\"2013\",\"\",\"\",\"959\",\"962\",\"Graphics processing units have been intensively used in general-purpose computations in the recent years. Although new programming models (CUDA, OpenCL) have been developed and widely applied to support GPU programming, they still impose demanding environments for those users who want to speed up their applications without the knowledge of low level details of the underlying hardware. To cope with this problem, the paper analyzes and evaluates the usage of OpenACC directive-based programming model in the case of image processing algorithms that are amenable for GPU execution.\",\"\",\"978-1-4799-1420-3\",\"10.1109/TELFOR.2013.6716390\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6716390\",\"\",\"Graphics processing units;Computational modeling;Programming;Central Processing Unit;Kernel;Electronic mail;Image processing\",\"graphics processing units;image processing\",\"case analysis;OpenACC directives;image processing algorithms;graphics processing units programming;GPU programming;demanding environments\",\"\",\"1\",\"\",\"6\",\"\",\"20 Jan 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Hedgehog: Understandable Scheduler-Free Heterogeneous Asynchronous Multithreaded Data-Flow Graphs\",\"A. Bardakoff; B. Bachelet; T. Blattner; W. Keyrouz; G. C. Kroiz; L. Yon\",\"National Institute of Standards & Technology,Gaithersburg,MD,20899-8970; Université Clermont Auvergne, CNRS, LIMOS,Clermont-Ferrand,France,F-63000; National Institute of Standards & Technology,Gaithersburg,MD,20899-8970; National Institute of Standards & Technology,Gaithersburg,MD,20899-8970; University of Maryland,Department of Mathematics and Statistics,Baltimore,MD,USA,21250; ISIMA, CNRS, LIMOS,Clermont-Ferrand,France,F-63000\",\"2020 IEEE/ACM 3rd Annual Parallel Applications Workshop: Alternatives To MPI+X (PAW-ATM)\",\"29 Dec 2020\",\"2020\",\"\",\"\",\"1\",\"15\",\"Getting performance on high-end heterogeneous nodes is challenging. This is due to the large semantic gap between a computation's specification-possibly mathematical formulas or an abstract sequential algorithm-and its parallel implementation; this gap obscures the program's parallel structures and how it gains or loses performance. We present Hedgehog, a library aimed at coarse-grain parallelism. It explicitly embeds a dataflow graph in a program and uses this graph at runtime to drive the program's execution so it takes advantage of hardware parallelism (multicore CPUs and multiple accelerators). Hedgehog has asynchronicity built in. It statically binds individual threads to graph nodes, which are ready to fire when any of their inputs are available. This allows Hedgehog to avoid using a global scheduler and the loss of performance associated with global synchronizations and managing of thread pools. Hedgehog provides a separation of concerns and distinguishes between compute and state maintenance tasks. Its API reflects this separation and allows a developer to gain a better understanding of performance when executing the graph. Hedgehog is implemented as a C++ 17 headers-only library. One feature of the framework is its low overhead; it transfers control of data between two nodes in ≈ 1 μs. This low overhead combines with Hedgehog's API to provide essentially cost-free profiling of the graph, thereby enabling experimentation for performance, which enhances a developer's insight into a program's performance. Hedgehog's asynchronous data-flow graph supports a data streaming programming model both within and between graphs. We demonstrate the effectiveness of this approach by highlighting the performance of streaming implementations of two numerical linear algebra routines, which are comparable to existing libraries: matrix multiplication achieves >95 % of the theoretical peak of 4 GPUs; LU decomposition with partial pivoting starts streaming partial final result blocks 40× earlier than waiting for the full result. The relative ease and understandability of obtaining performance with Hedgehog promises to enable non-specialists to target performance on high-end single nodes.\",\"\",\"978-1-7281-5450-3\",\"10.1109/PAWATM51920.2020.00006\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9306983\",\"high performance computing, data-flow, heterogeneous computing, dataflow, pipelining, HPC, parallelism, heterogeneity, metaprogramming, C++, GPU\",\"Task analysis;Libraries;Parallel processing;Hardware;Computational modeling;Signal processing algorithms;Tools\",\"application program interfaces;data flow computing;data flow graphs;graph theory;linear algebra;matrix multiplication;multiprocessing systems;multi-threading;parallel algorithms;scheduling\",\"coarse-grain parallelism;hardware parallelism;graph nodes;data streaming programming model;scheduler-free heterogeneous asynchronous multithreaded data-flow graphs;Hedgehog API;numerical linear algebra routines\",\"\",\"\",\"\",\"22\",\"\",\"29 Dec 2020\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"CLACC: Translating OpenACC to OpenMP in Clang\",\"J. E. Denny; S. Lee; J. S. Vetter\",Oak Ridge National Laboratory; Oak Ridge National Laboratory; Oak Ridge National Laboratory,\"2018 IEEE/ACM 5th Workshop on the LLVM Compiler Infrastructure in HPC (LLVM-HPC)\",\"14 Feb 2019\",\"2018\",\"\",\"\",\"18\",\"29\",\"OpenACC was launched in 2010 as a portable programming model for heterogeneous accelerators. Although various implementations already exist, no extensible, open-source, production-quality compiler support is available to the community. This deficiency poses a serious risk for HPC application developers targeting GPUs and other accelerators, and it limits experimentation and progress for the OpenACC specification. To address this deficiency, Clacc is a recent effort funded by the US Exascale Computing Project to develop production OpenACC compiler support for Clang and LLVM. A key feature of the Clacc design is to translate OpenACC to OpenMP to build on Clang's existing OpenMP compiler and runtime support. In this paper, we describe the Clacc goals and design. We also describe the challenges that we have encountered so far in our prototyping efforts, and we present some early performance results.\",\"\",\"978-1-7281-0188-0\",\"10.1109/LLVM-HPC.2018.8639349\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8639349\",\"OpenACC;OpenMP;LLVM;multicore;GPU;accelerators;source-to-source translation;compiler\",\"Tools;Runtime;Ecosystems;Production;Programming;Graphics processing units;Computer architecture\",\"parallel processing;program compilers;public domain software;software portability\",\"OpenMP;portable programming model;heterogeneous accelerators;production-quality compiler support;OpenACC specification;US Exascale Computing Project;HPC application;CLACC;Clang;open-source software;OpenACC compiler support\",\"\",\"4\",\"\",\"20\",\"\",\"14 Feb 2019\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"MDACCER: Modified Distributed Assessment of the Closeness CEntrality Ranking in Complex Networks for Massively Parallel Environments\",\"F. L. Cabral; C. Osthoff; D. Ramos; R. Nardes\",\"Lab. Nac. de Comput. Cienc., Centro de Comput. de Alto Desempenho, Brazil; Lab. Nac. de Comput. Cienc., Centro de Comput. de Alto Desempenho, Brazil; Lab. Nac. de Comput. Cienc., Centro de Comput. de Alto Desempenho, Brazil; Lab. Nac. de Comput. Cienc., Centro de Comput. de Alto Desempenho, Brazil\",\"2015 International Symposium on Computer Architecture and High Performance Computing Workshop (SBAC-PADW)\",\"3 Mar 2016\",\"2015\",\"\",\"\",\"43\",\"48\",\"We propose a new method derived from DACCER (Distributed Assessment of the Closeness CEntrality Ranking): the modified DACCER (MDACCER), for assessing traditional closeness centrality ranking. MDACCER presents a relaxation that allows it to take advantage of massively parallel environments like General Purpose Graphics Processing Units (GPGPUs). Traditional DACCER proposal assesses Closeness centrality ranking in a limited neighborhood using only information around each node at low computational cost and capability to be executed in a distributed environment. Despite all the advantages, DACCER presents some difficulties in GPGPUs programming model that increases its computational cost at this particular environment. In contrast to the poor performance of DACCER on GPGPUs, experimental results demonstrate MDACCER is as simple and efficient as DACCER to assess Closeness centrality ranking in complex networks and moreover it does not have the same bottlenecks in GPGPUs computing about memory usage and time complexity. We performed MDACCER for some synthetically generated networks, specifically Barabási-Albert ones and results indicate MADCCER correlates Closeness centrality ranking almost as well as DACCER does with lower computational costs.\",\"\",\"978-1-4673-8621-0\",\"10.1109/SBAC-PADW.2015.28\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7423179\",\"Parallel Computing;Network Centrality Ranking;DACCER;Closeness;GPU;CUDA\",\"Correlation;Kernel;Proposals;Computational efficiency;Computer architecture;Complex networks;Graphics processing units\",\"complex networks;computational complexity;graphics processing units;parallel programming\",\"time complexity;GPGP programming model;general purpose graphics processing unit;modified DACCER;massively parallel environment;complex network;closeness centrality ranking;MDACCER;modified distributed assessment\",\"\",\"\",\"\",\"13\",\"\",\"3 Mar 2016\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"High-Performance Graph Analytics on Manycore Processors\",\"G. M. Slota; S. Rajamanickam; K. Madduri\",\"Comput. Sci. & Eng., Pennsylvania State Univ., University Park, PA, USA; Scalable Algorithms Dept., Sandia Nat. Labs., Albuquerque, NM, USA; Comput. Sci. & Eng., Pennsylvania State Univ., University Park, PA, USA\",\"2015 IEEE International Parallel and Distributed Processing Symposium\",\"20 Jul 2015\",\"2015\",\"\",\"\",\"17\",\"27\",\"The divergence in the computer architecture landscape has resulted in different architectures being considered mainstream at the same time. For application and algorithm developers, a dilemma arises when one must focus on using underlying architectural features to extract the best performance on each of these architectures, while writing portable code at the same time. We focus on this problem with graph analytics as our target application domain. In this paper, we present an abstraction-based methodology for performance-portable graph algorithm design on manicure architectures. We demonstrate our approach by systematically optimizing algorithms for the problems of breadth-first search, color propagation, and strongly connected components. We use Kokkos, a manicure library and programming model, for prototyping our algorithms. Our portable implementation of the strongly connected components algorithm on the NVIDIA Tesla K40M is up to 3.25× faster than a state-of-the-art parallel CPU implementation on a dual-socket Sandy Bridge compute node.\",\"1530-2075\",\"978-1-4799-8649-1\",\"10.1109/IPDPS.2015.54\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7161272\",\"graph computations;BFS;color propagation;GPU;parallel performance;portability\",\"Instruction sets;Silicon;Optimization;Synchronization;Color;Arrays;Parallel processing\",\"feature extraction;graph theory;multiprocessing systems;parallel architectures;tree searching\",\"high-performance graph analytics;manycore processors;computer architecture landscape;architectural feature extraction;portable code writing;abstraction-based methodology;performance-portable graph algorithm design;manicure architectures;breadth-first search problems;color propagation;optimizing algorithms;Kokkos manicure library;programming model;strongly connected components algorithm;NVIDIA Tesla K40M;parallel CPU;dual-socket Sandy Bridge compute node\",\"\",\"8\",\"\",\"37\",\"\",\"20 Jul 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Real-time block matching motion estimation onto GPGPU\",\"E. Monteiro; M. Maule; F. Sampaio; C. Diniz; B. Zatt; S. Bampi\",\"Informatics Institute - PPGC - PGMICRO, Federal University of Rio Grande do Sul (UFRGS) - Porto Alegre, Brazil; Informatics Institute - PPGC - PGMICRO, Federal University of Rio Grande do Sul (UFRGS) - Porto Alegre, Brazil; Informatics Institute - PPGC - PGMICRO, Federal University of Rio Grande do Sul (UFRGS) - Porto Alegre, Brazil; Informatics Institute - PPGC - PGMICRO, Federal University of Rio Grande do Sul (UFRGS) - Porto Alegre, Brazil; Informatics Institute - PPGC - PGMICRO, Federal University of Rio Grande do Sul (UFRGS) - Porto Alegre, Brazil; Informatics Institute - PPGC - PGMICRO, Federal University of Rio Grande do Sul (UFRGS) - Porto Alegre, Brazil\",\"2012 19th IEEE International Conference on Image Processing\",\"21 Feb 2013\",\"2012\",\"\",\"\",\"1693\",\"1696\",\"This work presents an efficient method to map Motion Estimation (ME) algorithms onto General Purpose Graphic Processing Unit (GPGPU) architectures using CUDA programming model. Our method jointly exploits the massive parallelism available in current GPGPU devices and the parallelization potential of ME algorithms: Full Search (FS) and Diamond Search (DS). Our main goal is to evaluate the feasibility of achieving real-time high-definition video encoding performance running on GPUs. For comparison reasons, multi-core parallel and distributed versions of these algorithms were developed using OpenMP and MPI (Message Passing Interface) libraries, respectively. The CUDA-based solutions achieve the highest speed-up in comparison with OpenMP and MPI versions for both algorithms and, when compared to the state-of-the-art, our FS and DS solutions reach up to 18x and 11x speed-up, respectively.\",\"2381-8549\",\"978-1-4673-2533-2\",\"10.1109/ICIP.2012.6467204\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6467204\",\"Motion Estimation;Block Matching Algorithms;GPU;CUDA;OpenMP;MPI\",\"Graphics processing units;Motion estimation;Algorithm design and analysis;Computer architecture;Real-time systems;Diamonds;Programming\",\"application program interfaces;graphics processing units;image matching;message passing;motion estimation;multiprocessing systems;parallel algorithms;parallel architectures;parallel programming;search problems;video coding\",\"real-time block matching motion estimation;map motion estimation algorithms;general purpose graphic processing unit architectures;GPGPU architectures;CUDA programming model;GPGPU devices;parallelization potential;full search;diamond search;real-time high-definition video encoding performance;multicore parallel algorithms;distributed algorithms;MPI libraries;OpenMP libraries;message passing interface libraries;CUDA-based solutions;DS solutions;FS solutions\",\"\",\"9\",\"\",\"13\",\"\",\"21 Feb 2013\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Locality-Aware Scheduling for Scalable Heterogeneous Environments\",\"A. V. Kamatar; R. D. Friese; R. Gioiosa\",\"Pacific Northwest National Laboratory,High Performance Computing,Richland,US; Pacific Northwest National Laboratory,High Performance Computing,Richland,US; Pacific Northwest National Laboratory,High Performance Computing,Richland,US\",\"2020 IEEE/ACM International Workshop on Runtime and Operating Systems for Supercomputers (ROSS)\",\"29 Dec 2020\",\"2020\",\"\",\"\",\"50\",\"58\",\"Heterogeneous computing promise boost performance of scientific applications by allowing massively parallel execution of computational tasks. However, manually managing extremely heterogeneous, multi-device systems is complicated and may result in sub-optimal performance. Specifically, data management is an extremely challenging problem on multi-device systems. In this work, we introduce two locality-aware schedulers for the Minos Computing Library (MCL), an asynchronous, task-based programming model and runtime for extremely heterogeneous systems. The first scheduler implements a pure locality-aware algorithm to maximize data reuse, though it might incur in “hot-spots” that limit system utilization. The second scheduler mitigates this drawback by dynamically targeting between locality-awareness and system utilization based on the current workload and available computing devices. Our results show that locality-awareness greatly benefit applications that exhibit data reuse, providing up to 6.9x and 7.9x over the original MCL scheduler and equivalent OpenCL implementations, respectively. Moreover, our schedulers introduce negligible overhead compared with the original MCL scheduler and achieve similar performance for applications that don't benefit from data locality.\",\"\",\"978-1-6654-2268-0\",\"10.1109/ROSS51935.2020.00011\",\"Research and Development; Advanced Scientific Computing Research; \",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9307939\",\"heterogeneous computing, gpu, gpgpu, openCL\",\"Task analysis;Performance evaluation;Runtime;Programming;Computational modeling;Round robin;Graphics processing units\",\"multiprocessing systems;parallel architectures;parallel processing;parallel programming;resource allocation;scheduling;shared memory systems\",\"pure locality-aware algorithm;limit system utilization;locality-awareness;available computing devices;exhibit data reuse;original MCL scheduler;data locality;locality-aware scheduling;scalable heterogeneous environments;heterogeneous computing promise;scientific applications;massively parallel execution;computational tasks;multidevice systems;sub-optimal performance;data management;extremely challenging problem;locality-aware schedulers;Minos Computing Library;task-based programming model;extremely heterogeneous systems\",\"\",\"1\",\"\",\"31\",\"\",\"29 Dec 2020\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Implementation and Optimization of a 1D2V PIC Method for Nonlinear Kinetic Models on GPUs\",\"M. Korch; P. Raithel; T. Werner\",\"University of Bayreuth,Department of Computer Science,Bayreuth,Germany,95440; University of Bayreuth,Department of Computer Science,Bayreuth,Germany,95440; University of Bayreuth,Department of Computer Science,Bayreuth,Germany,95440\",\"2020 28th Euromicro International Conference on Parallel, Distributed and Network-Based Processing (PDP)\",\"14 May 2020\",\"2020\",\"\",\"\",\"30\",\"37\",\"This paper considers the parallel numerical simulation of the time evolution of galaxies and globular clusters on GPUs. The model used is the Einstein-Vlasov system, which is designed, in particular, to study the formation of black holes and spacetime singularities in a general relativistic framework.First, a reference implementation is derived using NVIDIA CUDA as programming model, which is then optimized in several steps. Bottlenecks are identified by profiling, and different approaches, namely particle sort, improved treatment of atomic operations, and kernel fusion are investigated to overcome these bottlenecks. Each optimized variant is evaluated in relation to the other variants using detailed runtime experiments and profiling results. Using in the order of 10<sup>7</sup> to 10<sup>8</sup> particles, speedups between 1.84 and 2.38 w.r.t. the reference implementation have been observed.\",\"2377-5750\",\"978-1-7281-6582-0\",\"10.1109/PDP50117.2020.00012\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9092350\",\"particle-in-cell;kinetic models;Einstein–Vlasov;parallelization;GPU\",\"Graphics processing units;Kernel;Mathematical model;Numerical models;Computational modeling;Measurement;Arrays\",\"astronomy computing;black holes;general relativity;numerical analysis;parallel architectures;space-time configurations\",\"atomic operations;kernel fusion;optimized variant;runtime experiments;profiling results;reference implementation;1D2V PIC Method;nonlinear kinetic models;GPUs;parallel numerical simulation;globular clusters;Einstein-Vlasov system;black holes;spacetime singularities;general relativistic framework;NVIDIA CUDA;programming model;particle sort\",\"\",\"\",\"\",\"20\",\"\",\"14 May 2020\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Convergence and scalarization for data-parallel architectures\",\"Y. Lee; R. Krashinsky; V. Grover; S. W. Keckler; K. Asanović\",University of California at Berkeley; NVIDIA; NVIDIA; NVIDIA; University of California at Berkeley,\"Proceedings of the 2013 IEEE/ACM International Symposium on Code Generation and Optimization (CGO)\",\"8 Apr 2013\",\"2013\",\"\",\"\",\"1\",\"11\",\"Modern throughput processors such as GPUs achieve high performance and efficiency by exploiting data parallelism in application kernels expressed as threaded code. One draw-back of this approach compared to conventional vector architectures is redundant execution of instructions that are common across multiple threads, resulting in energy inefficiency due to excess instruction dispatch, register file accesses, and memory operations. This paper proposes to alleviate these overheads while retaining the threaded programming model by automatically detecting the scalar operations and factoring them out of the parallel code. We have developed a scalarizing compiler that employs convergence and variance analyses to statically identify values and instructions that are invariant across multiple threads. Our compiler algorithms are effective at identifying convergent execution even in programs with arbitrary control flow, identifying two-thirds of the opportunity captured by a dynamic oracle. The compile-time analysis leads to a reduction in instructions dispatched by 29%, register file reads and writes by 31% memory address counts by 47%, and data access counts by 38%.\",\"\",\"978-1-4673-5525-4\",\"10.1109/CGO.2013.6494995\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6494995\",\"CUDA;GPU;Scalarization\",\"Instruction sets;Convergence;Registers;Kernel;Computer architecture;Graphics processing units;Algorithm design and analysis\",\"convergence;multi-threading;optimising compilers;parallel architectures;power aware computing\",\"data-parallel architecture scalarization;data-parallel architecture convergence;throughput processors;GPUs;data parallelism;application kernels;threaded code;vector architectures;energy inefficiency;instruction dispatch;memory operations;threaded programming model;automatic scalar operation detection;parallel code;scalarizing compiler;compiler algorithms;convergent execution;arbitrary control flow;dynamic oracle;compile-time analysis;register file reads;register file writes;memory address counts;data access counts\",\"\",\"21\",\"3\",\"29\",\"\",\"8 Apr 2013\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"OpenMPC: Extended OpenMP Programming and Tuning for GPUs\",\"S. Lee; R. Eigenmann\",\"Sch. of ECE, Purdue Univ. West Lafayette, West Lafayette, IN, USA; Sch. of ECE, Purdue Univ. West Lafayette, West Lafayette, IN, USA\",\"SC '10: Proceedings of the 2010 ACM/IEEE International Conference for High Performance Computing, Networking, Storage and Analysis\",\"29 Nov 2010\",\"2010\",\"\",\"\",\"1\",\"11\",\"General-Purpose Graphics Processing Units (GPGPUs) are promising parallel platforms for high performance computing. The CUDA (Compute Unified Device Architecture) programming model provides improved programmability for general computing on GPGPUs. However, its unique execution model and memory model still pose significant challenges for developers of efficient GPGPU code. This paper proposes a new programming interface, called OpenMPC, which builds on OpenMP to provide an abstraction of the complex CUDA programming model and offers high-level controls of the involved parameters and optimizations. We have developed a fully automatic compilation and user-assisted tuning system supporting OpenMPC. In addition to a range of compiler transformations and optimizations, the system includes tuning capabilities for generating, pruning, and navigating the search space of compilation variants. Our results demonstrate that OpenMPC offers both programmability and tunability. Our system achieves 88% of the performance of the hand-coded CUDA programs.\",\"2167-4337\",\"978-1-4244-7559-9\",\"10.1109/SC.2010.36\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5644879\",\"\",\"Graphics processing unit;Kernel;Optimization;Instruction sets;Tuning;Programming;Registers\",\"computer graphic equipment;coprocessors;parallel programming;public domain software\",\"OpenMPC;extended OpenMP programming;GPU;general purpose graphics processing units;high performance computing;CUDA programming model;user assisted tuning system;compiler transformations;compiler optimizations;Compute Unified Device Architecture\",\"\",\"128\",\"1\",\"16\",\"\",\"29 Nov 2010\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Medical Imaging Processing on a Big Data Platform Using Python: Experiences with Heterogeneous and Homogeneous Architectures\",\"E. Serrano; J. G. Blas; J. Carretero; M. Abella; M. Desco\",\"Comput. Archit. & Technol. Group, Univ. Carlos III of Madrid, Leganes, Spain; Comput. Archit. & Technol. Group, Univ. Carlos III of Madrid, Leganes, Spain; Comput. Archit. & Technol. Group, Univ. Carlos III of Madrid, Leganes, Spain; Inst. de Investigacin Sanitaria Gregorio Maranon, Madrid, Spain; Inst. de Investigacin Sanitaria Gregorio Maranon, Madrid, Spain\",\"2017 17th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing (CCGRID)\",\"13 Jul 2017\",\"2017\",\"\",\"\",\"830\",\"837\",\"The apparition of new paradigms, programming models, and languages that offer better programmability and better performance turns the implementation of current scientific applications into a less time-consuming task than years ago. One significant example of this trend is the MapReduce programming model and its implementation using Apache Spark. Nowadays, this programming model is mainly used for data analysis and machine learning applications, although it has been expanded to its usage in the HPC community. On the side of programming languages, Python has positioned itself as an alternative to other scientific programming languages, such as Matlab or Julia. In this work we explore the capabilities of Python and Apache Spark as partners in the implementation of the backprojection operator of a CT reconstruction application. We present two interesting approaches with two different types of architectures: a heterogeneous architecture including NVidia GPUs and a full performance CPU mode with the compatibility with C/C++ native source code. We experimentally demonstrate that current CPU-based implementations scale with the number of computational units.\",\"\",\"978-1-5090-6611-7\",\"10.1109/CCGRID.2017.56\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7973788\",\"CUDA;Big Data;Apache Spark;CT;backprojection;Python\",\"Computer architecture;Programming;Computed tomography;Computational modeling;Sparks;Image reconstruction;Big Data\",\"Big Data;C++ language;data analysis;graphics processing units;learning (artificial intelligence);medical image processing;microprocessor chips;parallel processing;programming languages;public domain software;source code (software);workstation clusters\",\"medical imaging processing;Big Data platform;Python;heterogeneous architectures;homogeneous architectures;MapReduce programming model;Apache Spark;data analysis;machine learning;HPC community;programming languages;NVidia GPU;CPU mode;C/C++ native source code\",\"\",\"7\",\"\",\"27\",\"\",\"13 Jul 2017\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Porting Real-World Applications to GPU Clusters: A Celerity and Cronos Case Study\",\"P. Gschwandtner; R. Kissmann; D. Huber; P. Salzmann; F. Knorr; P. Thoman; T. Fahringer\",\"University of Innsbruck,Research Center HPC,Innsbruck,Austria; University of Innsbruck,Institute for Astro- and Particle Physics,Innsbruck,Austria; University of Innsbruck,Institute for Astro- and Particle Physics,Innsbruck,Austria; University of Innsbruck,Department of Computer Science,Innsbruck,Austria; University of Innsbruck,Department of Computer Science,Innsbruck,Austria; University of Innsbruck,Department of Computer Science,Innsbruck,Austria; University of Innsbruck,Department of Computer Science,Innsbruck,Austria\",\"2021 IEEE 17th International Conference on eScience (eScience)\",\"26 Oct 2021\",\"2021\",\"\",\"\",\"90\",\"98\",\"Accelerator clusters are an ongoing trend in high performance computing, continuously gaining traction and forming a ubiquitous hardware resource for domain scientists to run large-scale simulations on. However, there is often a gap between new hardware technologies and adoption by legacy code bases. Porting real-world applications to new programming models is a difficult undertaking, aggravated by the need for support for both distributed-memory and accelerator parallelism. In this work, we present a case study of porting Cronos, a real-world code from the field of magnetohydrodynamics, to Celerity, a high-level programming model for distributed-memory accelerator clusters. We discuss the numerical, algorithmic and implementation properties of the application and motivate our decisions for adapting them where necessary. Preliminary results show a parallel efficiency of up to 87% for 16 GPUs.\",\"\",\"978-1-6654-0361-0\",\"10.1109/eScience51609.2021.00019\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9582351\",\"accelerators;gpus;sycl;celerity;distributed memory;parallel programming\",\"Codes;Magnetohydrodynamics;Parallel programming;Computational modeling;High performance computing;Graphics processing units;Parallel processing\",\"\",\"\",\"\",\"\",\"\",\"20\",\"\",\"26 Oct 2021\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Impacts of Multi-GPU MPI Collective Communications on Large FFT Computation\",\"A. Ayala; S. Tomov; X. Luo; H. Shaeik; A. Haidar; G. Bosilca; J. Dongarra\",\"University of Tennessee, USA; University of Tennessee, USA; University of Tennessee, USA; University of Tennessee, USA; Nvidia Corporation, USA; University of Tennessee, USA; University of Tennessee, USA\",\"2019 IEEE/ACM Workshop on Exascale MPI (ExaMPI)\",\"13 Jan 2020\",\"2019\",\"\",\"\",\"12\",\"18\",\"Most applications targeting exascale, such as those part of the Exascale Computing Project (ECP), are designed for heterogeneous architectures and rely on the Message Passing Interface (MPI) as their underlying parallel programming model. In this paper we analyze the limitations of collective MPI communication for the computation of fast Fourier transforms (FFTs), which are relied on heavily for large-scale particle simulations. We present experiments made at one of the largest heterogeneous platforms, the Summit supercomputer at ORNL. We discuss communication models from state-of-the-art FFT libraries, and propose a new FFT library, named HEFFTE (Highly Efficient FFTs for Exascale), which supports heterogeneous architectures and yields considerable speedups compared with CPU libraries, while maintaining good weak as well as strong scalability.\",\"\",\"978-1-7281-6009-2\",\"10.1109/ExaMPI49596.2019.00007\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8955469\",\"\",\"\",\"application program interfaces;fast Fourier transforms;graphics processing units;message passing;parallel programming\",\"multiGPU MPI collective communications;FFT computation;MPI communication;fast Fourier transforms;particle simulations;FFT library;Highly Efficient FFTs for Exascale;HEFFTE\",\"\",\"7\",\"\",\"18\",\"\",\"13 Jan 2020\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Optimal Kernel Design for Finite-Element Numerical Integration on GPUs\",\"K. Banaś; F. Krużel; J. Bielański\",AGH University of Science and Technology; Cracow University of Technology; AGH University of Science and Technology,\"Computing in Science & Engineering\",\"13 Oct 2020\",\"2020\",\"22\",\"6\",\"61\",\"74\",\"This article presents the design and optimization of the GPU kernels for numerical integration, as it is applied in the standard form in finite-element codes. The optimization process employs autotuning, with the main emphasis on the placement of variables in the shared memory or registers. OpenCL and the first order finite-element method (FEM) approximation are selected for code design, but the techniques are also applicable to the CUDA programming model and other types of finite-element discretizations (including discontinuous Galerkin and isogeometric). The autotuning optimization is performed for four example graphics processors and the obtained results are discussed.\",\"1558-366X\",\"\",\"10.1109/MCSE.2019.2940656\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8843948\",\"\",\"Finite element analysis;Graphics processing units;Jacobian matrices;Solid modeling;Approximation algorithms;Optimization;Computational modeling\",\"finite element analysis;Galerkin method;graphics processing units;integration;optimisation;parallel architectures;parallel programming;shared memory systems\",\"isogeometric discretization;discontinuous Galerkin discretization;OpenCL;graphics processors;first order finite-element method approximation;autotuning optimization;finite-element discretizations;CUDA programming model;code design;shared memory;finite-element codes;GPU kernels;finite-element numerical integration;optimal kernel design\",\"\",\"\",\"\",\"21\",\"IEEE\",\"18 Sep 2019\",\"\",\"\",\"IEEE\",\"IEEE Magazines\"\n\"Towards an efficient multi-stage Riemann solver for nuclear physics simulations\",\"S. Cygert; J. Porter-Sobieraj; D. Kikoła; J. Sikorski; M. Słodkowski\",\"Warsaw University of Technology, Faculty of Mathematics and Information Science, Koszykowa 75, 00-662, Poland; Warsaw University of Technology, Faculty of Mathematics and Information Science, Koszykowa 75, 00-662, Poland; Purdue University, Department of Physics, 525 Northwestern Ave., West Lafayette, IN 47907, United States; Warsaw University of Technology, Faculty of Physics, Koszykowa 75, 00-662, Poland; Warsaw University of Technology, Faculty of Physics, Koszykowa 75, 00-662, Poland\",\"2013 Federated Conference on Computer Science and Information Systems\",\"7 Nov 2013\",\"2013\",\"\",\"\",\"441\",\"446\",\"Relativistic numerical hydrodynamics is an important tool in high energy nuclear science. However, such simulations are extremely demanding in terms of computing power. This paper focuses on improving the speed of solving the Riemann problem with the MUSTA-FORCE algorithm by employing the CUDA parallel programming model. We also propose a new approach to 3D finite difference algorithms, which employ a GPU that uses surface memory. Numerical experiments show an unprecedented increase in the computing power compared to a CPU.\",\"\",\"978-83-60810-52-1\",\"\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6644038\",\"\",\"Graphics processing units;Computational modeling;Instruction sets;Mathematical model;Hydrodynamics;Registers;Numerical models\",\"digital simulation;finite difference methods;hydrodynamics;mathematics computing;nuclear engineering computing;parallel architectures;parallel programming\",\"multistage Riemann solver;nuclear physics simulations;relativistic numerical hydrodynamics;high energy nuclear science;MUSTA-FORCE algorithm;CUDA parallel programming model;3D finite difference algorithms;GPU;surface memory;CPU\",\"\",\"\",\"\",\"15\",\"\",\"7 Nov 2013\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Using Fermi Architecture Knowledge to Speed up CUDA and OpenCL Programs\",\"Y. Torres; A. Gonzalez-Escribano; D. R. Llanos\",\"Dipt. Inf., Univ. Valladolid, Valladolid, Spain; Dipt. Inf., Univ. Valladolid, Valladolid, Spain; Dipt. Inf., Univ. Valladolid, Valladolid, Spain\",\"2012 IEEE 10th International Symposium on Parallel and Distributed Processing with Applications\",\"23 Aug 2012\",\"2012\",\"\",\"\",\"617\",\"624\",\"The NVIDIA graphics processing units (GPUs) are playing an important role as general purpose programming devices. The implementation of parallel codes to exploit the GPU hardware architecture is a task for experienced programmers. The threadblock size and shape choice is one of the most important user decisions when a parallel problem is coded. The threadblock configuration has a significant impact on the global performance of the program. While in CUDA parallel programming model it is always necessary to specify the threadblock size and shape, the OpenCL standard also offers an automatic mechanism to take this delicate decision. In this paper we present a study of these criteria for Fermi architecture, introducing a general approach for threadblock choice, and showing that there is considerable room for improvement in OpenCL automatic strategy.\",\"2158-9208\",\"978-1-4673-1631-6\",\"10.1109/ISPA.2012.92\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6280352\",\"GPGPU;automatic code tuning;Fermi;CUDA;OpenCL\",\"Instruction sets;Shape;Graphics processing unit;Computer architecture;Kernel;Benchmark testing;Tuning\",\"graphics processing units;parallel architectures;parallel programming\",\"fermi architecture knowledge;speed up CUDA programs;speed up OpenCL programs;NVIDIA graphics processing units;GPU hardware architecture;threadblock size;parallel problem;threadblock configuration;CUDA parallel programming model;automatic mechanism\",\"\",\"6\",\"\",\"17\",\"\",\"23 Aug 2012\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"High-Performance and Real-Time Volume Rendering in CUDA\",\"Y. Zhao; X. Cui; Y. Cheng\",\"Sino-Dutch Biomed. & Inf. Eng. Sch., Northeastern Univ., Shenyang, China; Sino-Dutch Biomed. & Inf. Eng. Sch., Northeastern Univ., Shenyang, China; Sino-Dutch Biomed. & Inf. Eng. Sch., Northeastern Univ., Shenyang, China\",\"2009 2nd International Conference on Biomedical Engineering and Informatics\",\"30 Oct 2009\",\"2009\",\"\",\"\",\"1\",\"4\",\"In order to improve the image quality and rendering speed, how to deal with a large scale of voxel computation is a challenge for programmers who work at medical image visualization. CUDA is a parallel programming model and software environment designed to overcome this challenge while maintaining a low learning curve for programmers familiar with standard programming languages such as C. In this paper, we propose an optimization algorithm of volume ray casting using CUDA; compare the performance to previous implementation in old version of GPU. The experiments show that our method can achieve a high image quality and rendering speed.\",\"1948-2922\",\"978-1-4244-4132-7\",\"10.1109/BMEI.2009.5304981\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5304981\",\"\",\"Rendering (computer graphics);Image quality;Programming profession;Large-scale systems;Biomedical imaging;Visualization;Parallel programming;Software maintenance;Software performance;Software design\",\"coprocessors;data visualisation;medical image processing;rendering (computer graphics)\",\"real-time volume rendering;CUDA;image quality;voxel computation;medical image visualization;parallel programming model;C programming language;volume ray casting;GPU;Compute United Device Architecture;graphics processor unit\",\"\",\"6\",\"\",\"21\",\"\",\"30 Oct 2009\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Shortening Design Time through Multiplatform Simulations with a Portable OpenCL Golden-model: The LDPC Decoder Case\",\"G. Falcao; M. Owaida; D. Novo; M. Purnaprajna; N. Bellas; C. D. Antonopoulos; G. Karakonstantis; A. Burg; P. Ienne\",\"Dept. of Electr. & Comput. Eng., Univ. of Coimbra, Coimbra, Portugal; Dept. of Comput. & Commun. Eng., Univ. of Thessaly Volos, Volos, Greece; Ecole Polytech. Fed. de Lausanne, Lausanne, Switzerland; Ecole Polytech. Fed. de Lausanne, Lausanne, Switzerland; Dept. of Comput. & Commun. Eng., Univ. of Thessaly Volos, Volos, Greece; Dept. of Comput. & Commun. Eng., Univ. of Thessaly Volos, Volos, Greece; Ecole Polytech. Fed. de Lausanne, Lausanne, Switzerland; Ecole Polytech. Fed. de Lausanne, Lausanne, Switzerland; Ecole Polytech. Fed. de Lausanne, Lausanne, Switzerland\",\"2012 IEEE 20th International Symposium on Field-Programmable Custom Computing Machines\",\"16 Jul 2012\",\"2012\",\"\",\"\",\"224\",\"231\",\"Hardware designers and engineers typically need to explore a multi-parametric design space in order to find the best configuration for their designs using simulations that can take weeks to months to complete. For example, designers of special purpose chips need to explore parameters such as the optimal bit width and data representation. This is the case for the development of complex algorithms such as Low-Density Parity-Check (LDPC) decoders used in modern communication systems. Currently, high-performance computing offers a wide set of acceleration options, that range from multicore CPUs to graphics processing units (GPUs) and FPGAs. Depending on the simulation requirements, the ideal architecture to use can vary. In this paper we propose a new design flow based on Open CL, a unified multiplatform programming model, which accelerates LDPC decoding simulations, thereby significantly reducing architectural exploration and design time. Open CL-based parallel kernels are used without modifications or code tuning on multicore CPUs, GPUs and FPGAs. We use SOpen CL (Silicon to Open CL), a tool that automatically converts Open CL kernels to RTL for mapping the simulations into FPGAs. To the best of our knowledge, this is the first time that a single, unmodified Open CL code is used to target those three different platforms. We show that, depending on the design parameters to be explored in the simulation, on the dimension and phase of the design, the GPU or the FPGA may suit different purposes more conveniently, providing different acceleration factors. For example, although simulations can typically execute more than 3× faster on FPGAs than on GPUs, the overhead of circuit synthesis often outweighs the benefits of FPGA-accelerated execution.\",\"\",\"978-1-4673-1605-7\",\"10.1109/FCCM.2012.46\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6239819\",\"design space exploration;simulation tools;parallel computing;FPGAs;GPUs;LDPC decoding\",\"Kernel;Parity check codes;Field programmable gate arrays;Computational modeling;Decoding;Hardware;Algorithm design and analysis\",\"codecs;field programmable gate arrays;logic design;logic simulation;microprocessor chips;parity check codes;public domain software\",\"design time shortening;multiplatform simulation;portable OpenCL golden model;LDPC decoder case;hardware designers;multiparametric design space;complex algorithms;low density parity check decoders;unified multiplatform programming model;SOpen CL;Silicon to Open CL;RTL;FPGA;GPU;register transfer level\",\"\",\"16\",\"\",\"17\",\"\",\"16 Jul 2012\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Accelerating error correction in high-throughput short-read DNA sequencing data with CUDA\",\"H. Shi; B. Schmidt; W. Liu; W. Muller-Wittig\",\"School of Computer Engineering, Nanyang Technological University, Singapore 639798; School of Computer Engineering, Nanyang Technological University, Singapore 639798; School of Computer Engineering, Nanyang Technological University, Singapore 639798; School of Computer Engineering, Nanyang Technological University, Singapore 639798\",\"2009 IEEE International Symposium on Parallel & Distributed Processing\",\"10 Jul 2009\",\"2009\",\"\",\"\",\"1\",\"8\",\"Emerging DNA sequencing technologies open up exciting new opportunities for genome sequencing by generating read data with a massive throughput. However, produced reads are significantly shorter and more error-prone compared to the traditional Sanger shotgun sequencing method. This poses challenges for de-novo DNA fragment assembly algorithms in terms of both accuracy (to deal with short, error-prone reads) and scalability (to deal with very large input data sets). In this paper we present a scalable parallel algorithm for correcting sequencing errors in high-throughput short-read data. It is based on spectral alignment and uses the CUDA programming model. Our computational experiments on a GTX 280 GPU show runtime savings between 10 and 19 times (for different error-rates using simulated datasets as well as real Solexa/Illumina datasets).\",\"1530-2075\",\"978-1-4244-3751-1\",\"10.1109/IPDPS.2009.5160924\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5160924\",\"\",\"Acceleration;Error correction;DNA;Genomics;Bioinformatics;Throughput;Assembly;Scalability;Parallel algorithms;Runtime\",\"biology computing;DNA;genomics;molecular biophysics;parallel algorithms\",\"error correction;high-throughput short-read DNA sequencing data;CUDA programming model;genome sequencing;scalable parallel algorithm;GTX 280 GPU\",\"\",\"2\",\"\",\"20\",\"\",\"10 Jul 2009\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Fast BFS-Based Triangle Counting on GPUs\",\"L. Wang; J. D. Owens\",\"University of California,Department of Computer Science,Davis,California,95616; University of California,Department of Electrical & Computer Engineering,Davis,California,95616\",\"2019 IEEE High Performance Extreme Computing Conference (HPEC)\",\"28 Nov 2019\",\"2019\",\"\",\"\",\"1\",\"6\",\"In this paper, we propose a novel method to compute triangle counting on GPUs. Unlike previous formulations of graph matching, our approach is BFS-based by traversing the graph in an all-source-BFS manner and thus can be mapped onto GPUs in a massively parallel fashion. Our implementation uses the Gunrock programming model and we evaluate our implementation in runtime and memory consumption compared with previous state-of-the-art work. We sustain a peak traversed-edgesper-second (TEPS) rate of nearly 10 GTEPS. Our algorithm is the most scalable and parallel among all existing GPU implementations and also outperforms all existing CPU distributed implementations. This work specifically focuses on leveraging our implementation on the triangle counting problem for the Subgraph Isomorphism Graph Challenge 2019, demonstrating a geometric mean speedup over the 2018 champion of 3.84×.\",\"2643-1971\",\"978-1-7281-5020-8\",\"10.1109/HPEC.2019.8916434\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8916434\",\"\",\"Graphics processing units;Memory management;Computational complexity;Parallel algorithms;Decision trees;Graph theory\",\"computational complexity;graph theory;graphics processing units;parallel algorithms;tree searching\",\"Subgraph Isomorphism Graph Challenge 2019;triangle counting problem;existing GPU implementations;peak traversed-edgesper-second rate;previous state-of-the-art work;memory consumption;Gunrock programming model;massively parallel fashion;all-source-BFS manner;graph matching;GPUs;fast BFS-based triangle counting\",\"\",\"3\",\"\",\"11\",\"\",\"28 Nov 2019\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Ultra low latency dataflow renderer\",\"S. Friston; A. Steed; S. Tilbury; G. Gaydadjiev\",\"University College London, Computer Science Department, Gower Street, WC1E 6BT, UK; University College London, Computer Science Department, Gower Street, WC1E 6BT, UK; Maxeler Technologies Ltd., 1 Down Place, London W6 9JH, UK; Maxeler Technologies Ltd., 1 Down Place, London W6 9JH, UK\",\"2015 25th International Conference on Field Programmable Logic and Applications (FPL)\",\"8 Oct 2015\",\"2015\",\"\",\"\",\"1\",\"4\",\"Reconfigurable hardware has been used before for low latency image synthesis. These are typically low level implementations with tight vertical integration. For example the apparatus of both Regan et al and Ng et al had the tracker driven by the same device performing the rendering. Reconfigurable hardware combined with the dataflow programming model can make application specific rendering hardware cost effective. Our sprite renderer has comparable scope to both prior examples, but our dataflow graph can be adapted to other use cases with an effort comparable to GPU shader programming.\",\"1946-1488\",\"978-0-9934-2800-5\",\"10.1109/FPL.2015.7293974\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7293974\",\"\",\"Computer architecture;Image color analysis;Hardware;Rendering (computer graphics);Streaming media;Transceivers;Sprites (computer)\",\"graphics processing units;image processing;rendering (computer graphics)\",\"ultra low latency dataflow renderer;low latency image synthesis;tight vertical integration;dataflow programming model;application specific rendering hardware cost;sprite renderer;dataflow graph;GPU shader programming\",\"\",\"\",\"\",\"18\",\"\",\"8 Oct 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"A Dynamic Task-Based D3Q19 Lattice-Boltzmann Method for Heterogeneous Architectures\",\"J. V. F. Lima; G. Freytag; V. G. Pinto; C. Schepke; P. O. A. Navaux\",\"Universidade Federal de Santa Maria, Brazil; Universidade Federal do Rio Grande do Sul, Brazil; Universidade Federal do Rio Grande do Sul, Brazil; Universidade Federal do Pampa, Campus Alegrete, Brazil; Universidade Federal do Rio Grande do Sul, Brazil\",\"2019 27th Euromicro International Conference on Parallel, Distributed and Network-Based Processing (PDP)\",\"21 Mar 2019\",\"2019\",\"\",\"\",\"108\",\"115\",\"Nowadays computing platforms expose a significant number of heterogeneous processing units such as multicore processors and accelerators. The task-based programming model has been a de facto standard model for such architectures since its model simplifies programming by unfolding parallelism at runtime based on data-flow dependencies between tasks. Many studies have proposed parallel strategies over heterogeneous platforms with accelerators. However, to the best of our knowledge, no dynamic task-based strategy of the Lattice-Boltzmann Method (LBM) has been proposed to exploit CPU+GPU computing nodes. In this paper, we present a dynamic task-based D3Q19 LBM implementation using three runtime systems for heterogeneous architectures: OmpSs, StarPU, and XKaapi. We detail our implementations and compare performance over two heterogeneous platforms. Experimental results demonstrate that our task-based approach attained up to 8.8 of speedup over an OpenMP parallel loop version.\",\"2377-5750\",\"978-1-7281-1644-0\",\"10.1109/EMPDP.2019.8671583\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8671583\",\"\",\"Task analysis;Runtime;Graphics processing units;Computational modeling;Parallel processing;Programming;Computer architecture\",\"flow simulation;graphics processing units;lattice Boltzmann methods;multiprocessing systems;parallel algorithms;parallel architectures;parallel processing;parallel programming;shared memory systems\",\"CPU+GPU computing nodes;dynamic task-based D3Q19 LBM implementation;heterogeneous architectures;heterogeneous platforms;task-based approach;significant number;heterogeneous processing units;multicore processors;accelerators;task-based programming model;facto standard model;data-flow dependencies;parallel strategies;dynamic task-based strategy;dynamic task-based D3Q19 Lattice-Boltzmann method;OmpSs;StarPU;XKaapi;OpenMP parallel loop version\",\"\",\"1\",\"\",\"27\",\"\",\"21 Mar 2019\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Breaking Weak 1024-bit RSA Keys with CUDA\",\"K. Scharfglass; D. Weng; J. White; C. Lupo\",\"Comput. Sci. Dept., California Polytech. State Univ., San Luis Obispo, CA, USA; Comput. Sci. Dept., California Polytech. State Univ., San Luis Obispo, CA, USA; Comput. Sci. Dept., California Polytech. State Univ., San Luis Obispo, CA, USA; Comput. Sci. Dept., California Polytech. State Univ., San Luis Obispo, CA, USA\",\"2012 13th International Conference on Parallel and Distributed Computing, Applications and Technologies\",\"9 Sep 2013\",\"2012\",\"\",\"\",\"207\",\"212\",\"An exploit involving the greatest common divisor (GCD) of RSA moduli was recently discovered [1]. This paper presents a tool that can efficiently and completely compare a large number of 1024-bit RSA public keys, and identify any keys that are susceptible to this weakness. NVIDIA's graphics processing units (GPU) and the CUDA massively-parallel programming model are powerful tools that can be used to accelerate this tool. Our method using CUDA has a measured performance speedup of 27.5 compared to a sequential CPU implementation, making it a more practical method to compare large sets of keys. A computation for finding GCDs between 200,000 keys, i.e., approximately 20 billion comparisons, was completed in 113 minutes, the equivalent of approximately 2.9 million 1024-bit GCD comparisons per second.\",\"2379-5352\",\"978-0-7695-4879-1\",\"10.1109/PDCAT.2012.58\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6589265\",\"CUDA;RSA;greatest common divisor;parallel computation\",\"Graphics processing units;Instruction sets;Arrays;Organizations;Public key;Matrix decomposition;Kernel\",\"graphics processing units;parallel architectures;parallel programming;performance evaluation;public key cryptography\",\"CUDA;greatest common divisor;GCD;RSA moduli;1024-bit RSA public keys;NVIDIA;graphics processing units;GPU;massively-parallel programming model;performance speedup;word length 1024 bit\",\"\",\"6\",\"\",\"9\",\"\",\"9 Sep 2013\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Simulee: Detecting CUDA Synchronization Bugs via Memory-Access Modeling\",\"M. Wu; Y. Ouyang; H. Zhou; L. Zhang; C. Liu; Y. Zhang\",\"Southern University of Science and Technology,Shenzhen,China; Southern University of Science and Technology,Shenzhen,China; University of Texas at Dallas,Dallas,USA; University of Texas at Dallas,Dallas,USA; University of Texas at Dallas,Dallas,USA; Southern University of Science and Technology,Shenzhen,China\",\"2020 IEEE/ACM 42nd International Conference on Software Engineering (ICSE)\",\"21 Dec 2020\",\"2020\",\"\",\"\",\"937\",\"948\",\"While CUDA has become a mainstream parallel computing platform and programming model for general-purpose GPU computing, how to effectively and efficiently detect CUDA synchronization bugs remains a challenging open problem. In this paper, we propose the first lightweight CUDA synchronization bug detection framework, namely Simulee, to model CUDA program execution by interpreting the corresponding LLVM bytecode and collecting the memory-access information for automatically detecting general CUDA synchronization bugs. To evaluate the effectiveness and efficiency of Simulee, we construct a benchmark with 7 popular CUDA-related projects from GitHub, upon which we conduct an extensive set of experiments. The experimental results suggest that Simulee can detect 21 out of the 24 manually identified bugs in our preliminary study and also 24 previously unknown bugs among all projects, 10 of which have already been confirmed by the developers. Furthermore, Simulee significantly outperforms state-of-the-art approaches for CUDA synchronization bug detection.\",\"1558-1225\",\"978-1-4503-7121-6\",\"10.1145/3377811.3380358\",\"National Natural Science Foundation of China(grant numbers:61902169); Shenzhen Peacock Plan(grant numbers:KQTD2016112514355531); National Science Foundation(grant numbers:CCF-1763906,CCF-1942430); \",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9284094\",\"\",\"Computational modeling;Computer bugs;Graphics processing units;Benchmark testing;Synchronization;Software engineering;Software development management\",\"graphics processing units;multiprocessing systems;parallel architectures;parallel programming;program compilers;program debugging\",\"Simulee;CUDA program execution;memory-access information;general CUDA synchronization bugs;7 popular CUDA-related projects;24 manually identified bugs;24 previously unknown bugs;memory-access modeling;mainstream parallel computing platform;programming model;general-purpose GPU computing;challenging open problem;lightweight CUDA synchronization bug detection framework\",\"\",\"1\",\"\",\"54\",\"\",\"21 Dec 2020\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Performance and Power Efficient Massive Parallel Computational Model for HPC Heterogeneous Exascale Systems\",\"M. U. Ashraf; F. Alburaei Eassa; A. Ahmad Albeshri; A. Algarni\",\"Department of Computer Science, Faculty of Computing and Information Technology, King Abdulaziz University, Jeddah, Saudi Arabia; Department of Computer Science, Faculty of Computing and Information Technology, King Abdulaziz University, Jeddah, Saudi Arabia; Department of Computer Science, Faculty of Computing and Information Technology, King Abdulaziz University, Jeddah, Saudi Arabia; Department of Computer Science, Faculty of Computing and Information Technology, King Abdulaziz University, Jeddah, Saudi Arabia\",\"IEEE Access\",\"15 May 2018\",\"2018\",\"6\",\"\",\"23095\",\"23107\",\"The emerging high-performance computing Exascale supercomputing system, which is anticipated to be available in 2020, will unravel many scientific mysteries. This extraordinary processing framework will accomplish a thousand-folds increment in figuring power contrasted with the current Petascale framework. The prospective framework will help development communities and researchers in exploring from conventional homogeneous to the heterogeneous frameworks that will be joined into energy efficient GPU devices along with traditional CPUs. For accomplishing ExaFlops execution through the Ultrascale framework, the present innovations are confronting several challenges. Huge parallelism is one of these challenges, which requires a novel low power consuming parallel programming approach for attaining massive performance. This paper introduced a new parallel programming model that achieves massive parallelism by combining coarse-grained and fine-grained parallelism over inter-node and intranode computation respectively. The proposed framework is tri-hybrid of MPI, OpenMP, and compute unified device architecture (MOC) that compute input data over heterogeneous framework. We implemented the proposed model in linear algebraic dense matrix multiplication application, and compared the quantified metrics with well-known basic linear algebra subroutine libraries such as CUDA basic linear algebra subroutines library and KAUST basic linear algebra subprograms. MOC outperformed to all implemented methods and achieved massive performance by consuming less power. The proposed MOC approach can be considered an initial and leading model to deal emerging Exascale computing systems.\",\"2169-3536\",\"\",\"10.1109/ACCESS.2018.2823299\",\"Deanship of Scientific Research at King Abdulaziz University, Jeddah(grant numbers:RG-3-611-38); \",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8334408\",\"Exascale computing;HPC;massive parallelism;super computing;energy efficiency;hybrid programming;CUDA;OpenMP;MPI\",\"Graphics processing units;Computational modeling;Parallel processing;Performance evaluation;Computer architecture;Acceleration;Parallel programming\",\"application program interfaces;graphics processing units;mathematics computing;matrix multiplication;message passing;multiprocessing systems;parallel architectures;parallel machines;parallel programming;power aware computing\",\"achieves massive parallelism;fine-grained parallelism;intranode computation;compute unified device architecture;compute input data;heterogeneous framework;parallel programming model;Ultrascale framework;power efficient massive parallel computational model;OpenMP;MPI;internode computation;coarse-grained parallelism;low power consuming parallel programming approach;ExaFlops execution;Petascale framework;high-performance computing Exascale supercomputing system;traditional CPU;energy efficient GPU devices;development communities;extraordinary processing framework;scientific mysteries;HPC heterogeneous Exascale systems;Exascale computing systems;initial leading model;KAUST basic linear algebra subprograms;CUDA basic linear algebra subroutines library;linear algebraic dense matrix multiplication application\",\"\",\"15\",\"\",\"65\",\"OAPA\",\"9 Apr 2018\",\"\",\"\",\"IEEE\",\"IEEE Journals\"\n\"The Memory Controller Wall: Benchmarking the Intel FPGA SDK for OpenCL Memory Interface\",\"H. R. Zohouri; S. Matsuoka\",\"Tokyo Institute of Technology, Japan; Tokyo Institute of Technology, Japan\",\"2019 IEEE/ACM International Workshop on Heterogeneous High-performance Reconfigurable Computing (H2RC)\",\"2 Jan 2020\",\"2019\",\"\",\"\",\"11\",\"18\",\"Supported by their high power efficiency and recent advancements in High Level Synthesis (HLS), FPGAs are quickly finding their way into HPC and cloud systems. Large amounts of work have been done so far on loop and area optimizations for different applications on FPGAs using HLS. However, a comprehensive analysis of the behavior and efficiency of the memory controller of FPGAs is missing in literature, which becomes even more crucial when the limited memory bandwidth of modern FPGAs compared to their GPU counterparts is taken into account. In this work, we will analyze the memory interface generated by Intel FPGA SDK for OpenCL with different configurations for input/output arrays, vector size, interleaving, kernel programming model, on-chip channels, operating frequency, padding, and multiple types of overlapped blocking. Our results point to multiple shortcomings in the memory controller of Intel FPGAs, especially with respect to memory access alignment, that can hinder the programmer's ability in maximizing memory performance in their design. For some of these cases, we will provide work-arounds to improve memory bandwidth efficiency; however, a general solution will require major changes in the memory controller itself.\",\"\",\"978-1-7281-5999-7\",\"10.1109/H2RC49586.2019.00007\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8945518\",\"\",\"Kernel;Field programmable gate arrays;Memory management;Benchmark testing;Bandwidth;Indexes;Graphics processing units\",\"application program interfaces;cloud computing;electronic engineering computing;field programmable gate arrays;graphics processing units;high level synthesis;optimisation;power aware computing\",\"loop;area optimizations;HLS;Intel FPGA SDK;memory access alignment;memory controller wall;OpenCL memory interface;power efficiency;high level synthesis;cloud systems;GPU;kernel programming model;on-chip channels;operating frequency\",\"\",\"5\",\"\",\"15\",\"\",\"2 Jan 2020\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Space-Efficient Pointwise Computation of the Distance Transform on GPUs\",\"N. Khan; M. Zahran\",\"Comput. Sci. Dept., Brown Univ., Providence, RI, USA; Comput. Sci. Dept., New York Univ., New York, NY, USA\",\"2017 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW)\",\"3 Jul 2017\",\"2017\",\"\",\"\",\"557\",\"566\",\"To minimize the amount of computation, traditional approaches to calculating the distance transform (DT) on a discrete volume propagate distance values in a local neighborhood. This results in recursive dependencies across the volume, requiring the DT to be calculated for all points in the domain en mass and stored as static values in memory. On the other hand, the ability to calculate the distance transform point-wise not only offers the prospect of efficient memory usage and scalability, but also a high degree of flexibility in accommodating the unique requirements of new application domains. However, among the current DT algorithms, the computationally intensive brute-force algorithm is the only one that allows point-wise computation. We demonstrate that the by decomposing it into a map and a reduction pattern on the massively parallel architecture of a modern Graphics Processing Unit (GPU), the brute-force distance transform algorithm achieves the threefold goals of memory efficiency, flexibility, and performance. We discuss a memory constrained implementation in the CUDA parallel programming model. The flexibility of point-wise computation at runtime is demonstrated by presenting an approximate and an anisotropic variant of the standard distance transform algorithm, and using these variants for the rendering of a CT scan image. Our approach allows the distance transform to be calculated for 1024 query points and up to 16 million feature points in 141.25 milliseconds while allowing direct control over the memory working-set size. These results demonstrate the potential of pointwise computation of the DT at runtime and the need for future algorithms to incorporate this capability.\",\"\",\"978-1-5386-3408-0\",\"10.1109/IPDPSW.2017.90\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7965093\",\"Rendering;Medical Imaging;Vision;Map;Reduction;Memory;Patterns;Anisotropic;Approximate\",\"Transforms;Graphics processing units;Approximation algorithms;Memory management;Runtime;Parallel processing;Measurement\",\"graphics processing units;parallel architectures\",\"space-efficient pointwise computation;GPU;discrete volume;memory usage;DT algorithms;point-wise computation;Graphics Processing Unit;brute-force distance transform algorithm;memory efficiency;CUDA parallel programming model;standard distance transform algorithm;rendering;CT scan image;query points;memory working-set size\",\"\",\"\",\"\",\"41\",\"\",\"3 Jul 2017\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Pygion: Flexible, Scalable Task-Based Parallelism with Python\",\"E. Slaughter; A. Aiken\",\"SLAC National Accelerator Laboratory, USA; Stanford University, USA\",\"2019 IEEE/ACM Parallel Applications Workshop, Alternatives To MPI (PAW-ATM)\",\"13 Apr 2020\",\"2019\",\"\",\"\",\"58\",\"72\",\"Dynamic languages provide the flexibility needed to implement expressive support for task-based parallel programming constructs. We present Pygion, a Python interface for the Legion task-based programming system, and show that it can provide features comparable to Regent, a statically typed programming language with dedicated support for the Legion programming model. Furthermore, we show that the dynamic nature of Python permits the implementation of several key optimizations (index launches, futures, mapping) currently implemented in the Regent compiler. Together these features enable Pygion code that is comparable in expressiveness but more flexible than Regent, and substantially more concise, less error prone, and easier to use than C++ Legion code. Pygion is designed to interoperate with Regent and can use Regent to generate high- performance CPU and GPU kernel implementations. We show that, in combination with high-performance kernels written in Regent, Pygion is able to achieve efficient, scalable execution on up to 512 nodes of the heterogeneous supercomputer Piz Daint.\",\"\",\"978-1-7281-5979-9\",\"10.1109/PAW-ATM49560.2019.00011\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9062721\",\"task-based parallelism;Pygion;Legion;Python\",\"Task analysis;Runtime;Python;C++ languages;Optimization;Performance analysis\",\"data flow computing;graphics processing units;parallel machines;parallel programming;Python\",\"scalable task-based parallelism;dynamic languages;task-based parallel program;Python interface;statically typed programming language;Legion programming model;Regent compiler;Pygion code;Legion code;GPU kernel implementations;scalable execution;Legion task-based programming\",\"\",\"2\",\"\",\"37\",\"\",\"13 Apr 2020\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"OpenCL Performance Prediction using Architecture-Independent Features\",\"B. Johnston; G. Falzon; J. Milthorpe\",\"Res. Sch. of Comput. Sci., Australian Nat. Univ., Canberra, ACT, Australia; Sch. of Sci. & Technol., Univ. of New England, Armidale, NSW, Australia; Res. Sch. of Comput. Sci., Australian Nat. Univ., Canberra, ACT, Australia\",\"2018 International Conference on High Performance Computing & Simulation (HPCS)\",\"1 Nov 2018\",\"2018\",\"\",\"\",\"561\",\"569\",\"OpenCL is an attractive programming model for heterogeneous high-performance computing systems, with wide support from hardware vendors and significant performance portability. To support efficient scheduling on HPC systems it is necessary to perform accurate performance predictions for OpenCL workloads on varied compute devices, which is challenging due to diverse computation, communication and memory access characteristics which result in varying performance between devices. The Architecture Independent Workload Characterization (AIWC) tool can be used to characterize OpenCL kernels according to a set of architecture-independent features. This work presents a methodology where AIWC features are used to form a model capable of predicting accelerator execution times. We used this methodology to predict execution times for a set of 37 computational kernels running on 15 different devices representing a broad range of CPU, GPU and MIC architectures. The predictions are highly accurate, differing from the measured experimental run-times by an average of only 1.2%, and correspond to actual execution time mispredictions of 9 ps to 1 sec according to problem size. A previously unencountered code can be instrumented once and the AIWC metrics embedded in the kernel, to allow performance prediction across the full range of modelled devices. The results suggest that this methodology supports correct selection of the most appropriate device for a previously unen- countered code, which is highly relevant to the HPC scheduling setting.\",\"\",\"978-1-5386-7879-4\",\"10.1109/HPCS.2018.00095\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8514400\",\"\",\"Graphics processing units;Computational modeling;Memory management;Predictive models;Kernel;Performance evaluation;Parallel processing\",\"graphics processing units;multiprocessing systems;parallel processing;performance evaluation;scheduling\",\"OpenCL workloads;memory access characteristics;OpenCL kernels;AIWC features;accelerator execution times;AIWC metrics;modelled devices;OpenCL performance prediction;heterogeneous high-performance computing systems;hardware vendors;HPC systems;GPU;CPU;HPC scheduling;MIC architectures;architecture independent workload characterization tool;performance portability;programming model;computational kernels\",\"\",\"4\",\"\",\"24\",\"\",\"1 Nov 2018\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"A CUDA-enabled Hadoop cluster for fast distributed image processing\",\"R. Malakar; N. Vydyanathan\",\"Corporate Research and Technology, Siemens Technology Services, Bangalore, India; Corporate Research and Technology, Siemens Technology Services, Bangalore, India\",\"2013 National Conference on Parallel Computing Technologies (PARCOMPTECH)\",\"7 Oct 2013\",\"2013\",\"\",\"\",\"1\",\"5\",\"Hadoop is a map-reduce based distributed processing framework, frequently used in the industry today, in areas of big data analysis, particularly text analysis. Graphics processing units (GPUs), on the other hand, are massively parallel platforms with attractive performance to price and power ratios, used extensively in the recent years for acceleration of data parallel computations. CUDA or Compute Unified Device Architecture is a C-based programming model proposed by NVIDIA for leveraging the parallel computing capabilities of the GPU for general purpose computations. This paper attempts to integrate CUDA acceleration into the Hadoop distributed processing framework to create a heterogeneous high performance image processing system. As Hadoop primarily is used for text analysis, this involves facilitating efficient image processing in Hadoop. Our experimental evaluations using a Adaboost based face detection algorithm indicate that CUDA-enabling a Hadoop cluster, even with low-end GPUs, can result in a 25% improvement in data processing throughput, indicating that an integration of these two technologies can help build scalable, high throughput, power and cost-efficient computing platforms.\",\"\",\"978-1-4799-1591-0\",\"10.1109/ParCompTech.2013.6621392\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6621392\",\"Hadoop;Map-reduce;CUDA;GPGPU\",\"Graphics processing units;Face detection;Java;Acceleration;Throughput;Image processing;Streaming media\",\"C language;data analysis;face recognition;graphics processing units;learning (artificial intelligence);parallel architectures;text analysis\",\"CUDA-enabled Hadoop cluster;distributed image processing;Map-reduce based distributed processing framework;big data analysis;text analysis;graphics processing units;GPU;parallel platforms;data parallel computations;Compute Unified Device Architecture;C-based programming model;NVIDIA;general purpose computations;Hadoop distributed processing framework;heterogeneous high performance image processing system;Adaboost based face detection algorithm\",\"\",\"8\",\"\",\"19\",\"\",\"7 Oct 2013\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Accelerating a 3D Finite-Difference Earthquake Simulation with a C-to-CUDA Translator\",\"D. Unat; J. Zhou; Y. Cui; S. B. Baden; X. Cai\",\"University of California, San Diego; University of California, San Diego; University of California, San Diego; University of California, San Diego; Simula Research Laboratory, Norway\",\"Computing in Science & Engineering\",\"20 Apr 2012\",\"2012\",\"14\",\"3\",\"48\",\"59\",\"GPUs provide impressive computing power, but GPU programming can be challenging. Here, an experience in porting real-world earthquake code to Nvidia GPUs is described. Specifically, an annotation-based programming model, called Mint, and its accompanying source-to-source translator are used to automatically generate CUDA source code and simplify the exploration of performance tradeoffs.\",\"1558-366X\",\"\",\"10.1109/MCSE.2012.44\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6188562\",\"Code generation;optimization;emerging technologies;Earth and atmospheric sciences;scientific computing\",\"Graphics processing unit;Instruction sets;Three dimensional displays;Optimization;Mathematical model\",\"earthquakes;finite difference methods;graphics processing units;parallel architectures\",\"3D finite difference earthquake simulation;GPU;annotation based programming model;source to source translator;CUDA source code\",\"\",\"9\",\"\",\"15\",\"\",\"20 Apr 2012\",\"\",\"\",\"IEEE\",\"IEEE Magazines\"\n\"OpenCL programmable exposed datapath high performance low-power image signal processor\",\"J. Multanen; H. Kultala; M. Koskela; T. Viitanen; P. Jääskelainen; J. Takala; A. Danielyan; C. Cruz\",\"Tampere University of Technology, Finland; Tampere University of Technology, Finland; Tampere University of Technology, Finland; Tampere University of Technology, Finland; Tampere University of Technology, Finland; Tampere University of Technology, Finland; Noiseless Imaging Ltd, Finland; Noiseless Imaging Ltd, Finland\",\"2016 IEEE Nordic Circuits and Systems Conference (NORCAS)\",\"22 Dec 2016\",\"2016\",\"\",\"\",\"1\",\"6\",\"Sophisticated computational imaging algorithms require both high performance and good energy-efficiency when executed on mobile devices. Recent trend has been to exploit the abundant data-level parallelism found in general purpose programmable GPUs. However, for low-power mobile use cases, generic GPUs consume excessive amounts of power. This paper proposes a programmable computational imaging processor with 16-bit half-precision SIMD floating point vector processing capabilities combined with power efficiency of an exposed datapath. In comparison to traditional VLIW architectures with similar computational resources, the exposed datapath reduces the register file traffic and complexity. These and the specific optimizations enabled by the explicit programming model enable extremely good power-performance. When synthesized on a 28nm ASIC technology, the accelerator consumes 71mW of power while running a state-of-the-art denoising algorithm, and occupies only 0.2mm<sup>2</sup> of chip area. For the algorithm, energy usage per frame is 7mJ, which is 10x less than the best found GPU-based implementation.\",\"\",\"978-1-5090-1095-0\",\"10.1109/NORCHIP.2016.7792906\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7792906\",\"\",\"Radio frequency;Registers;VLIW;Computer architecture;Signal processing algorithms;Hardware;Ports (Computers)\",\"application specific integrated circuits;floating point arithmetic;graphics processing units;parallel processing\",\"data-level parallelism;general purpose programmable GPU;low-power mobile use cases;programmable computational imaging processor;half-precision SIMD floating point vector processing capabilities;computational resources;exposed datapath;register file traffic;explicit programming model;ASIC technology;state-of-the-art denoising algorithm;word length 16 bit;size 28 nm;power 71 mW;energy 7 mJ\",\"\",\"1\",\"\",\"15\",\"\",\"22 Dec 2016\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Automatic Mapping Single-Device OpenCL Program to Heterogeneous Multi-device Platform\",\"D. Chen; C. Xun; D. Huang; M. Wen; C. Zhang\",\"Nat. Key Lab. of Parallel & Distrib. Process., Nat. Univ. of Defense Technol. Changsha, Changsha, China; Nat. Key Lab. of Parallel & Distrib. Process., Nat. Univ. of Defense Technol. Changsha, Changsha, China; Nat. Key Lab. of Parallel & Distrib. Process., Nat. Univ. of Defense Technol. Changsha, Changsha, China; Nat. Key Lab. of Parallel & Distrib. Process., Nat. Univ. of Defense Technol. Changsha, Changsha, China; Nat. Key Lab. of Parallel & Distrib. Process., Nat. Univ. of Defense Technol. Changsha, Changsha, China\",\"2013 IEEE 10th International Conference on High Performance Computing and Communications & 2013 IEEE International Conference on Embedded and Ubiquitous Computing\",\"12 Jun 2014\",\"2013\",\"\",\"\",\"135\",\"142\",\"In this paper, we propose a framework to automatically map single-device OpenCL programs to heterogeneous multi-device platforms with performance concerns. Our framework is based on the independence of work groups which built inside the OpenCL programming model and relies heavily on the knowledge of global memory access regions of work groups. So global memory access patterns of work groups are analyzed and an abstract representation CCRwS is designed to describe the exact memory access regions of each memory access statement in the kernels. A global memory access analyzer is designed to get CCRwSs by performing static program analysis on kernel codes. Based on CCRwSs, data transfer between multiple devices and host can be fully controlled by our framework. Then a kernel code regenerator is designed to distribute the workload and perform architecture specific optimizations by code transformation. Then we tested our framework on a platform with 2 Intel E5-2650 CPUs and 4 NVIDIA Tesla C2050 GPUs. Compared with the performance on single GPU, the kernels running on all the 6 devices can achieve about 4.5x faster.\",\"\",\"978-0-7695-5088-6\",\"10.1109/HPCC.and.EUC.2013.28\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6825555\",\"Automatic;Performance;Code transformation;multi-device\",\"Kernel;Indexes;Performance evaluation;Benchmark testing;Abstracts;Optimization;Computer architecture\",\"graphics processing units;parallel programming;program diagnostics\",\"automatic mapping single-device OpenCL program;heterogeneous multi-device platform;OpenCL programming model;global memory access regions;global memory access patterns;abstract representation CCRwS;static program analysis;kernel codes;data transfer;multiple devices;code transformation;Intel E5-2650 CPU;NVIDIA Tesla C2050 GPU\",\"\",\"1\",\"\",\"10\",\"\",\"12 Jun 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Employing Compression Solutions under OpenACC\",\"E. Salehi; A. Lashgar; A. Baniasadi\",NA; NA; NA,\"2016 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW)\",\"4 Aug 2016\",\"2016\",\"\",\"\",\"348\",\"356\",\"For GPUs to achieve their peak performance, effective and efficient usage of memory bandwidth is necessary. To this end, programmers invest extensive development effort to optimize a GPU program, specially its memory bandwidth usage. The OpenACC programming model has been introduced to tackle the accelerators programming complexity. However, this model's coarse-grained control on a program can make the memory bandwidth utilization even worse than the utilization achieved under CUDA. We propose an extension to OpenACC in order to reduce the traffic on the memory interconnection network, using a compression method on floating point numbers. We examine our method on three case studies and achieve up to 1.36X speedup.\",\"\",\"978-1-5090-3682-0\",\"10.1109/IPDPSW.2016.196\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7529890\",\"OpenACC;Compression;Accelerators\",\"Kernel;Graphics processing units;Bandwidth;Programming;Parallel processing;Standards;Data transfer\",\"graphics processing units;parallel architectures;parallel programming;storage management\",\"compression solution;memory bandwidth;GPU program;OpenACC programming model;accelerator programming complexity;coarse-grained control;CUDA;memory interconnection network;floating point number\",\"\",\"\",\"\",\"17\",\"\",\"4 Aug 2016\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Fast 1-itemset frequency count using CUDA\",\"R. L. Uy; N. Marcos\",\"Computer Technology Department, De La Salle University, Manila, Philippines; Software Technology Department, De La Salle University, Manila, Philippines\",\"2016 IEEE Region 10 Conference (TENCON)\",\"9 Feb 2017\",\"2016\",\"\",\"\",\"210\",\"213\",\"Frequent itemset mining is one of the main and compute-intensive operations in the field of data mining. The said algorithm is use in finding frequent patterns in transactional databases. The 1-itemset frequent count is used as basis for finding succeeding k-itemset mining. Thus there is a need to speed-up this process. One of the techniques to speed-up the process is using the Single Instruction Multiple Thread (SIMT) architecture. This architecture allows a single instruction to be applied to multiple threads at the same time. Current graphics processing unit (GPU), which contains multiple streaming processing units, uses SIMT architecture. In order to abstract the GPU hardware from the programming model, NVIDIA introduces the compute unified device architecture (CUDA) as an extension to existing programming languages in order to support SIMT. This paper discusses how 1-itemset frequent count is implemented in SIMT using CUDA.\",\"2159-3450\",\"978-1-5090-2597-8\",\"10.1109/TENCON.2016.7847991\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7847991\",\"Frequent itemset mining;CUDA programming;graphics processing unit;data mining;big data\",\"Graphics processing units;Instruction sets;Data mining;Kernel;Itemsets;Hardware;Computer architecture\",\"data mining;graphics processing units;parallel architectures\",\"fast 1-itemset frequency count;CUDA;frequent itemset mining;data mining;k-itemset mining;single-instruction multiple thread architecture;SIMT architecture;graphics processing unit;GPU hardware;NVIDIA;compute unified device architecture\",\"\",\"1\",\"\",\"12\",\"\",\"9 Feb 2017\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"CUDA: Scalable parallel programming for high-performance scientific computing\",\"D. Luebke\",\"NVIDIA Corporation, U.S.A.\",\"2008 5th IEEE International Symposium on Biomedical Imaging: From Nano to Macro\",\"13 Jun 2008\",\"2008\",\"\",\"\",\"836\",\"838\",\"Graphics processing units (GPUs) originally designed for computer video cards have emerged as the most powerful chip in a high-performance workstation. Unlike multicore CPU architectures, which currently ship with two or four cores, GPU architectures are \"\"manycore\"\" with hundreds of cores capable of running thousands of threads in parallel. NVIDIA's CUDA is a co-evolved hardware-software architecture that enables high-performance computing developers to harness the tremendous computational power and memory bandwidth of the GPU in a familiar programming environment - the C programming language. We describe the CUDA programming model and motivate its use in the biomedical imaging community.\",\"1945-8452\",\"978-1-4244-2002-5\",\"10.1109/ISBI.2008.4541126\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=4541126\",\"\",\"Parallel programming;Scientific computing;Computer architecture;Biomedical computing;Computer graphics;Workstations;Multicore processing;Central Processing Unit;Marine vehicles;Yarn\",\"biomedical imaging;C language;computer graphic equipment;computer graphics;medical computing;parallel programming\",\"CUDA;scalable parallel programming;high-performance scientific computing;graphics processing units;co-evolved hardware-software architecture;computational power;memory bandwidth;C programming language;biomedical imaging;GPU computing\",\"\",\"71\",\"3\",\"13\",\"\",\"13 Jun 2008\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"AI Drives Domain Specific Processors\",\"Y. Kang\",\"UNISOC Technologies Inc, Beijing, China\",\"2018 IEEE Asian Solid-State Circuits Conference (A-SSCC)\",\"16 Dec 2018\",\"2018\",\"\",\"\",\"13\",\"16\",\"In this paper we first list some of basic requirements for domain specific processors. Then we discuss several commonly used architectures for artificial intelligence domain applications. Their pros and cons are also compared. A new architecture defined as In-Cluster Coprocessor is presented which can best utilize existing memory hierarchy in a general processor and has an easy programming model. CBC has potential advantages of power saving and low cost. Further investigation on CBC is underway.\",\"\",\"978-1-5386-6413-1\",\"10.1109/ASSCC.2018.8579282\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8579282\",\"Domain-specific;GPU;TPU;SIMD;Vector;Cache Coherence;Cluster;Coprocessors\",\"Computer architecture;Task analysis;Coprocessors;Graphics processing units\",\"artificial intelligence;coprocessors\",\"artificial intelligence domain;in-cluster coprocessor;memory hierarchy;AI drives;domain specific processors\",\"\",\"1\",\"\",\"7\",\"\",\"16 Dec 2018\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Design and Experimental Evaluation of Distributed Heterogeneous Graph-Processing Systems\",\"Y. Guo; A. L. Varbanescu; D. Epema; A. Iosup\",\"Tech. Univ. Delft, Delft, Netherlands; Univ. of Amsterdam, Amsterdam, Netherlands; Tech. Univ. Delft, Delft, Netherlands; Tech. Univ. Delft, Delft, Netherlands\",\"2016 16th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing (CCGrid)\",\"21 Jul 2016\",\"2016\",\"\",\"\",\"203\",\"212\",\"Graph processing is increasingly used in a variety of domains, from engineering to logistics and from scientific computing to online gaming. To process graphs efficiently, GPU-enabled graph-processing systems such as TOTEM and Medusa exploit the GPU or the combined CPU+GPU capabilities of a single machine. Unlike scalable distributed CPU-based systems such as Pregel and GraphX, existing GPU-enabled systems are restricted to the resources of a single machine, including the limited amount of GPU memory, and thus cannot analyze the increasingly large-scale graphs we see in practice. To address this problem, we design and implement three families of distributed heterogeneous graph-processing systems that can use both the CPUs and GPUs of multiple machines. We further focus on graph partitioning, for which we compare existing graph-partitioning policies and a new policy specifically targeted at heterogeneity. We implement all our distributed heterogeneous systems based on the programming model of the single-machine TOTEM, to which we add (1) a new communication layer for CPUs and GPUs across multiple machines to support distributed graphs, and (2) a workload partitioning method that uses offline profiling to distribute the work on the CPUs and the GPUs. We conduct a comprehensive real-world performance evaluation for all three families. To ensure representative results, we select 3 typical algorithms and 5 datasets with different characteristics. Our results include algorithm run time, performance breakdown, scalability, graph partitioning time, and comparison with other graph-processing systems. They demonstrate the feasibility of distributed heterogeneous graph processing and show evidence of the high performance that can be achieved by combining CPUs and GPUs in a distributed environment.\",\"\",\"978-1-5090-2453-7\",\"10.1109/CCGrid.2016.53\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7515690\",\"Graph Processing;Distributed Heterogeneous Systems\",\"Central Processing Unit;Graphics processing units;Programming;Partitioning algorithms;Space exploration;Arrays\",\"computer games;engineering;graph theory;graphics processing units;logistics;parallel processing\",\"distributed heterogeneous graph-processing systems;engineering;logistics;scientific computing;online gaming;GPU-enabled graph-processing systems;scalable distributed CPU-based systems;large-scale graphs;single-machine TOTEM;high performance computing\",\"\",\"2\",\"\",\"45\",\"\",\"21 Jul 2016\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Neneta: Heterogeneous computing complex-valued neural network framework\",\"V. Lekić; Z. Babić\",\"Faculty of Electrical Engineering, University of Banja Luka, 78000, Bosnia and Herzegovina; Faculty of Electrical Engineering, University of Banja Luka, 78000, Bosnia and Herzegovina\",\"2017 40th International Convention on Information and Communication Technology, Electronics and Microelectronics (MIPRO)\",\"13 Jul 2017\",\"2017\",\"\",\"\",\"192\",\"196\",\"Due to increased demand for computational efficiency for the training, validation and testing of artificial neural networks, many open source software frameworks have emerged. Almost exclusively GPU programming model of choice in such software frameworks is CUDA. Symptomatic is also lack of the support for complex-valued neural networks. With our research going exactly in that direction, we developed and made publicly available yet another software framework, completely based on C++ and OpenCL standards with which we try to solve problems we identified with already existing solutions.\",\"\",\"978-953-233-090-8\",\"10.23919/MIPRO.2017.7973416\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7973416\",\"\",\"Graphics processing units;Training;Neural networks;Kernel;Performance evaluation\",\"C++ language;graphics processing units;neural nets;parallel architectures;public domain software\",\"Neneta;heterogeneous computing;complex-valued neural network;artificial neural networks;open source software frameworks;GPU programming;CUDA;C++ language;OpenCL standards\",\"\",\"\",\"\",\"16\",\"\",\"13 Jul 2017\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Parallel implementation of the modified subset sum problem in CUDA\",\"Z. Ristovski; I. Mishkovski; S. Gramatikov; S. Filiposka\",\"Faculty of Computer Sciences and Engineering, P.O. Box 393, 1000 Skopje, R. Macedonia; Faculty of Computer Sciences and Engineering, P.O. Box 393, 1000 Skopje, R. Macedonia; Faculty of Computer Sciences and Engineering, P.O. Box 393, 1000 Skopje, R. Macedonia; Faculty of Computer Sciences and Engineering, P.O. Box 393, 1000 Skopje, R. Macedonia\",\"2014 22nd Telecommunications Forum Telfor (TELFOR)\",\"9 Feb 2015\",\"2014\",\"\",\"\",\"923\",\"926\",\"In the recent years, computing is shifting from “central processing” on the CPU to “co-processing” on the CPU and GPU. This computing paradigm shift is due to the development of CUDA (Compute Unified Device Architecture) parallel computing architecture. CUDA is a programming model for parallel computing in Graphics Processing Units (GPUs). In this work, we have implemented parallel solution of the NP-complete modified subset sum algorithm using CUDA. With our implementation, for a certain problem size, we have obtained speedup of 20 times, compared to the CPU version.\",\"\",\"978-1-4799-6191-7\",\"10.1109/TELFOR.2014.7034556\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7034556\",\"CUDA;Modified subset sum algorithm;GPGPU;Parallel Speedup\",\"Graphics processing units;Vectors;Instruction sets;Central Processing Unit;Programming;Peer-to-peer computing;Computer architecture\",\"graphics processing units;mathematics computing;optimisation;parallel architectures;set theory\",\"CUDA;CPU;GPU;coprocessing;central processing;computing paradigm shift;compute unified device architecture;parallel computing architecture;graphics processing units;NP-complete modified subset sum algorithm\",\"\",\"2\",\"\",\"11\",\"\",\"9 Feb 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Throughput-Effective On-Chip Networks for Manycore Accelerators\",\"A. Bakhoda; J. Kim; T. M. Aamodt\",\"ECE Dept., Univ. of British Columbia, Vancouver, BC, Canada; CS Dept., KAIST, Daejeon, South Korea; ECE Dept., Univ. of British Columbia, Vancouver, BC, Canada\",\"2010 43rd Annual IEEE/ACM International Symposium on Microarchitecture\",\"20 Jan 2011\",\"2010\",\"\",\"\",\"421\",\"432\",\"As the number of cores and threads in manycore compute accelerators such as Graphics Processing Units (GPU) increases, so does the importance of on-chip interconnection network design. This paper explores throughput-effective network-on-chips (NoC) for future manycore accelerators that employ bulk-synchronous parallel (BSP) programming models such as CUDA and OpenCL. A hardware optimization is \"\"throughput-effective\"\" if it improves parallel application level performance per unit chip area. We evaluate performance of future looking workloads using detailed closed-loop simulations modeling compute nodes, NoC and the DRAM memory system. We start from a mesh design with bisection bandwidth balanced with off-chip demand. Accelerator workloads tend to demand high off-chip memory bandwidth which results in a many-to-few traffic pattern when coupled with expected technology constraints of slow growth in pins-per-chip. Leveraging these observations we reduce NoC area by proposing a \"\"checkerboard\"\" NoC which alternates between conventional full-routers and half-routers with limited connectivity. Checkerboard employs a new oblivious routing algorithm that maintains a minimum hop-count for architectures that place L2 cache banks at the half-router nodes. Next, we show that increasing network injection bandwidth for the large amount of read reply traffic at the nodes connected to DRAM controllers alleviates a significant fraction of the remaining imbalance resulting from the many-to-few traffic pattern. The combined effect of the above optimizations with an improved placement of memory controllers in the mesh and channel slicing improves application throughput per unit area by 25.4%.\",\"2379-3155\",\"978-1-4244-9071-4\",\"10.1109/MICRO.2010.50\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5695555\",\"NoC;Compute accelerator;GPGPU\",\"Bandwidth;Throughput;Computational modeling;Instruction sets;Benchmark testing;Computer architecture;Random access memory\",\"circuit optimisation;circuit simulation;multiprocessing systems;multiprocessor interconnection networks;network routing;network-on-chip;parallel programming\",\"manycore compute accelerator;on-chip interconnection network design;throughput-effective network-on-chip;throughput-effective NoC;bulk-synchronous parallel programming model;BSP programming model;hardware optimization;closed-loop simulation;DRAM memory system;off-chip memory bandwidth;pins-per-chip;checkerboard NoC;routing algorithm;L2 cache banks;network injection bandwidth\",\"\",\"94\",\"1\",\"49\",\"\",\"20 Jan 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"An MDE Approach for Automatic Code Generation from UML/MARTE to OpenCL\",\"A. W. O. Rodrigues; F. Guyomarc'h; J. Dekeyser\",\"Federal Institute of Education, Science, and Technology of Ceará; University of Lille; University of Lille\",\"Computing in Science & Engineering\",\"21 Jan 2013\",\"2013\",\"15\",\"1\",\"46\",\"55\",\"To reduce the design complexity of OpenCL programming, the approach proposed here generates application code automatically, based on model-driven engineering (MDE) and modeling and analysis of real-time and embedded (MARTE) systems. The aim is to provide application-development resources for nonspecialists in parallel programming, exploiting concepts such as reuse and platform independence.\",\"1558-366X\",\"\",\"10.1109/MCSE.2012.35\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6171148\",\"model-driven engineering;MARTE;OpenCL;GPU;high-performance computing;scientific computing\",\"Unified modeling language;Computational modeling;Computer architecture;Software engineering;Resource management;Parallel programming;Scientific computing\",\"computational complexity;program compilers;software engineering;Unified Modeling Language\",\"MDE approach;automatic code generation;UML/MARTE system;OpenCL programming;model-driven engineering;modeling and analysis of real-time and embedded systems;application-development resources;parallel programming;design complexity\",\"\",\"20\",\"\",\"9\",\"\",\"19 Mar 2012\",\"\",\"\",\"IEEE\",\"IEEE Magazines\"\n\"Fast Motion Estimation on Graphics Hardware for H.264 Video Encoding\",\"M. Schwalb; R. Ewerth; B. Freisleben\",\"Dept. of Math. & Comput. Sci., Univ. of Marburg, Marburg; Dept. of Math. & Comput. Sci., Univ. of Marburg, Marburg; Dept. of Math. & Comput. Sci., Univ. of Marburg, Marburg\",\"IEEE Transactions on Multimedia\",\"13 Jan 2009\",\"2009\",\"11\",\"1\",\"1\",\"10\",\"The video coding standard H.264 supports video compression with a higher coding efficiency than previous standards. However, this comes at the expense of an increased encoding complexity, in particular for motion estimation which becomes a very time consuming task even for today's central processing units (CPU). On the other hand, modern graphics hardware includes a powerful graphics processing unit (GPU) whose computing power remains idle most of the time. In this paper, we present a GPU based approach to motion estimation for the purpose of H.264 video encoding. A small diamond search is adapted to the programming model of modern GPUs to exploit their available parallel computing power and memory bandwidth. Experimental results demonstrate a significant reduction of computation time and a competitive encoding quality compared to a CPU UMHexagonS implementation while enabling the CPU to process other encoding tasks in parallel.\",\"1941-0077\",\"\",\"10.1109/TMM.2008.2008873\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=4721593\",\"Parallel motion estimation;H.264;GPGPU (general purpose computation on GPU);programmable graphics hardware;MPEG-4 part 10/AVC\",\"Motion estimation;Graphics;Hardware;Encoding;Central Processing Unit;Video compression;Video coding;Parallel programming;Parallel processing;Bandwidth\",\"computer graphic equipment;data compression;motion estimation;video coding\",\"fast motion estimation;graphics hardware;H.264 video encoding;video compression;graphics processing unit;parallel computing\",\"\",\"25\",\"2\",\"12\",\"IEEE\",\"22 Dec 2008\",\"\",\"\",\"IEEE\",\"IEEE Journals\"\n\"Porting an explicit time-domain volume-integral-equation solver on gpus with openacc [open problems in cem]\",\"S. Feki; A. Al-Jarro; A. Clo; H. Bagci\",\"KAUST Supercomputing Laboratory; Division of Computer, Electrical and Mathematical Sciences and Engineering, University College London, London WC1E 7JE, UK; Photonics Group, Department of Electronic and Electrical Engineering, University College London, London WC1E 7JE, UK; KAUST Research Computing, King Abdullah University of Science and Technology (KAUST), Thuwal, 23955-6900, KSA; Division of Computer, Electrical and Mathematical Sciences and Engineering, University College London, London WC1E 7JE, UK\",\"IEEE Antennas and Propagation Magazine\",\"17 Jun 2014\",\"2014\",\"56\",\"2\",\"265\",\"277\",\"Graphics processing units (GPUs) are gradually becoming mainstream in high-performance computing, as their capabilities for enhancing performance of a large spectrum of scientific applications to many fold when compared to multi-core CPUs have been clearly identified and proven. In this paper, implementation and performance-tuning details for porting an explicit marching-on-in-time (MOT)-based time-domain volume-integral-equation (TDVIE) solver onto GPUs are described in detail. To this end, a high-level approach, utilizing the OpenACC directive-based parallel programming model, is used to minimize two often-faced challenges in GPU programming: developer productivity and code portability. The MOT-TDVIE solver code, originally developed for CPUs, is annotated with compiler directives to port it to GPUs in a fashion similar to how OpenMP targets multi-core CPUs. In contrast to CUDA and OpenCL, where significant modifications to CPU-based codes are required, this high-level approach therefore requires minimal changes to the codes. In this work, we make use of two available OpenACC compilers, CAPS and PGI. Our experience reveals that different annotations of the code are required for each of the compilers, due to different interpretations of the fairly new standard by the compiler developers. Both versions of the OpenACC accelerated code achieved significant performance improvements, with up to 30× speedup against the sequential CPU code using recent hardware technology. Moreover, we demonstrated that the GPU-accelerated fully explicit MOT-TDVIE solver leveraged energy-consumption gains of the order of 3× against its CPU counterpart.\",\"1558-4143\",\"\",\"10.1109/MAP.2014.6837098\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6837098\",\"Time domain volume integral equation;explicit marching-on-in-time scheme;parallel programming;parallel processing;graphics processing unit (GPU);OpenACC\",\"Graphics processing units;Acceleration;Finite element analysis;Convolutional codes;Time-domain analysis;Programming\",\"\",\"\",\"\",\"3\",\"\",\"27\",\"IEEE\",\"17 Jun 2014\",\"\",\"\",\"IEEE\",\"IEEE Magazines\"\n\"Speeding Up Homomorpic Hashing Using GPUs\",\"K. Zhao; X. Chu; M. Z. Wang; Y. Jiang\",\"Dept. of Comput. Sci., Hong Kong Baptist Univ., Hong Kong, China; Dept. of Comput. Sci., Hong Kong Baptist Univ., Hong Kong, China; NA; NA\",\"2009 IEEE International Conference on Communications\",\"11 Aug 2009\",\"2009\",\"\",\"\",\"1\",\"5\",\"Homomorphic hash functions (HHFs) have been applied into peer-to-peer networks with erasure coding or network coding to defend against pollution attacks. Unfortunately HHFs are computationally expensive for contemporary CPUs, This paper to exploit the computing power of graphic processing units (GPUs) for homomorphic hashing. Specifically, we demonstrate how to use NVIDIA GPUs and the computer unified device architecture (CUDA) programming model to achieve 38 times of speedup over the CPU counterpart. We also develop a multi-precision modular arithmetic library on CUDA platform, which is not only key to our specific application, but also very useful for a large number of cryptographic applications.\",\"1938-1883\",\"978-1-4244-3435-0\",\"10.1109/ICC.2009.5199483\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5199483\",\"\",\"Application software;Peer to peer computing;Network coding;Pollution;Computer graphics;Computer architecture;Central Processing Unit;Arithmetic;Libraries;Cryptography\",\"computer graphics;coprocessors;cryptography;Internet;peer-to-peer computing;telecommunication security\",\"homomorphic hash functions;NVIDIA GPU;graphic processing units;peer-to-peer networks;erasure coding;network coding;pollution attacks;contemporary CPU;computer unified device architecture programming model;cryptographic applications;Internet applications\",\"\",\"2\",\"\",\"17\",\"\",\"11 Aug 2009\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"CuMAPz: A tool to analyze memory access patterns in CUDA\",\"Y. Kim; A. Shrivastava\",\"Compiler and Microarchitecture Laboratory, Arizona State University, Tempe 85281, USA; Compiler and Microarchitecture Laboratory, Arizona State University, Tempe 85281, USA\",\"2011 48th ACM/EDAC/IEEE Design Automation Conference (DAC)\",\"11 Aug 2011\",\"2011\",\"\",\"\",\"128\",\"133\",\"CUDA programming model provides a simple interface to program on GPUs, but tuning GPGPU applications for high performance is still quite challenging. Programmers need to consider several architectural details, and small changes in source code, especially on memory access pattern, affect performance significantly. This paper presents CuMAPz, a tool to compare the memory performance of a CUDA program. CuMAPz can help programmers explore different ways of using shared and global memories, and optimize their program for memory behavior. CuMAPz models several memory effects, e.g., data reuse, global memory access coalescing, shared memory bank conflict, channel skew, and branch divergence. By using CuMAPz to explore memory access design space, we could improve the performance of our benchmarks by 62% over the naive cases, and 32% over previous approach.\",\"85-644924\",\"978-1-4503-0636-2\",\"\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5981927\",\"GPGPU;CUDA;Memory access pattern;Performance Estimation;Analytical Model\",\"Instruction sets;Graphics processing unit;Kernel;Estimation;Channel estimation;Correlation;Benchmark testing\",\"computer graphic equipment;coprocessors;parallel architectures;parallel programming;storage management\",\"CuMAPz;memory access patterns;CUDA;CUDA programming model;GPU;GPGPU;source code;memory behavior;memory effects;data reuse;global memory access coalescing;shared memory bank conflict;channel skew;branch divergence;graphics processing units\",\"\",\"1\",\"\",\"21\",\"\",\"11 Aug 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Legion-based scientific data analytics on heterogeneous processors\",\"L. Yu; H. Yu\",University of Nebraska-Lincoln; University of Nebraska-Lincoln,\"2016 IEEE International Conference on Big Data (Big Data)\",\"6 Feb 2017\",\"2016\",\"\",\"\",\"2305\",\"2314\",\"We present a study of scientific data analytics on heterogeneous architectures using the Legion runtime system. Legion is a new programming model and runtime system targeting distributed heterogeneous architectures. It introduces logical regions as a new abstraction for describing the structures and usages of program data. We describe how to leverage logical regions to express important properties of program data, such as locality and independence, for scientific data analytics that can consist of multiple operations with different data types. Our approach can help users simplify programming on the data partition, data organization, and data movement for distributed-memory heterogeneous architectures, thereby facilitating a simultaneous execution of multiple analytics operations on modern and future supercomputers. We demonstrate the scalability and the usability of our approach by a hybrid data partitioning and distribution scheme for different data types using both CPUs and GPUs on a heterogeneous system.\",\"\",\"978-1-4673-9005-7\",\"10.1109/BigData.2016.7840863\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7840863\",\"scientific data analytics;heterogeneous processors;Legion\",\"Program processors;Programming;Computer architecture;Data analysis;Supercomputers;Runtime;Parallel processing\",\"data analysis;parallel programming;scientific information systems\",\"legion-based scientific data analytics;heterogeneous processors;Legion runtime system;Legion programming model;logical regions;program data structures;program data usages;logical region leveraging;program data locality property;program data independence property;data partitioning;data organization;data movement;distributed-memory heterogeneous architectures;hybrid data partitioning-and-distribution scheme;CPU;GPU\",\"\",\"\",\"\",\"33\",\"\",\"6 Feb 2017\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Intermediate-Level Synthesis of a Gauss-Jordan Elimination Linear Solver\",\"M. Daigneault; J. P. David\",\"Ecole Polytech. de Montreal, Univ. de Montreal, Montreal, QC, Canada; Ecole Polytech. de Montreal, Univ. de Montreal, Montreal, QC, Canada\",\"2015 IEEE International Parallel and Distributed Processing Symposium Workshop\",\"1 Oct 2015\",\"2015\",\"\",\"\",\"176\",\"181\",\"As the world of computing goes more and more parallel, reconfigurable computing can enable interesting compromises in terms of processing speed and power consumption between CPUs and GPUs. Yet, from a developer's perspective, programming Field-Programmable Gate Arrays to implement application specific processors still represents a significant challenge. In this paper, we present the application of an Intermediate-Level Synthesis methodology to the design of a Gauss-Jordan elimination linear solver on FPGA. The ILS methodology takes for input a language offering an Algorithmic-State Machine programming model. Each ASM handles blocking and non-blocking connections between data-synchronized channels having streaming interfaces with implicit ready-to-send/receive signals. Using our compiler, a scalable linear solver design reaching as much as 46.2 GFLOPS was designed and tested in a matter of days, showing how the ILS methodology can enable an interesting design time/performance compromise between RTL and HLS methodologies.\",\"\",\"978-1-4673-7684-6\",\"10.1109/IPDPSW.2015.98\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7284306\",\"\",\"Hardware;Field programmable gate arrays;Synchronization;Data transfer;Algorithm design and analysis;Coprocessors;Clocks\",\"field programmable gate arrays;graphics processing units\",\"Gauss-Jordan elimination linear solver;parallel computing;reconfigurable computing;processing speed;power consumption;CPU;GPU;programming field-programmable gate arrays;application specific processors;intermediate-level synthesis methodology;FPGA;algorithmic-state machine programming model;nonblocking connections;data-synchronized channels;streaming interfaces;compiler;scalable linear solver design\",\"\",\"1\",\"\",\"15\",\"\",\"1 Oct 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Efficient Compilation and Execution of JVM-Based Data Processing Frameworks on Heterogeneous Co-Processors\",\"C. Kotselidis; S. Diamantopoulos; O. Akrivopoulos; V. Rosenfeld; K. Doka; H. Mohammed; G. Mylonas; V. Spitadakis; W. Morgan\",\"The University of Manchester; Exus Ltd.; SparkWorks ITC Ltd.; German Research Center for Artificial Intelligence; National Technical University of Athens; Kaleao Ltd.; Computer Technology Institute & Press Diophantus; Neurocom,Luxembourg; IProov Ltd.\",\"2020 Design, Automation & Test in Europe Conference & Exhibition (DATE)\",\"15 Jun 2020\",\"2020\",\"\",\"\",\"175\",\"179\",\"This paper addresses the fundamental question of how modern Big Data frameworks can dynamically and transparently exploit heterogeneous hardware accelerators. After presenting the major challenges that have to be addressed towards this goal, we describe our proposed architecture for automatic and transparent hardware acceleration of Big Data frameworks and applications. Our vision is to retain the uniform programming model of Big Data frameworks and enable automatic, dynamic Just-In-Time compilation of the candidate code segments that benefit from hardware acceleration to the corresponding format. In conjunction with machine learning-based device selection, that respect user-defined constraints (e.g., cost, time, etc.), we enable dynamic code execution on GPUs and FPGAs transparently to the user. In addition, we dynamically re-steer execution at runtime based on the availability of resources. Our preliminary results demonstrate that our approach can accelerate an existing Apache Flink application by up to 16.5x.\",\"1558-1101\",\"978-3-9819263-4-7\",\"10.23919/DATE48585.2020.9116246\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9116246\",\"\",\"Europe;Automation;Task analysis;Artificial intelligence;Presses;Data processing;Engines\",\"Big Data;coprocessors;field programmable gate arrays;graphics processing units;Java;learning (artificial intelligence);parallel programming;program compilers;virtual machines\",\"modern Big Data frameworks;heterogeneous hardware accelerators;automatic hardware acceleration;transparent hardware acceleration;uniform programming model;just-in-time compilation;candidate code segments;machine learning-based device selection;dynamic code execution;heterogeneous coprocessors;JVM-based data processing frameworks;GPU;FPGA\",\"\",\"\",\"\",\"35\",\"\",\"15 Jun 2020\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Optimizing sparse matrix-vector multiplication on CUDA\",\"Zhuowei Wang; Xianbin Xu; Wuqing Zhao; Yuping Zhang; Shuibing He\",\"school of computer, wuhan university, China; school of computer, wuhan university, China; school of computer, wuhan university, China; school of computer, wuhan university, China; school of computer, wuhan university, China\",\"2010 2nd International Conference on Education Technology and Computer\",\"29 Jul 2010\",\"2010\",\"4\",\"\",\"V4-109\",\"V4-113\",\"In recent years, GPUs have attracted the attention of many application developers as powerful massively parallel system. CUDA as a general purpose parallel computing architecture make GPUs an appealing choice to solve many complex computational problems in a more efficient way. In this paper, we discuss implementing optimizing spare matrix-vector multiplication on NVIDIA GPUs using CUDA programming model. We outline three optimizations include: (1) optimized CSR storage format, (2) optimized threads mapping, and (3) avoiding divergence judgment. We experimentally evaluate our optimizations on GeForce 9600 GTX, connect to Windows xp 64-bit system. In comparison with NVIDIA's SpMV library and NVIDIA's CUDDPA library, the results show that optimizing sparse matrix-vector multiplication on CUDA achieves better performance than other SpMV implementations.\",\"2155-1812\",\"978-1-4244-6370-1\",\"10.1109/ICETC.2010.5529724\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5529724\",\"GPUs;CUDA;SpMV;NVIDIA's SpMV library;NVIDIA's CUDDPA library\",\"Sparse matrices;Concurrent computing;Libraries;Educational institutions;Graphics processing unit;Parallel processing;Parallel programming;Kernel;Computer science education\",\"microprocessor chips;parallel processing;performance evaluation\",\"sparse matrix-vector multiplication;powerful massively parallel system;general purpose parallel computing architecture;complex computational problem;NVIDIA GPU;CUDA programming model;optimized CSR storage format;optimized thread mapping;GeForce 9600 GTX;Windows xp 64-bit system\",\"\",\"5\",\"\",\"12\",\"\",\"29 Jul 2010\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"A Comparative Evaluation of Parallel Programming Models for Shared-Memory Architectures\",\"L. M. Sanchez; J. Fernandez; R. Sotomayor; J. D. Garcia\",\"Comput. Sci. Dept., Univ. Carlos III de Madrid, Leganés, Spain; Comput. Sci. Dept., Univ. Carlos III de Madrid, Leganés, Spain; Comput. Sci. Dept., Univ. Carlos III de Madrid, Leganés, Spain; Comput. Sci. Dept., Univ. Carlos III de Madrid, Leganés, Spain\",\"2012 IEEE 10th International Symposium on Parallel and Distributed Processing with Applications\",\"23 Aug 2012\",\"2012\",\"\",\"\",\"363\",\"370\",\"Nowadays, most computers that are commercially available off-the-shelf (COTS) include hardware features that increase the performance of parallel general-purpose threads (hyper threading, multicore, ccNUMA architectures) or SIMD kernels (CPU vector instructions, GPUs). The purpose of this paper is to perform a compared evaluation of several parallel programming models where each one is fitted to exploit some of these features but also each one requires a different level of programming skills. Four parallel programming models (OpenMP, Intel TBB, Intel ArBB, and CUDA) have been selected. The idea is to cover a wide spectrum of programming models and most of the parallel hardware features included in modern computers. On one hand, OpenMP and TBB platforms, that exploits parallel threads running on multicore systems. On the other hand, ArBB, that combines multicore parallel threads and multicore SIMD features with a simpler programming model, and CUDA that exploits SIMD features of the GPU hardware. Our results obtained with the benchmarks used on this paper suggest that OpenMP and TBB have a lower performance compared to ArBB and CUDA. But also that ArBB performance tends to be comparable with CUDA performance in most cases (although it is normally lower). Thus, there are evidences that a careful designed top range multicore and multisocket architecture, can be comparable in terms of performance with top range GPU cards for many applications, with the advantage of a simpler programming model.\",\"2158-9208\",\"978-1-4673-1631-6\",\"10.1109/ISPA.2012.54\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6280314\",\"GPGPU;Paralel computing;SIMD;Multicore\",\"Computer architecture;Graphics processing unit;Parallel processing;Instruction sets;Computers;Benchmark testing;Programming\",\"memory architecture;multi-threading;parallel architectures;performance evaluation;shared memory systems\",\"parallel programming models;shared-memory architectures;commercially available off-the-shelf;COTS;parallel general-purpose threads;hyper threading;ccNUMA architectures;SIMD kernels;CPU vector instructions;GPU cards;programming skills;OpenMP;Intel TBB;Intel ArBB;CUDA;multicore SIMD features;multicore parallel threads;multisocket architecture\",\"\",\"\",\"\",\"28\",\"\",\"23 Aug 2012\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Enabling an OpenCL Compiler for Embedded Multicore DSP Systems\",\"J. Li; C. Kuan; T. Wu; J. K. Lee\",\"Dept. of Comput. Sci., Nat. Tsing Hua Univ., Hsinchu, Taiwan; Dept. of Comput. Sci., Nat. Tsing Hua Univ., Hsinchu, Taiwan; Dept. of Comput. Sci., Nat. Tsing Hua Univ., Hsinchu, Taiwan; Dept. of Comput. Sci., Nat. Tsing Hua Univ., Hsinchu, Taiwan\",\"2012 41st International Conference on Parallel Processing Workshops\",\"25 Oct 2012\",\"2012\",\"\",\"\",\"545\",\"552\",\"OpenCL is an industry's attempt to unify heterogeneous multicore programming. With its programming model defining SPMD kernels, vector types, and address space qualifiers, OpenCL allows programmers to exploit data parallelism with multicore processors and SIMD instructions as well as data locality with memory hierarchy. Recently, OpenCL has gained success on many architectures, including multicore CPUs, GPUs, vector processors, embedded systems with application-specific processors, and even FPGAs. However, how to support OpenCL for embedded multicore DSP systems remains unaddressed. In this paper, we illustrate our OpenCL support for embedded multicore DSP systems. Our target platform consists of one MPU and a DSP subsystem with multiple DSPs. The DSPs we address are VLIW processors with clustered functional units and distributed register files. To generate efficient code for such DSPs, compilers are required to consider irregular register file access in many optimization phases. To utilize the DSPs with distributed register files, we propose a cluster-aware work-item dispatching scheme to vectorize OpenCL kernels and assign independent workload to clusters of a DSP. In addition, we also incorporate several optimizations to enable efficient DSP code generation. In our experiments, we employ a set of OpenCL benchmark programs to evaluate the effectiveness of our OpenCL support. The experiments are conducted on a DSP cycle-accurate simulator and a multicore evaluation board. We report average 29% performance improvement with our vectorization scheme and a near 2-fold speedup with two DSPs compared with a single-MPU setup.\",\"2332-5690\",\"978-1-4673-2509-7\",\"10.1109/ICPPW.2012.74\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6337524\",\"\",\"Digital signal processing;Kernel;Vectors;Registers;Program processors;Multicore processing;VLIW\",\"digital signal processing chips;electronic engineering computing;embedded systems;field programmable gate arrays;graphics processing units;multiprocessing systems;operating system kernels;optimising compilers;parallel processing;program compilers;software performance evaluation\",\"OpenCL compiler;embedded multicore DSP systems;heterogeneous multicore programming;programming model;SPMD kernels;vector types;address space qualifiers;data parallelism;multicore processors;SIMD instructions;data locality;memory hierarchy;multicore CPU;GPU;vector processors;embedded systems;application-specific processors;FPGA;OpenCL support;MPU subsystem;DSP subsystem;VLIW processors;clustered functional units;distributed register files;compilers;irregular register file access;optimization phases;cluster-aware work-item dispatching scheme;OpenCL kernels;independent workload;DSP code generation;OpenCL benchmark programs;DSP cycle-accurate simulator;multicore evaluation board;performance improvement;vectorization scheme;single-MPU setup\",\"\",\"7\",\"\",\"15\",\"\",\"25 Oct 2012\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"OpenACC Cache Directive: Opportunities and Optimizations\",\"A. Lashgar; A. Baniasadi\",NA; NA,\"2016 Third Workshop on Accelerator Programming Using Directives (WACCPD)\",\"2 Feb 2017\",\"2016\",\"\",\"\",\"46\",\"56\",\"OpenACC's programming model presents a simple interface to programmers, offering a trade-off between performance and development effort. OpenACC relies on compiler technologies to generate efficient code and optimize for performance. Among the difficult to implement directives, is the cache directive. The cache directive allows the programmer to utilize accelerator's hardware- or software-managed caches by passing hints to the compiler. In this paper, we investigate the implementation aspect of cache directive under NVIDIA-like GPUs and propose optimizations for the CUDA backend. We use CUDA's shared memory as the software-managed cache space. We first show that a straightforward implementation can be very inefficient, and downgrade performance. We investigate the differences between this implementation and hand-written CUDA alternatives and introduce the following optimizations to bridge the performance gap between the two: i) improving occupancy by sharing the cache among several parallel threads and ii) optimizing cache fetch and write routines via parallelization and minimizing control flow. We present compiler passes to apply these optimizations. Investigating three test cases, we show that the best cache directive implementation can perform very close to hand-written CUDA equivalent and improve performance up to 2.18X (compared to the baseline OpenACC.).\",\"\",\"978-1-5090-6152-5\",\"10.1109/WACCPD.2016.009\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7836580\",\"OpenACC;Cache memory;CUDA;Software-managed cache;Performance\",\"Indexes;Graphics processing units;Arrays;Optimization;Programming;Acceleration;Hardware\",\"cache storage;multi-threading;parallel architectures;program compilers;shared memory systems\",\"open accelerator;control flow minimization;parallelization;write routines;cache fetch;parallel threads;software-managed cache space;CUDA shared memory;CUDA backend;NVIDIA-like GPU;accelerator hardware;code generation;compiler technologies;programmer interface;OpenACC programming model;OpenACC cache directive\",\"\",\"4\",\"\",\"13\",\"\",\"2 Feb 2017\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Flexible Linear Algebra Development and Scheduling with Cholesky Factorization\",\"A. Haidar; A. YarKhan; C. Cao; P. Luszczek; S. Tomov; J. Dongarra\",\"Univ. of Tennessee, Knoxville, TN, USA; Univ. of Tennessee, Knoxville, TN, USA; Univ. of Tennessee, Knoxville, TN, USA; Univ. of Tennessee, Knoxville, TN, USA; Univ. of Tennessee, Knoxville, TN, USA; Univ. of Tennessee, Knoxville, TN, USA\",\"2015 IEEE 17th International Conference on High Performance Computing and Communications, 2015 IEEE 7th International Symposium on Cyberspace Safety and Security, and 2015 IEEE 12th International Conference on Embedded Software and Systems\",\"30 Nov 2015\",\"2015\",\"\",\"\",\"861\",\"864\",\"Modern high performance computing environments are composed of networks of compute nodes that often contain a variety of heterogeneous compute resources, such as multicore CPUs and GPUs. One challenge faced by domain scientists ishow to efficiently use all these distributed, heterogeneous resources. Inorder to use the GPUs effectively, the workload parallelism needs to be muchgreater than the parallelism for a multicore-CPU. Additionally, effectivelyusing distributed memory nodes brings out another level of complexity where theworkload must be carefully partitioned over the nodes. In this work we areusing a lightweight runtime environment to handle many of the complexities insuch distributed, heterogeneous systems. The runtime environment usestask-superscalar concepts to enable the developer to write serial code whileproviding parallel execution. The task-programming model allows the developerto write resource-specialization code, so that each resource gets theappropriate sized workload-grain. Our task-programming abstraction enables thedeveloper to write a single algorithm that will execute efficiently across the distributed heterogeneous machine. We demonstrate the effectiveness of ourapproach with performance results for dense linear algebra applications, specifically the Cholesky factorization.\",\"\",\"978-1-4799-8937-9\",\"10.1109/HPCC-CSS-ICESS.2015.285\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7336271\",\"Cholesky factorization;accelerator-based distributed memory computers;superscalar dataflow scheduling;heterogeneous HPC computing\",\"Multicore processing;Runtime;Hardware;Graphics processing units;Scalability;Linear algebra;Parallel processing\",\"distributed memory systems;graphics processing units;mathematics computing;matrix decomposition;parallel processing;resource allocation;scheduling\",\"flexible linear algebra development;flexible linear algebra scheduling;Cholesky factorization;high performance computing environments;compute nodes;heterogeneous compute resources;distributed resources;GPU;workload parallelism;multicore-CPU;distributed memory nodes;task-superscalar concept;serial code;parallel execution;task-programming model;resource-specialization code;task-programming abstraction;distributed heterogeneous machine\",\"\",\"1\",\"\",\"20\",\"\",\"30 Nov 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Portable data-parallel visualization and analysis in distributed memory environments\",\"C. Sewell; L. Lo; J. Ahrens\",\"CCS-7, Los Alamos National Laboratory, USA; CCS-7, Los Alamos National Laboratory, USA; CCS-7, Los Alamos National Laboratory, USA\",\"2013 IEEE Symposium on Large-Scale Data Analysis and Visualization (LDAV)\",\"2 Dec 2013\",\"2013\",\"\",\"\",\"25\",\"33\",\"Data-parallelism is a programming model that maps well to architectures with a high degree of concurrency. Algorithms written using data-parallel primitives can be easily ported to any architecture for which an implementation of these primitives exists, making efficient use of the available parallelism on each. We have previously published results demonstrating our ability to compile the same data-parallel code for several visualization algorithms onto different on-node parallel architectures (GPUs and multi-core CPUs) using our extension of NVIDIA's Thrust library. In this paper, we discuss our extension of Thrust to support concurrency in distributed memory environments across multiple nodes. This enables the application developer to write data-parallel algorithms while viewing the data as single, long vectors, essentially without needing to explicitly take into consideration whether the values are actually distributed across nodes. Our distributed wrapper for Thrust handles the communication in the backend using MPI, while still using the standard Thrust library to take advantage of available on-node parallelism. We describe the details of our distributed implementations of several key data-parallel primitives, including scan, scatter/gather, sort, reduce, and upper/lower bound. We also present two higher-level distributed algorithms developed using these primitives: isosurface and KD-tree construction. Finally, we provide timing results demonstrating the ability of these algorithms to take advantage of available parallelism on nodes and across multiple nodes, and discuss scaling limitations for communication-intensive algorithms such as KD-tree construction.\",\"\",\"978-1-4799-1659-7\",\"10.1109/LDAV.2013.6675155\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6675155\",\"\",\"Program processors;Vectors;Algorithm design and analysis;Indexes;Isosurfaces;Computer architecture;Parallel processing\",\"concurrency control;data analysis;data visualisation;distributed memory systems;parallel algorithms\",\"portable data-parallel visualization;portable data-parallel analysis;distributed memory environments;programming model;concurrency degree;data-parallel primitives;GPU;graphics processing unit;multicore CPU;on-node parallel architectures;visualization algorithms;NVIDIA Thrust library;data-parallel algorithms;MPI;message passing interface;Thrust library;scan primitives;scatter-gather primitives;sort primitives;reduce primitives;upper-lower bound primitives;isosurface primitives;KD-tree construction primitives;distributed algorithms\",\"\",\"5\",\"\",\"23\",\"\",\"2 Dec 2013\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Hybrid MPI/OpenMP/OpenACC Implementations for the Solution of Convection-Diffusion Equations with the HOPMOC Method\",\"F. L. Cabral; C. Osthoff; M. Kischinhevsky; D. Brandão\",\"Laboratοrio Nac. de Computacno Cienc., Centro de Computacno de Alto Desempenho, Petrόpolis, Brazil; Laboratοrio Nac. de Computacno Cienc., Centro de Computacno de Alto Desempenho, Petrόpolis, Brazil; Inst. de Comput., Univ. Fed. Fluminense, Niterόi, Brazil; Centro Fed. de Educacno Tecnolοgica, CEFET, Colegiado de Inf., Nova Iguaçu, Brazil\",\"2014 14th International Conference on Computational Science and Its Applications\",\"6 Dec 2014\",\"2014\",\"\",\"\",\"196\",\"199\",\"The need for fast solution of large scientific and industrial problems has long motivated the quest for improvements both in software as well as in hardware, since the inception of computing tools. In this context, vectorization, parallelization of tasks have been important strategies for the improvement of hardware efficiency during the last decades. Operator splitting techniques for the numerical solution of partial differential equations are also an attempt towards the same goal, on the software side. This work presents two parallel implementations of the Hopmoc method to solve parabolic equations with convective dominance on a cluster with multiple multicore nodes or GPUs. The Hopmoc method is based both on the modified method of characteristics and the Hopscotch method. It is implemented through an explicit-implicit operator splitting technique. Hopmoc has been studied on distributed memory machines under MPI. In this work Hopmoc is implemented on clusters of multiple cores or GPUs in one single programming model. Previous results had shown that Hopmoc is a scalable parallel procedure with respect to distributed memory machines. New numerical results of the technique presented herein show performance improvements of up to 300 times when compared with the sequential version.\",\"\",\"978-1-4799-4264-0\",\"10.1109/ICCSA.2014.44\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6976686\",\"Parallel computing;Hopmoc method;Convection-diffusion equation\",\"Mathematical model;Equations;Multicore processing;Message systems;Graphics processing units;Parallel processing\",\"application program interfaces;convection;distributed memory systems;graphics processing units;mathematics computing;message passing;parabolic equations;partial differential equations;public domain software\",\"Hybrid MPI-OpenMP-OpenACC implementation;HOPMOC Method;convection-diffusion equation solution;software improvement;computing tools;task parallelization;task vectorization;hardware efficiency improvement;numerical solution;partial differential equations;parallel implementations;Hopmoc method;parabolic equations;convective dominance;multiple multicore nodes;GPU;explicit-implicit operator splitting technique;distributed memory machines;multiple core clusters;programming model;scalable parallel procedure;performance improvement;numerical analysis\",\"\",\"6\",\"\",\"13\",\"\",\"6 Dec 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"A Comparative Study of SYCL, OpenCL, and OpenMP\",\"H. C. da Silva; F. Pisani; E. Borin\",\"Inst. of Comput., Univ. of Campinas, Campinas, Brazil; Inst. of Comput., Univ. of Campinas, Campinas, Brazil; Inst. of Comput., Univ. of Campinas, Campinas, Brazil\",\"2016 International Symposium on Computer Architecture and High Performance Computing Workshops (SBAC-PADW)\",\"9 Jan 2017\",\"2016\",\"\",\"\",\"61\",\"66\",\"Recent trends indicate that future computing systems will be composed by a group of heterogeneous computing devices, including CPUs, GPUs, and other hardware accelerators. These devices provide increased processing performance, however, creating efficient code for them may require that programmers manage memory assignments and use specialized APIs, compilers, or runtime systems, thus making their programs dependent on specific tools. In this scenario, SYCL is an emerging C++ programming model for OpenCL that allows developers to write code for heterogeneous computing devices that are compatible with standard C++ compilation frameworks. In this paper, we analyze the performance and programming characteristics of SYCL, OpenMP, and OpenCL using both a benchmark and a real-world application. Our performance results indicate that programs that rely on available SYCL runtimes are not on par with the ones based on OpenMP and OpenCL yet. Nonetheless, the gap is getting smaller if we consider the results reported by previous studies. In terms of programmability, SYCL presents itself as a competitive alternative to OpenCL, requiring fewer lines of code to implement kernels and also fewer calls to essential API functions and methods.\",\"\",\"978-1-5090-4844-1\",\"10.1109/SBAC-PADW.2016.19\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7803697\",\"SYCL;OpenCL;OpenMP;parallel programming;performance evaluation;programmability evaluation\",\"Benchmark testing;Programming;C++ languages;Performance evaluation;Kernel;MOS devices;Program processors\",\"application program interfaces;C++ language;message passing;parallel programming;program compilers\",\"API methods;API functions;programmability;standard C++ compilation frameworks;C++ programming model;runtime systems;compilers;hardware accelerators;GPU;CPU;heterogeneous computing devices;OpenMP;OpenCL;SYCL\",\"\",\"13\",\"\",\"16\",\"\",\"9 Jan 2017\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Comparing performance and energy efficiency of FPGAs and GPUs for high productivity computing\",\"B. Betkaoui; D. B. Thomas; W. Luk\",\"Department of Computing, Imperial College London, United Kingdom; Department of Computing, Imperial College London, United Kingdom; Department of Computing, Imperial College London, United Kingdom\",\"2010 International Conference on Field-Programmable Technology\",\"6 Jan 2011\",\"2010\",\"\",\"\",\"94\",\"101\",\"This paper provides the first comparison of performance and energy efficiency of high productivity computing systems based on FPGA (Field-Programmable Gate Array) and GPU (Graphics Processing Unit) technologies. The search for higher performance compute solutions has recently led to great interest in heterogeneous systems containing FPGA and GPU accelerators. While these accelerators can provide significant performance improvements, they can also require much more design effort than a pure software solution, reducing programmer productivity. The CUDA system has provided a high productivity approach for programming GPUs. This paper evaluates the High-Productivity Reconfigurable Computer (HPRC) approach to FPGA programming, where a commodity CPU instruction set architecture is augmented with instructions which execute on a specialised FPGA co-processor, allowing the CPU and FPGA to co-operate closely while providing a programming model similar to that of traditional software. To compare the GPU and FPGA approaches, we select a set of established benchmarks with different memory access characteristics, and compare their performance and energy efficiency on an FPGA-based Hybrid-Core system with a GPU-based system. Our results show that while GPUs excel at streaming applications, high-productivity reconfigurable computing systems outperform GPUs in applications with poor locality characteristics and low memory bandwidth requirements.\",\"\",\"978-1-4244-8983-1\",\"10.1109/FPT.2010.5681761\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5681761\",\"\",\"Benchmark testing;Field programmable gate arrays;Coprocessors;Graphics processing unit;Programming;Kernel;Instruction sets\",\"computer graphic equipment;coprocessors;field programmable gate arrays;reconfigurable architectures\",\"high productivity computing system;field-programmable gate array;graphics processing unit;CUDA system;high-productivity reconfigurable computer approach;FPGA programming;CPU instruction set architecture;FPGA-based hybrid-core system;GPU-based system\",\"\",\"37\",\"\",\"27\",\"\",\"6 Jan 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"A Light-weight API for Portable Multicore Programming\",\"C. G. Baker; M. A. Heroux; H. C. Edwards; A. B. Williams\",\"Comp. Eng. & Energy Sci., Oak Ridge Nat. Lab., Oak Ridge, TN, USA; Scalable Algorithms, Sandia Nat. Labs., Albuquerque, NM, USA; Comput. Simulation Infrastruct., Sandia Nat. Labs., Albuquerque, NM, USA; Comput. Simulation Infrastruct., Sandia Nat. Labs., Albuquerque, NM, USA\",\"2010 18th Euromicro Conference on Parallel, Distributed and Network-based Processing\",\"22 Apr 2010\",\"2010\",\"\",\"\",\"601\",\"606\",\"Multicore nodes have become ubiquitous in just a few years. At the same time, writing portable parallel software for multicore nodes is extremely challenging. Widely available programming models such as OpenMP and Pthreads are not useful for devices such as graphics cards, and more flexible programming models such as RapidMind are only available commercially. OpenCL represents the first truly portable standard, but its availability is limited. In the presence of such transition, we have developed a minimal application programming interface (API) for multicore nodes that allows us to write portable parallel linear algebra software that can use any of the aforementioned programming models and any future standard models. We utilize C++ template meta-programming to enable users to write parallel kernels that can be executed on a variety of node types, including Cell, GPUs and multicore CPUs. The support for a parallel node is provided by implementing a Node object, according to the requirements specified by the API. This ability to provide custom support for particular node types gives developers a level of control not allowed by the current slate of proprietary parallel programming APIs. We demonstrate implementations of the API for a simple vector dot-product on sequential CPU, multicore CPU and GPU nodes.\",\"2377-5750\",\"978-1-4244-5673-4\",\"10.1109/PDP.2010.49\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5452412\",\"Parallel programming;multicore architectures\",\"Multicore processing;Parallel programming;Linear programming;Writing;Graphics;Application software;Linear algebra;Software standards;Standards development;Kernel\",\"application program interfaces;C++ language;linear algebra;mathematics computing;metacomputing;multiprocessing systems;parallel programming\",\"portable multicore programming;multicore nodes;application programming interface;portable parallel linear algebra software;programming model;C++ template meta-programming;parallel kernels;multicore CPU;node object;parallel programming;vector dot-product;sequential CPU;GPU node\",\"\",\"7\",\"\",\"9\",\"\",\"22 Apr 2010\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Implementation of XcalableMP Device Acceleration Extention with OpenCL\",\"T. Nomizu; D. Takahashi; J. Lee; T. Boku; M. Sato\",\"Grad. Sch. of Syst. & Inf. Eng., Univ. of Tsukuba, Tsukuba, Japan; Center for Comput. Sci., Univ. of Tsukuba, Tsukuba, Japan; Grad. Sch. of Syst. & Inf. Eng., Univ. of Tsukuba, Tsukuba, Japan; Fac. of Eng., Inf. & Syst., Univ. of Tsukuba, Tsukuba, Japan; Center for Comput. Sci., Univ. of Tsukuba, Tsukuba, Japan\",\"2012 IEEE 26th International Parallel and Distributed Processing Symposium Workshops & PhD Forum\",\"20 Aug 2012\",\"2012\",\"\",\"\",\"2394\",\"2403\",\"Due to their outstanding computational performance, many acceleration devices, such as GPUs, the Cell Broadband Engine (Cell/B.E.), and multi-core computing are attracting a lot of attention in the field of high-performance computing. Although there are many programming models and languages de-signed for programming accelerators, such as CUDA, AMD Accelerated Parallel Processing (AMD APP), and OpenCL, these models remain difficult and complex. Furthermore, when programming for accelerator-enhanced clusters, we have to use an inter-node programming interface, such as MPI to coordinate the nodes. In order to address these problems and reduce complexity, an extension to XcalableMP (XMP), a PGAS language, for use on accelerator-enhanced clusters, called XcalableMP Device Acceleration Extension (XMP-dev), is proposed. In XMP-dev, a global distributed data is mapped onto distributed memory of each accelerator, and a fragment of codes can be of-floaded to execute in a set of accelerators. It eliminates the complex programming between nodes and accelerators and between nodes. In this paper, we present an implementation of the XMP-dev runtime library with the OpenCL APIs, while the previous implementation targets CUDA-only. Since OpenCL is a standardized interface supported for various kinds of accelerators, it improves the portability of XMP-dev and reduces the cost of development. In the result of performance evaluation, we show that the OpenCL implementation of XMP-dev can generate portable programs that can run on not only NVIDIA GPU-enhanced clusters but also various accelerator-enhanced clusters.\",\"\",\"978-1-4673-0974-5\",\"10.1109/IPDPSW.2012.296\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6270611\",\"Cluster;Accelerator;OpenCL\",\"Graphics processing unit;Acceleration;Kernel;Programming;Synchronization;Arrays\",\"application program interfaces;graphics processing units;message passing;multiprocessing systems;parallel architectures;parallel programming\",\"computational performance;acceleration device;Cell Broadband Engine;Cell/BE;multicore computing;high-performance computing;programming model;programming language;programming accelerator;CUDA;AMD Accelerated Parallel Processing;AMD APP;accelerator-enhanced cluster;internode programming interface;MPI;node coordination;complexity reduction;PGAS language;XcalableMP Device Acceleration Extension;global distributed data mapping;distributed memory;code fragment;XMP-dev runtime library;OpenCL API;standardized interface;XMP-dev portability;performance evaluation;OpenCL implementation;NVIDIA GPU-enhanced cluster\",\"\",\"5\",\"\",\"20\",\"\",\"20 Aug 2012\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Automatic Resource Scheduling with Latency Hiding for Parallel Stencil Applications on GPGPU Clusters\",\"K. Maeda; M. Murase; M. Doi; H. Komatsu; S. Noda; R. Himeno\",\"IBM Res. - Tokyo, IBM Japan, Ltd., Tokyo, Japan; IBM Res. - Tokyo, IBM Japan, Ltd., Tokyo, Japan; Syst. & Technol. Group, IBM Japan, Ltd., Tokyo, Japan; IBM Res. - Tokyo, IBM Japan, Ltd., Tokyo, Japan; Adv. Center for Comput. & Commun., RIKEN, Wako, Japan; Adv. Center for Comput. & Commun., RIKEN, Wako, Japan\",\"2012 IEEE 26th International Parallel and Distributed Processing Symposium\",\"16 Aug 2012\",\"2012\",\"\",\"\",\"544\",\"556\",\"Overlapping computations and communication is a key to accelerating stencil applications on parallel computers, especially for GPU clusters. However, such programming is a time-consuming part of the stencil application development. To address this problem, we developed an automatic code generation tool to produce a parallel stencil application with latency hiding automatically from its dataflow model. With this tool, users visually construct the workflows of stencil applications in a dataflow programming model. Our dataflow compiler determines a data decomposition policy for each application, and generates source code that overlaps the stencil computations and communication (MPI and PCIe). We demonstrate two types of overlapping models, a CPU-GPU hybrid execution model and a GPU-only model. We use a CFD benchmark computing 19-point 3D stencils to evaluate our scheduling performance, which results in 1.45 TFLOPS in single precision on a cluster with 64 Tesla C1060 GPUs.\",\"1530-2075\",\"978-1-4673-0975-2\",\"10.1109/IPDPS.2012.57\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6267857\",\"latency hiding;network embedding;resource scheduling;stencil computations\",\"Kernel;Graphics processing unit;Rivers;Hardware;Peer to peer computing;Computational modeling;Jacobian matrices\",\"graphics processing units;parallel processing;partial differential equations;processor scheduling;search problems\",\"automatic resource scheduling;latency hiding;parallel stencil applications;GPGPU Clusters;parallel computers;automatic code generation tool;dataflow programming model;dataflow compiler;data decomposition;source code generation;PDE;partial differential equations\",\"\",\"\",\"\",\"26\",\"\",\"16 Aug 2012\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Coordinated static and dynamic cache bypassing for GPUs\",\"X. Xie; Y. Liang; Y. Wang; G. Sun; T. Wang\",\"Center for Energy-Efficient Computing and Applications, School of EECS, Peking University, China; Center for Energy-Efficient Computing and Applications, School of EECS, Peking University, China; Tsinghua National Laboratory for Information Science and Technology, Department of EE, Tsinghua University, China; Center for Energy-Efficient Computing and Applications, School of EECS, Peking University, China; Center for Energy-Efficient Computing and Applications, School of EECS, Peking University, China\",\"2015 IEEE 21st International Symposium on High Performance Computer Architecture (HPCA)\",\"9 Mar 2015\",\"2015\",\"\",\"\",\"76\",\"88\",\"The massive parallel architecture enables graphics processing units (GPUs) to boost performance for a wide range of applications. Initially, GPUs only employ scratchpad memory as on-chip memory. Recently, to broaden the scope of applications that can be accelerated by GPUs, GPU vendors have used caches in conjunction with scratchpad memory as on-chip memory in the new generations of GPUs. Unfortunately, GPU caches face many performance challenges that arise due to excessive thread contention for cache resource. Cache bypassing, where memory requests can selectively bypass the cache, is one solution that can help to mitigate the cache resource contention problem. In this paper, we propose coordinated static and dynamic cache bypassing to improve application performance. At compile-time, we identify the global loads that indicate strong preferences for caching or bypassing through profiling. For the rest global loads, our dynamic cache bypassing has the flexibility to cache only a fraction of threads. In CUDA programming model, the threads are divided into work units called thread blocks. Our dynamic bypassing technique modulates the ratio of thread blocks that cache or bypass at run-time. We choose to modulate at thread block level in order to avoid the memory divergence problems. Our approach combines compile-time analysis that determines the cache or bypass preferences for global loads with run-time management that adjusts the ratio of thread blocks that cache or bypass. Our coordinated static and dynamic cache bypassing technique achieves up to 2.28X (average I.32X) performance speedup for a variety of GPU applications.\",\"2378-203X\",\"978-1-4799-8930-0\",\"10.1109/HPCA.2015.7056023\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7056023\",\"\",\"Instruction sets;Graphics processing units;Synchronization;Kernel;Pipelines;Arrays;System-on-chip\",\"cache storage;graphics processing units;multi-threading;parallel architectures\",\"coordinated static cache bypassing;coordinated dynamic cache bypassing;GPUs;parallel architecture;graphics processing units;scratchpad memory;on-chip memory;thread contention;cache resource contention problem;CUDA programming model;thread blocks;dynamic bypassing technique;memory divergence problems;compile-time analysis;bypass preferences;run-time management\",\"\",\"80\",\"1\",\"46\",\"\",\"9 Mar 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Performance characterization of the NAS Parallel Benchmarks in OpenCL\",\"S. Seo; G. Jo; J. Lee\",\"Center for Manycore Programming, School of Computer Science and Engineering, Seoul National University, 151-744, Korea; Center for Manycore Programming, School of Computer Science and Engineering, Seoul National University, 151-744, Korea; Center for Manycore Programming, School of Computer Science and Engineering, Seoul National University, 151-744, Korea\",\"2011 IEEE International Symposium on Workload Characterization (IISWC)\",\"29 Dec 2011\",\"2011\",\"\",\"\",\"137\",\"148\",\"Heterogeneous parallel computing platforms, which are composed of different processors (e.g., CPUs, GPUs, FPGAs, and DSPs), are widening their user base in all computing domains. With this trend, parallel programming models need to achieve portability across different processors as well as high performance with reasonable programming effort. OpenCL (Open Computing Language) is an open standard and emerging parallel programming model to write parallel applications for such heterogeneous platforms. In this paper, we characterize the performance of an OpenCL implementation of the NAS Parallel Benchmark suite (NPB) on a heterogeneous parallel platform that consists of general-purpose CPUs and a GPU. We believe that understanding the performance characteristics of conventional workloads, such as the NPB, with an emerging programming model (i.e., OpenCL) is important for developers and researchers to adopt the programming model. We also compare the performance of the NPB in OpenCL to that of the OpenMP version. We describe the process of implementing the NPB in OpenCL and optimizations applied in our implementation. Experimental results and analysis show that the OpenCL version has different characteristics from the OpenMP version on multicore CPUs and exhibits different performance characteristics depending on different OpenCL compute devices. The results also indicate that the application needs to be rewritten or re-optimized for better performance on a different compute device although OpenCL provides source-code portability.\",\"\",\"978-1-4577-2064-2\",\"10.1109/IISWC.2011.6114174\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6114174\",\"\",\"Kernel;Graphics processing unit;Multicore processing;Indexes;Computational modeling;Optimization\",\"graphics processing units;high level languages;microprocessor chips;parallel programming\",\"NAS parallel benchmarks;OpenCL;heterogeneous parallel computing platforms;CPU;GPU;FPGA;DSP;parallel programming models;Open Computing Language;open standard;parallel applications;heterogeneous platforms;NAS Parallel Benchmark suite;NPB;heterogeneous parallel platform;source-code portability\",\"\",\"99\",\"\",\"36\",\"\",\"29 Dec 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"The Exploration of Pervasive and Fine-Grained Parallel Model Applied on Intel Xeon Phi Coprocessor\",\"C. Calvin; F. Ye; S. Petiton\",\"DM2S Commissariat a l'Energie Atomique, CEA, France; DM2S Commissariat a l'Energie Atomique, CEA, France; Lab. d'Inf. Fondamentale de Lille, Univ. de Lille 1, Lille, France\",\"2013 Eighth International Conference on P2P, Parallel, Grid, Cloud and Internet Computing\",\"12 Dec 2013\",\"2013\",\"\",\"\",\"166\",\"173\",\"In this paper we investigate the dissimilar multithreading programming paradigms on x86 CPU architectures, where the recently released Intel Xeon Phi Coprocessor and commonly used Intel Xeon processors were studied, as well as the NVIDIA K20 GPU, which represents the cutting-edge general purpose graphics processing unit. The relevant numerical algorithm selected to address the problem is power method, which is widely used to compute the dominant eigenvalue of a matrix. This work focuses on dense linear algebra. The frequently used multi-core or many-core processor parallelism techniques include OpenMP, Intel Cilk Plus, Intel Threading Building Blocks, i.e. TBB, along with the optimized computing libraries such as Intel Math Kernel Library(MKL) or the NVIDIA CUDA Basic Linear Algebra Subroutines(cuBLAS) library. Optimized implementations of these techniques were separately applied to the aforementioned architectures. For the reason that a unitary programming model may not satisfy the growing performance demand, we also explored some possible mix of these languages. The study shows that the hybrid pattern of multithreading and data parallelism via explicit vectorization maximizes the performance on x86 architectures, which allows us to obtain 80% of the sustainable peak performance in double precision on the Intel Many Integrated Core(MIC) Architecture. In the case of single precision, this number reaches even 96%. In addition, this approach enables a reasonable performance by requiring least developing time. The numbers of iterations till convergence are roughly the same in both architectures of CPU and GPU. The GPU performs better in small matrix sizes. However, the Intel Xeon Phi coprocessor excels for large sizes with a better scalability.\",\"\",\"978-0-7695-5094-7\",\"10.1109/3PGCIC.2013.31\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6681224\",\"\",\"Coprocessors;Vectors;Kernel;Graphics processing units;Arrays;Computational modeling\",\"graphics processing units;mathematics computing;matrix algebra;multiprocessing systems;multi-threading;ubiquitous computing\",\"fine-grained parallel model;pervasive model;dissimilar multithreading programming paradigms;Intel Xeon Phi coprocessor;NVIDIA K20 GPU;dense linear algebra;many-core processor parallelism techniques;OpenMP;Building Blocks;Intel Cilk Plus;Intel Threading;optimized computing libraries;Intel Math Kernel Library;NVIDIA CUDA basic linear algebra subroutines library;multithreading;data parallelism;iteration method;multicore processor parallelism techniques;general purpose graphics processing unit\",\"\",\"3\",\"\",\"18\",\"\",\"12 Dec 2013\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"TARCAD: A template architecture for reconfigurable accelerator designs\",\"M. Shafiq; M. Pericàs; N. Navarro; E. Ayguadé\",\"Computer Sciences, Barcelona Supercomputing Center, Spain; Computer Sciences, Barcelona Supercomputing Center, Spain; Dept. Arquitectura de Computadors, Universitat Politècnica de Catalunya, Barcelona, Spain; Computer Sciences, Barcelona Supercomputing Center, Spain\",\"2011 IEEE 9th Symposium on Application Specific Processors (SASP)\",\"7 Jul 2011\",\"2011\",\"\",\"\",\"8\",\"15\",\"In the race towards computational efficiency, accelerators are achieving prominence. Among the different types, accelerators built using reconfigurable fabric, such as FPGAs, have a tremendous potential due to the ability to customize the hardware to the application. However, the lack of a standard design methodology hinders the adoption of such devices and makes the portability and reusability across designs difficult. In addition, generation of highly customized circuits does not integrate nicely with high level synthesis tools. In this work, we introduce TARCAD, a template architecture to design reconfigurable accelerators. TARCAD enables high customization in the data management and compute engines while retaining a programming model based on generic programming principles. The template provides generality and scalable performance over a range of FPGAs. We describe the template architecture in detail and show how to implement five important scientific kernels: MxM, Acoustic Wave Equation, FFT, SpMV and Smith Waterman. TARCAD is compared with other High Level Synthesis models and is evaluated against GPUs, a well-known architecture that is far less customizable and, therefore, also easier to target from a simple and portable programming model. We analyze the TARCAD template and compare its efficiency on a large Xilinx Virtex-6 device to that of several recent GPU studies.\",\"\",\"978-1-4577-1213-5\",\"10.1109/SASP.2011.5941071\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5941071\",\"\",\"Layout;Kernel;Computer architecture;Field programmable gate arrays;Hardware design languages;Monitoring;Registers\",\"field programmable gate arrays;high level synthesis;reconfigurable architectures\",\"TARCAD;template architecture;reconfigurable accelerator design;reconflgurable fabric;data management;programming model;generic programming;FPGA;acoustic wave equation;Xilinx Virtex-6 device;high level synthesis model\",\"\",\"1\",\"\",\"25\",\"\",\"7 Jul 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Meta-programming and Multi-stage Programming for GPGPUs\",\"I. Masliah; M. Baboulin; J. Falcou\",\"Univ. Paris Sud, Orsay, France; Univ. Paris Sud, Orsay, France; Univ. Paris Sud, Orsay, France\",\"2016 IEEE 10th International Symposium on Embedded Multicore/Many-core Systems-on-Chip (MCSOC)\",\"8 Dec 2016\",\"2016\",\"\",\"\",\"369\",\"376\",\"GPGPUs and other accelerators are becoming a mainstream asset for high-performance computing. Raising the programmability of such hardware is essential to enable users to discover, master and subsequently use accelerators in day-to-day simulations. Furthermore, tools for high-level programming of parallel architectures are becoming a great way to simplify the exploitation of such systems. For this reason, we have extended NT2 - the Numerical Template Toolbox - a C++ scientific computing library which can generate code for SIMD and multithreading systems in a transparent way using a MATLAB like syntax. In this paper, we study how to introduce an accelerator based programming model into this library to allow developers to reap the benefits of such an architecture. After a brief description of the NT2 framework, we explain how our accelerator programming model has been designed and integrated in a pure C++ library. We conclude by showing the applicability and performance of this tool on some practical applications.\",\"\",\"978-1-5090-3531-1\",\"10.1109/MCSoC.2016.49\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7774460\",\"GPU;Multi-stage;C++\",\"Libraries;C++ languages;Graphics processing units;Programming;Computational modeling;MATLAB;Mathematical model\",\"C++ language;graphics processing units;high level languages;parallel architectures\",\"meta programming;multistage programming;GPGPUs;high-performance computing;accelerators;high-level programming;parallel architectures;numerical template toolbox;C++ scientific library computing;SIMD;multithreading systems;MATLAB\",\"\",\"\",\"\",\"28\",\"\",\"8 Dec 2016\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"SOLAR: Services-Oriented Deep Learning Architectures-Deep Learning as a Service\",\"C. Wang; L. Gong; X. Li; Q. Yu; A. Wang; P. Hung; X. Zhou\",\"University of Science and Technology of China, Hefei, Anhui, China; University of Science and Technology of China, Hefei, Anhui, China; University of Science and Technology of China, Hefei, Anhui, China; University of Science and Technology of China, Hefei, Anhui, China; University of Science and Technology of China, Hefei, Anhui, China; Business and Information Technology, University of Ontario Institute of Technology, Oshawa, ON, Canada; University of Science and Technology of China, Hefei, Anhui, China\",\"IEEE Transactions on Services Computing\",\"4 Feb 2021\",\"2021\",\"14\",\"1\",\"262\",\"273\",\"Deep learning has been an emerging field of machine learning during past decades. However, the diversity and large scale data size have posed significant challenge to construct a flexible and high performance implementations of deep learning neural networks. In order to improve the performance as well to maintain the scalability, in this paper we present SOLAR, a services-oriented deep learning architecture using various accelerators like GPU and FPGA. SOLAR provides a uniform programming model to users so that the hardware implementation and the scheduling is invisible to the programmers. At runtime, the services can be executed either on the software processors or the hardware accelerators. To leverage the trade-offs between the metrics among performance, power, energy, and efficiency, we present a multitarget design space exploration. Experimental results on the real state-of-the-art FPGA board demonstrate that the SOLAR is able to provide a ubiquitous framework for diverse applications without increasing the burden of the programmers. Moreover, the speedup of the GPU and FPGA hardware accelerator in SOLAR can achieve significant speedup comparing to the conventional Intel i5 processors with great scalability.\",\"1939-1374\",\"\",\"10.1109/TSC.2017.2777478\",\"NSFC(grant numbers:61379040); Anhui Provincial NSF(grant numbers:1608085QF12); Suzhou Research Foundation(grant numbers:SYG201625); Youth Innovation Promotion Association of the Chinese Academy of Sciences(grant numbers:2017497); Fundamental Research Funds for the Central Universities(grant numbers:WK2150110003); \",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8119814\",\"Services-oriented architecture;deep learning;neural network;accelerator\",\"Machine learning;Hardware;Service-oriented architecture;Computer architecture;Field programmable gate arrays;Training\",\"field programmable gate arrays;learning (artificial intelligence);service-oriented architecture\",\"hardware implementation;hardware accelerators;FPGA board;SOLAR;machine learning;large scale data size;flexible performance implementations;high performance implementations;deep learning neural networks;services-oriented deep learning architecture;uniform programming model;deep learning as a service\",\"\",\"2\",\"\",\"35\",\"IEEE\",\"24 Nov 2017\",\"\",\"\",\"IEEE\",\"IEEE Journals\"\n\"Design consideration of Network Intrusion detection system using Hadoop and GPGPU\",\"S. R. Bandre; J. N. Nandimath\",\"Department of Computer Engineering, Smt. Kashibai Navale College of Engineering, Affiliated to Savitribai Phule Pune University, India; Department of Computer Engineering, Smt.Kashibai Navale College of Engineering, Affiliated to Savitribai Phule Pune University, India\",\"2015 International Conference on Pervasive Computing (ICPC)\",\"16 Apr 2015\",\"2015\",\"\",\"\",\"1\",\"6\",\"Modern computing has primarily shifted towards the distributed environment using commodity resources which results in increase in data and its security concern. This paper deals with design consideration of Network Intrusion Detection System (NIDS) based on the Hadoop framework and acceleration of its performance by using General Purpose Graphical Processing Unit (GPGPU). The large volume of data from an entire infrastructure is assigned to Hadoop framework and intrusion detections are carried out on GPGPU. This approach improves NIDS performance and it enables to provide quick response to various attacks on the network. In order to perform the general purposed computation on the GPU, NVidia provides the Compute Unified Device Architecture (CUDA) which is a parallel programming model which performs high-end complex operations using GPU. In order to process large volumes of data in distributed networks, Hadoop framework has to configure with various supporting ecosystems like Flume, Pig, Hive and HBase. These ecosystems enable the Hadoop framework to handle streaming data on the network and large log files on servers. The proposed system is capable of performing analytics over intrusion pattern and their behavior on the network, which helps a network administrator to configure network security policy and settings. Analytics over intrusion is done by using a Score-Weight approach called as Pattern Frequency Inverse Cluster Frequency (PF-ICF). The design consideration of accelerated NIDS is a solution towards the performance issues of various NIDS that faces due to the large volumes of the network traffic.\",\"\",\"978-1-4799-6272-3\",\"10.1109/PERVASIVE.2015.7087201\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7087201\",\"CUDA;GPGPU;Hadoop;Network Security;NIDS\",\"Graphics processing units;Intrusion detection;Servers;Ecosystems;Algorithm design and analysis;Telecommunication traffic\",\"data analysis;graphics processing units;parallel architectures;parallel programming;security of data\",\"network intrusion detection system;GPGPU;Hadoop framework;general purpose graphical processing unit;NIDS;NVidia;Compute Unified Device Architecture;CUDA;parallel programming model;Flume;Pig;Hive;HBase;streaming data handling;log files;intrusion pattern analytics;network security policy;score-weight approach;pattern frequency inverse cluster frequency;PF-ICF;network traffic\",\"\",\"8\",\"\",\"15\",\"\",\"16 Apr 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"An Efficient Acceleration of Symmetric Key Cryptography Using General Purpose Graphics Processing Unit\",\"F. Wu; C. -h. Chen; H. Narang\",\"Comput. Sci. Dept., Tuskegee Univ., Tuskegee, AL, USA; Comput. Sci. Dept., Tuskegee Univ., Tuskegee, AL, USA; Comput. Sci. Dept., Tuskegee Univ., Tuskegee, AL, USA\",\"2010 Fourth International Conference on Emerging Security Information, Systems and Technologies\",\"11 Nov 2010\",\"2010\",\"\",\"\",\"228\",\"233\",\"Graphics Processing Units (GPU) have been the extensive research topic in recent years and have been successfully applied to general purpose applications other than computer graphical area. The nVidia CUDA programming model provides a straightforward means of describing inherently parallel computations. In this paper, we present a study of the efficiency of emerging technology in applying General Purpose Graphics Processing Units (GPGPU) in high performance symmetric key cryptographic solutions. We implemented symmetric key cryptography algorithm using the novel CUDA platform on nVidia Geforce 280 GTX and compared its performance with an optimized CPU implementation on a high-end AMD Opteron Dual Core CPU. Our experimental results show that GPGPU can perform as an efficient cryptographic accelerator and the developed GPU based implementation achieve a significant performance improvement over CPU based implementation and the maximum observed speedups are about 100 times.\",\"2162-2116\",\"978-1-4244-7517-9\",\"10.1109/SECURWARE.2010.44\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5633744\",\"Symmetric Key Cryptography;High Performance Computation;Purpose Graphics Processing Unit;CUDA\",\"Graphics processing unit;Cryptography;Kernel;Instruction sets;Computer architecture;Central Processing Unit\",\"computer graphic equipment;coprocessors;cryptography\",\"efficient acceleration;symmetric key cryptography;general purpose graphics processing unit;computer graphical area;nVidia CUDA programming model;parallel computations;GPGPU;performance symmetric key cryptographic solutions;nVidia Geforce 280 GTX\",\"\",\"1\",\"\",\"12\",\"\",\"11 Nov 2010\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"A Sparse Matrix Personality for the Convey HC-1\",\"K. K. Nagar; J. D. Bakos\",\"Dept. of Comput. Sci. & Eng., Univ. of South Carolina, Columbia, SC, USA; Dept. of Comput. Sci. & Eng., Univ. of South Carolina, Columbia, SC, USA\",\"2011 IEEE 19th Annual International Symposium on Field-Programmable Custom Computing Machines\",\"19 May 2011\",\"2011\",\"\",\"\",\"1\",\"8\",\"In this paper we describe a double precision floating point sparse matrix-vector multiplier (SpMV) and its performance as implemented on a Convey HC-1 reconfigurable computer. The primary contributions of this work are a novel streaming reduction architecture for floating point accumulation, a novel on-chip cache optimized for streaming compressed sparse row (CSR) matrices, and end-to-end integration with the HC-1's system, programming model, and runtime environment. The design is composed of 32 parallel processing elements, each connected to the HC-1's coprocessor memory and each containing a streaming multiply-accumulator and local vector cache. When used on the HC-1, each PE has a peak throughput of 300 double precision MFLOP/s, giving a total peak throughput of 9.6 GFLOPS/s. For our test matrices, we demonstrate up to 40% of the peak performance and compare these results with results obtained using the CUSparse library on an NVIDIA Tesla S1070 GPU. In most cases our implementation exceeds the performance of the GPU.\",\"\",\"978-1-61284-277-6\",\"10.1109/FCCM.2011.60\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5771239\",\"floating point accumulation;reduction;reconfigurable computing;sparse matrix;SpMV\",\"Adders;Coprocessors;Arrays;Sparse matrices;Field programmable gate arrays;Pipelines\",\"cache storage;coprocessors;floating point arithmetic;matrix multiplication;multiplying circuits;parallel processing;reconfigurable architectures;sparse matrices\",\"sparse matrix personality;double precision floating point sparse matrix-vector multiplier;Convey HC-1 reconfigurable computer;streaming reduction architecture;floating point accumulation;on-chip cache;compressed sparse row matrix;end-to-end integration;HC-1 system;programming model;runtime environment;parallel processing;HC-1 coprocessor memory;multiply-accumulator;local vector cache;CUSparse library\",\"\",\"29\",\"\",\"21\",\"\",\"19 May 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Extending OpenACC for Efficient Stencil Code Generation and Execution by Skeleton Frameworks\",\"A. D. Pereira; M. Castro; M. A. R. Dantas; R. C. O. Rocha; L. F. W. Góes\",\"Fed. Univ. of Santa Catarina, Florianopolis, Brazil; Fed. Univ. of Santa Catarina, Florianopolis, Brazil; Fed. Univ. of Santa Catarina, Florianopolis, Brazil; Univ. of Edinburgh, Edinburgh, UK; Pontifical Catholic Univ. of Minas Gerais, Belo Horizonte, Brazil\",\"2017 International Conference on High Performance Computing & Simulation (HPCS)\",\"14 Sep 2017\",\"2017\",\"\",\"\",\"719\",\"726\",\"The OpenACC programming model simplifies the programming for accelerator devices such as GPUs. Its abstract accelerator model defines a least common denominator for accelerator devices, thus it cannot represent architectural specifics of these devices without losing portability. Therefore, this general- purpose approach delivers good performance on average, but it misses optimization opportunities for code generation and execution of specific classes of applications. In this paper, we propose OpenACC extensions to enable efficient code generation and execution of stencil applications by parallel skeleton frameworks such as PSkel. Our results show that our stencil extensions may improve the performance of OpenACC in up to 28% and 45% on GPU and CPU, respectively. Moreover, we show that the work-partitioning mechanism offered by the skeleton framework, which splits the computation across CPU and GPU, may improve even further the performance of the applications in up to 18%.\",\"\",\"978-1-5386-3250-5\",\"10.1109/HPCS.2017.110\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8035149\",\"stencil;skeleton frameworks;source-to-source compilation;CUDA;OpenACC\",\"Graphics processing units;Skeleton;Programming;Jacobian matrices;Optimization;Computer architecture;Runtime\",\"graphics processing units;parallel programming;program compilers;software performance evaluation\",\"OpenACC programming model;accelerator devices;abstract accelerator model;OpenACC extensions;stencil applications;parallel skeleton frameworks;stencil extensions;efficient stencil code generation;least common denominator;general-purpose approach;optimization;code execution;performance improvement;work-partitioning\",\"\",\"4\",\"\",\"27\",\"\",\"14 Sep 2017\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Processing of synthetic Aperture Radar data with GPGPU\",\"C. Clemente; M. di Bisceglie; M. Di Santo; N. Ranaldo; M. Spinelli\",\"Università degli Studi del Sannio, Piazza Roma 21, 82100 Benevento, Italy; Università degli Studi del Sannio, Piazza Roma 21, 82100 Benevento, Italy; Università degli Studi del Sannio, Piazza Roma 21, 82100 Benevento, Italy; Università degli Studi del Sannio, Piazza Roma 21, 82100 Benevento, Italy; Università degli Studi del Sannio, Piazza Roma 21, 82100 Benevento, Italy\",\"2009 IEEE Workshop on Signal Processing Systems\",\"17 Nov 2009\",\"2009\",\"\",\"\",\"309\",\"314\",\"Synthetic aperture radar processing is a complex task that involves advanced signal processing techniques and intense computational effort. While the first issue has now reached a mature stage, the question of how to produce accurately focused images in real-time, without mainframe facilities, is still under debate. The recent introduction of general-purpose graphic processing units seems to be quite promising in this view, especially for the decreased per-core cost barrier and for the affordable programming complexity. The authors explain, in this work, the main computational features of a range-Doppler Synthetic Aperture Radar (SAR) processor, trying to disclose the degree of parallelism in the operations at the light of the CUDA programming model. Given the extremely flexible structure of the Single Instruction Multiple Threads (SIMT) model, the authors show that the optimization of a SAR processing unit cannot reduce to an FFT optimization, although this is a quite extensively used kernel. Actually, it is noticeable that the most significant advantage is obtained in the range cell migration correction kernel where a complex interpolation stage is performed very efficiently exploiting the SIMT model. Performance show that, using a single Nvidia Tesla-C1060 GPU board, the obtained processing time is more than fifteen time better than our test workstation.\",\"2162-3570\",\"978-1-4244-4335-2\",\"10.1109/SIPS.2009.5336272\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5336272\",\"Synthetic Aperture Radar;parallel processing;GPU;CUDA\",\"Synthetic aperture radar;Kernel;Radar signal processing;Focusing;Graphics;Costs;Concurrent computing;Parallel processing;Parallel programming;Flexible structures\",\"computer graphic equipment;Doppler radar;interpolation;synthetic aperture radar\",\"synthetic aperture radar;GPGPU;general-purpose graphic processing unit;range-Doppler SAR;single instruction multiple thread model\",\"\",\"15\",\"1\",\"13\",\"\",\"17 Nov 2009\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Accelerated solution of stiffness matrix for isoparametric elements based on CUDA\",\"H. Binxing; L. Xinguo; Q. Hao; L. Zenghao\",\"Shaanxi Aerospace Flight Vehicle Design Key Laboratory, Northwestern Polytechnical University, Xi'an, PR China; Shaanxi Aerospace Flight Vehicle Design Key Laboratory, Northwestern Polytechnical University, Xi'an, PR China; Shaanxi Aerospace Flight Vehicle Design Key Laboratory, Northwestern Polytechnical University, Xi'an, PR China; School of Astronautics, Northwestern Polytechnical University, Xi'an, PR China\",\"2017 IEEE International Conference on Signal Processing, Communications and Computing (ICSPCC)\",\"1 Jan 2018\",\"2017\",\"\",\"\",\"1\",\"4\",\"High precision results in structural with the shortest time consumption are expected when methods are introduced to solve FEM(Finite element method). Solving of stiffness matrix assembled by isoparametric elements and solving the assembled stiffness matrix are the most time-consuming. In the previous serial algorithms, there is always a time limitation for some applications and it is hard to achieve. However, break-through in programming and feasibility of general-purpose applications executed on GPU (Graph Processing Unit), such as the parallel computing platform and programming model CUDA (Compute Unified Device Architecture) released by NVIDIA corporation, make it possible for some large scale FEM explicit dynamic simulation in real time. Authors present an approach to accelerate calculation in element stiffness matrices, taking the three-dimensional hexahedral isoparametric element in different scale as an example. A speedup of about 15 times is achieved with respect to parallel algorithms using boost on CPU. The results show that the parallel algorithm based on CUDA can satisfy the fast simulation of finite element model of structural problems with certain computational scale.\",\"\",\"978-1-5386-3142-3\",\"10.1109/ICSPCC.2017.8242497\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8242497\",\"FEM;CUDA;Conjugate gradient;Parallel Computing;GPU acceleration\",\"Finite element analysis;Computers;Graphics processing units;Indexes;Shape;Hardware\",\"finite element analysis;graphics processing units;mathematics computing;matrix algebra;parallel algorithms;parallel architectures\",\"general-purpose applications;finite element method;graph processing unit;large scale FEM explicit dynamic simulation;assembled stiffness matrix;shortest time consumption;isoparametric elements;accelerated solution;finite element model;CUDA;parallel algorithm;three-dimensional hexahedral isoparametric element;element stiffness matrices;Compute Unified Device Architecture;parallel computing platform\",\"\",\"2\",\"\",\"7\",\"\",\"1 Jan 2018\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"HeTM: Transactional Memory for Heterogeneous Systems\",\"D. Castro; P. Romano; A. Ilic; A. M. Khan\",\"Universidade de Lisboa, Portugal; Universidade de Lisboa, Portugal; Universidade de Lisboa, Portugal; UiT The Arctic University of Norway, Norway\",\"2019 28th International Conference on Parallel Architectures and Compilation Techniques (PACT)\",\"7 Nov 2019\",\"2019\",\"\",\"\",\"232\",\"244\",\"Modern heterogeneous computing architectures, which couple multi-core CPUs with discrete many-core GPUs (or other specialized hardware accelerators), enable unprecedented peak performance and energy efficiency levels. However, developing applications that can take full advantage of the potential of heterogeneous systems is a notoriously hard task. This work takes a step towards reducing the complexity of programming heterogeneous systems by introducing the abstraction of Heterogeneous Transactional Memory (HeTM). HeTM provides programmers with the illusion of a single memory region, shared among the CPUs and the (discrete) GPU(s) of a heterogeneous system, with support for atomic transactions. Besides introducing the abstract semantics and programming model of HeTM, we present the design and evaluation of a concrete implementation of the proposed abstraction, referred herein as Speculative HeTM (SHeTM). SHeTM makes use of a novel design that leverages speculative techniques, which aims at hiding the inherently large communication latency between CPUs and discrete GPUs and at minimizing inter-device synchronization overhead. We demonstrate the efficiency of the SHeTM via an extensive quantitative study based both on synthetic benchmarks and on a popular object caching system.\",\"2641-7936\",\"978-1-7281-3613-4\",\"10.1109/PACT.2019.00026\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8891063\",\"transaction;memory;CPU;GPU;heterogeneous;computing;system\",\"Synchronization;Graphics processing units;Programming;Performance evaluation;Computer architecture;Task analysis\",\"cache storage;graphics processing units;multiprocessing systems;parallel programming;power aware computing\",\"Heterogeneous Transactional Memory;single memory region;Speculative HeTM;modern heterogeneous computing architectures;couple multicore CPUs;many-core GPUs;energy efficiency levels;heterogeneous systems programming;object caching system;SHeTM\",\"\",\"\",\"\",\"59\",\"\",\"7 Nov 2019\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"A Comparison of Performance Tunabilities between OpenCL and OpenACC\",\"M. Sugawara; S. Hirasawa; K. Komatsu; H. Takizawa; H. Kobayashi\",\"Tohoku Univ., Sendai, Japan; Tohoku Univ., Sendai, Japan; Tohoku Univ., Sendai, Japan; Tohoku Univ., Sendai, Japan; Tohoku Univ., Sendai, Japan\",\"2013 IEEE 7th International Symposium on Embedded Multicore Socs\",\"11 Nov 2013\",\"2013\",\"\",\"\",\"147\",\"152\",\"To design and develop any auto tuning mechanisms for OpenACC, it is important to clarify the differences between conventional GPU programming models and OpenACC in terms of available programming and tuning techniques, called performance tunabilities. This paper hence discusses the performance tunabilities of OpenACC and OpenCL. As OpenACC cannot synchronize threads running on GPUs, some important techniques are not available to OpenACC. Therefore, we also design an additional compiler directive for thread synchronization. Evaluation results show that both OpenCL and OpenACC need architecture-aware optimizations, and similar approaches to performance optimization are effective for both OpenCL and OpenACC. The additional directive can allow OpenACC to describe more tuning techniques in the same approach as OpenCL. As it is obvious that OpenACC is more productive than OpenCL especially for legacy application migration, OpenACC is a very promising programming model if it can achieve the same performance as the conventional GPU programming models such as CUDA and OpenCL.\",\"\",\"978-0-7695-5086-2\",\"10.1109/MCSoC.2013.31\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6657921\",\"Autotuning;OpenCL;OpenACC\",\"Instruction sets;Kernel;Graphics processing units;Optimization;Programming;Synchronization;Data transfer\",\"graphics processing units;parallel architectures;software maintenance\",\"performance tunabilities;OpenCL;OpenACC;auto tuning mechanisms;GPU programming models;compiler directive;thread synchronization;architecture-aware optimizations;performance optimization;legacy application migration;CUDA\",\"\",\"8\",\"\",\"15\",\"\",\"11 Nov 2013\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Exploring Programming Multi-GPUs Using OpenMP and OpenACC-Based Hybrid Model\",\"R. Xu; S. Chandrasekaran; B. Chapman\",\"Dept. of Comput. Sci., Univ. of Houston, Houston, TX, USA; Dept. of Comput. Sci., Univ. of Houston, Houston, TX, USA; Dept. of Comput. Sci., Univ. of Houston, Houston, TX, USA\",\"2013 IEEE International Symposium on Parallel & Distributed Processing, Workshops and Phd Forum\",\"31 Oct 2013\",\"2013\",\"\",\"\",\"1169\",\"1176\",\"Heterogeneous computing come with tremendous potential and is a leading candidate for scientific applications that are becoming more and more complex. Accelerators such as GPUs whose computing momentum is growing faster than ever offer application performance when compute intensive portions of an application are offloaded to them. It is quite evident that future computing architectures are moving towards hybrid systems consisting of multi-GPUs and multi-core CPUs. A variety of high-level languages and software tools can simplify programming these systems. Directive-based programming models are being embraced since they not only ease programming complex systems but also abstract low-level details from the programmer. We already know that OpenMP has been making programming CPUs easy and portable. Similarly, a directive-based programming model for accelerators is OpenACC that is gaining popularity since the directives play an important role in developing portable software for GPUs. A combination of OpenMP and OpenACC, a hybrid model, is a plausible solution to port scientific applications to heterogeneous architectures especially when there is more than one GPU on a single node to port an application to. However OpenACC meant for accelerators is yet to provide support for multi-GPUs. But using OpenMP we could conveniently exploit features such as for and section to distribute compute intensive kernels to more than one GPU. We demonstrate the effectiveness of this hybrid approach with some case studies in this paper.\",\"\",\"978-0-7695-4979-8\",\"10.1109/IPDPSW.2013.263\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6651003\",\"GPUs;OpenACC;OpenMP\",\"Graphics processing units;Kernel;Programming;Computational modeling;Computer architecture;Instruction sets;Data transfer\",\"application program interfaces;graphics processing units;high level languages;multiprocessing systems;parallel programming;software tools\",\"heterogeneous architectures;portable software;directive-based programming models;software tools;high-level languages;multicore CPU;heterogeneous computing;OpenMP;OpenACC-based hybrid model;multi-GPU\",\"\",\"11\",\"\",\"20\",\"\",\"31 Oct 2013\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"A Comprehensive Performance Comparison of CUDA and OpenCL\",\"J. Fang; A. L. Varbanescu; H. Sips\",\"Parallel & Distrib. Syst. Group, Delft Univ. of Technol., Delft, Netherlands; Parallel & Distrib. Syst. Group, Delft Univ. of Technol., Delft, Netherlands; Parallel & Distrib. Syst. Group, Delft Univ. of Technol., Delft, Netherlands\",\"2011 International Conference on Parallel Processing\",\"17 Oct 2011\",\"2011\",\"\",\"\",\"216\",\"225\",\"This paper presents a comprehensive performance comparison between CUDA and OpenCL. We have selected 16 benchmarks ranging from synthetic applications to real-world ones. We make an extensive analysis of the performance gaps taking into account programming models, ptimization strategies, architectural details, and underlying compilers. Our results show that, for most applications, CUDA performs at most 30% better than OpenCL. We also show that this difference is due to unfair comparisons: in fact, OpenCL can achieve similar performance to CUDA under a fair comparison. Therefore, we define a fair comparison of the two types of applications, providing guidelines for more potential analyses. We also investigate OpenCL's portability by running the benchmarks on other prevailing platforms with minor modifications. Overall, we conclude that OpenCL's portability does not fundamentally affect its performance, and OpenCL can be a good alternative to CUDA.\",\"2332-5690\",\"978-1-4577-1336-1\",\"10.1109/ICPP.2011.45\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6047190\",\"Performance Comparison;CUDA;OpenCL\",\"Graphics processing unit;Benchmark testing;Programming;Performance evaluation;Computational modeling;Kernel\",\"benchmark testing;computer graphic equipment;coprocessors;multiprocessing systems;parallel architectures;parallel programming;parallelising compilers\",\"performance comparison;CUDA;performance gap;programming model;optimization strategy;architectural detail;compilers;OpenCL portability;NVIDIA GPU\",\"\",\"121\",\"\",\"30\",\"\",\"17 Oct 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Hippogriff: Efficiently moving data in heterogeneous computing systems\",\"Y. Liu; H. -W. Tseng; M. Gahagan; J. Li; Y. Jin; S. Swanson\",\"Department of Computer Science and Engineering, University of California, San Diego, La Jolla, U.S.A.; Department of Computer Science and Engineering, University of California, San Diego, La Jolla, U.S.A.; Department of Computer Science and Engineering, University of California, San Diego, La Jolla, U.S.A.; Department of Computer Science and Engineering, University of California, San Diego, La Jolla, U.S.A.; Department of Computer Science and Engineering, University of California, San Diego, La Jolla, U.S.A.; Department of Computer Science and Engineering, University of California, San Diego, La Jolla, U.S.A.\",\"2016 IEEE 34th International Conference on Computer Design (ICCD)\",\"24 Nov 2016\",\"2016\",\"\",\"\",\"376\",\"379\",\"Data movement between the compute and the storage (e.g., GPU and SSD) has been a long-neglected problem in heterogeneous systems, while the inefficiency in existing systems does cause significant loss in both performance and energy efficiency. This paper presents Hippogriff to provide a high-level programming model to simplify data movement between the compute and the storage, and to dynamically schedule data transfers based on system load. By eliminating unnecessary data movement, Hippogriff can speedup single program workloads by 1.17×, and save 17% energy. For multi-program workloads, Hippogriff shows 1.25× speedup. Hippogriff also improves the performance of a GPU-based MapReduce framework by 27%.\",\"\",\"978-1-5090-5142-7\",\"10.1109/ICCD.2016.7753307\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7753307\",\"\",\"Nonvolatile memory;Graphics processing units;Data transfer;Runtime;Discrete wavelet transforms;Peer-to-peer computing;Benchmark testing\",\"data handling;graphics processing units;parallel processing;storage management\",\"Hippogriff;heterogeneous computing systems;data movement;data storage;high-level programming;GPU-based MapReduce\",\"\",\"8\",\"\",\"17\",\"\",\"24 Nov 2016\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Performance Analysis of a Quantum Monte Carlo Application on Multiple Hardware Architectures Using the HPX Runtime\",\"W. Wei; A. Chatterjee; K. Huck; O. Hernandez; H. Kaiser\",Louisiana State University; Oak Ridge National Laboratory; University of Oregon; Oak Ridge National Laboratory; Louisiana State University,\"2020 IEEE/ACM 11th Workshop on Latest Advances in Scalable Algorithms for Large-Scale Systems (ScalA)\",\"31 Dec 2020\",\"2020\",\"\",\"\",\"77\",\"84\",\"This paper describes how we successfully used the HPX programming model to port the DCA++ application on multiple architectures that include POWER9, x86, ARM v8, and NVIDIA GPUs. We describe the lessons we can learn from this experience as well as the benefits of enabling the HPX in the application to improve the CPU threading part of the code, which led to an overall 21% improvement across architectures. We also describe how we used HPX-APEX to raise the level of abstraction to understand performance issues and to identify tasking optimization opportunities in the code, and how these relate to CPU/GPU utilization counters, device memory allocation over time, and CPU kernel level context switches on a given architecture.\",\"\",\"978-1-6654-2270-3\",\"10.1109/ScalA51936.2020.00015\",\"U.S. Department of Energy; Office of Science; Advanced Scientific Computing Research; Basic Energy Sciences; Office of Science; U.S. Department of Energy; \",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9308704\",\"Quantum Monte Carlo (QMC);Dynamical Cluster Approximation (DCA);Autonomic Performance Environment for eXascale (APEX);HPX runtime system\",\"Instruction sets;C++ languages;Runtime;Task analysis;Computer architecture;Libraries;Standards\",\"graphics processing units;Monte Carlo methods;multi-threading;parallel architectures;quantum computing;software performance evaluation\",\"x86;POWER9;tasking optimization;CPU threading part;NVIDIA GPUs;ARM v8;DCA++ application;HPX programming model;HPX runtime;hardware architectures;quantum Monte Carlo application;performance analysis;CPU kernel level context;HPX-APEX\",\"\",\"\",\"\",\"33\",\"\",\"31 Dec 2020\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Optimal Bidding Strategies for Thermal and Generic Programming Units in the Day-Ahead Electricity Market\",\"F. -. Heredia; M. J. Rider; C. Corchero\",\"Statistics and Operations Research Department, Universitat Politècnica de Catalunya, Barcelona, Spain; Statistics and Operations Research Department, Universitat Politècnica de Catalunya, Barcelona, Spain; Statistics and Operations Research Department, Universitat Politècnica de Catalunya, Barcelona, Spain\",\"IEEE Transactions on Power Systems\",\"19 Jul 2010\",\"2010\",\"25\",\"3\",\"1504\",\"1518\",\"This study has developed a stochastic programming model that integrates the day-ahead optimal bidding problem with the most recent regulation rules of the Iberian Electricity Market (MIBEL) for bilateral contracts (BC), with a special consideration for the new mechanism to balance the competition of the production market, namely virtual power plant (VPP) auctions. The model allows a price-taking generation company (GenCo) to decide on the unit commitment of the thermal units, the economic dispatch of the BCs between the thermal units and the generic programming unit (GPU), and the optimal sale/purchase bids for all units (thermal and generic), by observing the MIBEL regulation. The uncertainty of the spot prices has been represented through scenario sets built from the most recent real data using scenario reduction techniques. The model has been solved using real data from a Spanish generation company and spot prices, and the results have been reported and analyzed.\",\"1558-0679\",\"\",\"10.1109/TPWRS.2009.2038269\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5409525\",\"Bilateral contracts;electricity spot market;optimal bidding strategies;short-term electricity generation planning;stochastic programming;virtual power plant auctions\",\"Electricity supply industry;Power generation;Costs;Marketing and sales;Procurement;Stochastic processes;Contracts;Production;Power system economics;Power generation economics\",\"power markets;pricing;stochastic programming\",\"optimal bidding strategies;generic programming units;thermal programming units;day-ahead electricity market;stochastic programming model;Iberian Electricity Market;bilateral contracts;virtual power plant auctions;production market;price-taking generation company;optimal sale-purchase bids;Spanish generation company;spot prices;scenario reduction techniques\",\"\",\"42\",\"\",\"30\",\"IEEE\",\"8 Feb 2010\",\"\",\"\",\"IEEE\",\"IEEE Journals\"\n\"Parallelizing Back Propagation Neural Network on Speculative Multicores\",\"Y. Wang; H. An; Z. Liu; T. Liu; D. Zhao\",\"Dept. of Comput. Sci. & Technol., Southwest Univ. of Sci. & Technol., Mianyang, China; Dept. of Comput. Sci. & Technol., Univ. of Sci. & Technol. of China, Hefei, China; Dept. of Comput. Sci. & Technol., Southwest Univ. of Sci. & Technol., Mianyang, China; Dept. of Comput. Sci. & Technol., Southwest Univ. of Sci. & Technol., Mianyang, China; Dept. of Comput. Sci. & Technol., Southwest Univ. of Sci. & Technol., Mianyang, China\",\"2016 IEEE 22nd International Conference on Parallel and Distributed Systems (ICPADS)\",\"19 Jan 2017\",\"2016\",\"\",\"\",\"902\",\"907\",\"Applications typically exhibit extremely different performance characteristics depending on the accelerator. Back propagation neural network (BPNN) has been parallelized into different platforms. However, it has not yet been explored on speculative multicore architecture thoroughly. This paper presents a study of parallelizing BPNN on a speculative multicore architecture, including its speculative execution model, hardware design and programming model. The implementation was analyzed with seven well-known benchmark data sets. Furthermore, it trades off several important design factors in coming speculative multicore architecture. The experimental results show that: (1) the BPNN performs well on speculative multicore platform. It can achieve similar speedup (17.7x to 57.4x) compared with graphics processors (GPU) while provides a more friendly programmability. (2) 64 cores' computing resources can be used efficiently and 4k is the proper speculative buffer capacity in the model.\",\"1521-9097\",\"978-1-5090-4457-3\",\"10.1109/ICPADS.2016.0121\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7823836\",\"thread level speculation;parallel programming;back propagation;multicore\",\"Multicore processing;Instruction sets;Graphics processing units;Programming;Neural networks;Hardware\",\"backpropagation;multiprocessing systems;neural nets\",\"backpropagation neural network;multicore architecture;speculative execution model;hardware design;programming model;speculative multicore platform;parallelized BPNN\",\"\",\"\",\"\",\"27\",\"\",\"19 Jan 2017\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Task Mapping and Scheduling for OpenVX Applications on Heterogeneous Multi/Many-Core Architectures\",\"F. Lumpp; S. Aldegheri; H. D. Patel; N. Bombieri\",\"Department of Computer Science, University of Verona, Verona, Italy; Department of Computer Science, University of Verona, Verona, Italy; Department of Electrical and Computer Engineering, University of Waterloo, Waterloo, ON, Canada; Department of Computer Science, University of Verona, Verona, Italy\",\"IEEE Transactions on Computers\",\"8 Jul 2021\",\"2021\",\"70\",\"8\",\"1148\",\"1159\",\"Computer vision applications have stringent performance constraints that must be satisfied when they are run at the edge on programmable low-power embedded devices. OpenVX has emerged as the de-facto reference standard to develop such applications. OpenVX uses a primitive-based programming model that results in a directed-acyclic graph (DAG) representation of the application, which can then be used for automatic system-level optimizations and synthesis to heterogeneous multi- and many-core platforms. Although OpenVX has been standardized, its state-of-the-art algorithm for task mapping and scheduling does not deliver the performance necessary for such applications to be deployed on heterogeneous multi-/many-core platforms. This article focuses on addressing this challenge with three main contributions: First, we implemented a static task scheduling and mapping approach for OpenVX using the heterogeneous earliest finish time (HEFT) heuristic. We show that HEFT allows us to improve the system performance up to 70 percent on one of the most widespread smart systems for applying computer vision and intelligent video analytics in general at the edge (i.e., NVIDIA VisionWorks on NVIDIA Jetson TX2). Second, we show that HEFT, in the context of a vision application for edge computing where some primitives may have multiple implementations (e.g., for CPU and GPU), can lead to load imbalance amongst heterogeneous computing elements (CEs), thus suffering from degraded performance. Third, we present an algorithm called exclusive earliest finish time (XEFT) that introduces the notion of exclusive overlap between single implementation primitives to improve the load balancing. We show that XEFT can further improve the system performance up to 33 percent over HEFT, and 82 percent over the native OpenVX scheduler. We present the results on a large set of benchmarks, including a real-world localization and mapping application (ORB-SLAM) combined with an NVIDIA inference application based on convolutional neural networks (CNNs) for object detection.\",\"1557-9956\",\"\",\"10.1109/TC.2021.3059528\",\"Italian Ministry of Education, Univ. and Research; \",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9354946\",\"Embedded vision applications;static mapping and scheduling;OpenVX;heterogeneous architectures\",\"Task analysis;Computer architecture;Computer vision;Graphics processing units;Optimization;System performance;Kernel\",\"computer vision;convolutional neural nets;directed graphs;embedded systems;low-power electronics;metaheuristics;multiprocessing systems;object detection;parallel architectures;processor scheduling;SLAM (robots);video signal processing\",\"automatic system-level optimizations;static task scheduling;heterogeneous earliest finish time heuristic;NVIDIA Jetson TX2;computer vision;edge computing;heterogeneous computing elements;exclusive earliest finish time;native OpenVX scheduler;primitive-based programming model;directed-acyclic graph representation;HEFT heuristic;programmable low-power embedded devices;XEFT;real-world localization and mapping application;ORB-SLAM;convolutional neural networks;CNN;object detection;NVIDIA VisionWorks;DAG representation;heterogeneous multicore architecture;heterogeneous many-core architecture;intelligent video analytics\",\"\",\"\",\"\",\"30\",\"IEEE\",\"16 Feb 2021\",\"\",\"\",\"IEEE\",\"IEEE Journals\"\n\"Enhancing Performance of Computer Vision Applications on Low-Power Embedded Systems Through Heterogeneous Parallel Programming\",\"S. Aldegheri; S. Manzato; N. Bombieri\",\"Department of Computer Science, University of Verona; Department of Computer Science, University of Verona; Department of Computer Science, University of Verona\",\"2018 IFIP/IEEE International Conference on Very Large Scale Integration (VLSI-SoC)\",\"21 Feb 2019\",\"2018\",\"\",\"\",\"119\",\"124\",\"Enabling computer vision applications on low-power embedded systems gives rise to new challenges for embedded SW developers. Such applications implement different functionalities, like image recognition based on deep learning, simultaneous localization and mapping tasks. They are characterized by stringent performance constraints to guarantee real-time behaviors and, at the same time, energy constraints to save battery on the mobile platform. Even though heterogeneous embedded boards are getting pervasive for their high computational power at low power costs, they need a time consuming customization of the whole application (i.e., mapping of application blocks to CPU-GPU processing elements and their synchronization) to efficiently exploit their potentiality. Different languages and environments have been proposed for such an embedded SW customization. Nevertheless, they often find limitations on complex real cases, as their application is mutual exclusive. This paper presents a comprehensive framework that relies on a heterogeneous parallel programming model, which combines OpenMP, PThreads, OpenVX, OpenCV, and CUDA to best exploit different levels of parallelism while guaranteeing a semi-automatic customization. The paper shows how such languages and API platforms have been interfaced, synchronized, and applied to customize an ORB-SLAM application for an NVIDIA Jetson TX2 board.\",\"2324-8440\",\"978-1-5386-4756-1\",\"10.1109/VLSI-SoC.2018.8644937\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8644937\",\"\",\"Graphics processing units;Computer vision;Kernel;Task analysis;Computational modeling;Power demand;Libraries\",\"application program interfaces;computer vision;coprocessors;embedded systems;graphics processing units;hardware-software codesign;image recognition;microprocessor chips;multiprocessing systems;parallel architectures;parallel programming;SLAM (robots)\",\"low-power embedded systems;embedded SW developers;real-time behaviors;heterogeneous embedded boards;high computational power;low power costs;application blocks;embedded SW customization;heterogeneous parallel programming model;ORB-SLAM application;computer vision applications;performance constraints;OpenMP;PThreads;OpenVX;OpenCV;CUDA\",\"\",\"3\",\"\",\"12\",\"\",\"21 Feb 2019\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"GasCL: A vertex-centric graph model for GPUs\",\"S. Che\",\"Advanced Micro Devices, USA\",\"2014 IEEE High Performance Extreme Computing Conference (HPEC)\",\"12 Feb 2015\",\"2014\",\"\",\"\",\"1\",\"6\",\"There are increasing research efforts of using GPUs for graph processing. Most prior work on accelerating GPGPU graph algorithms has been focused on algorithm and device-specific optimizations. There is little research on studying high-level programming models and associate run-time systems for graph processing on GPUs, which will be useful to solve diverse real-world problems flexibly. This paper presents a preliminary implementation of a graph framework, GasCL, supporting the well-known “think-like-a-vertex” programming model. The system is built on top of OpenCL and portable across diverse accelerators. We describe our design and use two applications as case studies. The initial performance result shows an average of 2.5× speedup on a GPU compared with a CPU.\",\"\",\"978-1-4799-6233-4\",\"10.1109/HPEC.2014.7040962\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7040962\",\"\",\"Graphics processing units;Kernel;Arrays;Runtime;Computational modeling;Programming\",\"graph theory;graphics processing units;optimisation;parallel programming\",\"GasCL;vertex-centric graph model;graph processing;GPGPU graph algorithms;device-specific optimizations;graph framework;think-like-a-vertex programming model;OpenCL;gather-apply-scatter;general purpose graphics processing unit\",\"\",\"15\",\"\",\"25\",\"\",\"12 Feb 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Performance portability of a fluidized bed solver\",\"V. M. Krushnarao Kotteda; V. Kumar; W. Spotz; D. Sunderland\",\"Mechanical Engineering, University of Texas at El Paso, El Paso, USA; Mechanical Engineering, University of Texas at El Paso, El Paso, USA; Multiphysics Applications, Sandia National Laboratories, Albuquerque, USA; Scalable Algorithms, Sandia National Laboratories, Albuquerque, USA\",\"2018 IEEE High Performance extreme Computing Conference (HPEC)\",\"29 Nov 2018\",\"2018\",\"\",\"\",\"1\",\"7\",\"Performance portability is a challenge for application developers as the source code needs to be executed and performant on various hybrid computing architectures. The linear iterative solvers implemented in most applications consume more than 70% of the runtime. This paper presents the results of a linear solver in Trilinos for fluidized bed applications. The linear solver implemented in our code is based on the Kokkos programming model in Trilinos, which uses a library approach to provide performance portability across diverse devices with different memory models. For large scale problems, the numerical experiments on Xeon Phi and Kepler GPU architectures show good performance over the results on Xeon (Haswell) computing architectures.\",\"2377-6943\",\"978-1-5386-5989-2\",\"10.1109/HPEC.2018.8547775\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8547775\",\"performance;portability;fluidized bed;Kokkos;Trilinos;MFiX\",\"Mathematical model;Programming;Graphics processing units;Computational modeling;Computer architecture;Message systems;Libraries\",\"fluidised beds;graphics processing units;iterative methods;mathematics computing;multiprocessing systems;parallel architectures\",\"Kokkos programming model;linear iterative solver;source code;application developers;fluidized bed solver;Xeon computing architectures;performance portability;fluidized bed applications;hybrid computing architectures\",\"\",\"\",\"\",\"31\",\"\",\"29 Nov 2018\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"STOIC: Serverless Teleoperable Hybrid Cloud for Machine Learning Applications on Edge Device\",\"M. Zhang; C. Krintz; R. Wolski\",\"University of California,Dept. of Computer Science,Santa Barbara; University of California,Dept. of Computer Science,Santa Barbara; University of California,Dept. of Computer Science,Santa Barbara\",\"2020 IEEE International Conference on Pervasive Computing and Communications Workshops (PerCom Workshops)\",\"4 Aug 2020\",\"2020\",\"\",\"\",\"1\",\"6\",\"Serverless computing is a promising new event-driven programming model that was designed by cloud vendors to expedite the development and deployment of scalable web services on cloud computing systems. Using the model, developers write applications that consist of simple, independent, stateless functions that the cloud invokes on-demand (i.e. elastically), in response to system-wide events (data arrival, messages, web requests, etc.). In this work, we present STOIC (Serverless TeleOperable HybrId Cloud), an application scheduling and deployment system that extends the serverless model in two ways. First, it uses the model in a distributed setting and schedules application functions across multiple cloud systems. Second, STOIC supports serverless function execution using hardware acceleration (e.g. GPU resources) when available from the underlying cloud system. We overview the design and implementation of STOIC and empirically evaluate it using real-world machine learning applications and multi-tier (e.g. edge-cloud) deployments. We find that STOIC's combined use of edge and cloud resources is able to outperform using either cloud in isolation for the applications and datasets that we consider.\",\"\",\"978-1-7281-4716-1\",\"10.1109/PerComWorkshops48775.2020.9156239\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9156239\",\"Serverless computing;Edge computing;Image Processing;Internet of Things\",\"Cloud computing;Image edge detection;Runtime;Machine learning;Task analysis;Computer architecture;Graphics processing units\",\"cloud computing;Internet;learning (artificial intelligence);Web services\",\"edge-cloud;STOIC;Serverless teleoperable hybrid Cloud;Serverless computing;event-driven programming model;cloud vendors;scalable web services;cloud computing systems;simple functions;independent functions;stateless functions;system-wide events;Serverless TeleOperable HybrId Cloud;application scheduling;deployment system;serverless model;distributed setting;schedules application functions;multiple cloud systems;serverless function execution;underlying cloud system;real-world machine learning applications\",\"\",\"1\",\"\",\"36\",\"\",\"4 Aug 2020\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n"
  },
  {
    "path": "notebooks/data/ieee_5.csv",
    "content": "\"Document Title\",Authors,\"Author Affiliations\",\"Publication Title\",Date Added To Xplore,\"Publication Year\",\"Volume\",\"Issue\",\"Start Page\",\"End Page\",\"Abstract\",\"ISSN\",ISBNs,\"DOI\",Funding Information,PDF Link,\"Author Keywords\",\"IEEE Terms\",\"INSPEC Controlled Terms\",\"INSPEC Non-Controlled Terms\",\"Mesh_Terms\",Article Citation Count,Patent Citation Count,\"Reference Count\",\"License\",Online Date,Issue Date,\"Meeting Date\",\"Publisher\",Document Identifier\n\"CUDA accelerated iris template matching on Graphics Processing Units (GPUs)\",\"N. A. Vandal; M. Savvides\",\"Robotics Institute, Carnegie Mellon University, Pittsburgh, PA 15232, USA; Department of Electrical and Computer Engineering, Carnegie Mellon University\",\"2010 Fourth IEEE International Conference on Biometrics: Theory, Applications and Systems (BTAS)\",\"11 Nov 2010\",\"2010\",\"\",\"\",\"1\",\"7\",\"In this paper we develop a parallelized iris template matching implementation on inexpensive Graphics Processing Units (GPUs) with Nvidia's CUDA programming model to achieve matching rates of 44 million iris template comparisons per second without rotation invariance. With tolerance to head tilt, we achieve 4.2 million matches per second and compare our implementation to state of the art prior work performed on GPU and FPGA, emphasizing our improvements. Additionally a comparison to highly optimized CPU implementations of iris template matching is performed, showing a 14X speedup using our approach. In contrast to other published work, we develop an implementation for parallel iris template matching that incorporates iris code shifting for rotation invariance and provide timing data showing our proposed architecture is efficiently implemented, capitalizing on shared and texture memory to speedup the bit shifting process beyond current prior art.\",\"\",\"978-1-4244-7582-7\",\"10.1109/BTAS.2010.5634505\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5634505\",\"\",\"Iris recognition;Instruction sets;Probes;Graphics processing unit;Field programmable gate arrays;Hamming distance;Hardware\",\"computer graphic equipment;coprocessors;field programmable gate arrays;image matching;iris recognition\",\"iris template matching;graphics processing units;Nvidia CUDA programming model;field programmable gate array;bit shifting process\",\"\",\"12\",\"1\",\"20\",\"\",\"11 Nov 2010\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"GPGPU-Based ATPG System: Myth or Reality?\",\"L. Lai; K. -H. Tsai; H. Li\",\"Department of Electrical Engineering, Shantou University, Shantou, China; Silicon Test Division, Mentor Graphics Corporation, Wilsonville, OR, USA; State Key Laboratory of Computer Architecture, Institute of Computing Technology, Chinese Academy of Sciences, Beijing, China\",\"IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems\",\"23 Dec 2019\",\"2020\",\"39\",\"1\",\"239\",\"247\",\"General-purpose computing on graphics processing units (GPGPUs) is a programming model that uses graphics cards to perform computations traditionally done by CPU. It began to become practical with the advent of programmable shaders and floating-point support on GPU in around 2001. The spread of GPGPU has been accelerated with introduction of CUDA from NVIDIA in 2006 and later OpenCL in 2009. Nowadays GPGPU is widely deployed in various applications, such as data mining, artificial intelligence, and many scientific computations. GPGPU seemingly promises immense parallelism with massive concurrent cores, and thus much shorter run times. This is true for algorithms that bear intrinsic data and task parallelism, such as image and video processing. For an ATPG system where some algorithms are sequential in nature, the speedup is not easy to achieve in the real world. Flaws in setting up speedup evaluation can lead to false promises. Will GPGPU-based ATPG system become a reality? Or it is just a myth. In this paper, we try to provide an answer by surveying state-of-the-art works and by analyzing practical aspects of today's industrial designs.\",\"1937-4151\",\"\",\"10.1109/TCAD.2018.2884992\",\"Shantou University(grant numbers:140-760163); Yangfang Career Award of Guangdong Province, China(grant numbers:140-14600602); \",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8558526\",\"ATPG;fault simulation;general-purpose computing on graphics processing units (GPGPUs)\",\"Graphics processing units;Memory management;Instruction sets;Integrated circuit modeling;Circuit faults;Test pattern generators;Kernel\",\"automatic test pattern generation;general purpose computers;graphics processing units;parallel architectures\",\"OpenCL;CUDA;task parallelism;floating-point support;programmable shaders;programming model;general-purpose computing;GPGPU-based ATPG system\",\"\",\"1\",\"\",\"42\",\"IEEE\",\"4 Dec 2018\",\"\",\"\",\"IEEE\",\"IEEE Journals\"\n\"Flacc: Towards OpenACC support for Fortran in the LLVM Ecosystem\",\"V. Clement; J. S. Vetter\",\"Oak Ridge National Laboratory,Programming Systems Group; Oak Ridge National Laboratory,Advanced Computing Systems Research Section\",\"2021 IEEE/ACM 7th Workshop on the LLVM Compiler Infrastructure in HPC (LLVM-HPC)\",\"20 Dec 2021\",\"2021\",\"\",\"\",\"12\",\"19\",\"OpenACC is a directive-based programming model for heterogeneous accelerators initially launched in 2010 to provide a portable solution at a level of abstraction above OpenCL, CUDA, and other lower-level programming models. Various implementations of OpenACC for C, C++, and Fortran exist; however, only one open-source, production implementation of OpenACC for Fortran does exist. Moreover, most contemporary compiler tool chains for heterogeneous computing are based on LLVM. This lack of support poses a serious risk for high-performance computing application developers targeting GPUs and other accelerators, and it limits the ability of the community to experiment with, extend, and contribute to the OpenACC specification and open-source implementation itself. To address this gap, we have designed and begun implementing Flacc: an effort funded by the US Exascale Computing Project to develop production OpenACC compiler support for Fortran based on Flang within the LLVM ecosystem. In this paper, we describe the Flacc goals, initial design and prototype, and challenges that we have encountered so far in our prototyping efforts. Flacc is implemented as a MLIR dialect in the Flang Fortran front end in LLVM. The Flacc front end currently supports OpenACC version 3.1, and the Flacc run time is currently under development and relies on contributions from the Clacc project. Current contributions to Flacc are available in the main ${\\color{Green}{\\mathbf{LLVM}}\\;{\\mathbf{repository}}}$.<sup>1</sup>\",\"\",\"978-1-6654-1134-9\",\"10.1109/LLVMHPC54804.2021.00007\",\"Office of Science; UT-Battelle; \",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9651310\",\"OpenACC;OpenMP;LLVM;MLIR;multicore;GPU;accelerators;compiler\",\"Codes;Exascale computing;Ecosystems;Semantics;Prototypes;Graphics processing units;Production\",\"\",\"\",\"\",\"\",\"\",\"26\",\"\",\"20 Dec 2021\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Performance Portability Evaluation of OpenCL Benchmarks across Intel and NVIDIA Platforms\",\"C. Bertoni; J. Kwack; T. Applencourt; Y. Ghadar; B. Homerding; C. Knight; B. Videau; H. Zheng; V. Morozov; S. Parker\",\"Argonne National Laboratory,Argonne Leadership Computing Facility,Lemont,IL,USA,60439; Argonne National Laboratory,Argonne Leadership Computing Facility,Lemont,IL,USA,60439; Argonne National Laboratory,Argonne Leadership Computing Facility,Lemont,IL,USA,60439; Argonne National Laboratory,Argonne Leadership Computing Facility,Lemont,IL,USA,60439; Argonne National Laboratory,Argonne Leadership Computing Facility,Lemont,IL,USA,60439; Argonne National Laboratory,Argonne Leadership Computing Facility,Lemont,IL,USA,60439; Argonne National Laboratory,Argonne Leadership Computing Facility,Lemont,IL,USA,60439; Argonne National Laboratory,Argonne Leadership Computing Facility,Lemont,IL,USA,60439; Argonne National Laboratory,Argonne Leadership Computing Facility,Lemont,IL,USA,60439; Argonne National Laboratory,Argonne Leadership Computing Facility,Lemont,IL,USA,60439\",\"2020 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW)\",\"28 Jul 2020\",\"2020\",\"\",\"\",\"330\",\"339\",\"We evaluate the capabilities of vendor-provided OpenCL implementations for performance portability across multiple computing platforms. The Rodinia benchmark suite is used for this evaluation. We apply the metric defined by Pennycook et al., and we use roofline efficiency from the Roofline performance model as the “performance efficiency” in the metric's definition. We found that the delivered performance portability is similar for several benchmarks, even if the roofline-based performance efficiencies across platforms are very different among the benchmarks. To help distinguish between these instances, we extend the metric by adding the standard deviation of the performance efficiencies for each benchmark. We argue that the standard deviation gives additional insight into performance portability assessment since it adds the performance variability across platforms. Additionally, we discuss the challenges to measure performance portability associated with algorithms and system software. In terms of algorithms, we need to carefully construct the benchmarks and appropriately use the concurrency available on a platform. In terms of system software, we depend on the vendor performance tools to support the desired programming model and runtime to be able to measure the metrics of interest.\",\"\",\"978-1-7281-7445-7\",\"10.1109/IPDPSW50202.2020.00067\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9150432\",\"high performance computing;performance efficiency;performance portability;roofline performance analysis;OpenCL;GPU\",\"Benchmark testing;Computer architecture;Measurement;Computational modeling;Kernel;Programming;Bandwidth\",\"application program interfaces;concurrency control;graphics processing units;parallel processing;software metrics;software performance evaluation\",\"performance portability evaluation;OpenCL benchmarks;Rodinia benchmark suite;roofline efficiency;roofline performance model;performance portability assessment;performance variability;vendor performance tools;NVIDIA platform;Intel platform;OpenCL implementations;concurrency\",\"\",\"3\",\"\",\"26\",\"\",\"28 Jul 2020\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Reactive Molecular Dynamics on Massively Parallel Heterogeneous Architectures\",\"S. B. Kylasa; H. M. Aktulga; A. Y. Grama\",\"Department of Electrical and Computer Engineering, Purdue University, West Lafayette, IN; Michigan State University, 428 S. Shaw Lane, Room 3115, East Lansing, MI; Department of Computer Science, Purdue University, West Lafayette, IN\",\"IEEE Transactions on Parallel and Distributed Systems\",\"9 Dec 2016\",\"2017\",\"28\",\"1\",\"202\",\"214\",\"We present a parallel implementation of the ReaxFF force field on massively parallel heterogeneous architectures, called PuReMD-Hybrid. PuReMD, on which this work is based, along with its integration into LAMMPS, is currently used by a large number of research groups worldwide. Accelerating this important community codebase that implements a complex reactive force field poses a number of algorithmic, design, and optimization challenges, as we discuss in detail. In particular, different computational kernels are best suited to different computing substrates-CPUs or GPUs. Scheduling these computations requires complex resource management, as well as minimizing data movement across CPUs and GPUs. Integrating powerful nodes, each with multiple CPUs and GPUs, into clusters and utilizing the immense compute power of these clusters requires significant optimizations for minimizing communication and, potentially, redundant computations. From a programming model perspective, PuReMD-Hybrid relies on MPI across nodes, pthreads across cores, and CUDA on the GPUs to address these challenges. Using a variety of innovative algorithms and optimizations, we demonstrate that our code can achieve over 565-fold speedup compared to a single core implementation on a cluster of 36 state-of-the-art GPUs for complex systems. In terms of application performance, our code enables simulations of over 1.8M atoms in under 0.68 seconds per simulation time step.\",\"1558-2183\",\"\",\"10.1109/TPDS.2016.2548462\",\"National Science Foundation(grant numbers:CCF 1533795); \",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7444209\",\"Reactive molecular dynamics;parallel GPU implementations;material simulations\",\"Graphics processing units;Force;Kernel;Biological system modeling;Computational modeling;Clustering algorithms;Numerical models\",\"graphics processing units;microprocessor chips;molecular dynamics method;parallel architectures\",\"CUDA;pthreads across cores;MPI across nodes;data movement;complex resource management;GPUs;CPUs;computing substrates;computational kernels;complex reactive force field;LAMMPS;PuReMD-hybrid;ReaxFF force field;massively parallel heterogeneous architectures;reactive molecular dynamics\",\"\",\"10\",\"\",\"45\",\"IEEE\",\"30 Mar 2016\",\"\",\"\",\"IEEE\",\"IEEE Journals\"\n\"Understanding Error Propagation in GPGPU Applications\",\"G. Li; K. Pattabiraman; C. -Y. Cher; P. Bose\",\"Univ. of British Columbia, Vancouver, BC, Canada; Univ. of British Columbia, Vancouver, BC, Canada; T.J. Watson Res. Center, IBM, Yorktown Heights, NY, USA; T.J. Watson Res. Center, IBM, Yorktown Heights, NY, USA\",\"SC '16: Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis\",\"16 Mar 2017\",\"2016\",\"\",\"\",\"240\",\"251\",\"GPUs have emerged as general-purpose accelerators in high-performance computing (HPC) and scientific applications. However, the reliability characteristics of GPU applications have not been investigated in depth. While error propagation has been extensively investigated for non-GPU applications, GPU applications have a very different programming model which can have a significant effect on error propagation in them. We perform an empirical study to understand and characterize error propagation in GPU applications. We build a compilerbased fault-injection tool for GPU applications to track error propagation, and define metrics to characterize propagation in GPU applications. We find GPU applications exhibit significant error propagation for some kinds of errors, but not others, and the behaviour is highly application specific. We observe the GPUCPU interaction boundary naturally limits error propagation in these applications compared to traditional non-GPU applications. We also formulate various guidelines for the design of faulttolerance mechanisms in GPU applications based on our results.\",\"2167-4337\",\"978-1-4673-8815-3\",\"10.1109/SC.2016.20\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7877099\",\"Fault Injection;Error Resilience;GPGPU;CUDA;Error Propagation\",\"Graphics processing units;Kernel;Circuit faults;Hardware;Programming;Computational modeling;Central Processing Unit\",\"graphics processing units;parallel processing;program compilers;software reliability\",\"error propagation;GPGPU;general-purpose accelerators;high-performance computing;HPC;reliability characteristics;compiler-based fault-injection tool\",\"\",\"43\",\"\",\"55\",\"\",\"16 Mar 2017\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"RAJA: Portable Performance for Large-Scale Scientific Applications\",\"D. A. Beckingsale; J. Burmark; R. Hornung; H. Jones; W. Killian; A. J. Kunen; O. Pearce; P. Robinson; B. S. Ryujin; T. R. Scogland\",\"Lawrence Liveremore National Laboratory, USA; Lawrence Liveremore National Laboratory, USA; Lawrence Liveremore National Laboratory, USA; Lawrence Liveremore National Laboratory, USA; Lawrence Liveremore National Laboratory, USA; Lawrence Liveremore National Laboratory, USA; Lawrence Liveremore National Laboratory, USA; Lawrence Liveremore National Laboratory, USA; Lawrence Liveremore National Laboratory, USA; Lawrence Liveremore National Laboratory, USA\",\"2019 IEEE/ACM International Workshop on Performance, Portability and Productivity in HPC (P3HPC)\",\"2 Jan 2020\",\"2019\",\"\",\"\",\"71\",\"81\",\"Modern high-performance computing systems are diverse, with hardware designs ranging from homogeneous multi- core CPUs to GPU or FPGA accelerated systems. Achieving desir- able application performance often requires choosing a program- ming model best suited to a particular platform. For large codes used daily in production that are under continual development, architecture-specific ports are untenable. Maintainability re- quires single-source application code that is performance portable across a range of architectures and programming models. In this paper we describe RAJA, a portability layer that enables C++ applications to leverage various programming models, and thus architectures, with a single-source codebase. We describe preliminary results using RAJA in three large production codes at Lawrence Livermore National Laboratory, observing 17×, 13× and 12× speedup on GPU-only over CPU- only nodes with single-source application code in each case.\",\"\",\"978-1-7281-6003-0\",\"10.1109/P3HPC49587.2019.00012\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8945721\",\"\",\"C++ languages;Graphics processing units;Programming;Production;Computer architecture;Kernel;Libraries\",\"application program interfaces;field programmable gate arrays;graphics processing units;microprocessor chips;multiprocessing systems;parallel processing;software portability\",\"C++ applications;single-source codebase;RAJA;production codes;high-performance computing systems;hardware designs;programming model;architecture-specific ports;homogeneous multicore CPU;Lawrence Livermore National Laboratory\",\"\",\"21\",\"\",\"23\",\"\",\"2 Jan 2020\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Directive-based Programming for GPUs: A Comparative Study\",\"R. Reyes; I. López; J. J. Fumero; F. de Sande\",\"Dept. de EIO y Comput., Univ. de La Laguna, La Laguna, Spain; Dept. de EIO y Comput., Univ. de La Laguna, La Laguna, Spain; Dept. de EIO y Comput., Univ. de La Laguna, La Laguna, Spain; Dept. de EIO y Comput., Univ. de La Laguna, La Laguna, Spain\",\"2012 IEEE 14th International Conference on High Performance Computing and Communication & 2012 IEEE 9th International Conference on Embedded Software and Systems\",\"18 Oct 2012\",\"2012\",\"\",\"\",\"410\",\"417\",\"GPUs and other accelerators are available on many different devices, while GPGPU has been massively adopted by the HPC research community. Although a plethora of libraries and applications providing GPU support are available, the need of implementing new algorithms from scratch, or adapting sequential programs to accelerators, will always exist. Writing CUDA or OpenCL codes, although an easier task than using their predecessors, is not trivial. Obtaining performance is even harder, as it requires deep understanding of the underlying architecture. Some efforts have been directed toward the automatic code generation for GPU devices, with different results. In particular, several directive-oriented programming models, taking advantage of the OpenMP success, have been created. Although future OpenMP releases will integrate accelerators into the standard, tools are needed in the meantime. In this work, we present a comparison between three directive-based programming models: hiCUDA, PGI Accelerator and OpenACC, using for the last our novel accULL implementation. With this comparison, we aim to showcase the evolution of the directive-based programming models and how users can guide tools toward better performance results.\",\"\",\"978-1-4673-2164-8\",\"10.1109/HPCC.2012.62\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6332201\",\"OpenACC;PGI;Accelerators;GPGPU;CUDA;OpenCL;OpenMP;compiler;productivity\",\"Graphics processing unit;Kernel;Programming;Standards;Runtime;Performance evaluation\",\"graphics processing units;multiprocessing systems;parallel architectures;program compilers\",\"directive-based programming model;GPGPU;HPC;scratch;automatic code generation;OpenMP;hiCUDA;PGI accelerator;OpenACC;accULL\",\"\",\"13\",\"1\",\"14\",\"\",\"18 Oct 2012\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Liszt: A domain specific language for building portable mesh-based PDE solvers\",\"Z. DeVito; N. Joubert; F. Palacios; S. Oakley; M. Medina; M. Barrientos; E. Elsen; F. Ham; A. Aiken; K. Duraisamy; E. Darve; J. Alonso; P. Hanrahan\",\"Department of Computer Science, Stanford University; Department of Computer Science, Stanford University; Department of Aeronautics and Astronautics, Stanford University; Institute for Computational and Mathematical Engineering, Stanford University; Institute for Computational and Mathematical Engineering, Stanford University; Department of Computer Science, Stanford University; Department of Mechanical Engineering, Stanford University; Department of Mechanical Engineering, Stanford University; Department of Computer Science, Stanford University; Department of Aeronautics and Astronautics, Stanford University; Department of Mechanical Engineering, Stanford University; Department of Aeronautics and Astronautics, Stanford University; Department of Computer Science, Stanford University\",\"SC '11: Proceedings of 2011 International Conference for High Performance Computing, Networking, Storage and Analysis\",\"29 Dec 2011\",\"2011\",\"\",\"\",\"1\",\"12\",\"Heterogeneous computers with processors and accelerators are becoming widespread in scientific computing. However, it is difficult to program hybrid architectures and there is no commonly accepted programming model. Ideally, applications should be written in a way that is portable to many platforms, but providing this portability for general programs is a hard problem. By restricting the class of programs considered, we can make this portability feasible. We present Liszt, a domain- specific language for constructing mesh-based PDE solvers. We introduce language statements for interacting with an unstructured mesh, and storing data at its elements. Pro- gram analysis of these statements enables our compiler to expose the parallelism, locality, and synchronization of Liszt programs. Using this analysis, we generate applications for multiple platforms: a cluster, an SMP, and a GPU. This approach allows Liszt applications to perform within 12% of hand-written C++, scale to large clusters, and experience order-of-magnitude speedups on GPUs.\",\"2167-4337\",\"978-1-4503-0771-0\",\"10.1145/2063384.2063396\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6114401\",\"compiler analysis and program transformations;programming and runtime environments for high performance and high throughput computing\",\"Jacobian matrices;Face;Hardware;Computer architecture;Synchronization;Graphics processing unit;Heating\",\"graphics processing units;mathematics computing;mesh generation;partial differential equations;program compilers;program diagnostics;specification languages\",\"domain specific language;portable mesh-based PDE solver;heterogeneous computers;scientific computing;language statements;program analysis;compiler;Liszt programs;cluster;SMP;GPU;C++;partial differential equations\",\"\",\"34\",\"\",\"36\",\"\",\"29 Dec 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"TC-Release++: An Efficient Timestamp-Based Coherence Protocol for Many-Core Architectures\",\"Y. Yao; W. Chen; T. Mitra; Y. Xiang\",\"School of Computer Science and Technology, Zhejiang University, Hangzhou, P.R. China; School of Computer Science and Technology, Zhejiang University, Hangzhou, P.R. China; School of Computing, National University of Singapore, Singapore; Swinburne Research, Swinburne University of Technology, Hawthorn, Victoria, Australia\",\"IEEE Transactions on Parallel and Distributed Systems\",\"9 Oct 2017\",\"2017\",\"28\",\"11\",\"3313\",\"3327\",\"As we enter the era of many-core, providing the shared memory abstraction through cache coherence has become progressively difficult. The standard directory-based coherence does not scale well with increasing core count. Timestamp-based hardware coherence protocols introduced recently offer an attractive alternative solution. This paper proposes a timestamp-based coherence protocol, called TC-Release<sub>++</sub>, that efficiently supports cache coherence in large-scale systems. Our approach is inspired by TC-Weak, a recently proposed timestamp-based coherence protocol targeting GPU architectures. We first design TC-Release in an attempt to straightforwardly port TC-Weak to general-purpose many-cores. But re-purposing TC-Weak for general-purpose many-core architectures is challenging due to significant differences both in architecture and the programming model. Indeed the performance of TC-Release turns out to be worse than conventional directory protocols. We overcome the limitations and overheads of TC-Release by exploiting simple hardware support to eliminate frequent memory stalls, and an optimized lifetime prediction mechanism to improve cache performance. The resulting optimized coherence protocol TC-Release<sub>++</sub> is highly scalable (storage scales logarithmically with core count) and shows better performance (3.0 percent) and comparable network traffic (within 1.3 percent) relative to the baseline MESI directory protocol. We use Murphi to formally verify that TC-Release<sub>++</sub> is error-free and imposes small verification cost.\",\"1558-2183\",\"\",\"10.1109/TPDS.2017.2719679\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7959101\",\"Cache coherence;many-core architecture;timestamp-based system;memory consistency model\",\"Coherence;Protocols;Graphics processing units;Hardware;Memory management;Programming;Electronic mail\",\"cache storage;graphics processing units;multiprocessing systems;protocols;shared memory systems\",\"general-purpose many-cores;re-purposing TC;general-purpose many-core architectures;conventional directory protocols;resulting optimized coherence protocol TC;core count;baseline MESI directory protocol;shared memory abstraction;cache coherence;timestamp-based hardware coherence protocols;GPU architectures;design TC\",\"\",\"2\",\"\",\"43\",\"IEEE\",\"26 Jun 2017\",\"\",\"\",\"IEEE\",\"IEEE Journals\"\n\"Optimal balance between energy and performance in hybrid computing applications\",\"D. LaKomski; Z. Zong; T. Jin; R. Ge\",\"Computer Science Department, Texas State University, USA; Computer Science Department, Texas State University, USA; Ingram School of Engineering, Texas State University, USA; School of Computing, Clemson University, USA\",\"2015 Sixth International Green and Sustainable Computing Conference (IGSC)\",\"28 Jan 2016\",\"2015\",\"\",\"\",\"1\",\"8\",\"The latest top 10 supercomputers are dominated by heterogeneous systems with CPUs and accelerators (GPU or Xeon Phi) tightly coupled together. As the heterogeneity of future high performance computing systems keeps increasing, it becomes paramount to judiciously use CPUs and accelerators to improve performance and/or reduce energy consumption. The widely used programming model today is to offload computation intensive workload to accelerators. Theoretically, the hybrid computing model (i.e. running a subset of calculations concurrently on both CPUs and accelerators) can potentially offer advantages of improved energy efficiency and performance. However, this is not yet a common practice due to the uncertainty of energy/performance benefits as well as the increased programming complexity. In this paper, we conduct a comprehensive study on achieving the balance between energy and performance of hybrid computing applications. We show that performance and energy optimization can be conflicting goals, the sweet spot between performance and energy consumption varies with application characteristics and is highly dependent on specific implementations, that the choice of compiler can not only influence runtime but also energy use, and that the choice of cross platform strategies (e.g. OpenCL) can result in degraded performance and increased energy.\",\"\",\"978-1-5090-0172-9\",\"10.1109/IGCC.2015.7393697\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7393697\",\"energy efficient computing;green programming;hybrid computing;heterogeneous systems;performance optimization\",\"Graphics processing units;Runtime;Programming;Fractals;Energy consumption;Computational modeling;Performance evaluation\",\"energy consumption;graphics processing units;optimisation;parallel machines\",\"optimal balance;hybrid computing application;supercomputers;CPU;accelerator;GPU;Xeon Phi;high performance computing system;energy consumption;energy efficiency;energy optimization;OpenCL\",\"\",\"4\",\"\",\"29\",\"\",\"28 Jan 2016\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Towards a robust, real-time face processing system using CUDA-enabled GPUs\",\"B. Sharma; R. Thota; N. Vydyanathan; A. Kale\",\"Siemens Corporate Technology, Bangalore, India; Siemens Corporate Technology, Bangalore, India; Siemens Corporate Technology, Bangalore, India; Siemens Corporate Technology, Bangalore, India\",\"2009 International Conference on High Performance Computing (HiPC)\",\"18 Mar 2010\",\"2009\",\"\",\"\",\"368\",\"377\",\"Processing of human faces finds application in various domains like law enforcement and surveillance, entertainment (interactive video games), information security, smart cards etc. Several of these applications are interactive and require reliable and fast face processing. A generic face processing system may comprise of face detection, recognition, tracking and rendering. In this paper, we develop a GPU accelerated real-time and robust face processing system that does face detection and tracking. Face detection is done by adapting the Viola and Jones algorithm that is based on the Adaboost learning system. For robust tracking of faces across real-life illumination conditions, we leverage the algorithm proposed by Thota and others, that combines the strengths of Adaboost and an image based parametric illumination model. We design and develop optimized parallel implementations of these algorithms on graphics processors using the Compute Unified Device Architecture (CUDA), a C-based programming model from NVIDIA. We evaluate our face processing system using both static image databases as well as using live frames captured from a firewire camera under realistic conditions. Our experimental results indicate that our parallel face detector and tracker achieve much greater detection speeds as compared to existing work, while maintaining accuracy. We also demonstrate that our tracking system is robust to extreme illumination conditions.\",\"1094-7256\",\"978-1-4244-4921-7\",\"10.1109/HIPC.2009.5433189\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5433189\",\"Parallel computing;face detection;face tracking;graphics processors;real-time algorithms\",\"Robustness;Real time systems;Face detection;Lighting;Firewire;Humans;Law enforcement;Surveillance;Games;Information security\",\"C language;computer graphic equipment;computer graphics;coprocessors;face recognition\",\"face processing system;CUDA-enabled GPU;face detection;face tracking;Viola-Jones algorithm;Adaboost learning system;image based parametric illumination model;compute unified device architecture;C-based programming\",\"\",\"30\",\"2\",\"15\",\"\",\"18 Mar 2010\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Static WCET Analysis of GPUs with Predictable Warp Scheduling\",\"Y. Huangfu; W. Zhang\",\"Virginia Commonwealth Univ., Richmond, VA, USA; Virginia Commonwealth Univ., Richmond, VA, USA\",\"2017 IEEE 20th International Symposium on Real-Time Distributed Computing (ISORC)\",\"3 Jul 2017\",\"2017\",\"\",\"\",\"101\",\"108\",\"The capability of GPUs to accelerate general-purpose applications that can be parallelized into massive number of threads makes it promising to apply GPUs to real-time applications as well, where high throughput and intensive computation are also needed. However, due to the different architecture and programming model of GPUs, the worst-case execution time (WCET) analysis methods and techniques designed for CPUs cannot be used directly to estimate the WCET of GPUs. In this work, based on the analysis of the architecture and dynamic behavior of GPUs, we propose a WCET timing model and analyzer based on a predictable GPU warp scheduling policy to enable the WCET estimation on GPUs.\",\"2375-5261\",\"978-1-5386-1574-4\",\"10.1109/ISORC.2017.24\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7964876\",\"\",\"Graphics processing units;Instruction sets;Kernel;Analytical models;Computer architecture;Mathematical model;Dynamic scheduling\",\"general purpose computers;graphics processing units;microprocessor chips;parallel processing;program diagnostics;scheduling\",\"GPU;predictable warp scheduling;general purpose applications;static worst-case execution time analysis;static WCET analysis;CPU\",\"\",\"4\",\"\",\"23\",\"\",\"3 Jul 2017\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Performance Portability of an SpMV Kernel Across Scientific Computing and Data Science Applications\",\"S. L. Olivier; N. D. Ellingwood; J. Berry; D. M. Dunlavy\",\"Sandia National Laboratories,Albuquerque,NM; Sandia National Laboratories,Albuquerque,NM; Sandia National Laboratories,Albuquerque,NM; Sandia National Laboratories,Albuquerque,NM\",\"2021 IEEE High Performance Extreme Computing Conference (HPEC)\",\"1 Dec 2021\",\"2021\",\"\",\"\",\"1\",\"8\",\"Both the data science and scientific computing communities are embracing GPU acceleration for their most demanding workloads. For scientific computing applications, the massive volume of code and diversity of hardware platforms at supercomputing centers has motivated a strong effort toward performance portability. This property of a program, denoting its ability to perform well on multiple architectures and varied datasets, is heavily dependent on the choice of parallel programming model and which features of the programming model are used. In this paper, we evaluate performance portability in the context of a data science workload in contrast to a scientific computing workload, evaluating the same sparse matrix kernel on both. Among our implementations of the kernel in different performance-portable programming models, we find that many struggle to consistently achieve performance improvements using the GPU compared to simple one-line OpenMP parallelization on high-end multicore CPUs. We show one that does, and its performance approaches and sometimes even matches that of vendor-provided GPU math libraries.\",\"2643-1971\",\"978-1-6654-2369-4\",\"10.1109/HPEC49654.2021.9622869\",\"National Nuclear Security Administration; \",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9622869\",\"performance portability;SpMV;sparse matrix operations;graph computations\",\"Runtime;Codes;Scientific computing;Multicore processing;Computational modeling;Graphics processing units;Computer architecture\",\"\",\"\",\"\",\"\",\"\",\"27\",\"\",\"1 Dec 2021\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Single Kernel Soft Synchronization Technique for Task Arrays on CUDA-enabled GPUs, with Applications\",\"S. Funasaka; K. Nakano; Y. Ito\",\"Dept. of Inf. Eng., Hiroshima Univ., Higashi-Hiroshima, Japan; Dept. of Inf. Eng., Hiroshima Univ., Higashi-Hiroshima, Japan; Dept. of Inf. Eng., Hiroshima Univ., Higashi-Hiroshima, Japan\",\"2017 Fifth International Symposium on Computing and Networking (CANDAR)\",\"26 Apr 2018\",\"2017\",\"\",\"\",\"11\",\"20\",\"A task array is a 2-dimensional array of tasks with dependency relations. Each task uses the resulting values of some tasks in the left columns, and so it can be started only after these left tasks are completed. Conventional CUDA implementations repeatedly perform a separated CUDA kernel call for each column from left to right to synchronize the computation for tasks. However, this conventional CUDA implementation has several drawbacks: a CUDA kernel call has a certain overhead, and the running time of a CUDA kernel is determined by a CUDA block that terminates lastly. Also, every task must write and preserve the resulting values in the global memory with low memory access performance for the following tasks. The main contribution of this paper is to introduce task arrays and to present Single Kernel Soft Synchronization (SKSS) technique that significantly reduces such overheads for task arrays. The SKSS performs only one CUDA kernel call and CUDA blocks assigned to each row of a task array using a global counter. To clarify the potentiality of our SKSS technique, we have implemented the dynamic programming for the 0-1 knapsack problem, the summed area table computation, and the error diffusion of a gray-scale image using our SKSS technique and compared with previously published best GPU implementations. Quite surprisingly, the experimental results using NVIDIA Titan X show that, our SKSS implementations are 1.29-2.11 times faster for the 0-1 knapsack problem, 1.08-1.56 times faster for the summed area table computation, and 1.61-2.11 times faster for the error diffusion.\",\"2379-1896\",\"978-1-5386-2087-8\",\"10.1109/CANDAR.2017.35\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8345405\",\"dynamic programming;knapsack problem;summed area table;error diffusion\",\"Graphics processing units;Task analysis;Kernel;Parallel algorithms;Synchronization;Computer architecture;Dynamic programming\",\"dynamic programming;graphics processing units;operating system kernels;parallel algorithms;parallel architectures;parallel programming;synchronisation\",\"task array;CUDA block;SKSS technique;CUDA-enabled GPUs;Single Kernel Soft Synchronization;CUDA kernel call;dynamic programming;knapsack problem;summed area table computation;error diffusion;parallel computing architecture;Compute Unified Device Architecture;CUDA programming model;parallel algorithms\",\"\",\"12\",\"\",\"16\",\"\",\"26 Apr 2018\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Parallelization of Virtual Screening in Drug Discovery on Massively Parallel Architectures\",\"G. D. Guerrero; H. E. Perez-S´nchez; J. M. Cecilia; J. M. Garcia\",\"Dipt. de Ing. y Tecnol. de Comput., Univ. de Murcia, Murcia, Spain; NA; Dipt. de Ing. y Tecnol. de Comput., Univ. de Murcia, Murcia, Spain; Dipt. de Ing. y Tecnol. de Comput., Univ. de Murcia, Murcia, Spain\",\"2012 20th Euromicro International Conference on Parallel, Distributed and Network-based Processing\",\"15 Mar 2012\",\"2012\",\"\",\"\",\"588\",\"595\",\"The current trend in medical research for the discovery of new drugs is the use of Virtual Screening (VS) methods. In these methods, the calculation of the non-bonded interactions, such as electrostatics or van der Waals forces, plays an important role, representing up to 80% of the total execution time. These kernels are computational intensive and massively parallel in nature, and thus they are well suited to be accelerated on parallel architectures. In this work, we discuss the effective parallelization of the non-bonded electrostatic interactions kernel for VS on three different parallel architectures: a shared memory system, a distributed memory system, and a Graphics Processing Units (GPUs). For an efficient handling of the computational intensive and massively parallelism of this kernel, we enable different data policies on those architectures to take advantage of all computational resources offered by them. Four implementations are provided based on MPI, OpenMP, Hybrid MPI Open MP and CUDA programming models. The sequential implementation is defeated by a wide margin by all parallel implementations, obtaining up to 72x speed-up factor on the shared memory system through OpenMP, up to 60x and229x speed-ups factors on the distributed memory system for the MPI implementation and the Hybrid MPI-Open MP implementation respectively, and finally, up to 213x speedup factor for the CUDA implementation on the GPU architecture to offer the best alternative in terms of performance/cost ratio.\",\"2377-5750\",\"978-1-4673-0226-5\",\"10.1109/PDP.2012.26\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6169645\",\"Drug Discovery;Non-bonded interactions;CUDA;OpenMP;MPI;Hybrid OpenMP-MPI;High-Performance Computing\",\"Graphics processing unit;Kernel;Instruction sets;Message systems;Parallel processing;Programming;Computer architecture\",\"application program interfaces;distributed shared memory systems;graphics processing units;medical computing;message passing;parallel architectures\",\"virtual screening parallelization;drug discovery;massively parallel architecture;medical research;virtual screening method;electrostatics;van der Waals force;shared memory system;distributed memory system;graphics processing units;data policy;computational resource;CUDA programming model;message passing interface;compute unified device architecture;sequential implementation;parallel implementation;performance-cost ratio;speedup factor;hybrid MPI openMP\",\"\",\"8\",\"\",\"29\",\"\",\"15 Mar 2012\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Scalable Programming Models for Massively Multicore Processors\",\"M. D. McCool\",\"Rapid Mind Inc., Waterloo\",\"Proceedings of the IEEE\",\"15 Apr 2008\",\"2008\",\"96\",\"5\",\"816\",\"831\",\"Including multiple cores on a single chip has become the dominant mechanism for scaling processor performance. Exponential growth in the number of cores on a single processor is expected to lead in a short time to mainstream computers with hundreds of cores. Scalable implementations of parallel algorithms will be necessary in order to achieve improved single-application performance on such processors. In addition, memory access will continue to be an important limiting factor on achieving performance, and heterogeneous systems may make use of cores with varying capabilities and performance characteristics. An appropriate programming model can address scalability and can expose data locality while making it possible to migrate application code between processors with different parallel architectures and variable numbers and kinds of cores. We survey and evaluate a range of multicore processor architectures and programming models with a focus on GPUs and the Cell BE processor. These processors have a large number of cores and are available to consumers today, but the scalable programming models developed for them are also applicable to current and future multicore CPUs.\",\"1558-2256\",\"\",\"10.1109/JPROC.2008.917731\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=4490125\",\"Computer architecture;multicore processors;parallel programming and computation;programming and processing models\",\"Multicore processing;Parallel processing;Parallel programming;Concurrent computing;Hardware;Computer architecture;Programming profession;Pipeline processing;Parallel algorithms;Scalability\",\"microprocessor chips;parallel algorithms;parallel architectures\",\"scalable programming models;multicore processors;parallel algorithms;heterogeneous systems;parallel architectures;GPU;cell BE processor;graphics processing units\",\"\",\"32\",\"25\",\"64\",\"\",\"15 Apr 2008\",\"\",\"\",\"IEEE\",\"IEEE Journals\"\n\"Enable OpenCL Compiler with Open64 Infrastructures\",\"Y. Lin; S. Wang; W. Shih; B. K. Hsieh; J. Lee\",\"Dept. of Comput. Sci., Nat. Tsing-Hua Univ., Hsinchu, Taiwan; Dept. of Comput. Sci., Nat. Tsing-Hua Univ., Hsinchu, Taiwan; Dept. of Comput. Sci., Nat. Tsing-Hua Univ., Hsinchu, Taiwan; Cloud Comput. Res. Center for Mobile Applic., Ind. Technol. Res. Inst., Hsinchu, Taiwan; Dept. of Comput. Sci., Nat. Tsing-Hua Univ., Hsinchu, Taiwan\",\"2011 IEEE International Conference on High Performance Computing and Communications\",\"31 Oct 2011\",\"2011\",\"\",\"\",\"863\",\"868\",\"As microprocessors evolve into heterogeneous architectures with multi-cores of MPUs and GPUs, programming model supports become important for programming such architectures. To address this issue, OpenCL is proposed. Currently, most of OpenCL implementations take LLVM as their infrastructures. This presents an opportunity to demonstrate whether OpenCL can be effectively implemented on other compiler infrastructures. For example, Open64, which is another open source compiler and known to generate efficient codes for microprocessors, can contribute further to performance improvements and enhancing the adoption of heterogeneous computing based on OpenCL. In this paper, we describe the flow to enable an OpenCL compiler based on Open64 infrastructures for ATI GPUs. Our work includes the extension of the front-end parser for OpenCL, the generation of high-level intermediate representations with OpenCL linguistics, performing high-level optimization, and finally applying OpenCL specific optimization for code generations. Preliminary experimental results show that our compiler based on Open64 is able to generate efficient codes for OpenCL programs.\",\"\",\"978-1-4577-1564-8\",\"10.1109/HPCC.2011.123\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6063089\",\"\",\"Vectors;Registers;Optimization;Programming;Graphics processing unit;Hardware;Computer architecture\",\"computer architecture;microprocessor chips;optimising compilers\",\"OpenCL compiler;Open64 infrastructure;microprocessor;heterogeneous architecture;MPU;LLVM;open source compiler;ATI GPU;front-end parser;OpenCL linguistics;code generation\",\"\",\"5\",\"\",\"23\",\"\",\"31 Oct 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Performance Portability across Diverse Computer Architectures\",\"T. Deakin; S. McIntosh-Smith; J. Price; A. Poenaru; P. Atkinson; C. Popa; J. Salmon\",\"University of Bristol, UK; University of Bristol, UK; University of Bristol, UK; University of Bristol, UK; University of Bristol, UK; University of Bristol, UK; University of Bristol, UK\",\"2019 IEEE/ACM International Workshop on Performance, Portability and Productivity in HPC (P3HPC)\",\"2 Jan 2020\",\"2019\",\"\",\"\",\"1\",\"13\",\"Previous studies into performance portability have typically analysed a single application (and its various imple- mentations) in isolation. In this study we explore the wider landscape of performance portability by considering a number of applications from across the space of dwarfs, written in multiple parallel programming models, and across a diverse set of architectures. We apply rigorous performance portability metrics, as defined by Pennycook et al [1]. We believe this is the broadest and most rigorous performance portability study to date, representing a far reaching exploration of the state of performance portability that is achievable today. We will present a summary of the performance portability of each application and programming model across our diverge range of twelve computer architectures, including six different server CPUs from five different vendors, five different GPUs from two different vendors, and one vector architecture. We will conclude with an analysis of the performance portability of key programming models in general, across different application spaces as well across differing architectures, allowing us to comment on more general performance portability principles.\",\"\",\"978-1-7281-6003-0\",\"10.1109/P3HPC49587.2019.00006\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8945642\",\"performance portability;productivity;mini-app;programming models\",\"Productivity;Analytical models;Computational modeling;Computer architecture;Programming;Hardware;Standards\",\"coprocessors;multiprocessing systems;parallel programming\",\"performance portability principles;performance portability study;performance portability metrics;programming models;GPU\",\"\",\"11\",\"\",\"19\",\"\",\"2 Jan 2020\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"A CUDA-based parallel implementation of K-nearest neighbor algorithm\",\"S. Liang; Y. Liu; C. Wang; L. Jian\",\"Graduate University of Chinese Academy of Sciences, Beijing, China; Graduate University of Chinese Academy of Sciences, Beijing, China; Agilent Technologies Co. Ltd., Beijing, China; Graduate University of Chinese Academy of Sciences, Beijing, China\",\"2009 International Conference on Cyber-Enabled Distributed Computing and Knowledge Discovery\",\"26 Jan 2010\",\"2009\",\"\",\"\",\"291\",\"296\",\"Recent developments in Graphics Processing Units (GPUs) have enabled inexpensive high performance computing for general-purpose applications. Due to GPU's tremendous computing capability, it has emerged as the co-processor of the CPU to achieve a high overall throughput. CUDA programming model provides the programmers adequate C language like APIs to better exploit the parallel power of the GPU. K-nearest neighbor (KNN) is a widely used classification technique and has significant applications in various domains, especially in text classification. The computational-intensive nature of KNN requires a high performance implementation. In this paper, we present a CUDA-based parallel implementation of KNN, CUKNN, using CUDA multi-thread model, where the data elements are processed in a data-parallel fashion. Various CUDA optimization techniques are applied to maximize the utilization of the GPU. CUKNN outperforms the serial KNN on an HP xw8600 workstation significantly, achieving up to 46.71X speedup including I/O time. It also shows good scalability when varying the dimension of the reference dataset, the number of records in the reference dataset, and the number of records in the query dataset.\",\"\",\"978-1-4244-5218-7\",\"10.1109/CYBERC.2009.5399145\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5399145\",\"KNN, classification, parallel computing, CUDA\",\"High performance computing;Graphics;Coprocessors;Central Processing Unit;Throughput;Parallel programming;Programming profession;Text categorization;Workstations;Scalability\",\"\",\"\",\"\",\"17\",\"\",\"17\",\"\",\"26 Jan 2010\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"GCN Inference Acceleration using High-Level Synthesis\",\"Y. C. Lin; B. Zhang; V. Prasanna\",\"University of Southern California,Los Angeles,California; University of Southern California,Los Angeles,California; University of Southern California,Los Angeles,California\",\"2021 IEEE High Performance Extreme Computing Conference (HPEC)\",\"1 Dec 2021\",\"2021\",\"\",\"\",\"1\",\"6\",\"GCN (Graph Convolutional Network) has become a promising solution for many applications, such as recommendation systems, social data mining, etc. Many of these applications requires low latency GCN inference.In this paper, we provide a case study of a GCN inference acceleration on FPGA. We explore high-level synthesis programming model to achieve low-latency inference. First, we propose a partition-centric mapping strategy to map the execution tasks of GCN onto FPGA to exploit data reuse, which reduces external memory access overhead. Second, we provide HLS-based kernel design with improved memory performance and achieve massive data parallelism. Third, we perform design space exploration to facilitate feasible pre-placement which avoids potential Place-and-Route (PnR) failures. We evaluate our design on a state-of-the-art FPGA platform using three commonly used datasets: Reddit, Yelp and Amazon-2M. We compare our design with two state-of-the-art libraries PyTorch-Geometric (PyG) and Deep Graph Library (DGL) running on high-end CPU and GPU by evaluating their latency and energy efficiency to perform full-batch GCN inference on a two-layer Vanilla-GCN model. Compared with PyG CPU version, our design reduces the latency by 59.95× and is 96.22× more energy efficient on the average. Compared with DGL, our design achieves 2.9 × –6.4× speedup and is 5.87× more energy efficient compared with the CPU version. Compared with the DGL GPU version, although the latency of our design is 1.67 × –2.5× that of DGL GPU, our design is 1.8× more energy efficient.\",\"2643-1971\",\"978-1-6654-2369-4\",\"10.1109/HPEC49654.2021.9622801\",\"National Science Foundation; \",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9622801\",\"\",\"Social networking (online);Graphics processing units;Programming;Energy efficiency;Libraries;Space exploration;Low latency communication\",\"\",\"\",\"\",\"\",\"\",\"19\",\"\",\"1 Dec 2021\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Network-on-Chip Design for Heterogeneous Multiprocessor System-on-Chip\",\"B. Phanibhushana; S. Kundu\",\"Dept. of Electr. & Comput. Eng., Univ. of Massachusetts Amherst, Amherst, MA, USA; Dept. of Electr. & Comput. Eng., Univ. of Massachusetts Amherst, Amherst, MA, USA\",\"2014 IEEE Computer Society Annual Symposium on VLSI\",\"22 Sep 2014\",\"2014\",\"\",\"\",\"486\",\"491\",\"With burgeoning growth of mobile systems, multiprocessor System-on-Chip (MPSoC) connected via Network-on-Chip (NoC) has become ubiquitous. A typical MPSoC in mobile applications consists of multiple CPU cores of varying capabilities, GPU cores, DSP cores, and crypto accelerators and such cores differ widely in their physical size and their bandwidth requirements. Traditional mesh based NoC systems work well for regular structures, but do not map well to heterogeneous MPSoCs. In MPSoC programming model, an application consists of tasks, that represent a unit of work on a core which can be executed asynchronously. The communication between tasks is represented in the form of a directed acyclic graph. The temporal burstness of data which arise from programming model provide opportunity for multiplexing communication between cores, which may be advantageous in reducing network size. Often a task graph needs to meet a real-time deadline. The actual execution time may vary based on the application data. The uncertainty in the execution time may be modeled by a statistical distribution, which further complicates the NoC design. In this paper, we present a synthesis method for hierarchical design of NoC for a given task graph system deadline, that optimizes for router area. A 2-phase design flow is proposed, which consists of topology generation and statistical analysis in an iterative loop. We adopt proportion of Monte-Carlo test cases that meet the deadline as a metric for goodness. The proposed solution is compared against static design approach and simulated annealing (SA) based network generation. On an average, a performance benefit of 10% over SA, 16% over standard mesh and 30% over static design was obtained and a total router area benefit of 59% over SA, 48% over mesh and 55% over static design was observed.\",\"2159-3477\",\"978-1-4799-3765-3\",\"10.1109/ISVLSI.2014.96\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6903411\",\"Network-on-chip;Realtime systems;Statistical design;Kernighan-Lin\",\"Partitioning algorithms;Bandwidth;Topology;System-on-chip;Monte Carlo methods;Algorithm design and analysis;Cost function\",\"integrated circuit design;Monte Carlo methods;multiprocessing systems;network-on-chip;statistical analysis\",\"network-on-chip design;heterogeneous multiprocessor system-on-chip;hierarchical design;NoC;task graph system deadline;router area;2-phase design flow;topology generation;statistical analysis;iterative loop;Monte-Carlo test cases\",\"\",\"3\",\"\",\"24\",\"\",\"22 Sep 2014\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"FCUDA: Enabling efficient compilation of CUDA kernels onto FPGAs\",\"A. Papakonstantinou; K. Gururaj; J. A. Stratton; D. Chen; J. Cong; W. W. Hwu\",\"Electrical & Computer Eng. Dept., University of Illinois, Urbana-Champaign, USA; Computer Science Dept., University of California, Los-Angeles, USA; Electrical & Computer Eng. Dept., University of Illinois, Urbana-Champaign, USA; Electrical & Computer Eng. Dept., University of Illinois, Urbana-Champaign, USA; Computer Science Dept., University of California, Los-Angeles, USA; Electrical & Computer Eng. Dept., University of Illinois, Urbana-Champaign, USA\",\"2009 IEEE 7th Symposium on Application Specific Processors\",\"28 Aug 2009\",\"2009\",\"\",\"\",\"35\",\"42\",\"As growing power dissipation and thermal effects disrupted the rising clock frequency trend and threatened to annul Moore's law, the computing industry has switched its route to higher performance through parallel processing. The rise of multicore systems in all domains of computing has opened the door to heterogeneous multiprocessor, where processors of different compute characteristics can be combined to effectively boost the performance per watt of different application kernels. GPUs and FPGAs are becoming very popular in PC-based heterogeneous systems for speeding up compute intensive kernels of scientific, imaging and simulation applications. GPUs can execute hundreds of concurrent threads, while FPGAs provide customized concurrency for highly parallel kernels. However, exploiting the parallelism available in these applications is currently not a push-button task. Often the programmer has to expose the application's fine and coarse grained parallelism by using special APIs. CUDA is such a parallel computing API that is driven by the GPU industry and is gaining significant popularity. In this work, we adapt the CUDA programming model into a new FPGA design flow called FCUDA, which efficiently maps the coarse and fine grained parallelism exposed in CUDA onto the reconfigurable fabric. Our CUDA-to-FPGA flow employs autopilot, an advanced high level synthesis tool which enables high abstraction FPGA programming. FCUDA is based on a source-to-source compilation that transforms the SPMD CUDA thread blocks into parallel C code for autopilot. We describe the details of our CUDA-to-FPGA flow and demonstrate the highly competitive performance of the resulting customized FPGA multi-core accelerators. To the best of our knowledge, this is the first CUDA-to-FPGA flow to demonstrate the applicability and potential advantage of using the CUDA programming model for high-performance computing in FPGAs.\",\"\",\"978-1-4244-4939-2\",\"10.1109/SASP.2009.5226333\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5226333\",\"\",\"Kernel;Field programmable gate arrays;Parallel processing;Concurrent computing;Computer industry;Yarn;Power dissipation;Clocks;Frequency;Moore's Law\",\"application program interfaces;field programmable gate arrays;multiprocessing systems;parallel architectures\",\"CUDA kernel;FPGA programming;field programmable gate array;power dissipation;clock frequency;Moores law;computing industry;parallel processing;multicore system;multiprocessor system;performance per watt boosting;application program interface;compute unified device architecture;graphics processing unit\",\"\",\"82\",\"1\",\"23\",\"\",\"28 Aug 2009\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Implementing Performance Portable Graph Algorithms Using Task-Based Execution\",\"Ü. V. Çatalyürek\",Georgia Institute of Technology,\"2021 IEEE/ACM 11th Workshop on Irregular Applications: Architectures and Algorithms (IA3)\",\"28 Dec 2021\",\"2021\",\"\",\"\",\"1\",\"1\",\"Summary form only given, as follows. The complete presentation was not made available for publication as part of the conference proceedings. Designing flexible graph kernels that can run well on various platforms is a crucial research problem due to the frequent usage of graphs for modeling data and recent architectural advances and variety. In this talk, I will present our recent graph processing model and framework, PGAbB, for modern shared-memory heterogeneous platforms. PGAbB implements a block-based programming model. This allows a user to express a graph algorithm using functors that operate on an ordered list of blocks (subgraphs). Our framework deploys these computations to all available resources in a heterogeneous architecture. We will demonstrate that one can implement a diverse set of graph algorithms in our framework, and task-based execution enables graph computations even on large graphs that do not fit in GPU device memory. Our experimental results show that PGAbB achieves competitive or superior performance compared to hand-optimized implementations or existing state-of-the-art graph computing frameworks.\",\"2767-942X\",\"978-1-6654-1126-4\",\"10.1109/IA354616.2021.00007\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9653075\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"28 Dec 2021\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"High Performance Matrix Multiplication on General Purpose Graphics Processing Units\",\"F. Wu; M. Cabral; J. Brazelton\",\"Comput. Sci. Dept., Tuskegee Univ., Tuskegee, AL, USA; Comput. Sci. Dept., Tuskegee Univ., Tuskegee, AL, USA; Comput. Sci. Dept., Tuskegee Univ., Tuskegee, AL, USA\",\"2010 International Conference on Computational Intelligence and Software Engineering\",\"30 Dec 2010\",\"2010\",\"\",\"\",\"1\",\"4\",\"In recent years, there has been significant interest from both academia and industry in applying commodity graphics processing units (GPUs) toward general computing problems. The nVidia CUDA programming model provides a straightforward means of describing inherently parallel computations. In this paper, we present our GPU-based matrix multiplication with high performance on General Purpose Graphics Processing Unit (GPGPUs). We implemented our algorithm using nVidia CUDA API and compared its performance with an optimized CPU-implementation on a high-end AMD Opteron Dual Core CPU. Our experimental results show that a significant performance improvement over CPU-based algorithm and the maximum observed speedups are about 100 times.\",\"\",\"978-1-4244-5391-7\",\"10.1109/CISE.2010.5677044\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5677044\",\"\",\"Graphics processing unit;Kernel;Instruction sets;Computer architecture;Central Processing Unit;Programming\",\"coprocessors;matrix multiplication\",\"matrix multiplication;general purpose graphics processing units;nVidia CUDA programming;parallel computations;AMD Opteron Dual Core CPU\",\"\",\"\",\"\",\"5\",\"\",\"30 Dec 2010\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Cellular Neural Networks for FPGAs with OpenCL\",\"F. Richter-Gottfried; D. Fey\",NA; NA,\"CNNA 2016; 15th International Workshop on Cellular Nanoscale Networks and their Applications\",\"23 Jan 2017\",\"2016\",\"\",\"\",\"1\",\"2\",\"Cellular Neural Networks (CNNs) are an inherently parallel computational model for multiple applications, and they are especially appropriate for image processing tasks. Besides of implementing them with analogue electronic circuits, they can be simulated on digital processor architectures like CPUs and GPUs, with the drawback of limited parallelism. FPGAs offer a fine-grained parallel execution with low power consumption and are thus attractive for embedded systems like smart cameras, for which it is not possible to use a full-featured CPU or GPU with tens or hundrets of watts. The drawback of implementing CNNs with FPGAs, to profit from the high performance-to-power ratio, is the time-consuming design process with conventional hardware descriptions languages. High-level-synthesis, e.g., from OpenCL, eases the process of generating CNNs in FPGAs. By using the OpenCL programming model, the programmer can explicitly express the parallel nature of CNNs in a platform-independent way. To investigate its applicability to CNNs, we compare the execution of an unmodified OpenCL kernel on a recent CPU with an FPGA design generated with Altera's SDK for OpenCL. The results show, that though the CPU is faster, the FPGA solution performs better in terms of energy efficiency and fits for smart camera systems.\",\"\",\"978-3-8007-4252-3\",\"\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7827967\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"23 Jan 2017\",\"\",\"\",\"VDE\",\"VDE Conferences\"\n\"Gemma in April: A matrix-like parallel programming architecture on OpenCL\",\"T. Wu; D. Wu; Y. Wang; X. Zhang; H. Luo; N. Xu; H. Yang\",\"Department of Electronic Engineering, TNList, Tsinghua University; Department of Electronic Engineering, TNList, Tsinghua University; Department of Electronic Engineering, TNList, Tsinghua University; Department of Electronic Engineering, TNList, Tsinghua University; Department of Electronic Engineering, TNList, Tsinghua University; Hardware Computing Group, Microsoft Research Asia; Department of Electronic Engineering, TNList, Tsinghua University\",\"2011 Design, Automation & Test in Europe\",\"5 May 2011\",\"2011\",\"\",\"\",\"1\",\"6\",\"Nowadays, Graphics Processing Unit (GPU), as a kind of massive parallel processor, has been widely used in general purposed computing tasks. Although there have been mature development tools, it is not a trivial task for programmers to write GPU programs. Based on this consideration, we propose a novel parallel computing architecture. The architecture includes a parallel programming model, named Gemma, and a programming framework, named April. Gemma is based on generalized matrix operations, and helps to alleviate the difficulty of describing parallel algorithms. April is a high-level framework that can compile and execute tasks described in Gemma with OpenCL. In particular, April can automatically 1) choose the best parallel algorithm and mapping scheme, and generate OpenCL kernels, 2) schedule Gemma tasks based on execution costs such as data storing and transferring. Our experimental results show that with competitive performance, April considerably reduces the programs' code length compared with OpenCL.\",\"1558-1101\",\"978-3-9810801-8-6\",\"10.1109/DATE.2011.5763119\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5763119\",\"\",\"Graphics processing unit;Computer architecture;Sparse matrices;Computational modeling;Kernel;Parallel programming\",\"computer graphic equipment;coprocessors;parallel programming;programming languages\",\"matrix-like parallel programming architecture;graphics processing unit;parallel computing architecture;Gemma;April;parallel algorithms;OpenCL kernels;data storing;data transferring;open computing language\",\"\",\"\",\"\",\"11\",\"\",\"5 May 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Evaluating Performance and Portability of a core bioinformatics kernel on multiple vendor GPUs\",\"M. Haseeb; N. Ding; J. Deslippe; M. Awan\",\"Florida International University,Miami,USA; Lawrence Berkeley National Laboratory,Berkeley,USA; Lawrence Berkeley National Laboratory,Berkeley,USA; Lawrence Berkeley National Laboratory,Berkeley,USA\",\"2021 International Workshop on Performance, Portability and Productivity in HPC (P3HPC)\",\"28 Dec 2021\",\"2021\",\"\",\"\",\"68\",\"78\",\"Traditional scientific simulations have for quite some time, dominated the workloads of high-performance computing infrastructures across the world. With recent advancement in data generation capabilities of systems biology equipment, a rise in bioinformatics workloads has been observed. Bioinformatics applications deploy algorithmic motifs that use unique memory access patterns and rely heavily on integer-only computations. These applications place unique requirements on modern programming environments as well as GPU accelerators which are becoming an integral part of next generation of supercomputers. In this paper, we evaluate the performance and code portability of a core bioinformatics kernel that uses dynamic programming method for performing DNA and protein sequence alignments in several bioinformatics software pipelines. Our study evaluates the performance of a GPU accelerated sequence alignment algorithm across multiple vendor GPUs and programming models. We use a highly optimized adaptation of sequence alignment kernel and find the most productive way of porting it across multiple vendor GPUs and then assess its performance portability using Pennycook's method. Methods used in this paper and the insights drawn from those can be extended to a large number of integer-heavy scientific kernels and may aid in future accelerator design and design of programming model requirements.\",\"\",\"978-1-6654-2439-4\",\"10.1109/P3HPC54578.2021.00010\",\"U.S. Department of Energy(grant numbers:17-SC-20-SC); National Nuclear Security Administration; Oak Ridge National Laboratory; Office of Science of the U.S. Department of Energy(grant numbers:DE-AC05-000R22725); \",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9652848\",\"Performance;Portability;GPUs;Bioinformatics;DNA;Protein;Sequence Alignment\",\"Performance evaluation;Codes;Biological system modeling;Graphics processing units;Computer architecture;Programming;Supercomputers\",\"\",\"\",\"\",\"\",\"\",\"39\",\"\",\"28 Dec 2021\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"An open-source solution to performance portability for Summit and Sierra supercomputers\",\"G. T. Bercea; A. Bataev; A. E. Eichenberger; C. Bertolli; J. K. O'Brien\",NA; NA; NA; NA; NA,\"IBM Journal of Research and Development\",\"13 May 2020\",\"2020\",\"64\",\"3/4\",\"12:1\",\"12:23\",\"Programming models that use a higher level of abstraction to express parallelism can target both CPUs and any attached devices, alleviating the maintainability and portability concerns facing today's heterogenous systems. This article describes the design, implementation, and delivery of a compliant OpenMP device offloading implementation for IBM-NVIDIA heterogeneous servers composing the Summit and Sierra supercomputers in the mainline open-source Clang/LLVM compiler and OpenMP runtime projects. From a performance perspective, reconciling the GPU programming model, best suited for massively parallel workloads, with the generality of the OpenMP model was a significant challenge. To achieve both high performance and full portability, we map high-level programming patterns to fine-tuned code generation schemes and customized runtimes that preserve the OpenMP semantics. In the compiler, we implement a low-overhead single-program multiple-data scheme that leverages the GPU native execution model and a fallback scheme to support the generality of OpenMP. Modular design enables the implementation to be extended with new schemes for frequently occurring patterns. Our implementation relies on key optimizations: sharing data among threads, leveraging unified memory, aggressive inlining of runtime calls, memory coalescing, and runtime simplification. We show that for commonly used patterns, performance on the Summit and Sierra GPUs matches that of hand-written native CUDA code.\",\"0018-8646\",\"\",\"10.1147/JRD.2019.2955944\",\"CORAL(grant numbers:B604142); \",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8928619\",\"\",\"Programming;Graphics processing units;Instruction sets;Runtime;Computational modeling;Open source software;Performance evaluation\",\"\",\"\",\"\",\"\",\"\",\"39\",\"IBM\",\"9 Dec 2019\",\"\",\"\",\"IBM\",\"IBM Journals\"\n\"Designing APU Oriented Scientific Computing Applications in OpenCL\",\"M. Doerksen; S. Solomon; P. Thulasiraman\",\"Dept. of Comput. Sci., Univ. of Manitoba, Winnipeg, MB, Canada; Dept. of Comput. Sci., Univ. of Manitoba, Winnipeg, MB, Canada; Dept. of Comput. Sci., Univ. of Manitoba, Winnipeg, MB, Canada\",\"2011 IEEE International Conference on High Performance Computing and Communications\",\"31 Oct 2011\",\"2011\",\"\",\"\",\"587\",\"592\",\"The future of high performance computing is moving towards exa-scale computing. Graphical Processing Units (GPUs) have demonstrated their capabilities beyond graphics rendering or general purpose computing and are well suited for data intensive applications. However, the communication bottleneck for data transfer between the GPU and CPU has led to the design of AMD's Accelerated Processing Unit (APU) which combines the CPU and GPU on a single chip. This new architecture poses new challenges: algorithms must be redesigned to take advantage of this architecture and programming models differ between vendors, hindering the portability of algorithms across heterogeneous platforms. Recently, OpenCL has been regarded as the standard programming model for heterogeneous platforms. With the future of general purpose computing moving towards APUs, in this paper, we study the design and implementation of two problems: 0-1 knapsack and Gaussian Elimination in OpenCL. This pair of algorithms showcases similar synchronization behaviors, enabling a more direct comparison. We discuss the design and performance of these algorithms using OpenCL.\",\"\",\"978-1-4577-1564-8\",\"10.1109/HPCC.2011.83\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6063044\",\"\",\"Graphics processing unit;Instruction sets;Synchronization;Central Processing Unit;Algorithm design and analysis;Computer architecture;Equations\",\"computer graphic equipment;coprocessors;parallel algorithms;programming languages\",\"APU oriented scientific computing application;accelerated processing unit;high performance computing;OpenCL;exascale computing;graphical processing unit;graphics rendering;general purpose computing;0-1 knapsack problem;Gaussian elimination problem;synchronization behavior;open computing language\",\"\",\"9\",\"\",\"12\",\"\",\"31 Oct 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Cambricon-G: A Polyvalent Energy-Efficient Accelerator for Dynamic Graph Neural Networks\",\"X. Song; T. Zhi; Z. Fan; Z. Zhang; X. Zeng; W. Li; X. Hu; Z. Du; Q. Guo; Y. Chen\",\"State Key Laboratory of Computer Architecture, Institute of Computing Technology, Chinese Academy of Sciences, Beijing, China; State Key Laboratory of Computer Architecture, Institute of Computing Technology, Chinese Academy of Sciences, Beijing, China; State Key Laboratory of Computer Architecture, Institute of Computing Technology, Chinese Academy of Sciences, Beijing, China; State Key Laboratory of Computer Architecture, Institute of Computing Technology, Chinese Academy of Sciences, Beijing, China; State Key Laboratory of Computer Architecture, Institute of Computing Technology, Chinese Academy of Sciences, Beijing, China; State Key Laboratory of Computer Architecture, Institute of Computing Technology, Chinese Academy of Sciences, Beijing, China; State Key Laboratory of Computer Architecture, Institute of Computing Technology, Chinese Academy of Sciences, Beijing, China; State Key Laboratory of Computer Architecture, Institute of Computing Technology, Chinese Academy of Sciences, Beijing, China; State Key Laboratory of Computer Architecture, Institute of Computing Technology, Chinese Academy of Sciences, Beijing, China; State Key Laboratory of Computer Architecture, Institute of Computing Technology, Chinese Academy of Sciences, Beijing, China\",\"IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems\",\"22 Dec 2021\",\"2022\",\"41\",\"1\",\"116\",\"128\",\"Graph neural networks (GNNs), which extend traditional neural networks for processing graph-structured data, have been widely used in many fields. The GNN computation mainly consists of the <italic>edge processing</italic> to generate messages by combining the edge/vertex features and the <italic>vertex processing</italic> to update the vertex features with aggregated messages. In addition to nontrivial vector operations in the edge processing, huge random accesses and neural network operations in the vertex processing, the graph topology of GNNs may also vary during the computation (i.e., dynamic GNNs). The above characteristics pose significant challenges on existing architectures. In this article, we propose a novel accelerator named CAMBRICON-G for efficient processing of both dynamic and static GNNs. The key of CAMBRICON-G is to abstract the irregular computation of a broad range of GNN variants to the process of regularly tiled <italic>adjacent cuboid</italic> (which extends the traditional adjacent matrix of graph by adding the dimension of vertex features). The intuition is that the adjacent cuboid facilitates exploitation of both data locality and parallelism by offering <italic>multidimensional multilevel tiling</italic> (including spatial and temporal tiling) opportunities. To perform the <italic>multidimensional spatial tiling</italic>, the CAMBRICON-G architecture mainly consists of the cuboid engine (CE) and hybrid on-chip memory. The CE has multiple vertex processing units (VPUs) working in a coordinated manner to efficiently process the sparse data and dynamically update the graph topology with dedicated instructions. The hybrid on-chip memory contains the topology-aware cache and multiple scratchpad memory to reduce off-chip memory access. To perform the <italic>multidimensional temporal tiling</italic>, an easy-to-use programming model is provided to flexibly explore different tiling options for large graphs. Experimental results show that compared against Nvidia P100 GPU, the performance and energy efficiency can be improved by <inline-formula> <tex-math notation=\"\"LaTeX\"\">$7.14\\times $ </tex-math></inline-formula> and <inline-formula> <tex-math notation=\"\"LaTeX\"\">$20.18\\times $ </tex-math></inline-formula>, respectively, on various GNNs, which validates both the versatility and energy efficiency of CAMBRICON-G.\",\"1937-4151\",\"\",\"10.1109/TCAD.2021.3052138\",\"National Key Research and Development Program of China(grant numbers:2017YFA0700900,2017YFA0700902,2017YFA0700901); NSF of China(grant numbers:61925208,61732007,61732002,61702478,61906179,62002338,61702459,U19B2019,U20A20227); Beijing Natural Science Foundation(grant numbers:JQ18013); Key Research Projects in Frontier Science of Chinese Academy of Sciences(grant numbers:QYZDB-SSW-JSC001); Strategic Priority Research Program of Chinese Academy of Science(grant numbers:XDB32050200,XDC05010300,XDC08040102); Beijing Academy of Artificial Intelligence (BAAI) and Beijing Nova Program of Science and Technology(grant numbers:Z191100001119093); Science and Technology Planning Project of Guangdong Province(grant numbers:2019B090909005); Youth Innovation Promotion Association CAS and Xplore Prize; \",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9326339\",\"Accelerator;architecture;graph neural networks (GNNs)\",\"Hardware;Programming;Topology;System-on-chip;Graphics processing units;Convolution;Engines\",\"\",\"\",\"\",\"\",\"\",\"32\",\"IEEE\",\"18 Jan 2021\",\"\",\"\",\"IEEE\",\"IEEE Journals\"\n\"HyGCN: A GCN Accelerator with Hybrid Architecture\",\"M. Yan; L. Deng; X. Hu; L. Liang; Y. Feng; X. Ye; Z. Zhang; D. Fan; Y. Xie\",\"Chinese Academy of Sciences; University of California, Santa Barbara; University of California, Santa Barbara; University of California, Santa Barbara; Chinese Academy of Sciences; Chinese Academy of Sciences; Chinese Academy of Sciences; Chinese Academy of Sciences; University of California, Santa Barbara\",\"2020 IEEE International Symposium on High Performance Computer Architecture (HPCA)\",\"16 Apr 2020\",\"2020\",\"\",\"\",\"15\",\"29\",\"Inspired by the great success of neural networks, graph convolutional neural networks (GCNs) are proposed to analyze graph data. GCNs mainly include two phases with distinct execution patterns. The Aggregation phase, behaves as graph processing, showing a dynamic and irregular execution pattern. The Combination phase, acts more like the neural networks, presenting a static and regular execution pattern. The hybrid execution patterns of GCNs require a design that alleviates irregularity and exploits regularity. Moreover, to achieve higher performance and energy efficiency, the design needs to leverage the high intra-vertex parallelism in Aggregation phase, the highly reusable inter-vertex data in Combination phase, and the opportunity to fuse phase-by-phase execution introduced by the new features of GCNs. However, existing architectures fail to address these demands. In this work, we first characterize the hybrid execution patterns of GCNs on Intel Xeon CPU. Guided by the characterization, we design a GCN accelerator, HyGCN, using a hybrid architecture to efficiently perform GCNs. Specifically, first, we build a new programming model to exploit the fine-grained parallelism for our hardware design. Second, we propose a hardware design with two efficient processing engines to alleviate the irregularity of Aggregation phase and leverage the regularity of Combination phase. Besides, these engines can exploit various parallelism and reuse highly reusable data efficiently. Third, we optimize the overall system via inter-engine pipeline for inter-phase fusion and priority-based off-chip memory access coordination to improve off-chip bandwidth utilization. Compared to the state-of-the-art software framework running on Intel Xeon CPU and NVIDIA V100 GPU, our work achieves on average 1509× speedup with 2500× energy reduction and average 6.5× speedup with 10× energy reduction, respectively.\",\"2378-203X\",\"978-1-7281-6149-5\",\"10.1109/HPCA47549.2020.00012\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9065592\",\"Hardware Accelerator, Graph Convolution Neural Network, Graph Processing, Hybrid Execution Pattern\",\"Computer architecture;Neural networks;Engines;Parallel processing;Aggregates;Fuses;Hardware\",\"convolutional neural nets;graph theory;graphics processing units;microprocessor chips;multiprocessing systems;parallel architectures;parallel processing;power aware computing\",\"hybrid execution patterns;GCNs;energy efficiency;high intra-vertex parallelism;Aggregation phase;phase-by-phase execution;Intel Xeon CPU;GCN accelerator;HyGCN;hybrid architecture;hardware design;inter-phase fusion;priority-based off-chip memory access coordination;graph convolutional neural networks;graph data;graph processing;inter-vertex data;off-chip bandwidth utilization;software framework\",\"\",\"38\",\"\",\"46\",\"\",\"16 Apr 2020\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"CoSMo: Intent-based composition of shader modules\",\"G. Haaser; H. Steinlechner; M. May; M. Schwärzler; S. Maierhofer; R. Tobler\",\"VRVis Research Center, Donau-City-Strasse 1, Vienna, Austria; VRVis Research Center, Donau-City-Strasse 1, Vienna, Austria; VRVis Research Center, Donau-City-Strasse 1, Vienna, Austria; VRVis Research Center, Donau-City-Strasse 1, Vienna, Austria; VRVis Research Center, Donau-City-Strasse 1, Vienna, Austria; VRVis Research Center, Donau-City-Strasse 1, Vienna, Austria\",\"2014 International Conference on Computer Graphics Theory and Applications (GRAPP)\",\"12 Oct 2015\",\"2014\",\"\",\"\",\"1\",\"11\",\"We propose a novel shader programming model which operates on intent-oriented shader modules instead of specific programs for dedicated GPU rasterization pipeline stages. In constrast to existing pipeline shader frameworks, our system exposes a radically simplified pipeline, which we purposefully aligned with our basic intuition of shaders as per-primitive and per-pixel operations and compositions thereof. This simplicity lends itself to structure modules purely based on their intent, instead of dealing with structure enforced by specific versions of graphics APIs. Consequently, this offers great flexibility when it comes to reusing and combining modules with completely different semantics, or when targeting different graphics APIs. The simplicity and uniformity of our system also motivates automatic parameterization and simplification of shader programs as well as interesting interactive shader development and management techniques.\",\"\",\"978-9-8975-8078-9\",\"\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7296051\",\"Shader;Composition;Rendering;Language;Embedded\",\"Semantics;Pipelines;Programming;Lighting;Rendering (computer graphics);Synthesizers;Surface treatment\",\"\",\"\",\"\",\"\",\"\",\"22\",\"\",\"12 Oct 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"A Hybrid Cache HW/SW Stack for Optimizing Neural Network Runtime, Power and Endurance\",\"W. A. Simon; A. Levisse; M. Zapater; D. Atienza\",\"Embedded Systems Laboratory (ESL), Swiss Federal Institute of Technology Lausanne (EPFL); Embedded Systems Laboratory (ESL), Swiss Federal Institute of Technology Lausanne (EPFL); University of Applied Sciences Western Switzerland (HEIG-VD / HES-SO); Embedded Systems Laboratory (ESL), Swiss Federal Institute of Technology Lausanne (EPFL)\",\"2020 IFIP/IEEE 28th International Conference on Very Large Scale Integration (VLSI-SOC)\",\"10 Feb 2021\",\"2020\",\"\",\"\",\"94\",\"99\",\"Hybrid caches consisting of both SRAM and emerging Non-Volatile Random Access Memory (eNVRAM) bitcells increase cache capacity and reduce power consumption by taking advantage of eNVRAM's small area footprint and low leakage energy. However, they also inherit eNVRAM's drawbacks, including long write latency and limited endurance. To mitigate these drawbacks, many works propose heuristic strategies to allocate memory blocks into SRAM or eNVRAM arrays at runtime based on block content or access pattern. In contrast, this work presents a HW/SW Stack for Hybrid Caches (SHyCache), consisting of a hybrid cache architecture and supporting programming model, reminiscent of those that enable GP-GPU acceleration, in which application variables can be allocated explicitly to the eNVRAM cache, eliminating the need for heuristics and reducing cache access time, power consumption, and area overhead while maintaining maximal cache utilization efficiency and ease of programming. SHyCache improves performance for applications such as neural networks, which contain large numbers of invariant weight values with high read/write access ratios that can be explicitly allocated to the eNVRAM array. We simulate SHyCache on the gem5-X architectural simulator and demonstrate its utility by benchmarking a range of cache hierarchy variations using three neural networks, namely, Inception v4, ResNet-50, and SqueezeNet 1.0. We demonstrate a design space that can be exploited to optimize performance, power consumption, or endurance, depending on the expected use case of the architecture, while demonstrating maximum performance gains of 1.7 /1.4/1.3x and power consumption reductions of 5.1/5.2/5.4x, for Inception/ResNet/SqueezeNet, respectively.\",\"2324-8440\",\"978-1-7281-5409-1\",\"10.1109/VLSI-SOC46417.2020.9344087\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9344087\",\"eNVRAM;STT-MRAM;hybrid caches;neural networks;low-power systems\",\"Power demand;Runtime;Random access memory;Programming;Benchmark testing;Hybrid power systems;Resource management\",\"\",\"\",\"\",\"\",\"\",\"26\",\"\",\"10 Feb 2021\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"VSIPL++ Acceleration Using Commodity Graphics Processors\",\"D. Campbell\",\"Georgia Tech Research Institute, Smyrna, GA\",\"2006 HPCMP Users Group Conference (HPCMP-UGC'06)\",\"19 Mar 2007\",\"2006\",\"\",\"\",\"315\",\"320\",\"The High Performance Embedded Computing Software Initiative (HPEC-SI) is developing a unified software framework for computation and communication for high performance signal processing tasks on parallel computers. The goal of the program is to address the high cost of software in Department of Defense (DoD) systems by improving the portability and productivity of signal processing application development, while simultaneously improving performance compared to current practices. The Vector, Signal, and Image Processing Library (VSIPL) is a portable application programming interface (API) that is widely used for embedded DoD signal processing systems. One portion of the HPEC-SI effort includes the development of C++ extensions for the existing VSIPL standard, called VSIPL++. Commodity graphics processing units (GPUs) are application-specific processors that implement a standardized three-dimensional graphics-rendering pipeline, and provide significant floating-point processing capacity at much lower cost, power consumption, and physical space compared to general-purpose processors. Recent changes in GPUs have increased programmability and flexibility in portions of the rendering pipeline, allowing non-graphics applications to exploit their computational capacity. Restrictions on the programming model, lack of appropriate tools, unusual performance behavior, and other factors make exploiting GPUs a costly, difficult, and time-consuming process for application developers. The embedded systems that VSIPL and VSIPL++ are commonly used on share several important characteristics with GPUs, making VSIPL++ well suited to abstract and exploit GPUs. This paper describes GPUVSIPL++, an implementation of portions of the VSIPL++ standard that exploits a GPU to accelerate computation beyond what is possible on a development workstation\",\"\",\"0-7695-2797-3\",\"10.1109/HPCMP-UGC.2006.77\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=4134073\",\"\",\"Acceleration;Graphics;Signal processing;Embedded computing;Software performance;Embedded software;Concurrent computing;High performance computing;Costs;Application software\",\"application program interfaces;microprocessor chips\",\"VSIPL++ acceleration;commodity graphics processors;unified software framework;high performance signal processing;parallel computers;portable application programming interface;3D graphics-rendering pipeline;floating-point processing;GPUVSIPL++\",\"\",\"2\",\"\",\"13\",\"\",\"19 Mar 2007\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Benchmarking and Extending SYCL Hierarchical Parallelism\",\"T. Deakin; S. McIntosh-Smith; A. Alpay; V. Heuveline\",\"University of Bristol,Department of Computer Science,Bristol,UK; University of Bristol,Department of Computer Science,Bristol,UK; Universität Heidelberg,Engineering Mathematics and Computing Lab and Interdisciplinary Center for Scientific Computing,Heidelberg,Germany; Universität Heidelberg,Engineering Mathematics and Computing Lab and Interdisciplinary Center for Scientific Computing,Heidelberg,Germany\",\"2021 IEEE/ACM International Workshop on Hierarchical Parallelism for Exascale Computing (HiPar)\",\"24 Dec 2021\",\"2021\",\"\",\"\",\"10\",\"19\",\"SYCL is an open-standard, parallel programming model for programming heterogeneous devices from Khronos. It allows single-source programming of diverse attached devices in a cross-platform manner in modern C++. SYCL provides different layers of parallel abstractions, including Same Instruction Multiple Thread (SIMT) kernels, data-parallel loop concurrency and hierarchical parallelism. We discuss Scoped Parallelism as an extension to the existing Hierarchical Parallelism in SYCL, and highlight the advantages and disadvantages of these models from the perspective of the programmer and an implementer of SYCL. In this paper, we compare writing benchmark programs using SIMT kernel, hierarchical parallelism and scoped parallelism paradigms, and present results running on a high-performance CPU and GPU.\",\"\",\"978-1-6654-1132-5\",\"10.1109/HiPar54615.2021.00007\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9654235\",\"\",\"Concurrent computing;Parallel programming;Exascale computing;Conferences;Graphics processing units;C++ languages;Parallel processing\",\"\",\"\",\"\",\"\",\"\",\"8\",\"\",\"24 Dec 2021\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"CPUs and GPUs: Who Owns the Future?\",\"E. R. Altman\",ealtman@us.ibm.com,\"IEEE Micro\",\"17 Oct 2011\",\"2011\",\"31\",\"5\",\"2\",\"3\",\"This column addresses issues facing CPUs, GPUs, and how to program them and other computing devices.\",\"1937-4143\",\"\",\"10.1109/MM.2011.84\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6045683\",\"CPU;GPU;performance;application-specific integrated circuit;field-programmable gate array;programming model;productivity\",\"\",\"\",\"\",\"\",\"1\",\"\",\"\",\"IEEE\",\"17 Oct 2011\",\"\",\"\",\"IEEE\",\"IEEE Magazines\"\n\"A nodal discontinuous Galerkin method for reverse-time migration on GPU clusters\",\"A. Modave; A. St-Cyr; W. A. Mulder; T. Warburton\",NA; NA; NA; NA,\"Geophysical Journal International\",\"18 Jan 2018\",\"2015\",\"203\",\"2\",\"1419\",\"1435\",\"Improving both accuracy and computational performance of numerical tools is a major challenge for seismic imaging and generally requires specialized implementations to make full use of modern parallel architectures. We present a computational strategy for reverse-time migration (RTM) with accelerator-aided clusters. A new imaging condition computed from the pressure and velocity fields is introduced. The model solver is based on a high-order discontinuous Galerkin time-domain (DGTD) method for the pressure–velocity system with unstructured meshes and multirate local time stepping. We adopted the MPI+X approach for distributed programming where X is a threaded programming model. In this work we chose OCCA, a unified framework that makes use of major multithreading languages (e.g. CUDA and OpenCL) and offers the flexibility to run on several hardware architectures. DGTD schemes are suitable for efficient computations with accelerators thanks to localized element-to-element coupling and the dense algebraic operations required for each element. Moreover, compared to high-order finite-difference schemes, the thin halo inherent to DGTD method reduces the amount of data to be exchanged between MPI processes and storage requirements for RTM procedures. The amount of data to be recorded during simulation is reduced by storing only boundary values in memory rather than on disk and recreating the forward wavefields. Computational results are presented that indicate that these methods are strong scalable up to at least 32 GPUs for a three-dimensional RTM case.\",\"1365-246X\",\"\",\"10.1093/gji/ggv380\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8188177\",\"Image processing;Numerical solutions;Computational seismology\",\"\",\"\",\"\",\"\",\"1\",\"\",\"\",\"\",\"18 Jan 2018\",\"\",\"\",\"OUP\",\"OUP Journals\"\n\"Keynote 1 — It's about time\",\"E. A. Lee\",U. C. Berkeley,\"2014 International Conference on ReConFigurable Computing and FPGAs (ReConFig14)\",\"9 Feb 2015\",\"2014\",\"\",\"\",\"1\",\"1\",\"Summary form only given. Cyber-physical systems are integrations of computation, communication networks, and physical dynamics. Although time plays a central role in the physical world, all widely used software abstractions lack temporal semantics. The notion of correct execution of a program written in every widely-used programming language today does not depend on the temporal behavior of the program. But temporal behavior matters in almost all systems. Even in systems with no particular real-time requirements, timing of programs is relevant to the value delivered by programs, and in the case of concurrent programs, also affects the functionality. In cyber-physical systems, temporal behavior affects not just the value delivered by a system but also its correctness. In this talk, I will argue that time can and must become part of the semantics of programs for a large class of applications. To illustrate that this is both practical and useful, we will describe two recent efforts at Berkeley in the design and implementation of timing-centric software systems. On the implementation side, I will describe PRET machines, which redefine the instruction-set architecture (ISA) of a microprocessor to include temporal semantics. Such machines can be used in high-confidence and safety-critical systems, in energy-constrained systems, in mixed-criticality systems, and as a Real-Time Unit (RTU) that cooperates with a general-purpose processor to provide real-time services, in a manner similar to how a GPU provides graphics services. On the design side, I will briefly describe PTIDES, a programming model for distributed real-time systems.\",\"2325-6532\",\"978-1-4799-5944-0\",\"10.1109/ReConFig.2014.7032479\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7032479\",\"\",\"\",\"instruction sets;programming language semantics\",\"distributed real time systems;programming model;PTIDES;RTU;real time unit;mixed criticality systems;energy constrained systems;safety critical systems;microprocessor;ISA;instruction set architecture;timing centric software systems;Berkeley;concurrent programs;temporal behavior;programming language;program written;software abstractions lack temporal semantics;physical dynamics;communication networks;cyber physical systems\",\"\",\"\",\"\",\"\",\"\",\"9 Feb 2015\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"[Front matter]\",\"\",,\"International Symposium on Code Generation and Optimization (CGO 2011)\",\"5 May 2011\",\"2011\",\"\",\"\",\"i\",\"ii\",\"The following topics are dealt with: polyhedral compilation; machine learning; software-hardware co-design; DSP; data parallel heterogeneous system; GPU programming model; source-to-source compiler optimisation; safety-critical real-time system; WCET-aware C compiler; high-level language; low level code optimization; performance asymmetric multicore processors; tagless instruction cache; software transactional memory optimization; multiprocessor chip; vapor SIMD; on-chip cache hierarchy aware tile scheduling; data locality; NoC based multicore; embedded language; virtual machine; Java JIT compiler; highly scalable distributed dataflow analysis; and flow sensitive pointer analysis.\",\"\",\"978-1-61284-357-5\",\"10.1109/CGO.2011.5764642\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5764642\",\"\",\"\",\"cache storage;data flow analysis;hardware-software codesign;Java;multiprocessing systems;network-on-chip;optimising compilers;parallel processing;safety-critical software;virtual machines\",\"polyhedral compilation;machine learning;software-hardware co-design;DSP;data parallel heterogeneous system;GPU programming model;source-to-source compiler optimisation;safety-critical real-time system;WCET-aware C compiler;high-level language;low level code optimization;performance asymmetric multicore processors;tagless instruction cache;software transactional memory optimization;multiprocessor chip;vapor SIMD;on-chip cache hierarchy aware tile scheduling;data locality;NoC based multicore;embedded language;virtual machine;Java JIT compiler;highly scalable distributed dataflow analysis;flow sensitive pointer analysis\",\"\",\"\",\"\",\"\",\"\",\"5 May 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"[Title page i]\",\"\",,\"2011 11th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing\",\"11 Jul 2011\",\"2011\",\"\",\"\",\"i\",\"i\",\"The following topics are dealt with: cluster computing; cloud computing; grid computing; virtual machines; GPU-based computing; programming models; runtime systems; volunteer computing; distributed systems; resource scheduling; data streaming; caching memory; shared memory; data-driven computing; fault tolerance; checkpointing; communication management; network management; distributed hash tables; I/O systems; file systems; QoS; data intensive computing; MapReduce; security; social network; business workshop; industry workshop; and enterprise workshop.\",\"\",\"978-1-4577-0129-0\",\"10.1109/CCGrid.2011.1\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5948665\",\"\",\"\",\"cache storage;cloud computing;computer graphic equipment;coprocessors;cryptography;data analysis;distributed shared memory systems;fault tolerant computing;grid computing;pattern clustering;quality of service;resource allocation;social networking (online);telecommunication network management;virtual enterprises;virtual machines\",\"cluster computing;cloud computing;grid computing;virtual machine;GPU-based computing;programming model;runtime system;volunteer computing;distributed system;resource scheduling;data streaming;caching memory;shared memory;data-driven computing;fault tolerance;checkpointing;communication management;network management;distributed hash tables;I/O system;QoS;data intensive computing;MapReduce;security;social network;business workshop;industry workshop;enterprise workshop;file system\",\"\",\"\",\"\",\"\",\"\",\"11 Jul 2011\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n"
  },
  {
    "path": "notebooks/data/springer.csv",
    "content": "Item Title,Publication Title,Book Series Title,Journal Volume,Journal Issue,Item DOI,Authors,Publication Year,URL,Content Type\n\"A comparative study of GPU programming models and architectures using neural networks\",\"The Journal of Supercomputing\",\"\",\"61\",\"3\",\"10.1007/s11227-011-0631-3\",\"Vivek K. PallipuramMohammad BhuiyanMelissa C. Smith\",\"2012\",\"http://link.springer.com/article/10.1007/s11227-011-0631-3\",\"Article\"\n\"Extension of the DVM parallel programming model for clusters with heterogeneous nodes\",\"Doklady Mathematics\",\"\",\"84\",\"3\",\"10.1134/S1064562411060408\",\"V. A. BakhtinV. A. KryukovB. N. ChetverushkinE. V. Shil’nikov\",\"2011\",\"http://link.springer.com/article/10.1134/S1064562411060408\",\"Article\"\n\"Parallel programming models for heterogeneous many-cores: a comprehensive survey\",\"CCF Transactions on High Performance Computing\",\"\",\"2\",\"4\",\"10.1007/s42514-020-00039-4\",\"Jianbin FangChun HuangTao TangZheng Wang\",\"2020\",\"http://link.springer.com/article/10.1007/s42514-020-00039-4\",\"Article\"\n\"MapReduce Parallel Programming Model: A State-of-the-Art Survey\",\"International Journal of Parallel Programming\",\"\",\"44\",\"4\",\"10.1007/s10766-015-0395-0\",\"Ren LiHaibo HuHeng LiYunsong WuJianxi Yang\",\"2016\",\"http://link.springer.com/article/10.1007/s10766-015-0395-0\",\"Article\"\n\"Exploring the interoperability of remote GPGPU virtualization using rCUDA and directive-based programming models\",\"The Journal of Supercomputing\",\"\",\"74\",\"11\",\"10.1007/s11227-016-1791-y\",\"Adrián CastellóAntonio J. PeñaRafael MayoJudit PlanasEnrique S. Quintana-OrtíPavan Balaji\",\"2018\",\"http://link.springer.com/article/10.1007/s11227-016-1791-y\",\"Article\"\n\"Porting and scaling OpenACC applications on massively-parallel, GPU-accelerated supercomputers\",\"The European Physical Journal Special Topics\",\"\",\"210\",\"1\",\"10.1140/epjst/e2012-01634-y\",\"A. HartR. AnsaloniA. Gray\",\"2012\",\"http://link.springer.com/article/10.1140/epjst/e2012-01634-y\",\"Article\"\n\"Providing Source Code Level Portability Between CPU and GPU with MapCG\",\"Journal of Computer Science and Technology\",\"\",\"27\",\"1\",\"10.1007/s11390-012-1205-4\",\"Chun-Tao HongDe-Hao ChenYu-Bei ChenWen-Guang ChenWei-Min ZhengHai-Bo Lin\",\"2012\",\"http://link.springer.com/article/10.1007/s11390-012-1205-4\",\"Article\"\n\"Efficiency and productivity for decision making on low-power heterogeneous CPU+GPU SoCs\",\"The Journal of Supercomputing\",\"\",\"77\",\"1\",\"10.1007/s11227-020-03257-3\",\"Denisa-Andreea ConstantinescuAngeles NavarroFrancisco CorberaJuan-Antonio Fernández-MadrigalRafael Asenjo\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-020-03257-3\",\"Article\"\n\"Accelerating incompressible flow computations with a Pthreads-CUDA implementation on small-footprint multi-GPU platforms\",\"The Journal of Supercomputing\",\"\",\"59\",\"2\",\"10.1007/s11227-010-0468-1\",\"Julien C. ThibaultInanc Senocak\",\"2012\",\"http://link.springer.com/article/10.1007/s11227-010-0468-1\",\"Article\"\n\"Panda: A Compiler Framework for Concurrent CPU\n                \n                  \n                \n                $$+$$\n                \n                  \n                    +\n                  \n                \n              GPU Execution of 3D Stencil Computations on GPU-accelerated Supercomputers\",\"International Journal of Parallel Programming\",\"\",\"45\",\"3\",\"10.1007/s10766-016-0454-1\",\"Mohammed SourouriScott B. BadenXing Cai\",\"2017\",\"http://link.springer.com/article/10.1007/s10766-016-0454-1\",\"Article\"\n\"CUDA-Zero: a framework for porting shared memory GPU applications to multi-GPUs\",\"Science China Information Sciences\",\"\",\"55\",\"3\",\"10.1007/s11432-011-4497-z\",\"DeHao ChenWenGuang ChenWeiMin Zheng\",\"2012\",\"http://link.springer.com/article/10.1007/s11432-011-4497-z\",\"Article\"\n\"Optimizing Linpack Benchmark on GPU-Accelerated Petascale Supercomputer\",\"Journal of Computer Science and Technology\",\"\",\"26\",\"5\",\"10.1007/s11390-011-0184-1\",\"Feng WangCan-Qun YangYun-Fei DuJuan ChenHui-Zhan YiWei-Xia Xu\",\"2011\",\"http://link.springer.com/article/10.1007/s11390-011-0184-1\",\"Article\"\n\"Parallel optimization of three-dimensional wedge-shaped underwater acoustic propagation based on MPI+OpenMP hybrid programming model\",\"The Journal of Supercomputing\",\"\",\"77\",\"5\",\"10.1007/s11227-020-03466-w\",\"Zijie ZhuYongxian WangXiaoqian ZhuWei LiuQiang LanWenbin XiaoXinghua Cheng\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-020-03466-w\",\"Article\"\n\"Boosting CUDA Applications with CPU–GPU Hybrid Computing\",\"International Journal of Parallel Programming\",\"\",\"42\",\"2\",\"10.1007/s10766-013-0252-y\",\"Changmin LeeWon Woo RoJean-Luc Gaudiot\",\"2014\",\"http://link.springer.com/article/10.1007/s10766-013-0252-y\",\"Article\"\n\"Resource-efficient utilization of CPU/GPU-based heterogeneous supercomputers for Bayesian phylogenetic inference\",\"The Journal of Supercomputing\",\"\",\"66\",\"1\",\"10.1007/s11227-013-0911-1\",\"Jun ChaiHuayou SuMei WenXing CaiNan WuChunyuan Zhang\",\"2013\",\"http://link.springer.com/article/10.1007/s11227-013-0911-1\",\"Article\"\n\"An efficient parallel collaborative filtering algorithm on multi-GPU platform\",\"The Journal of Supercomputing\",\"\",\"72\",\"6\",\"10.1007/s11227-014-1333-4\",\"Zhongya WangYing LiuSteve Chiu\",\"2016\",\"http://link.springer.com/article/10.1007/s11227-014-1333-4\",\"Article\"\n\"Dual buffer rotation four-stage pipeline for CPU–GPU cooperative computing\",\"Soft Computing\",\"\",\"23\",\"3\",\"10.1007/s00500-017-2795-0\",\"Tao LiQiankun DongYifeng WangXiaoli GongYulu Yang\",\"2019\",\"http://link.springer.com/article/10.1007/s00500-017-2795-0\",\"Article\"\n\"A Comparative Survey of Big Data Computing and HPC: From a Parallel Programming Model to a Cluster Architecture\",\"International Journal of Parallel Programming\",\"\",\"\",\"\",\"10.1007/s10766-021-00717-y\",\"Fei YinFeng Shi\",\"2021\",\"http://link.springer.com/article/10.1007/s10766-021-00717-y\",\"Article\"\n\"GPU-accelerated registration of hyperspectral images using KAZE features\",\"The Journal of Supercomputing\",\"\",\"76\",\"12\",\"10.1007/s11227-020-03214-0\",\"Álvaro OrdóñezFrancisco ArgüelloDora B. HerasBegüm Demir\",\"2020\",\"http://link.springer.com/article/10.1007/s11227-020-03214-0\",\"Article\"\n\"On GPU’s viability as a middleware accelerator\",\"Cluster Computing\",\"\",\"12\",\"2\",\"10.1007/s10586-009-0076-0\",\"Samer Al-KiswanyAbdullah GharaibehElizeu Santos-NetoMatei Ripeanu\",\"2009\",\"http://link.springer.com/article/10.1007/s10586-009-0076-0\",\"Article\"\n\"GPU acceleration of subgraph isomorphism search in large scale graph\",\"Journal of Central South University\",\"\",\"22\",\"6\",\"10.1007/s11771-015-2748-7\",\"Bo Yang 杨博Kai Lu 卢凯Ying-hui Gao 高颖慧Xiao-ping Wang 王小平Kai Xu 徐凯\",\"2015\",\"http://link.springer.com/article/10.1007/s11771-015-2748-7\",\"Article\"\n\"Compiler support for general-purpose computation on GPUs\",\"The Journal of Supercomputing\",\"\",\"50\",\"1\",\"10.1007/s11227-008-0252-7\",\"Yu-Te LinPeng-Sheng Chen\",\"2009\",\"http://link.springer.com/article/10.1007/s11227-008-0252-7\",\"Article\"\n\"CUDA compatible GPU cards as efficient hardware accelerators for Smith-Waterman sequence alignment\",\"BMC Bioinformatics\",\"\",\"9\",\"2\",\"10.1186/1471-2105-9-S2-S10\",\"Svetlin A ManavskiGiorgio Valle\",\"2008\",\"http://link.springer.com/article/10.1186/1471-2105-9-S2-S10\",\"Article\"\n\"Implementation and comparison of binary thinning algorithms on GPU\",\"Computing\",\"\",\"101\",\"8\",\"10.1007/s00607-018-0653-2\",\"Lynda Ben BoudaoudBasel SolaimanAbdelkamel Tari\",\"2019\",\"http://link.springer.com/article/10.1007/s00607-018-0653-2\",\"Article\"\n\"Parallel programing templates for remote sensing image processing on GPU architectures: design and implementation\",\"Computing\",\"\",\"98\",\"1 - 2\",\"10.1007/s00607-014-0392-y\",\"Yan MaLajiao ChenPeng LiuKe Lu\",\"2016\",\"http://link.springer.com/article/10.1007/s00607-014-0392-y\",\"Article\"\n\"Multicore and GPU algorithms for Nussinov RNA folding\",\"BMC Bioinformatics\",\"\",\"15\",\"8\",\"10.1186/1471-2105-15-S8-S1\",\"Junjie LiSanjay RankaSartaj Sahni\",\"2014\",\"http://link.springer.com/article/10.1186/1471-2105-15-S8-S1\",\"Article\"\n\"Efficient GPU-based parallelization of solvation calculation for the blind docking problem\",\"The Journal of Supercomputing\",\"\",\"76\",\"3\",\"10.1007/s11227-019-02834-5\",\"Hocine SaadiNadia Nouali TaboudjematAbdellatif RahmounBaldomero imbernónHoracio Pérez-SánchezJosé M. Cecilia\",\"2020\",\"http://link.springer.com/article/10.1007/s11227-019-02834-5\",\"Article\"\n\"Correlation acceleration in GNSS software receivers using a CUDA-enabled GPU\",\"GPS Solutions\",\"\",\"21\",\"1\",\"10.1007/s10291-016-0516-2\",\"Liangchun XuNesreen I. ZiedanXiaoji NiuWenfei Guo\",\"2017\",\"http://link.springer.com/article/10.1007/s10291-016-0516-2\",\"Article\"\n\"Swarm model checking on the GPU\",\"International Journal on Software Tools for Technology Transfer\",\"\",\"22\",\"5\",\"10.1007/s10009-020-00576-x\",\"Richard DeFranciscoShenghsun ChoMichael FerdmanScott A. Smolka\",\"2020\",\"http://link.springer.com/article/10.1007/s10009-020-00576-x\",\"Article\"\n\"A compound OpenMP/MPI program development toolkit for hybrid CPU/GPU clusters\",\"The Journal of Supercomputing\",\"\",\"66\",\"1\",\"10.1007/s11227-013-0912-0\",\"Hung-Fu LiTyng-Yeu LiangJun-Yao Chiu\",\"2013\",\"http://link.springer.com/article/10.1007/s11227-013-0912-0\",\"Article\"\n\"Accelerating MapReduce framework on multi-GPU systems\",\"Cluster Computing\",\"\",\"17\",\"2\",\"10.1007/s10586-013-0276-5\",\"Hai JiangYi ChenZhi QiaoKuan-Ching LiWonWoo RoJean-Luc Gaudiot\",\"2014\",\"http://link.springer.com/article/10.1007/s10586-013-0276-5\",\"Article\"\n\"On construction of a virtual GPU cluster with InfiniBand and 10 Gb Ethernet virtualization\",\"The Journal of Supercomputing\",\"\",\"74\",\"12\",\"10.1007/s11227-018-2484-5\",\"Chao-Tung YangShuo-Tsung ChenYu-Sheng LoEndah KristianiYu-Wei Chan\",\"2018\",\"http://link.springer.com/article/10.1007/s11227-018-2484-5\",\"Article\"\n\"Techniques of medical image processing and analysis accelerated by high-performance computing: a systematic literature review\",\"Journal of Real-Time Image Processing\",\"\",\"16\",\"6\",\"10.1007/s11554-017-0734-z\",\"Carlos A. S. J. GuloAntonio C. SementilleJoão Manuel R. S. Tavares\",\"2019\",\"http://link.springer.com/article/10.1007/s11554-017-0734-z\",\"Article\"\n\"A survey of graph processing on graphics processing units\",\"The Journal of Supercomputing\",\"\",\"74\",\"5\",\"10.1007/s11227-017-2225-1\",\"Ha-Nguyen TranErik Cambria\",\"2018\",\"http://link.springer.com/article/10.1007/s11227-017-2225-1\",\"Article\"\n\"An study of the effect of process malleability in the energy efficiency on GPU-based clusters\",\"The Journal of Supercomputing\",\"\",\"76\",\"1\",\"10.1007/s11227-019-03034-x\",\"Sergio IserteKrzysztof Rojek\",\"2020\",\"http://link.springer.com/article/10.1007/s11227-019-03034-x\",\"Article\"\n\"Performance-aware composition framework for GPU-based systems\",\"The Journal of Supercomputing\",\"\",\"71\",\"12\",\"10.1007/s11227-014-1105-1\",\"Usman DastgeerChristoph Kessler\",\"2015\",\"http://link.springer.com/article/10.1007/s11227-014-1105-1\",\"Article\"\n\"Novel parallel hybrid genetic algorithms on the GPU for the generalized assignment problem\",\"The Journal of Supercomputing\",\"\",\"78\",\"1\",\"10.1007/s11227-021-03882-6\",\"Huang Zhi-BinFu Guang-TaoDong Dan-YangXiao ChenDing Zhe-LunDai Zhi-Tao\",\"2022\",\"http://link.springer.com/article/10.1007/s11227-021-03882-6\",\"Article\"\n\"Box-counting algorithm on GPU and multi-core CPU: an OpenCL cross-platform study\",\"The Journal of Supercomputing\",\"\",\"65\",\"3\",\"10.1007/s11227-013-0885-z\",\"Jesús JiménezJuan Ruiz de Miras\",\"2013\",\"http://link.springer.com/article/10.1007/s11227-013-0885-z\",\"Article\"\n\"Numerical investigation of supersonic transverse jet interaction on CPU/GPU system\",\"Journal of the Brazilian Society of Mechanical Sciences and Engineering\",\"\",\"42\",\"2\",\"10.1007/s40430-019-2160-6\",\"Jianqi LaiZhengyu TianHang YuHua Li\",\"2020\",\"http://link.springer.com/article/10.1007/s40430-019-2160-6\",\"Article\"\n\"Ignite-GPU: a GPU-enabled in-memory computing architecture on clusters\",\"The Journal of Supercomputing\",\"\",\"77\",\"3\",\"10.1007/s11227-020-03390-z\",\"Amir Hossein SojoodiMajid Salimi BeniFarshad Khunjush\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-020-03390-z\",\"Article\"\n\"MVAPICH2-GPU: optimized GPU to GPU communication for InfiniBand clusters\",\"Computer Science - Research and Development\",\"\",\"26\",\"3 - 4\",\"10.1007/s00450-011-0171-3\",\"Hao WangSreeram PotluriMiao LuoAshish Kumar SinghSayantan SurDhabaleswar K. Panda\",\"2011\",\"http://link.springer.com/article/10.1007/s00450-011-0171-3\",\"Article\"\n\"TH-1: China’s first petaflop supercomputer\",\"Frontiers of Computer Science in China\",\"\",\"4\",\"4\",\"10.1007/s11704-010-0383-x\",\"Xuejun YangXiangke LiaoWeixia XuJunqiang SongQingfeng HuJinshu SuLiquan XiaoKai LuQiang DouJuping JiangCanqun Yang\",\"2010\",\"http://link.springer.com/article/10.1007/s11704-010-0383-x\",\"Article\"\n\"A Halide-based Synergistic Computing Framework for Heterogeneous Systems\",\"Journal of Signal Processing Systems\",\"\",\"91\",\"3 - 4\",\"10.1007/s11265-017-1283-1\",\"Shih-Wei LiaoShao-Yun KuangChia-Lung KaoChia-Heng Tu\",\"2019\",\"http://link.springer.com/article/10.1007/s11265-017-1283-1\",\"Article\"\n\"A GPU-based algorithm for fast node label learning in large and unbalanced biomolecular networks\",\"BMC Bioinformatics\",\"\",\"19\",\"10\",\"10.1186/s12859-018-2301-4\",\"Marco FrascaGiuliano GrossiJessica GliozzoMarco MesitiMarco NotaroPaolo PerlascaAlessandro PetriniGiorgio Valentini\",\"2018\",\"http://link.springer.com/article/10.1186/s12859-018-2301-4\",\"Article\"\n\"The GPU on the simulation of cellular computing models\",\"Soft Computing\",\"\",\"16\",\"2\",\"10.1007/s00500-011-0716-1\",\"José M. CeciliaJosé M. GarcíaGinés D. GuerreroMiguel A. Martínez-del-AmorMario J. Pérez-JiménezManuel Ujaldón\",\"2012\",\"http://link.springer.com/article/10.1007/s00500-011-0716-1\",\"Article\"\n\"SkelCL: a high-level extension of OpenCL for multi-GPU systems\",\"The Journal of Supercomputing\",\"\",\"69\",\"1\",\"10.1007/s11227-014-1213-y\",\"Michel SteuwerSergei Gorlatch\",\"2014\",\"http://link.springer.com/article/10.1007/s11227-014-1213-y\",\"Article\"\n\"GPU-Friendly Parallel Genome Matching with Tiled Access and Reduced State Transition Table\",\"International Journal of Parallel Programming\",\"\",\"41\",\"4\",\"10.1007/s10766-012-0234-5\",\"Yunho OhDoohwan OhWon W. Ro\",\"2013\",\"http://link.springer.com/article/10.1007/s10766-012-0234-5\",\"Article\"\n\"GPU Accelerated Digital Volume Correlation\",\"Experimental Mechanics\",\"\",\"56\",\"2\",\"10.1007/s11340-015-0091-4\",\"T. WangZ. JiangQ. KemaoF. LinS. H. Soon\",\"2016\",\"http://link.springer.com/article/10.1007/s11340-015-0091-4\",\"Article\"\n\"OpenMC: Towards Simplifying Programming for TianHe Supercomputers\",\"Journal of Computer Science and Technology\",\"\",\"29\",\"3\",\"10.1007/s11390-014-1447-4\",\"Xiang-Ke LiaoCan-Qun YungTao TangHui-Zhan YiFeng WangQiang WuJingling Xue\",\"2014\",\"http://link.springer.com/article/10.1007/s11390-014-1447-4\",\"Article\"\n\"Non-rigid Registration for Large Sets of Microscopic Images on Graphics Processors\",\"Journal of Signal Processing Systems\",\"\",\"55\",\"1 - 3\",\"10.1007/s11265-008-0208-4\",\"Antonio RuizManuel UjaldonLee CooperKun Huang\",\"2009\",\"http://link.springer.com/article/10.1007/s11265-008-0208-4\",\"Article\"\n\"PartialRC: A Partial Recomputing Method for Efficient Fault Recovery on GPGPUs\",\"Journal of Computer Science and Technology\",\"\",\"27\",\"2\",\"10.1007/s11390-012-1220-5\",\"Xin-Hai XuXue-Jun YangJing-Ling XueYu-Fei LinYi-Song Lin\",\"2012\",\"http://link.springer.com/article/10.1007/s11390-012-1220-5\",\"Article\"\n\"Comparison of analytical and ML-based models for predicting CPU–GPU data transfer time\",\"Computing\",\"\",\"102\",\"9\",\"10.1007/s00607-019-00780-x\",\"Ali RiahiAbdorreza SavadiMahmoud Naghibzadeh\",\"2020\",\"http://link.springer.com/article/10.1007/s00607-019-00780-x\",\"Article\"\n\"Strategies for maximizing utilization on multi-CPU and multi-GPU heterogeneous architectures\",\"The Journal of Supercomputing\",\"\",\"70\",\"2\",\"10.1007/s11227-014-1200-3\",\"Angeles NavarroAntonio VilchesFrancisco CorberaRafael Asenjo\",\"2014\",\"http://link.springer.com/article/10.1007/s11227-014-1200-3\",\"Article\"\n\"An Efficient GPU-Based Multiple Pattern Matching Algorithm for Packet Filtering\",\"Journal of Signal Processing Systems\",\"\",\"86\",\"2 - 3\",\"10.1007/s11265-016-1139-0\",\"Che-Lun HungChun-Yuan LinPo-Chang Wu\",\"2017\",\"http://link.springer.com/article/10.1007/s11265-016-1139-0\",\"Article\"\n\"Performance analysis of a novel GPU computation-to-core mapping scheme for robust facet image modeling\",\"Journal of Real-Time Image Processing\",\"\",\"10\",\"3\",\"10.1007/s11554-012-0272-7\",\"Seung In ParkYong CaoLayne T. WatsonFrancis Quek\",\"2015\",\"http://link.springer.com/article/10.1007/s11554-012-0272-7\",\"Article\"\n\"Transparent partial page migration between CPU and GPU\",\"Frontiers of Computer Science\",\"\",\"14\",\"3\",\"10.1007/s11704-018-7386-4\",\"Shiqing ZhangZheng QinYaohua YangLi ShenZhiying Wang\",\"2019\",\"http://link.springer.com/article/10.1007/s11704-018-7386-4\",\"Article\"\n\"Cardiac simulation on multi-GPU platform\",\"The Journal of Supercomputing\",\"\",\"59\",\"3\",\"10.1007/s11227-010-0540-x\",\"Venkata Krishna NimmagaddaAli AkogluSalim HaririTalal Moukabary\",\"2012\",\"http://link.springer.com/article/10.1007/s11227-010-0540-x\",\"Article\"\n\"GPU-based parallel computation for structural dynamic response analysis with CUDA\",\"Journal of Mechanical Science and Technology\",\"\",\"28\",\"10\",\"10.1007/s12206-014-0928-2\",\"Dong-Keun KangChang-Wan KimHyun-Ik Yang\",\"2014\",\"http://link.springer.com/article/10.1007/s12206-014-0928-2\",\"Article\"\n\"Hierarchical parallel processing of large scale data clustering on a PC cluster with GPU co-processing\",\"The Journal of Supercomputing\",\"\",\"36\",\"3\",\"10.1007/s11227-006-8294-1\",\"Hiroyuki TakizawaHiroaki Kobayashi\",\"2006\",\"http://link.springer.com/article/10.1007/s11227-006-8294-1\",\"Article\"\n\"Implementation of GPU virtualization using PCI pass-through mechanism\",\"The Journal of Supercomputing\",\"\",\"68\",\"1\",\"10.1007/s11227-013-1034-4\",\"Chao-Tung YangJung-Chun LiuHsien-Yi WangChing-Hsien Hsu\",\"2014\",\"http://link.springer.com/article/10.1007/s11227-013-1034-4\",\"Article\"\n\"cuGimli: optimized implementation of the Gimli authenticated encryption and hash function on GPU for IoT applications\",\"Cluster Computing\",\"\",\"25\",\"1\",\"10.1007/s10586-021-03415-z\",\"KyungHyun HanWai-Kong LeeSeong Oun Hwang\",\"2022\",\"http://link.springer.com/article/10.1007/s10586-021-03415-z\",\"Article\"\n\"A high-performance and energy-efficient exhaustive key search approach via GPU on DES-like cryptosystems\",\"The Journal of Supercomputing\",\"\",\"74\",\"1\",\"10.1007/s11227-017-2120-9\",\"Armin AhmadzadehOmid HajihassaniSaeid Gorgin\",\"2018\",\"http://link.springer.com/article/10.1007/s11227-017-2120-9\",\"Article\"\n\"Fast implementation of block ciphers and PRNGs in Maxwell GPU architecture\",\"Cluster Computing\",\"\",\"19\",\"1\",\"10.1007/s10586-016-0536-2\",\"Wai-Kong LeeHon-Sang CheongRaphael C.-W. PhanBok-Min Goi\",\"2016\",\"http://link.springer.com/article/10.1007/s10586-016-0536-2\",\"Article\"\n\"MPtostream: an OpenMP compiler for CPU-GPU heterogeneous parallel systems\",\"Science China Information Sciences\",\"\",\"55\",\"9\",\"10.1007/s11432-011-4342-4\",\"XueJun YangTao TangGuiBin WangJia JiaXinHai Xu\",\"2012\",\"http://link.springer.com/article/10.1007/s11432-011-4342-4\",\"Article\"\n\"Toward a software transactional memory for heterogeneous CPU–GPU processors\",\"The Journal of Supercomputing\",\"\",\"75\",\"8\",\"10.1007/s11227-018-2347-0\",\"Alejandro VillegasAngeles NavarroRafael AsenjoOscar Plata\",\"2019\",\"http://link.springer.com/article/10.1007/s11227-018-2347-0\",\"Article\"\n\"Performance of CPU/GPU compiler directives on ISO/TTI kernels\",\"Computing\",\"\",\"96\",\"12\",\"10.1007/s00607-013-0367-4\",\"Sayan GhoshTerrence LiaoHenri CalandraBarbara M. Chapman\",\"2014\",\"http://link.springer.com/article/10.1007/s00607-013-0367-4\",\"Article\"\n\"Accelerating Data Analytics on Integrated GPU Platforms via Runtime Specialization\",\"International Journal of Parallel Programming\",\"\",\"46\",\"2\",\"10.1007/s10766-016-0482-x\",\"Naila FarooquiIndrajit RoyYuan ChenVanish TalwarRajkishore BarikBrian LewisTatiana ShpeismanKarsten Schwan\",\"2018\",\"http://link.springer.com/article/10.1007/s10766-016-0482-x\",\"Article\"\n\"Transform coding on programmable stream processors\",\"The Journal of Supercomputing\",\"\",\"45\",\"1\",\"10.1007/s11227-008-0192-2\",\"Haiyan LiChunyuan ZhangLi LiJu Ren\",\"2008\",\"http://link.springer.com/article/10.1007/s11227-008-0192-2\",\"Article\"\n\"Highly Parallelable Bidimensional Median Filter for Modern Parallel Programming Models\",\"Journal of Signal Processing Systems\",\"\",\"71\",\"3\",\"10.1007/s11265-012-0715-1\",\"Ricardo M. SánchezPaul A. Rodríguez\",\"2013\",\"http://link.springer.com/article/10.1007/s11265-012-0715-1\",\"Article\"\n\"GPU-based image method for room impulse response calculation\",\"Multimedia Tools and Applications\",\"\",\"75\",\"9\",\"10.1007/s11042-015-2943-4\",\"Zhong-hua FuJian-wei Li\",\"2016\",\"http://link.springer.com/article/10.1007/s11042-015-2943-4\",\"Article\"\n\"An analytical GPU performance model for 3D stencil computations from the angle of data traffic\",\"The Journal of Supercomputing\",\"\",\"71\",\"7\",\"10.1007/s11227-015-1392-1\",\"Huayou SuXing CaiMei WenChunyuan Zhang\",\"2015\",\"http://link.springer.com/article/10.1007/s11227-015-1392-1\",\"Article\"\n\"Design and evaluation of multi-GPU enabled Multiple Symbol Detection algorithm\",\"The Journal of Supercomputing\",\"\",\"72\",\"6\",\"10.1007/s11227-015-1475-z\",\"Ying LiuHaixin ZhengRenliang ZhaoLiheng Jian\",\"2016\",\"http://link.springer.com/article/10.1007/s11227-015-1475-z\",\"Article\"\n\"GPU-Accelerated Simulation of Massive Spatial Data Based on the Modified Planar Rotator Model\",\"Mathematical Geosciences\",\"\",\"52\",\"1\",\"10.1007/s11004-019-09835-3\",\"Milan ŽukovičMichal BorovskýMatúš LachDionissios T. Hristopulos\",\"2020\",\"http://link.springer.com/article/10.1007/s11004-019-09835-3\",\"Article\"\n\"CUDASW++ 3.0: accelerating Smith-Waterman protein database search by coupling CPU and GPU SIMD instructions\",\"BMC Bioinformatics\",\"\",\"14\",\"1\",\"10.1186/1471-2105-14-117\",\"Yongchao LiuAdrianto WirawanBertil Schmidt\",\"2013\",\"http://link.springer.com/article/10.1186/1471-2105-14-117\",\"Article\"\n\"DOPA: GPU-based protein alignment using database and memory access optimizations\",\"BMC Research Notes\",\"\",\"4\",\"1\",\"10.1186/1756-0500-4-261\",\"Laiq HasanMarijn KentieZaid Al-Ars\",\"2011\",\"http://link.springer.com/article/10.1186/1756-0500-4-261\",\"Article\"\n\"GPU implementations of a relaxation scheme for image partitioning: GLSL versus CUDA\",\"Computing and Visualization in Science\",\"\",\"14\",\"5\",\"10.1007/s00791-012-0176-x\",\"Tetyana IvanovskaLars LinsenHorst K. HahnHenry Völzke\",\"2011\",\"http://link.springer.com/article/10.1007/s00791-012-0176-x\",\"Article\"\n\"Addressing Memory and Speed Problems in Nondestructive Defect Characterization: Element-by-Element Processing on a GPU\",\"Journal of Nondestructive Evaluation\",\"\",\"34\",\"2\",\"10.1007/s10921-015-0282-z\",\"S. SivasuthanV. U. KarthikA. RahunanthanP. JayakumarR. S. ThyagarajanLalita UdpaS. R. H. Hoole\",\"2015\",\"http://link.springer.com/article/10.1007/s10921-015-0282-z\",\"Article\"\n\"GPU-accelerated computing for Lagrangian coherent structures of multi-body gravitational regimes\",\"Astrophysics and Space Science\",\"\",\"362\",\"4\",\"10.1007/s10509-017-3050-y\",\"Mingpei LinMing XuXiaoyu Fu\",\"2017\",\"http://link.springer.com/article/10.1007/s10509-017-3050-y\",\"Article\"\n\"Addressing GPU On-Chip Shared Memory Bank Conflicts Using Elastic Pipeline\",\"International Journal of Parallel Programming\",\"\",\"41\",\"3\",\"10.1007/s10766-012-0201-1\",\"Chunyang GouGeorgi N. Gaydadjiev\",\"2013\",\"http://link.springer.com/article/10.1007/s10766-012-0201-1\",\"Article\"\n\"Classification and disease probability prediction via machine learning programming based on multi-GPU cluster MapReduce system\",\"The Journal of Supercomputing\",\"\",\"73\",\"5\",\"10.1007/s11227-016-1883-8\",\"Jinjing LiQingkui ChenBocheng Liu\",\"2017\",\"http://link.springer.com/article/10.1007/s11227-016-1883-8\",\"Article\"\n\"A Generic Paradigm for Accelerating Laplacian-Based Mesh Smoothing on the GPU\",\"Arabian Journal for Science and Engineering\",\"\",\"39\",\"11\",\"10.1007/s13369-014-1406-y\",\"Gang MeiJohn C. TipperNengxiong Xu\",\"2014\",\"http://link.springer.com/article/10.1007/s13369-014-1406-y\",\"Article\"\n\"Scaling up MapReduce-based Big Data Processing on Multi-GPU systems\",\"Cluster Computing\",\"\",\"18\",\"1\",\"10.1007/s10586-014-0400-1\",\"Hai JiangYi ChenZhi QiaoTien-Hsiung WengKuan-Ching Li\",\"2015\",\"http://link.springer.com/article/10.1007/s10586-014-0400-1\",\"Article\"\n\"GPU acceleration of Fitch’s parsimony on protein data: from Kepler to Turing\",\"The Journal of Supercomputing\",\"\",\"76\",\"12\",\"10.1007/s11227-020-03225-x\",\"Sergio Santander-JiménezMiguel A. Vega-RodríguezAntonio Zahinos-MárquezLeonel Sousa\",\"2020\",\"http://link.springer.com/article/10.1007/s11227-020-03225-x\",\"Article\"\n\"A Comparative Study and Evaluation of Parallel Programming Models for Shared-Memory Parallel Architectures\",\"New Generation Computing\",\"\",\"31\",\"3\",\"10.1007/s00354-013-0301-5\",\"Luis Miguel SanchezJavier FernandezRafael SotomayorSoledad EscolarJ. Daniel. Garcia\",\"2013\",\"http://link.springer.com/article/10.1007/s00354-013-0301-5\",\"Article\"\n\"Leveraging HPC accelerator architectures with modern techniques — hydrologic modeling on GPUs with ParFlow\",\"Computational Geosciences\",\"\",\"25\",\"5\",\"10.1007/s10596-021-10051-4\",\"Jaro HokkanenStefan KolletJiri KrausAndreas HertenMarkus HrywniakDirk Pleiter\",\"2021\",\"http://link.springer.com/article/10.1007/s10596-021-10051-4\",\"Article\"\n\"Programming for scientific computing on peta-scale heterogeneous parallel systems\",\"Journal of Central South University\",\"\",\"20\",\"5\",\"10.1007/s11771-013-1602-z\",\"Can-qun Yang 杨灿群Qiang Wu 吴强Tao Tang 唐滔Feng Wang 王锋Jing-ling Xue 薛京灵\",\"2013\",\"http://link.springer.com/article/10.1007/s11771-013-1602-z\",\"Article\"\n\"GPU-based leaves contour generation algorithm\",\"Journal of Shanghai University (English Edition)\",\"\",\"15\",\"5\",\"10.1007/s11741-011-0754-3\",\"Jing-qiao Zhang 张景峤Ting-ting Wang 王廷婷\",\"2011\",\"http://link.springer.com/article/10.1007/s11741-011-0754-3\",\"Article\"\n\"Approximate similarity search for online multimedia services on distributed CPU–GPU platforms\",\"The VLDB Journal\",\"\",\"23\",\"3\",\"10.1007/s00778-013-0329-7\",\"George TeodoroEduardo ValleNathan MarianoRicardo TorresWagner Meira JrJoel H. Saltz\",\"2014\",\"http://link.springer.com/article/10.1007/s00778-013-0329-7\",\"Article\"\n\"GPU-based efficient join algorithms on Hadoop\",\"The Journal of Supercomputing\",\"\",\"77\",\"1\",\"10.1007/s11227-020-03262-6\",\"Hongzhi WangNing LiZheng WangJianing Li\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-020-03262-6\",\"Article\"\n\"Fast kNN query processing over a multi-node GPU environment\",\"The Journal of Supercomputing\",\"\",\"\",\"\",\"10.1007/s11227-021-03975-2\",\"Ricardo J. BarrientosJavier A. RiquelmeRuber Hernández-GarcíaCristóbal A. NavarroWladimir Soto-Silva\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-021-03975-2\",\"Article\"\n\"Stencil computations on heterogeneous platforms for the Jacobi method: GPUs versus Cell BE\",\"The Journal of Supercomputing\",\"\",\"62\",\"2\",\"10.1007/s11227-012-0749-y\",\"José M. CeciliaJosé L. AbellánJuan FernándezManuel E. AcacioJosé M. GarcíaManuel Ujaldón\",\"2012\",\"http://link.springer.com/article/10.1007/s11227-012-0749-y\",\"Article\"\n\"Optimizing dataflow applications on heterogeneous environments\",\"Cluster Computing\",\"\",\"15\",\"2\",\"10.1007/s10586-010-0151-6\",\"George TeodoroTimothy D. R. HartleyUmit V. CatalyurekRenato Ferreira\",\"2012\",\"http://link.springer.com/article/10.1007/s10586-010-0151-6\",\"Article\"\n\"Introducing and Implementing the Allpairs Skeleton for Programming Multi-GPU Systems\",\"International Journal of Parallel Programming\",\"\",\"42\",\"4\",\"10.1007/s10766-013-0265-6\",\"Michel SteuwerMalte FrieseSebastian AlbersSergei Gorlatch\",\"2014\",\"http://link.springer.com/article/10.1007/s10766-013-0265-6\",\"Article\"\n\"Implementation of a High Throughput 3GPP Turbo Decoder on GPU\",\"Journal of Signal Processing Systems\",\"\",\"65\",\"2\",\"10.1007/s11265-011-0617-7\",\"Michael WuYang SunGuohui WangJoseph R. Cavallaro\",\"2011\",\"http://link.springer.com/article/10.1007/s11265-011-0617-7\",\"Article\"\n\"A real-time implementation of SIFT using GPU\",\"Journal of Real-Time Image Processing\",\"\",\"14\",\"2\",\"10.1007/s11554-014-0446-6\",\"K. Aniruddha AcharyaR. Venkatesh BabuSathish S. Vadhiyar\",\"2018\",\"http://link.springer.com/article/10.1007/s11554-014-0446-6\",\"Article\"\n\"Optimizing tensor contraction expressions for hybrid CPU-GPU execution\",\"Cluster Computing\",\"\",\"16\",\"1\",\"10.1007/s10586-011-0179-2\",\"Wenjing MaSriram KrishnamoorthyOreste VillaKarol KowalskiGagan Agrawal\",\"2013\",\"http://link.springer.com/article/10.1007/s10586-011-0179-2\",\"Article\"\n\"Accelerated parametric chamfer alignment using a parallel, pipelined GPU realization\",\"Journal of Real-Time Image Processing\",\"\",\"16\",\"5\",\"10.1007/s11554-017-0668-5\",\"Ahmed ElliethyGaurav Sharma\",\"2019\",\"http://link.springer.com/article/10.1007/s11554-017-0668-5\",\"Article\"\n\"Reveal training performance mystery between TensorFlow and PyTorch in the single GPU environment\",\"Science China Information Sciences\",\"\",\"65\",\"1\",\"10.1007/s11432-020-3182-1\",\"Hulin DaiXuan PengXuanhua ShiLigang HeQian XiongHai Jin\",\"2021\",\"http://link.springer.com/article/10.1007/s11432-020-3182-1\",\"Article\"\n\"GPU computing in discrete optimization. Part I: Introduction to the GPU\",\"EURO Journal on Transportation and Logistics\",\"\",\"2\",\"1 - 2\",\"10.1007/s13676-013-0025-1\",\"André R. BrodtkorbTrond R. HagenChristian SchulzGeir Hasle\",\"2013\",\"http://link.springer.com/article/10.1007/s13676-013-0025-1\",\"Article\"\n\"Accelerating geospatial analysis on GPUs using CUDA\",\"Journal of Zhejiang University SCIENCE C\",\"\",\"12\",\"12\",\"10.1631/jzus.C1100051\",\"Ying-jie XiaLi KuangXiu-mei Li\",\"2011\",\"http://link.springer.com/article/10.1631/jzus.C1100051\",\"Article\"\n\"Multi-device Controllers: A Library to Simplify Parallel Heterogeneous Programming\",\"International Journal of Parallel Programming\",\"\",\"47\",\"1\",\"10.1007/s10766-017-0542-x\",\"Ana Moreton-FernandezArturo Gonzalez-EscribanoDiego R. Llanos\",\"2019\",\"http://link.springer.com/article/10.1007/s10766-017-0542-x\",\"Article\"\n\"Simulation of bevel gear cutting with GPGPUs—performance and productivity\",\"Computer Science - Research and Development\",\"\",\"26\",\"3 - 4\",\"10.1007/s00450-011-0158-0\",\"Sandra WienkeDmytro PlotnikovDieter an MeyChristian BischofArio HardjosuwitoChristof GorgelsChristian Brecher\",\"2011\",\"http://link.springer.com/article/10.1007/s00450-011-0158-0\",\"Article\"\n\"A parallel solving method for block-tridiagonal equations on CPU–GPU heterogeneous computing systems\",\"The Journal of Supercomputing\",\"\",\"73\",\"5\",\"10.1007/s11227-016-1881-x\",\"Wangdong YangKenli LiKeqin Li\",\"2017\",\"http://link.springer.com/article/10.1007/s11227-016-1881-x\",\"Article\"\n\"GMMA: GPU-based multiobjective memetic algorithms for vehicle routing problem with route balancing\",\"Applied Intelligence\",\"\",\"49\",\"1\",\"10.1007/s10489-018-1210-6\",\"Zizhen ZhangYuyan SunHong XieYi TengJiahai Wang\",\"2019\",\"http://link.springer.com/article/10.1007/s10489-018-1210-6\",\"Article\"\n\"A GPU-oriented online recommendation algorithm for efficient processing of time-varying continuous data streams\",\"Knowledge and Information Systems\",\"\",\"53\",\"3\",\"10.1007/s10115-016-0967-3\",\"Chandima HewaNadungodageYuni XiaJohn Jaehwan Lee\",\"2017\",\"http://link.springer.com/article/10.1007/s10115-016-0967-3\",\"Article\"\n\"Static detection of uncoalesced accesses in GPU programs\",\"Formal Methods in System Design\",\"\",\"\",\"\",\"10.1007/s10703-021-00362-8\",\"Rajeev AlurJoseph DeviettiOmar S. Navarro LeijaNimit Singhania\",\"2021\",\"http://link.springer.com/article/10.1007/s10703-021-00362-8\",\"Article\"\n\"Efficient parallel algorithm for computing rough set approximation on GPU\",\"Soft Computing\",\"\",\"22\",\"22\",\"10.1007/s00500-018-3050-z\",\"Si-Yuan JingGong-Liang LiKai ZengWei PanCai-Ming Liu\",\"2018\",\"http://link.springer.com/article/10.1007/s00500-018-3050-z\",\"Article\"\n\"Accelerating the discontinuous Galerkin method for seismic wave propagation simulations using multiple GPUs with CUDA and MPI\",\"Earthquake Science\",\"\",\"26\",\"6\",\"10.1007/s11589-013-0047-7\",\"Dawei MuPo ChenLiqiang Wang\",\"2013\",\"http://link.springer.com/article/10.1007/s11589-013-0047-7\",\"Article\"\n\"Efficient graph computation on hybrid CPU and GPU systems\",\"The Journal of Supercomputing\",\"\",\"71\",\"4\",\"10.1007/s11227-015-1378-z\",\"Tao ZhangJingjie ZhangWei ShuMin-You WuXiaoyao Liang\",\"2015\",\"http://link.springer.com/article/10.1007/s11227-015-1378-z\",\"Article\"\n\"Real-time patch-based medical image modality propagation by GPU computing\",\"Journal of Real-Time Image Processing\",\"\",\"13\",\"1\",\"10.1007/s11554-016-0568-0\",\"Eduardo AlcaínAngel Torrado-CarvajalAntonio S. MontemayorNorberto Malpica\",\"2017\",\"http://link.springer.com/article/10.1007/s11554-016-0568-0\",\"Article\"\n\"Parallel implementation of 3D protein structure similarity searches using a GPU and the CUDA\",\"Journal of Molecular Modeling\",\"\",\"20\",\"2\",\"10.1007/s00894-014-2067-1\",\"Dariusz MrozekMiłosz BrożekBożena Małysiak-Mrozek\",\"2014\",\"http://link.springer.com/article/10.1007/s00894-014-2067-1\",\"Article\"\n\"Implementation of the moving particle semi-implicit method on GPU\",\"Science China Physics, Mechanics and Astronomy\",\"\",\"54\",\"3\",\"10.1007/s11433-010-4241-5\",\"XiaoSong ZhuLiang ChengLin LuBin Teng\",\"2011\",\"http://link.springer.com/article/10.1007/s11433-010-4241-5\",\"Article\"\n\"Evaluating application performance and energy consumption on hybrid CPU+GPU architecture\",\"Cluster Computing\",\"\",\"16\",\"3\",\"10.1007/s10586-012-0219-6\",\"Edson Luiz PadoinLaércio Lima PillaFrancieli Zanon BoitoRodrigo Virote KassickPedro VelhoPhilippe O. A. Navaux\",\"2013\",\"http://link.springer.com/article/10.1007/s10586-012-0219-6\",\"Article\"\n\"Optimization and acceleration of flow simulations for CFD on CPU/GPU architecture\",\"Journal of the Brazilian Society of Mechanical Sciences and Engineering\",\"\",\"41\",\"7\",\"10.1007/s40430-019-1793-9\",\"Jiang LeiDa-li LiYun-long ZhouWei Liu\",\"2019\",\"http://link.springer.com/article/10.1007/s40430-019-1793-9\",\"Article\"\n\"ADEPT: a domain independent sequence alignment strategy for gpu architectures\",\"BMC Bioinformatics\",\"\",\"21\",\"1\",\"10.1186/s12859-020-03720-1\",\"Muaaz G. AwanJack DeslippeAydin BulucOguz SelvitopiSteven HofmeyrLeonid OlikerKatherine Yelick\",\"2020\",\"http://link.springer.com/article/10.1186/s12859-020-03720-1\",\"Article\"\n\"GPU Based N-Gram String Matching Algorithm with Score Table Approach for String Searching in Many Documents\",\"Journal of The Institution of Engineers (India): Series B\",\"\",\"98\",\"5\",\"10.1007/s40031-017-0295-3\",\"K. G. SrinivasaB. N. Shree Devi\",\"2017\",\"http://link.springer.com/article/10.1007/s40031-017-0295-3\",\"Article\"\n\"A GPU implementation of a hybrid evolutionary algorithm: GPuEGO\",\"The Journal of Supercomputing\",\"\",\"70\",\"2\",\"10.1007/s11227-014-1136-7\",\"J. M. García-MartínezE. M. GarzónP. M. Ortigosa\",\"2014\",\"http://link.springer.com/article/10.1007/s11227-014-1136-7\",\"Article\"\n\"NMF-mGPU: non-negative matrix factorization on multi-GPU systems\",\"BMC Bioinformatics\",\"\",\"16\",\"1\",\"10.1186/s12859-015-0485-4\",\"Edgardo Mejía-RoaDaniel Tabas-MadridJavier SetoainCarlos GarcíaFrancisco TiradoAlberto Pascual-Montano\",\"2015\",\"http://link.springer.com/article/10.1186/s12859-015-0485-4\",\"Article\"\n\"A Parallel Algorithm for UAV Flight Route Planning on GPU\",\"International Journal of Parallel Programming\",\"\",\"39\",\"6\",\"10.1007/s10766-011-0171-8\",\"Seçkin SancıVeysi İşler\",\"2011\",\"http://link.springer.com/article/10.1007/s10766-011-0171-8\",\"Article\"\n\"Accelerating data gravitation-based classification using GPU\",\"The Journal of Supercomputing\",\"\",\"75\",\"6\",\"10.1007/s11227-018-2253-5\",\"Lizhi PengHaibo ZhangHoucine HassanYuehui ChenBo Yang\",\"2019\",\"http://link.springer.com/article/10.1007/s11227-018-2253-5\",\"Article\"\n\"CMSA: a heterogeneous CPU/GPU computing system for multiple similar RNA/DNA sequence alignment\",\"BMC Bioinformatics\",\"\",\"18\",\"1\",\"10.1186/s12859-017-1725-6\",\"Xi ChenChen WangShanjiang TangCe YuQuan Zou\",\"2017\",\"http://link.springer.com/article/10.1186/s12859-017-1725-6\",\"Article\"\n\"Accelerating the problem of microrheology in colloidal systems on a GPU\",\"The Journal of Supercomputing\",\"\",\"73\",\"1\",\"10.1007/s11227-016-1867-8\",\"G. OrtegaA. M. PuertasE. M. Garzón\",\"2017\",\"http://link.springer.com/article/10.1007/s11227-016-1867-8\",\"Article\"\n\"Offloading data encryption to GPU in database systems\",\"The Journal of Supercomputing\",\"\",\"69\",\"1\",\"10.1007/s11227-014-1159-0\",\"Heeseung JoSeung-Tae HongJae-Woo ChangDong Hoon Choi\",\"2014\",\"http://link.springer.com/article/10.1007/s11227-014-1159-0\",\"Article\"\n\"Accelerating electron tomography reconstruction algorithm ICON with GPU\",\"Biophysics Reports\",\"\",\"3\",\"1 - 3\",\"10.1007/s41048-017-0041-z\",\"Yu ChenZihao WangJingrong ZhangLun LiXiaohua WanFei SunFa Zhang\",\"2017\",\"http://link.springer.com/article/10.1007/s41048-017-0041-z\",\"Article\"\n\"GPU-based exhaustive algorithms processing kNN queries\",\"The Journal of Supercomputing\",\"\",\"73\",\"10\",\"10.1007/s11227-017-2110-y\",\"Ricardo J. BarrientosFabricio MillaguirJosé L. SánchezEnrique Arias\",\"2017\",\"http://link.springer.com/article/10.1007/s11227-017-2110-y\",\"Article\"\n\"GPU parallel strategy for parameterized LSM-based topology optimization using isogeometric analysis\",\"Structural and Multidisciplinary Optimization\",\"\",\"56\",\"2\",\"10.1007/s00158-017-1672-x\",\"Zhaohui XiaYingjun WangQifu WangChao Mei\",\"2017\",\"http://link.springer.com/article/10.1007/s00158-017-1672-x\",\"Article\"\n\"Physically based visual simulation of the Lattice Boltzmann method on the GPU: a survey\",\"The Journal of Supercomputing\",\"\",\"74\",\"7\",\"10.1007/s11227-018-2392-8\",\"Octavio Navarro-HinojosaSergio Ruiz-LozaMoisés Alencastre-Miranda\",\"2018\",\"http://link.springer.com/article/10.1007/s11227-018-2392-8\",\"Article\"\n\"A review of CUDA optimization techniques and tools for structured grid computing\",\"Computing\",\"\",\"102\",\"4\",\"10.1007/s00607-019-00744-1\",\"Mayez A. Al-MouhamedAyaz H. KhanNazeeruddin Mohammad\",\"2020\",\"http://link.springer.com/article/10.1007/s00607-019-00744-1\",\"Article\"\n\"Scalable CAIM discretization on multiple GPUs using concurrent kernels\",\"The Journal of Supercomputing\",\"\",\"69\",\"1\",\"10.1007/s11227-014-1151-8\",\"Alberto CanoSebastián VenturaKrzysztof J. Cios\",\"2014\",\"http://link.springer.com/article/10.1007/s11227-014-1151-8\",\"Article\"\n\"Understanding co-run performance on CPU-GPU integrated processors: observations, insights, directions\",\"Frontiers of Computer Science\",\"\",\"11\",\"1\",\"10.1007/s11704-016-5468-8\",\"Qi ZhuBo WuXipeng ShenKai ShenLi ShenZhiying Wang\",\"2017\",\"http://link.springer.com/article/10.1007/s11704-016-5468-8\",\"Article\"\n\"High-Level Programming for Many-Cores Using C++14 and the STL\",\"International Journal of Parallel Programming\",\"\",\"46\",\"1\",\"10.1007/s10766-017-0497-y\",\"Michael HaidlSergei Gorlatch\",\"2018\",\"http://link.springer.com/article/10.1007/s10766-017-0497-y\",\"Article\"\n\"RT-CUDA: A Software Tool for CUDA Code Restructuring\",\"International Journal of Parallel Programming\",\"\",\"45\",\"3\",\"10.1007/s10766-016-0433-6\",\"Ayaz H. KhanMayez Al-MouhamedMuhammed Al-MulhemAdel F. Ahmed\",\"2017\",\"http://link.springer.com/article/10.1007/s10766-016-0433-6\",\"Article\"\n\"Parallel data mining techniques on Graphics Processing Unit with Compute Unified Device Architecture (CUDA)\",\"The Journal of Supercomputing\",\"\",\"64\",\"3\",\"10.1007/s11227-011-0672-7\",\"Liheng JianCheng WangYing LiuShenshen LiangWeidong YiYong Shi\",\"2013\",\"http://link.springer.com/article/10.1007/s11227-011-0672-7\",\"Article\"\n\"Locality-Aware Automatic Parallelization for GPGPU with OpenHMPP Directives\",\"International Journal of Parallel Programming\",\"\",\"44\",\"3\",\"10.1007/s10766-015-0362-9\",\"José M. AndiónManuel ArenazFrançois BodinGabriel RodríguezJuan Touriño\",\"2016\",\"http://link.springer.com/article/10.1007/s10766-015-0362-9\",\"Article\"\n\"GPUs-RRTMG_LW: high-efficient and scalable computing for a longwave radiative transfer model on multiple GPUs\",\"The Journal of Supercomputing\",\"\",\"77\",\"5\",\"10.1007/s11227-020-03451-3\",\"Yuzhu WangMingxin GuoYuan ZhaoJinrong Jiang\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-020-03451-3\",\"Article\"\n\"SEIP: System for Efficient Image Processing on Distributed Platform\",\"Journal of Computer Science and Technology\",\"\",\"30\",\"6\",\"10.1007/s11390-015-1595-1\",\"Tao LiuYi LiuQin LiXiang-Rong WangFei GaoYan-Chao ZhuDe-Pei Qian\",\"2015\",\"http://link.springer.com/article/10.1007/s11390-015-1595-1\",\"Article\"\n\"Guest Editorial for Programming Models and Algorithms for Data Analysis in HPC Systems\",\"International Journal of Parallel Programming\",\"\",\"46\",\"3\",\"10.1007/s10766-017-0531-0\",\"Salvatore CuomoMarco AldinucciMassimo Torquati\",\"2018\",\"http://link.springer.com/article/10.1007/s10766-017-0531-0\",\"Article\"\n\"Automatic CPU/GPU Generation of Multi-versioned OpenCL Kernels for C++ Scientific Applications\",\"International Journal of Parallel Programming\",\"\",\"45\",\"2\",\"10.1007/s10766-016-0425-6\",\"Rafael SotomayorLuis Miguel SanchezJavier Garcia BlasJavier FernandezJ. Daniel Garcia\",\"2017\",\"http://link.springer.com/article/10.1007/s10766-016-0425-6\",\"Article\"\n\"A fast GPU-based hybrid algorithm for addition chains\",\"Cluster Computing\",\"\",\"21\",\"4\",\"10.1007/s10586-018-2840-5\",\"Hatem M. BahigKhaled A. AbdElbari\",\"2018\",\"http://link.springer.com/article/10.1007/s10586-018-2840-5\",\"Article\"\n\"Hydrodynamic modeling of flash flood in mountain watersheds based on high-performance GPU computing\",\"Natural Hazards\",\"\",\"91\",\"2\",\"10.1007/s11069-017-3141-7\",\"Xiaozhang HuLixiang Song\",\"2018\",\"http://link.springer.com/article/10.1007/s11069-017-3141-7\",\"Article\"\n\"GPU-based parallel Shadow Features generation at neural system for improving gait human activity recognition\",\"Multimedia Tools and Applications\",\"\",\"80\",\"8\",\"10.1007/s11042-020-10274-0\",\"Ricardo BritoRobert P. Biuk-AghaiSimon Fong\",\"2021\",\"http://link.springer.com/article/10.1007/s11042-020-10274-0\",\"Article\"\n\"Parallel SUMIS soft detector for large MIMO systems on multicore and GPU\",\"The Journal of Supercomputing\",\"\",\"75\",\"3\",\"10.1007/s11227-018-2403-9\",\"Carla RamiroM. Ángeles SimarroAlberto GonzalezAntonio M. Vidal\",\"2019\",\"http://link.springer.com/article/10.1007/s11227-018-2403-9\",\"Article\"\n\"CUDAMPF: a multi-tiered parallel framework for accelerating protein sequence search in HMMER on CUDA-enabled GPU\",\"BMC Bioinformatics\",\"\",\"17\",\"1\",\"10.1186/s12859-016-0946-4\",\"Hanyu JiangNarayan Ganesan\",\"2016\",\"http://link.springer.com/article/10.1186/s12859-016-0946-4\",\"Article\"\n\"GPU acceleration of a 2D compressible Euler solver on CUDA-based block-structured Cartesian meshes\",\"Journal of the Brazilian Society of Mechanical Sciences and Engineering\",\"\",\"42\",\"5\",\"10.1007/s40430-020-02290-w\",\"Feng WeiLiang JinJun LiuFeng DingXinping Zheng\",\"2020\",\"http://link.springer.com/article/10.1007/s40430-020-02290-w\",\"Article\"\n\"Implementation of a High Throughput Soft MIMO Detector on GPU\",\"Journal of Signal Processing Systems\",\"\",\"64\",\"1\",\"10.1007/s11265-010-0523-4\",\"Michael WuYang SunSiddharth GuptaJoseph R. Cavallaro\",\"2011\",\"http://link.springer.com/article/10.1007/s11265-010-0523-4\",\"Article\"\n\"A GPU implementation of a structural-similarity-based aerial-image classification\",\"The Journal of Supercomputing\",\"\",\"65\",\"2\",\"10.1007/s11227-013-0875-1\",\"Rok ČešnovarVladimir RisojevićZdenka BabićTomaž DobravecPatricio Bulić\",\"2013\",\"http://link.springer.com/article/10.1007/s11227-013-0875-1\",\"Article\"\n\"Adaptive Optimization \n                \n                  \n                \n                $$l_1$$\n                \n                  \n                    \n                      l\n                      1\n                    \n                  \n                \n              -Minimization Solvers on GPU\",\"International Journal of Parallel Programming\",\"\",\"45\",\"3\",\"10.1007/s10766-016-0430-9\",\"Jiaquan GaoZejie LiRonghua LiangGuixia He\",\"2017\",\"http://link.springer.com/article/10.1007/s10766-016-0430-9\",\"Article\"\n\"A fast Hough Transform algorithm for straight lines detection in an image using GPU parallel computing with CUDA-C\",\"The Journal of Supercomputing\",\"\",\"73\",\"11\",\"10.1007/s11227-017-2051-5\",\"R. Yam-UicabJ. L. Lopez-MartinezJ. A. Trejo-SanchezH. Hidalgo-SilvaS. Gonzalez-Segura\",\"2017\",\"http://link.springer.com/article/10.1007/s11227-017-2051-5\",\"Article\"\n\"GPU-accelerated level-set segmentation\",\"Journal of Real-Time Image Processing\",\"\",\"12\",\"1\",\"10.1007/s11554-013-0378-6\",\"Julián Lamas-RodríguezDora B. HerasFrancisco ArgüelloDagmar KainmuellerStefan ZachowMontserrat Bóo\",\"2016\",\"http://link.springer.com/article/10.1007/s11554-013-0378-6\",\"Article\"\n\"Complex shading efficiently for ray tracing on GPU\",\"Multimedia Tools and Applications\",\"\",\"74\",\"3\",\"10.1007/s11042-013-1712-5\",\"Xin YangDuan-qing XuLei ZhaoBing Yang\",\"2015\",\"http://link.springer.com/article/10.1007/s11042-013-1712-5\",\"Article\"\n\"GPU-accelerated computing of three-dimensional solar wind background\",\"Science China Earth Sciences\",\"\",\"56\",\"11\",\"10.1007/s11430-013-4661-y\",\"XueShang FengDingKun ZhongChangQing XiangYao Zhang\",\"2013\",\"http://link.springer.com/article/10.1007/s11430-013-4661-y\",\"Article\"\n\"An efficient parallel entropy coding method for JPEG compression based on GPU\",\"The Journal of Supercomputing\",\"\",\"\",\"\",\"10.1007/s11227-021-03971-6\",\"Fushun ZhuHua Yan\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-021-03971-6\",\"Article\"\n\"Matrix-free GPU implementation of a preconditioned conjugate gradient solver for anisotropic elliptic PDEs\",\"Computing and Visualization in Science\",\"\",\"16\",\"2\",\"10.1007/s00791-014-0223-x\",\"Eike MüllerXu GuoRobert ScheichlSinan Shi\",\"2013\",\"http://link.springer.com/article/10.1007/s00791-014-0223-x\",\"Article\"\n\"GPU-based MapReduce for large-scale near-duplicate video retrieval\",\"Multimedia Tools and Applications\",\"\",\"74\",\"23\",\"10.1007/s11042-014-2185-x\",\"Hanli WangFengkuangtian ZhuBo XiaoLei WangYu-Gang Jiang\",\"2015\",\"http://link.springer.com/article/10.1007/s11042-014-2185-x\",\"Article\"\n\"Gene regulatory networks inference using a multi-GPU exhaustive search algorithm\",\"BMC Bioinformatics\",\"\",\"14\",\"18\",\"10.1186/1471-2105-14-S18-S5\",\"Fabrizio F BorelliRaphael Y de CamargoDavid C Martins JrLuiz CS Rozante\",\"2013\",\"http://link.springer.com/article/10.1186/1471-2105-14-S18-S5\",\"Article\"\n\"Evolutionary induction of a decision tree for large-scale data: a GPU-based approach\",\"Soft Computing\",\"\",\"21\",\"24\",\"10.1007/s00500-016-2280-1\",\"Krzysztof JurczukMarcin CzajkowskiMarek Kretowski\",\"2017\",\"http://link.springer.com/article/10.1007/s00500-016-2280-1\",\"Article\"\n\"Adapting hierarchical bidirectional inter prediction on a GPU-based platform for 2D and 3D H.264 video coding\",\"EURASIP Journal on Advances in Signal Processing\",\"\",\"2013\",\"1\",\"10.1186/1687-6180-2013-67\",\"Rafael Rodríguez-SánchezJosé Luis MartínezJan De CockGerardo Fernández–EscribanoBart PietersJosé L SánchezJosé M ClaverRik Van de Walle\",\"2013\",\"http://link.springer.com/article/10.1186/1687-6180-2013-67\",\"Article\"\n\"HFPaC: GPU friendly height field parallel compression\",\"GeoInformatica\",\"\",\"17\",\"1\",\"10.1007/s10707-012-0171-x\",\"Đorđe M. ĐurđevićIgor I. Tartalja\",\"2013\",\"http://link.springer.com/article/10.1007/s10707-012-0171-x\",\"Article\"\n\"GPU-based segmentation of retinal blood vessels\",\"Journal of Real-Time Image Processing\",\"\",\"14\",\"4\",\"10.1007/s11554-014-0469-z\",\"Francisco ArgüelloDavid L. VilariñoDora B. HerasAlejandro Nieto\",\"2018\",\"http://link.springer.com/article/10.1007/s11554-014-0469-z\",\"Article\"\n\"GPU accelerated manifold correction method for spinning compact binaries\",\"Astrophysics and Space Science\",\"\",\"363\",\"4\",\"10.1007/s10509-018-3265-6\",\"Chong-xi RanSong LiuShuang-ying Zhong\",\"2018\",\"http://link.springer.com/article/10.1007/s10509-018-3265-6\",\"Article\"\n\"CGMBE: a model-based tool for the design and implementation of real-time image processing applications on CPU–GPU platforms\",\"Journal of Real-Time Image Processing\",\"\",\"18\",\"3\",\"10.1007/s11554-020-00994-9\",\"Jiahao WuJing XieAlexandre BardakoffTimothy BlattnerWalid KeyrouzShuvra S. Bhattacharyya\",\"2021\",\"http://link.springer.com/article/10.1007/s11554-020-00994-9\",\"Article\"\n\"Improving GPU-accelerated adaptive IDW interpolation algorithm using fast kNN search\",\"SpringerPlus\",\"\",\"5\",\"1\",\"10.1186/s40064-016-3035-2\",\"Gang MeiNengxiong XuLiangliang Xu\",\"2016\",\"http://link.springer.com/article/10.1186/s40064-016-3035-2\",\"Article\"\n\"GPU accelerated novel particle filtering method\",\"Computing\",\"\",\"96\",\"8\",\"10.1007/s00607-014-0400-2\",\"Subhra Kanti DasChandan MazumdarKumardeb Banerjee\",\"2014\",\"http://link.springer.com/article/10.1007/s00607-014-0400-2\",\"Article\"\n\"Global optimization model on power efficiency of GPU and multicore processing element for SIMD computing with CUDA\",\"Computer Science - Research and Development\",\"\",\"27\",\"4\",\"10.1007/s00450-011-0197-6\",\"Da-Qi RenReiji Suda\",\"2012\",\"http://link.springer.com/article/10.1007/s00450-011-0197-6\",\"Article\"\n\"Efficient adaptive load balancing approach for compressive background subtraction algorithm on heterogeneous CPU–GPU platforms\",\"Journal of Real-Time Image Processing\",\"\",\"17\",\"5\",\"10.1007/s11554-019-00916-4\",\"Lhoussein MabroukSylvain HuetDominique HouzetSaid BelkouchAbdelkrim HamzaouiYahya Zennayi\",\"2020\",\"http://link.springer.com/article/10.1007/s11554-019-00916-4\",\"Article\"\n\"GPU implementation of Jacobi Method and Gauss-Seidel Method for Data Arrays that Exceed GPU-dedicated Memory Size\",\"Journal of Mathematical Modelling and Algorithms in Operations Research\",\"\",\"14\",\"4\",\"10.1007/s10852-015-9272-5\",\"Aleksandr KochurovDimitrii Golovashkin\",\"2015\",\"http://link.springer.com/article/10.1007/s10852-015-9272-5\",\"Article\"\n\"CLUS_GPU-BLASTP: accelerated protein sequence alignment using GPU-enabled cluster\",\"The Journal of Supercomputing\",\"\",\"73\",\"10\",\"10.1007/s11227-017-2036-4\",\"Sita RaniO. P. Gupta\",\"2017\",\"http://link.springer.com/article/10.1007/s11227-017-2036-4\",\"Article\"\n\"Fault Table Computation on GPUs\",\"Journal of Electronic Testing\",\"\",\"26\",\"2\",\"10.1007/s10836-010-5147-x\",\"Kanupriya GulatiSunil P. Khatri\",\"2010\",\"http://link.springer.com/article/10.1007/s10836-010-5147-x\",\"Article\"\n\"MPFFT: An Auto-Tuning FFT Library for OpenCL GPUs\",\"Journal of Computer Science and Technology\",\"\",\"28\",\"1\",\"10.1007/s11390-013-1314-8\",\"Yan LiYun-Quan ZhangYi-Qun LiuGuo-Ping LongHai-Peng Jia\",\"2013\",\"http://link.springer.com/article/10.1007/s11390-013-1314-8\",\"Article\"\n\"High-speed TCP flow record extraction using GPUs\",\"The Journal of Supercomputing\",\"\",\"71\",\"10\",\"10.1007/s11227-015-1478-9\",\"Paula RoqueroJavier RamosVictor MorenoIván GonzálezJavier Aracil\",\"2015\",\"http://link.springer.com/article/10.1007/s11227-015-1478-9\",\"Article\"\n\"Performance evaluation of a 3D multi-view-based particle filter for visual object tracking using GPUs and multicore CPUs\",\"Journal of Real-Time Image Processing\",\"\",\"15\",\"2\",\"10.1007/s11554-014-0483-1\",\"David ConchaRaúl CabidoJuan José PantrigoAntonio S. Montemayor\",\"2018\",\"http://link.springer.com/article/10.1007/s11554-014-0483-1\",\"Article\"\n\"Fast computer simulation of reconstructed image from rainbow hologram based on GPU\",\"Optical Review\",\"\",\"22\",\"5\",\"10.1007/s10043-015-0102-9\",\"Jiao ShumingHiroshi Yoshikawa\",\"2015\",\"http://link.springer.com/article/10.1007/s10043-015-0102-9\",\"Article\"\n\"Approaches of enhancing interoperations among high performance computing and big data analytics via augmentation\",\"Cluster Computing\",\"\",\"23\",\"2\",\"10.1007/s10586-019-02960-y\",\"Ajeet Ram PathakManjusha PandeySiddharth S. Rautaray\",\"2020\",\"http://link.springer.com/article/10.1007/s10586-019-02960-y\",\"Article\"\n\"Parallel implementation of a spatio-temporal visual saliency model\",\"Journal of Real-Time Image Processing\",\"\",\"6\",\"1\",\"10.1007/s11554-010-0164-7\",\"A. RahmanD. HouzetD. PellerinS. MaratN. Guyader\",\"2011\",\"http://link.springer.com/article/10.1007/s11554-010-0164-7\",\"Article\"\n\"Massively Parallel Computation Using Graphics Processors with Application to Optimal Experimentation in Dynamic Control\",\"Computational Economics\",\"\",\"40\",\"2\",\"10.1007/s10614-011-9297-4\",\"Sergei MorozovSudhanshu Mathur\",\"2012\",\"http://link.springer.com/article/10.1007/s10614-011-9297-4\",\"Article\"\n\"Tuning remote GPU virtualization for InfiniBand networks\",\"The Journal of Supercomputing\",\"\",\"72\",\"12\",\"10.1007/s11227-016-1754-3\",\"Carlos ReañoFederico Silla\",\"2016\",\"http://link.springer.com/article/10.1007/s11227-016-1754-3\",\"Article\"\n\"GPU-accelerated Gibbs sampling: a case study of the Horseshoe Probit model\",\"Statistics and Computing\",\"\",\"29\",\"2\",\"10.1007/s11222-018-9809-3\",\"Alexander TereninShawfeng DongDavid Draper\",\"2019\",\"http://link.springer.com/article/10.1007/s11222-018-9809-3\",\"Article\"\n\"Reconstruction of 3D human motion in real-time using particle swarm optimization with GPU-accelerated fitness function\",\"Journal of Real-Time Image Processing\",\"\",\"17\",\"4\",\"10.1007/s11554-018-0825-5\",\"Bogdan KwolekBoguslaw Rymut\",\"2020\",\"http://link.springer.com/article/10.1007/s11554-018-0825-5\",\"Article\"\n\"Hybrid CPU–GPU execution support in the skeleton programming framework SkePU\",\"The Journal of Supercomputing\",\"\",\"76\",\"7\",\"10.1007/s11227-019-02824-7\",\"Tomas ÖhbergAugust ErnstssonChristoph Kessler\",\"2020\",\"http://link.springer.com/article/10.1007/s11227-019-02824-7\",\"Article\"\n\"Kernel concurrency opportunities based on GPU benchmarks characterization\",\"Cluster Computing\",\"\",\"23\",\"1\",\"10.1007/s10586-018-02901-1\",\"Pablo CarvalhoRommel CruzLucia M. A. DrummondCristiana BentesEsteban CluaEdson CataldoLeandro A. J. Marzulo\",\"2020\",\"http://link.springer.com/article/10.1007/s10586-018-02901-1\",\"Article\"\n\"Fast weighting method for plasma PIC simulation on GPU-accelerated heterogeneous systems\",\"Journal of Central South University\",\"\",\"20\",\"6\",\"10.1007/s11771-013-1644-2\",\"Can-qun Yang 杨灿群Qiang Wu 吴强Hui-li Hu 胡慧俐Zhi-cai Shi 石志才Juan Chen 陈娟Tao Tang 唐滔\",\"2013\",\"http://link.springer.com/article/10.1007/s11771-013-1644-2\",\"Article\"\n\"CPU versus GPU: which can perform matrix computation faster—performance comparison for basic linear algebra subprograms\",\"Neural Computing and Applications\",\"\",\"31\",\"8\",\"10.1007/s00521-018-3354-z\",\"Feng LiYunming YeZhaoyang TianXiaofeng Zhang\",\"2019\",\"http://link.springer.com/article/10.1007/s00521-018-3354-z\",\"Article\"\n\"On the Virtualization of CUDA Based GPU Remoting on ARM and X86 Machines in the GVirtuS Framework\",\"International Journal of Parallel Programming\",\"\",\"45\",\"5\",\"10.1007/s10766-016-0462-1\",\"Raffaele MontellaGiulio GiuntaGiuliano LaccettiMarco LapegnaCarlo PalmieriCarmine FerraroValentina PellicciaCheol-Ho HongIvor SpenceDimitrios S. Nikolopoulos\",\"2017\",\"http://link.springer.com/article/10.1007/s10766-016-0462-1\",\"Article\"\n\"GPU-Based Iterative Medical CT Image Reconstructions\",\"Journal of Signal Processing Systems\",\"\",\"91\",\"3 - 4\",\"10.1007/s11265-018-1352-0\",\"Xiaodong YuHao WangWu-chun FengHao GongGuohua Cao\",\"2019\",\"http://link.springer.com/article/10.1007/s11265-018-1352-0\",\"Article\"\n\"Efficient implementation of data flow graphs on multi-gpu clusters\",\"Journal of Real-Time Image Processing\",\"\",\"9\",\"1\",\"10.1007/s11554-012-0279-0\",\"Vincent BoulosSylvain HuetVincent FristotLuc SalvoDominique Houzet\",\"2014\",\"http://link.springer.com/article/10.1007/s11554-012-0279-0\",\"Article\"\n\"DEMCMC-GPU: An Efficient Multi-Objective Optimization Method with GPU Acceleration on the Fermi Architecture\",\"New Generation Computing\",\"\",\"29\",\"2\",\"10.1007/s00354-010-0103-y\",\"Weihang ZhuAshraf YaseenYaohang Li\",\"2011\",\"http://link.springer.com/article/10.1007/s00354-010-0103-y\",\"Article\"\n\"Automatic Halo Management for the Uintah GPU-Heterogeneous Asynchronous Many-Task Runtime\",\"International Journal of Parallel Programming\",\"\",\"47\",\"5 - 6\",\"10.1007/s10766-018-0619-1\",\"Brad PetersonAlan HumphreyDan SunderlandJames SutherlandTony SaadHarish DasariMartin Berzins\",\"2019\",\"http://link.springer.com/article/10.1007/s10766-018-0619-1\",\"Article\"\n\"Heterogeneous CPU-GPU Epsilon Grid Joins: Static and Dynamic Work Partitioning Strategies\",\"Data Science and Engineering\",\"\",\"6\",\"1\",\"10.1007/s41019-020-00145-x\",\"Benoit GalletMichael Gowanlock\",\"2021\",\"http://link.springer.com/article/10.1007/s41019-020-00145-x\",\"Article\"\n\"A Survey on Graph Processing Accelerators: Challenges and Opportunities\",\"Journal of Computer Science and Technology\",\"\",\"34\",\"2\",\"10.1007/s11390-019-1914-z\",\"Chuang-Yi GuiLong ZhengBingsheng HeCheng LiuXin-Yu ChenXiao-Fei LiaoHai Jin\",\"2019\",\"http://link.springer.com/article/10.1007/s11390-019-1914-z\",\"Article\"\n\"Extending OpenMP to Survive the Heterogeneous Multi-Core Era\",\"International Journal of Parallel Programming\",\"\",\"38\",\"5 - 6\",\"10.1007/s10766-010-0135-4\",\"Eduard AyguadéRosa M. BadiaPieter BellensDaniel CabreraAlejandro DuranRoger FerrerMarc GonzàlezFrancisco IgualDaniel Jiménez-GonzálezJesús LabartaLuis MartinellXavier MartorellRafael MayoJosep M. PérezJudit PlanasEnrique S. Quintana-Ortí\",\"2010\",\"http://link.springer.com/article/10.1007/s10766-010-0135-4\",\"Article\"\n\"Speeding up the evaluation phase of GP classification algorithms on GPUs\",\"Soft Computing\",\"\",\"16\",\"2\",\"10.1007/s00500-011-0713-4\",\"Alberto CanoAmelia ZafraSebastián Ventura\",\"2012\",\"http://link.springer.com/article/10.1007/s00500-011-0713-4\",\"Article\"\n\"Algorithmic Patterns for \n                \n                  \n                \n                $$\\mathcal {H}$$\n                \n                  \n                    H\n                  \n                \n              -Matrices on Many-Core Processors\",\"Journal of Scientific Computing\",\"\",\"78\",\"2\",\"10.1007/s10915-018-0809-4\",\"Peter Zaspel\",\"2019\",\"http://link.springer.com/article/10.1007/s10915-018-0809-4\",\"Article\"\n\"Remote display solution for video surveillance in multimedia cloud\",\"Multimedia Tools and Applications\",\"\",\"75\",\"21\",\"10.1007/s11042-015-2816-x\",\"Biao SongMohammad Mehedi HassanYuan TianM. Shamim HossainAtif Alamri\",\"2016\",\"http://link.springer.com/article/10.1007/s11042-015-2816-x\",\"Article\"\n\"Medical image segmentation with deformable models on graphics processing units\",\"The Journal of Supercomputing\",\"\",\"68\",\"1\",\"10.1007/s11227-013-1042-4\",\"Rigo AlvaradoJuan J. TapiaJulio C. Rolón\",\"2014\",\"http://link.springer.com/article/10.1007/s11227-013-1042-4\",\"Article\"\n\"Correlating Radio Astronomy Signals with Many-Core Hardware\",\"International Journal of Parallel Programming\",\"\",\"39\",\"1\",\"10.1007/s10766-010-0144-3\",\"Rob V. van NieuwpoortJohn W. Romein\",\"2011\",\"http://link.springer.com/article/10.1007/s10766-010-0144-3\",\"Article\"\n\"Simulation at Extreme-Scale: Co-Design Thinking and Practices\",\"Archives of Computational Methods in Engineering\",\"\",\"21\",\"1\",\"10.1007/s11831-014-9095-y\",\"Rong Tian\",\"2014\",\"http://link.springer.com/article/10.1007/s11831-014-9095-y\",\"Article\"\n\"Computer Vision Accelerators for Mobile Systems based on OpenCL GPGPU Co-Processing\",\"Journal of Signal Processing Systems\",\"\",\"76\",\"3\",\"10.1007/s11265-014-0878-z\",\"Guohui WangYingen XiongJay YunJoseph R. Cavallaro\",\"2014\",\"http://link.springer.com/article/10.1007/s11265-014-0878-z\",\"Article\"\n\"High-Throughput FFT-SPA Decoder Implementation for Non-Binary LDPC Codes on x86 Multicore Processors\",\"Journal of Signal Processing Systems\",\"\",\"92\",\"1\",\"10.1007/s11265-019-01447-8\",\"Bertrand Le GalChristophe Jego\",\"2020\",\"http://link.springer.com/article/10.1007/s11265-019-01447-8\",\"Article\"\n\"Heterogeneous parallel computing accelerated iterative subpixel digital image correlation\",\"Science China Technological Sciences\",\"\",\"61\",\"1\",\"10.1007/s11431-017-9168-0\",\"JianWen HuangLingQi ZhangZhenYu JiangShouBin DongWei ChenYiPing LiuZeJia LiuLiCheng ZhouLiQun Tang\",\"2018\",\"http://link.springer.com/article/10.1007/s11431-017-9168-0\",\"Article\"\n\"A GPU Implementation of OLPCA Method in Hybrid Environment\",\"International Journal of Parallel Programming\",\"\",\"46\",\"3\",\"10.1007/s10766-017-0505-2\",\"Pasquale De MicheleFrancesco MaioranoLivia MarcellinoFrancesco Piccialli\",\"2018\",\"http://link.springer.com/article/10.1007/s10766-017-0505-2\",\"Article\"\n\"Impacts of optimization strategies on performance, power/energy consumption of a GPU based parallel reduction\",\"Journal of Central South University\",\"\",\"24\",\"11\",\"10.1007/s11771-017-3676-5\",\"Thi Yen PhuongDeok-Young LeeJeong-Gun Lee\",\"2017\",\"http://link.springer.com/article/10.1007/s11771-017-3676-5\",\"Article\"\n\"GPU Framework for Change Detection in Multitemporal Hyperspectral Images\",\"International Journal of Parallel Programming\",\"\",\"47\",\"2\",\"10.1007/s10766-017-0547-5\",\"Javier López-FandiñoDora B. HerasFrancisco ArgüelloMauro Dalla Mura\",\"2019\",\"http://link.springer.com/article/10.1007/s10766-017-0547-5\",\"Article\"\n\"A heterogeneous parallel implementation of the Markov clustering algorithm for large-scale biological networks on distributed CPU–GPU clusters\",\"The Journal of Supercomputing\",\"\",\"\",\"\",\"10.1007/s11227-021-04204-6\",\"You FuWei Zhou\",\"2022\",\"http://link.springer.com/article/10.1007/s11227-021-04204-6\",\"Article\"\n\"Real-time dynamic tone-mapping operator on GPU\",\"Journal of Real-Time Image Processing\",\"\",\"7\",\"3\",\"10.1007/s11554-011-0196-7\",\"Mohamed AkilThierry GrandpierreLaurent Perroton\",\"2012\",\"http://link.springer.com/article/10.1007/s11554-011-0196-7\",\"Article\"\n\"Non-dominated sorting procedure for Pareto dominance ranking on multicore CPU and/or GPU\",\"Journal of Global Optimization\",\"\",\"69\",\"3\",\"10.1007/s10898-016-0468-7\",\"G. OrtegaE. FilatovasE. M. GarzónL. G. Casado\",\"2017\",\"http://link.springer.com/article/10.1007/s10898-016-0468-7\",\"Article\"\n\"Optimizing seam carving on multi-GPU systems for real-time content-aware image resizing\",\"The Journal of Supercomputing\",\"\",\"71\",\"9\",\"10.1007/s11227-015-1446-4\",\"Ikjoon KimJidong ZhaiYan LiWenguang Chen\",\"2015\",\"http://link.springer.com/article/10.1007/s11227-015-1446-4\",\"Article\"\n\"High performance data clustering: a comparative analysis of performance for GPU, RASC, MPI, and OpenMP implementations\",\"The Journal of Supercomputing\",\"\",\"70\",\"1\",\"10.1007/s11227-013-0906-y\",\"Luobin YangSteve C. ChiuWei-Keng LiaoMichael A. Thomas\",\"2014\",\"http://link.springer.com/article/10.1007/s11227-013-0906-y\",\"Article\"\n\"GPU-based parallel optimization for real-time scale-invariant feature transform in binocular visual registration\",\"Personal and Ubiquitous Computing\",\"\",\"23\",\"3 - 4\",\"10.1007/s00779-019-01222-3\",\"Jiashen LiYun Pan\",\"2019\",\"http://link.springer.com/article/10.1007/s00779-019-01222-3\",\"Article\"\n\"Heterogeneous parallel_for Template for CPU–GPU Chips\",\"International Journal of Parallel Programming\",\"\",\"47\",\"2\",\"10.1007/s10766-018-0555-0\",\"Angeles NavarroFrancisco CorberaAndres RodriguezAntonio VilchesRafael Asenjo\",\"2019\",\"http://link.springer.com/article/10.1007/s10766-018-0555-0\",\"Article\"\n\"Scalable hybrid implementation of the Schur complement method for multi-GPU systems\",\"The Journal of Supercomputing\",\"\",\"69\",\"1\",\"10.1007/s11227-014-1209-7\",\"Sergey KopysovIgor KuzminNikita NedozhoginAlexander NovikovYulia Sagdeeva\",\"2014\",\"http://link.springer.com/article/10.1007/s11227-014-1209-7\",\"Article\"\n\"Power Analysis Attack of an AES GPU Implementation\",\"Journal of Hardware and Systems Security\",\"\",\"2\",\"1\",\"10.1007/s41635-018-0032-7\",\"Chao LuoYunsi FeiLiwei ZhangA. Adam DingPei LuoSaoni MukherjeeDavid Kaeli\",\"2018\",\"http://link.springer.com/article/10.1007/s41635-018-0032-7\",\"Article\"\n\"GPU parallel computing: Programming language, debugging tools and data structures\",\"Frontiers of Electrical and Electronic Engineering\",\"\",\"7\",\"1\",\"10.1007/s11460-012-0187-x\",\"Kun Zhou\",\"2012\",\"http://link.springer.com/article/10.1007/s11460-012-0187-x\",\"Article\"\n\"Fast motion estimation for HEVC on graphics processing unit (GPU)\",\"Journal of Real-Time Image Processing\",\"\",\"12\",\"2\",\"10.1007/s11554-015-0522-6\",\"Dongkyu LeeDonggyu SimKeeseong ChoSeoung-Jun Oh\",\"2016\",\"http://link.springer.com/article/10.1007/s11554-015-0522-6\",\"Article\"\n\"Parallel MRI Reconstruction Algorithm Implementation on GPU\",\"Applied Magnetic Resonance\",\"\",\"47\",\"1\",\"10.1007/s00723-015-0728-6\",\"H. ShahzadM. F. SadaqatB. HassanW. AbbasiH. Omer\",\"2016\",\"http://link.springer.com/article/10.1007/s00723-015-0728-6\",\"Article\"\n\"A GPU-based implementations of the fuzzy C-means algorithms for medical image segmentation\",\"The Journal of Supercomputing\",\"\",\"71\",\"8\",\"10.1007/s11227-015-1431-y\",\"Mahmoud Al-AyyoubAnsam M. Abu-DaloYaser JararwehMoath JarrahMohammad Al Sa’d\",\"2015\",\"http://link.springer.com/article/10.1007/s11227-015-1431-y\",\"Article\"\n\"Improving the performance and energy of Non-Dominated Sorting for evolutionary multiobjective optimization on GPU/CPU platforms\",\"Journal of Global Optimization\",\"\",\"71\",\"3\",\"10.1007/s10898-018-0669-3\",\"J. J. MorenoG. OrtegaE. FilatovasJ. A. MartínezE. M. Garzón\",\"2018\",\"http://link.springer.com/article/10.1007/s10898-018-0669-3\",\"Article\"\n\"Fast calculation of HELAS amplitudes using graphics processing unit (GPU)\",\"The European Physical Journal C\",\"\",\"66\",\"3 - 4\",\"10.1140/epjc/s10052-010-1276-8\",\"K. HagiwaraJ. KanzakiN. OkamuraD. RainwaterT. Stelzer\",\"2010\",\"http://link.springer.com/article/10.1140/epjc/s10052-010-1276-8\",\"Article\"\n\"GPU-accelerated uncapacitated facility location and semi-dense SymStereo pipelines for piecewise-planar-based 3D reconstruction\",\"Journal of Real-Time Image Processing\",\"\",\"18\",\"3\",\"10.1007/s11554-020-00974-z\",\"Carlos GracaCarolina RaposoJoao P. BarretoUrbano NunesGabriel Falcao\",\"2021\",\"http://link.springer.com/article/10.1007/s11554-020-00974-z\",\"Article\"\n\"GENIE: a software package for gene-gene interaction analysis in genetic association studies using multiple GPU or CPU cores\",\"BMC Research Notes\",\"\",\"4\",\"1\",\"10.1186/1756-0500-4-158\",\"Satish ChikkagoudarKai WangMingyao Li\",\"2011\",\"http://link.springer.com/article/10.1186/1756-0500-4-158\",\"Article\"\n\"Accelerating finite difference wavefield-continuation depth migration by GPU\",\"Applied Geophysics\",\"\",\"9\",\"1\",\"10.1007/s11770-012-0312-x\",\"Guo-Feng LiuXiao-Hong MengHong Liu\",\"2012\",\"http://link.springer.com/article/10.1007/s11770-012-0312-x\",\"Article\"\n\"Adaptive fast multipole methods on the GPU\",\"The Journal of Supercomputing\",\"\",\"63\",\"3\",\"10.1007/s11227-012-0836-0\",\"Anders GoudeStefan Engblom\",\"2013\",\"http://link.springer.com/article/10.1007/s11227-012-0836-0\",\"Article\"\n\"Convolution of large 3D images on GPU and its decomposition\",\"EURASIP Journal on Advances in Signal Processing\",\"\",\"2011\",\"1\",\"10.1186/1687-6180-2011-120\",\"Pavel KarasDavid Svoboda\",\"2011\",\"http://link.springer.com/article/10.1186/1687-6180-2011-120\",\"Article\"\n\"A memory-driven scheduling scheme and optimization for concurrent execution in GPU\",\"Cluster Computing\",\"\",\"19\",\"4\",\"10.1007/s10586-016-0656-8\",\"Bao-yu XuWu ZhangXian-he SunYang Wang\",\"2016\",\"http://link.springer.com/article/10.1007/s10586-016-0656-8\",\"Article\"\n\"Kernel Polynomial Method on GPU\",\"International Journal of Parallel Programming\",\"\",\"41\",\"1\",\"10.1007/s10766-012-0204-y\",\"Shixun ZhangShinichi YamagiwaMasahiko OkumuraSeiji Yunoki\",\"2013\",\"http://link.springer.com/article/10.1007/s10766-012-0204-y\",\"Article\"\n\"Parallelization of large vector similarity computations in a hybrid CPU+GPU environment\",\"The Journal of Supercomputing\",\"\",\"74\",\"2\",\"10.1007/s11227-017-2159-7\",\"Paweł Czarnul\",\"2018\",\"http://link.springer.com/article/10.1007/s11227-017-2159-7\",\"Article\"\n\"Speeding up the high-accuracy surface modelling method with GPU\",\"Environmental Earth Sciences\",\"\",\"74\",\"8\",\"10.1007/s12665-015-4138-8\",\"Changqing YanGang ZhaoTianxiang YueChuanfa ChenJimin LiuHan LiNa Su\",\"2015\",\"http://link.springer.com/article/10.1007/s12665-015-4138-8\",\"Article\"\n\"Multi-GPU approach to global induction of classification trees for large-scale data mining\",\"Applied Intelligence\",\"\",\"51\",\"8\",\"10.1007/s10489-020-01952-5\",\"Krzysztof JurczukMarcin CzajkowskiMarek Kretowski\",\"2021\",\"http://link.springer.com/article/10.1007/s10489-020-01952-5\",\"Article\"\n\"An Autotuning Engine for the 3D Fast Wavelet Transform on Clusters with Hybrid CPU + GPU Platforms\",\"International Journal of Parallel Programming\",\"\",\"43\",\"6\",\"10.1007/s10766-014-0328-3\",\"Gregorio BernabéJavier CuencaDomingo Giménez\",\"2015\",\"http://link.springer.com/article/10.1007/s10766-014-0328-3\",\"Article\"\n\"Financial applications on multi-CPU and multi-GPU architectures\",\"The Journal of Supercomputing\",\"\",\"71\",\"2\",\"10.1007/s11227-014-1316-5\",\"Emilio CastilloCristóbal CamareroAna BorregoJose Luis Bosque\",\"2015\",\"http://link.springer.com/article/10.1007/s11227-014-1316-5\",\"Article\"\n\"CPU-GPU hybrid accelerating the Zuker algorithm for RNA secondary structure prediction applications\",\"BMC Genomics\",\"\",\"13\",\"1\",\"10.1186/1471-2164-13-S1-S14\",\"Guoqing LeiYong DouWen WanFei XiaRongchun LiMeng MaDan Zou\",\"2012\",\"http://link.springer.com/article/10.1186/1471-2164-13-S1-S14\",\"Article\"\n\"Efficient Memory Access Patterns for Solving 3D Laplace Equation on GPU\",\"Iranian Journal of Science and Technology, Transactions A: Science\",\"\",\"42\",\"2\",\"10.1007/s40995-016-0042-7\",\"Muhammad Naveed AkhtarMuhammad Hanif DuradAnila UsmanMuhammad Abid Mughal\",\"2018\",\"http://link.springer.com/article/10.1007/s40995-016-0042-7\",\"Article\"\n\"GPU-accelerated phase field simulation of directional solidification\",\"Science China Technological Sciences\",\"\",\"57\",\"6\",\"10.1007/s11431-014-5541-1\",\"Ang GaoYanSu HuZhiJun WangDeJun MuJunJie LiJinCheng Wang\",\"2014\",\"http://link.springer.com/article/10.1007/s11431-014-5541-1\",\"Article\"\n\"GASAL2: a GPU accelerated sequence alignment library for high-throughput NGS data\",\"BMC Bioinformatics\",\"\",\"20\",\"1\",\"10.1186/s12859-019-3086-9\",\"Nauman AhmedJonathan LévyShanshan RenHamid MushtaqKoen BertelsZaid Al-Ars\",\"2019\",\"http://link.springer.com/article/10.1186/s12859-019-3086-9\",\"Article\"\n\"GPU-assisted HEVC intra decoder\",\"Journal of Real-Time Image Processing\",\"\",\"12\",\"2\",\"10.1007/s11554-015-0519-1\",\"Diego F. de SouzaAleksandar IlicNuno RomaLeonel Sousa\",\"2016\",\"http://link.springer.com/article/10.1007/s11554-015-0519-1\",\"Article\"\n\"Monte Carlo integration on GPU\",\"The European Physical Journal C\",\"\",\"71\",\"2\",\"10.1140/epjc/s10052-011-1559-8\",\"J. Kanzaki\",\"2011\",\"http://link.springer.com/article/10.1140/epjc/s10052-011-1559-8\",\"Article\"\n\"Colloquium: Large scale simulations on GPU clusters\",\"The European Physical Journal B\",\"\",\"88\",\"6\",\"10.1140/epjb/e2015-60180-8\",\"Massimo BernaschiMauro BissonMassimiliano Fatica\",\"2015\",\"http://link.springer.com/article/10.1140/epjb/e2015-60180-8\",\"Article\"\n\"Parallel Computer System for 3D Visualization Stereo on GPU\",\"3D Research\",\"\",\"9\",\"1\",\"10.1007/s13319-018-0159-x\",\"Anas M. Al-OraiqatSergii A. Zori\",\"2018\",\"http://link.springer.com/article/10.1007/s13319-018-0159-x\",\"Article\"\n\"Efficient OLAP algorithms on GPU-accelerated Hadoop clusters\",\"Distributed and Parallel Databases\",\"\",\"37\",\"4\",\"10.1007/s10619-018-7239-z\",\"Hongzhi WangZheng WangNing LiXinxin Kong\",\"2019\",\"http://link.springer.com/article/10.1007/s10619-018-7239-z\",\"Article\"\n\"Resolving the GPU responsiveness dilemma through program transformations\",\"Frontiers of Computer Science\",\"\",\"12\",\"3\",\"10.1007/s11704-016-6206-y\",\"Qi ZhuBo WuXipeng ShenKai ShenLi ShenZhiying Wang\",\"2018\",\"http://link.springer.com/article/10.1007/s11704-016-6206-y\",\"Article\"\n\"Accelerating 2D orthogonal matching pursuit algorithm on GPU\",\"The Journal of Supercomputing\",\"\",\"69\",\"3\",\"10.1007/s11227-014-1188-8\",\"Yuan DaiDongjian HeYong FangLong Yang\",\"2014\",\"http://link.springer.com/article/10.1007/s11227-014-1188-8\",\"Article\"\n\"GPU-accelerated parallel algorithms for linear rankSVM\",\"The Journal of Supercomputing\",\"\",\"71\",\"11\",\"10.1007/s11227-015-1509-6\",\"Jing JinXianggao CaiGuoming LaiXiaola Lin\",\"2015\",\"http://link.springer.com/article/10.1007/s11227-015-1509-6\",\"Article\"\n\"Real-time 3D registration using GPU\",\"Machine Vision and Applications\",\"\",\"22\",\"5\",\"10.1007/s00138-010-0282-z\",\"Soon-Yong ParkSung-In ChoiJun KimJeong Sook Chae\",\"2011\",\"http://link.springer.com/article/10.1007/s00138-010-0282-z\",\"Article\"\n\"GPU fuzzy c-means algorithm implementations: performance analysis on medical image segmentation\",\"Multimedia Tools and Applications\",\"\",\"77\",\"16\",\"10.1007/s11042-017-5589-6\",\"Noureddine Ait AliBouchaib CherradiAhmed El AbbassiOmar BouattaneMohamed Youssfi\",\"2018\",\"http://link.springer.com/article/10.1007/s11042-017-5589-6\",\"Article\"\n\"GPU-accelerated preconditioned iterative linear solvers\",\"The Journal of Supercomputing\",\"\",\"63\",\"2\",\"10.1007/s11227-012-0825-3\",\"Ruipeng LiYousef Saad\",\"2013\",\"http://link.springer.com/article/10.1007/s11227-012-0825-3\",\"Article\"\n\"GPU-based collision analysis between a multi-body system and numerous particles\",\"Journal of Mechanical Science and Technology\",\"\",\"27\",\"4\",\"10.1007/s12206-013-0226-4\",\"Hye-Young JungChul-Woong JunJeong-Hyun Sohn\",\"2013\",\"http://link.springer.com/article/10.1007/s12206-013-0226-4\",\"Article\"\n\"GPU accelerated radio astronomy signal convolution\",\"Experimental Astronomy\",\"\",\"22\",\"1 - 2\",\"10.1007/s10686-008-9114-9\",\"Chris HarrisKaren HainesLister Staveley-Smith\",\"2008\",\"http://link.springer.com/article/10.1007/s10686-008-9114-9\",\"Article\"\n\"GPU accelerated waterpixel algorithm for superpixel segmentation of hyperspectral images\",\"The Journal of Supercomputing\",\"\",\"77\",\"9\",\"10.1007/s11227-021-03666-y\",\"Pablo Quesada-BarriusoDora Blanco HerasFrancisco Argüello\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-021-03666-y\",\"Article\"\n\"GPU-accelerated iterative solutions for finite element analysis of soil–structure interaction problems\",\"Computational Geosciences\",\"\",\"17\",\"4\",\"10.1007/s10596-013-9352-4\",\"Xi ChenYuxin JieYuzhen Yu\",\"2013\",\"http://link.springer.com/article/10.1007/s10596-013-9352-4\",\"Article\"\n\"Hybrid multi-GPU computing: accelerated kernels for segmentation and object detection with medical image processing applications\",\"Journal of Real-Time Image Processing\",\"\",\"13\",\"1\",\"10.1007/s11554-015-0517-3\",\"Carlos GracaGabriel FalcaoIsabel N. FigueiredoSunil Kumar\",\"2017\",\"http://link.springer.com/article/10.1007/s11554-015-0517-3\",\"Article\"\n\"Implementation of GPU accelerated SPECT reconstruction with Monte Carlo-based scatter correction\",\"Annals of Nuclear Medicine\",\"\",\"32\",\"5\",\"10.1007/s12149-018-1252-1\",\"Tobias BexeliusAntti Sohlberg\",\"2018\",\"http://link.springer.com/article/10.1007/s12149-018-1252-1\",\"Article\"\n\"GPU Parallelization of HEVC In-Loop Filters\",\"International Journal of Parallel Programming\",\"\",\"45\",\"6\",\"10.1007/s10766-017-0488-z\",\"Biao WangDiego F. de SouzaMauricio Alvarez-MesaChi Ching ChiBen JuurlinkAleksandar IlicNuno RomaLeonel Sousa\",\"2017\",\"http://link.springer.com/article/10.1007/s10766-017-0488-z\",\"Article\"\n\"Accelerating Time and Depth Seismic Migration by CPU and GPU Cooperation\",\"International Journal of Parallel Programming\",\"\",\"40\",\"3\",\"10.1007/s10766-011-0185-2\",\"Jairo PanettaThiago TeixeiraPaulo R. P. de Souza FilhoCarlos A. da Cunha FilhoDavid SoteloFernando M. Roxo da MottaSilvio Sinedino PinheiroAndre L. Romanelli RosaLuiz R. MonneratLeandro T. CarneiroCarlos H. B. de Albrecht\",\"2012\",\"http://link.springer.com/article/10.1007/s10766-011-0185-2\",\"Article\"\n\"A Jacobi_PCG solver for sparse linear systems on multi-GPU cluster\",\"The Journal of Supercomputing\",\"\",\"73\",\"1\",\"10.1007/s11227-016-1887-4\",\"Shaozhong LinZhiqiang Xie\",\"2017\",\"http://link.springer.com/article/10.1007/s11227-016-1887-4\",\"Article\"\n\"Optimization of HEP codes on GPUs\",\"The European Physical Journal Plus\",\"\",\"126\",\"1\",\"10.1140/epjp/i2011-11001-5\",\"M. Al-Turany\",\"2011\",\"http://link.springer.com/article/10.1140/epjp/i2011-11001-5\",\"Article\"\n\"A parallel pattern for iterative stencil + reduce\",\"The Journal of Supercomputing\",\"\",\"74\",\"11\",\"10.1007/s11227-016-1871-z\",\"M. AldinucciM. DaneluttoM. DroccoP. KilpatrickC. MisaleG. Peretti PezziM. Torquati\",\"2018\",\"http://link.springer.com/article/10.1007/s11227-016-1871-z\",\"Article\"\n\"Regular Lattice and Small-World Spin Model Simulations Using CUDA and GPUs\",\"International Journal of Parallel Programming\",\"\",\"39\",\"2\",\"10.1007/s10766-010-0143-4\",\"K. A. HawickA. LeistD. P. Playne\",\"2011\",\"http://link.springer.com/article/10.1007/s10766-010-0143-4\",\"Article\"\n\"Portable Node-Level Parallelism for the PGAS Model\",\"International Journal of Parallel Programming\",\"\",\"49\",\"6\",\"10.1007/s10766-021-00718-x\",\"Pascal JungblutKarl Fürlinger\",\"2021\",\"http://link.springer.com/article/10.1007/s10766-021-00718-x\",\"Article\"\n\"A comparative study of three-dimensional discrete velocity set in LBM for turbulent flow over bluff body\",\"Journal of the Brazilian Society of Mechanical Sciences and Engineering\",\"\",\"43\",\"1\",\"10.1007/s40430-020-02714-7\",\"Alankar AgarwalSandeep GuptaAkshay Prakash\",\"2021\",\"http://link.springer.com/article/10.1007/s40430-020-02714-7\",\"Article\"\n\"Parallelization of Full Search Motion Estimation Algorithm for Parallel and Distributed Platforms\",\"International Journal of Parallel Programming\",\"\",\"42\",\"2\",\"10.1007/s10766-012-0216-7\",\"Eduarda MonteiroBruno VizzottoCláudio DinizMarilena MauleBruno ZattSergio Bampi\",\"2014\",\"http://link.springer.com/article/10.1007/s10766-012-0216-7\",\"Article\"\n\"Pragma Directed Shared Memory Centric Optimizations on GPUs\",\"Journal of Computer Science and Technology\",\"\",\"31\",\"2\",\"10.1007/s11390-016-1624-8\",\"Jing LiLei LiuYuan WuXiang-Hua LiuYi GaoXiao-Bing FengCheng-Yong Wu\",\"2016\",\"http://link.springer.com/article/10.1007/s11390-016-1624-8\",\"Article\"\n\"A GPU-Based Kalman Filter for Track Fitting\",\"Computing and Software for Big Science\",\"\",\"5\",\"1\",\"10.1007/s41781-021-00065-z\",\"Xiaocong AiGeorgiana ManiaHeather M. GrayMichael KuhnNicholas Styles\",\"2021\",\"http://link.springer.com/article/10.1007/s41781-021-00065-z\",\"Article\"\n\"Optimization of lateral interaction in accumulative computation on GPU-based platform\",\"The Journal of Supercomputing\",\"\",\"75\",\"3\",\"10.1007/s11227-018-02736-y\",\"Aurelio BermúdezFrancisco MonteroMaría T. LópezAntonio Fernández-CaballeroJosé L. Sánchez\",\"2019\",\"http://link.springer.com/article/10.1007/s11227-018-02736-y\",\"Article\"\n\"Real-time thinning algorithms for 2D and 3D images using GPU processors\",\"Journal of Real-Time Image Processing\",\"\",\"17\",\"5\",\"10.1007/s11554-019-00886-7\",\"Martin G. Wagner\",\"2020\",\"http://link.springer.com/article/10.1007/s11554-019-00886-7\",\"Article\"\n\"CudaChain: an alternative algorithm for finding 2D convex hulls on the GPU\",\"SpringerPlus\",\"\",\"5\",\"1\",\"10.1186/s40064-016-2284-4\",\"Gang Mei\",\"2016\",\"http://link.springer.com/article/10.1186/s40064-016-2284-4\",\"Article\"\n\"GPU Acceleration of a Configurable N-Way MIMO Detector for Wireless Systems\",\"Journal of Signal Processing Systems\",\"\",\"76\",\"2\",\"10.1007/s11265-014-0877-0\",\"Michael WuBei YinGuohui WangChristoph StuderJoseph R. Cavallaro\",\"2014\",\"http://link.springer.com/article/10.1007/s11265-014-0877-0\",\"Article\"\n\"Fast computation of 2D and 3D Legendre moments using multi-core CPUs and GPU parallel architectures\",\"Journal of Real-Time Image Processing\",\"\",\"16\",\"6\",\"10.1007/s11554-017-0708-1\",\"Khalid M. HosnyAhmad SalahHassan I. SalehMahmoud Sayed\",\"2019\",\"http://link.springer.com/article/10.1007/s11554-017-0708-1\",\"Article\"\n\"Spectral volume rendering using GPU-based raycasting\",\"The Visual Computer\",\"\",\"22\",\"8\",\"10.1007/s00371-006-0028-0\",\"Magnus StrengertThomas KleinRalf BotchenSimon StegmaierMin ChenThomas Ertl\",\"2006\",\"http://link.springer.com/article/10.1007/s00371-006-0028-0\",\"Article\"\n\"Triangular mesh simplification on the GPU\",\"The Visual Computer\",\"\",\"31\",\"2\",\"10.1007/s00371-014-1039-x\",\"Alexandros PapageorgiouNikos Platis\",\"2015\",\"http://link.springer.com/article/10.1007/s00371-014-1039-x\",\"Article\"\n\"Implementation of a parallel ADI algorithm on a finite volume GPU-based elementary porous media flow computation\",\"Journal of the Brazilian Society of Mechanical Sciences and Engineering\",\"\",\"39\",\"10\",\"10.1007/s40430-017-0882-x\",\"L. Henríquez-VargasE. VillaroelJ. GutierrezP. Donoso-García\",\"2017\",\"http://link.springer.com/article/10.1007/s40430-017-0882-x\",\"Article\"\n\"An efficient GPU-based fractional-step domain decomposition scheme for the reaction–diffusion equation\",\"Computational and Applied Mathematics\",\"\",\"39\",\"4\",\"10.1007/s40314-020-01357-7\",\"Ali FoadaddiniSeyed Alireza ZolfaghariHossein Mahmoodi DarianHamid Saadatfar\",\"2020\",\"http://link.springer.com/article/10.1007/s40314-020-01357-7\",\"Article\"\n\"Appliance of effective clustering technique for gene expression datasets using GPU\",\"Cluster Computing\",\"\",\"22\",\"5\",\"10.1007/s10586-017-1621-x\",\"V. SaveethaS. SophiaP. D. R. Vijayakumar\",\"2019\",\"http://link.springer.com/article/10.1007/s10586-017-1621-x\",\"Article\"\n\"The performances of iterative type-2 fuzzy C-mean on GPU for image segmentation\",\"The Journal of Supercomputing\",\"\",\"\",\"\",\"10.1007/s11227-021-03928-9\",\"Noureddine Ait AliAhmed El abbassiBouchaib Cherradi\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-021-03928-9\",\"Article\"\n\"Collective behavior of large-scale neural networks with GPU acceleration\",\"Cognitive Neurodynamics\",\"\",\"11\",\"6\",\"10.1007/s11571-017-9446-0\",\"Jingyi QuRubin Wang\",\"2017\",\"http://link.springer.com/article/10.1007/s11571-017-9446-0\",\"Article\"\n\"Design Flow for GPU and Multicore Execution of Dynamic Dataflow Programs\",\"Journal of Signal Processing Systems\",\"\",\"89\",\"3\",\"10.1007/s11265-017-1260-8\",\"J. BoutellierT. Nyländen\",\"2017\",\"http://link.springer.com/article/10.1007/s11265-017-1260-8\",\"Article\"\n\"GPU material point method (MPM) and its application on slope stability analysis\",\"Bulletin of Engineering Geology and the Environment\",\"\",\"80\",\"7\",\"10.1007/s10064-021-02265-8\",\"Ze-Kang FengWen-Jie Xu\",\"2021\",\"http://link.springer.com/article/10.1007/s10064-021-02265-8\",\"Article\"\n\"GSA: a GPU-accelerated structure similarity algorithm and its application in progressive virtual screening\",\"Molecular Diversity\",\"\",\"16\",\"4\",\"10.1007/s11030-012-9403-0\",\"Xin YanQiong GuFeng LuJiabo LiJun Xu\",\"2012\",\"http://link.springer.com/article/10.1007/s11030-012-9403-0\",\"Article\"\n\"Efficient GPU and CPU-based LDPC decoders for long codewords\",\"Analog Integrated Circuits and Signal Processing\",\"\",\"73\",\"2\",\"10.1007/s10470-012-9895-7\",\"Stefan GrönroosKristian NybomJerker Björkqvist\",\"2012\",\"http://link.springer.com/article/10.1007/s10470-012-9895-7\",\"Article\"\n\"Genetic improvement of GPU software\",\"Genetic Programming and Evolvable Machines\",\"\",\"18\",\"1\",\"10.1007/s10710-016-9273-9\",\"William B. LangdonBrian Yee Hong LamMarc ModatJustyna PetkeMark Harman\",\"2017\",\"http://link.springer.com/article/10.1007/s10710-016-9273-9\",\"Article\"\n\"Motion vector extrapolation for parallel motion estimation on GPU\",\"Multimedia Tools and Applications\",\"\",\"68\",\"3\",\"10.1007/s11042-012-1074-4\",\"Yi GaoJun Zhou\",\"2014\",\"http://link.springer.com/article/10.1007/s11042-012-1074-4\",\"Article\"\n\"Optimizing Image Reconstruction in SENSE Using GPU\",\"Applied Magnetic Resonance\",\"\",\"49\",\"2\",\"10.1007/s00723-017-0951-4\",\"Sohaib A. QaziSaima NasirAbeera SaeedHammad Omer\",\"2018\",\"http://link.springer.com/article/10.1007/s00723-017-0951-4\",\"Article\"\n\"A GPU-based elastic shape registration approach in implicit spaces\",\"Journal of Real-Time Image Processing\",\"\",\"16\",\"6\",\"10.1007/s11554-017-0710-7\",\"Ahmed Hassan YousefHossam E. Abd El Munim\",\"2019\",\"http://link.springer.com/article/10.1007/s11554-017-0710-7\",\"Article\"\n\"A self-organization based optical flow estimator with GPU implementation\",\"Machine Vision and Applications\",\"\",\"23\",\"6\",\"10.1007/s00138-011-0352-x\",\"Manish P. ShiralkarRobert J. Schalkoff\",\"2012\",\"http://link.springer.com/article/10.1007/s00138-011-0352-x\",\"Article\"\n\"A GPU implementation of secret sharing scheme based on cellular automata\",\"The Journal of Supercomputing\",\"\",\"72\",\"4\",\"10.1007/s11227-016-1646-6\",\"Rogelio Adrian Hernandez-BecerrilAriana Guadalupe Bucio-RamirezMariko Nakano-MiyatakeHector Perez-MeanaMarco Pedro Ramirez-Tachiquin\",\"2016\",\"http://link.springer.com/article/10.1007/s11227-016-1646-6\",\"Article\"\n\"Cooperative CPU, GPU, and FPGA heterogeneous execution with EngineCL\",\"The Journal of Supercomputing\",\"\",\"75\",\"3\",\"10.1007/s11227-019-02768-y\",\"María Angélica Dávila GuzmánRaúl NozalRubén Gran TejeroMaría Villarroya-GaudóDarío Suárez GraciaJose Luis Bosque\",\"2019\",\"http://link.springer.com/article/10.1007/s11227-019-02768-y\",\"Article\"\n\"Parallel edge-based visual assessment of cluster tendency on GPU\",\"International Journal of Data Science and Analytics\",\"\",\"6\",\"4\",\"10.1007/s41060-018-0100-7\",\"Tao MengBo Yuan\",\"2018\",\"http://link.springer.com/article/10.1007/s41060-018-0100-7\",\"Article\"\n\"Knowledge based fuzzy c-means method for rapid brain tissues segmentation of magnetic resonance imaging scans with CUDA enabled GPU machine\",\"Journal of Ambient Intelligence and Humanized Computing\",\"\",\"\",\"\",\"10.1007/s12652-020-02132-6\",\"Prajoona ValsalanP. SriramakrishnanS. SridharG. Charlyn Pushpa LathaA. PriyaS. RamkumarA. Robert SinghT. Rajendran\",\"2020\",\"http://link.springer.com/article/10.1007/s12652-020-02132-6\",\"Article\"\n\"Forward and back substitution algorithms on GPU: a case study on modified incomplete Cholesky Preconditioner for three-dimensional finite difference method\",\"The Journal of Supercomputing\",\"\",\"62\",\"1\",\"10.1007/s11227-011-0736-8\",\"Yigitcan AksariHarun Artuner\",\"2012\",\"http://link.springer.com/article/10.1007/s11227-011-0736-8\",\"Article\"\n\"Fast differential box-counting algorithm on GPU\",\"The Journal of Supercomputing\",\"\",\"76\",\"1\",\"10.1007/s11227-019-03030-1\",\"Juan Ruiz de Miras\",\"2020\",\"http://link.springer.com/article/10.1007/s11227-019-03030-1\",\"Article\"\n\"Computational Approach for Securing Radiology-Diagnostic Data in Connected Health Network using High-Performance GPU-Accelerated AES\",\"Interdisciplinary Sciences: Computational Life Sciences\",\"\",\"9\",\"1\",\"10.1007/s12539-015-0140-9\",\"A. M. AdeshinaR. Hashim\",\"2017\",\"http://link.springer.com/article/10.1007/s12539-015-0140-9\",\"Article\"\n\"Combined kernel for fast GPU computation of Zernike moments\",\"Journal of Real-Time Image Processing\",\"\",\"18\",\"3\",\"10.1007/s11554-020-00979-8\",\"Zengjun ZhaoXinkai KuangYukuan ZhuYecheng LiangYubo Xuan\",\"2021\",\"http://link.springer.com/article/10.1007/s11554-020-00979-8\",\"Article\"\n\"A novel CT image segmentation algorithm using PCNN and Sobolev gradient methods in GPU frameworks\",\"Pattern Analysis and Applications\",\"\",\"23\",\"2\",\"10.1007/s10044-019-00837-9\",\"Biswajit BiswasSwarup Kr. GhoshAnupam Ghosh\",\"2020\",\"http://link.springer.com/article/10.1007/s10044-019-00837-9\",\"Article\"\n\"Massively parallel palmprint identification system using GPU\",\"Cluster Computing\",\"\",\"22\",\"3\",\"10.1007/s10586-017-1121-z\",\"Syed Ali TariqShahzaib IqbalMubeen GhafoorImtiaz A. TajNoman M. JafriSaad RazzaqTehseen Zia\",\"2019\",\"http://link.springer.com/article/10.1007/s10586-017-1121-z\",\"Article\"\n\"GPU Supported Simulation of Transition-Edge Sensor Arrays\",\"Journal of Low Temperature Physics\",\"\",\"200\",\"5 - 6\",\"10.1007/s10909-020-02450-1\",\"M. LorenzC. KirschP. E. Merino-AlonsoP. PeilleT. DauserE. CucchettiS. J. SmithJ. Wilms\",\"2020\",\"http://link.springer.com/article/10.1007/s10909-020-02450-1\",\"Article\"\n\"Effective naive Bayes nearest neighbor based image classification on GPU\",\"The Journal of Supercomputing\",\"\",\"68\",\"2\",\"10.1007/s11227-013-1068-7\",\"Lei ZhuHai JinRan ZhengXiaowen Feng\",\"2014\",\"http://link.springer.com/article/10.1007/s11227-013-1068-7\",\"Article\"\n\"GPU-Based Blind Watermarking Scheme for 3D Multiresolution Meshes Using Unlifted Butterfly Wavelet Transformation\",\"Circuits, Systems, and Signal Processing\",\"\",\"39\",\"3\",\"10.1007/s00034-019-01220-z\",\"Soumaya HachichaIkbel SayahiAkram ElkefiChokri Ben AmarMourad Zaied\",\"2020\",\"http://link.springer.com/article/10.1007/s00034-019-01220-z\",\"Article\"\n\"Efficient extraction of clustering-based feature signatures using GPU architectures\",\"Multimedia Tools and Applications\",\"\",\"75\",\"13\",\"10.1007/s11042-015-2726-y\",\"Martin KrulišJakub LokočTomáš Skopal\",\"2016\",\"http://link.springer.com/article/10.1007/s11042-015-2726-y\",\"Article\"\n\"Direct private query in location-based services with GPU run time analysis\",\"The Journal of Supercomputing\",\"\",\"71\",\"2\",\"10.1007/s11227-014-1309-4\",\"Charles AsanyaRatan Guha\",\"2015\",\"http://link.springer.com/article/10.1007/s11227-014-1309-4\",\"Article\"\n\"An optimized hybrid remote display protocol using GPU-assisted M-JPEG encoding and novel high-motion detection algorithm\",\"The Journal of Supercomputing\",\"\",\"66\",\"3\",\"10.1007/s11227-013-0972-1\",\"Biao SongWei TangTien-Dung NguyenMohammad Mehedi HassanEui Nam Huh\",\"2013\",\"http://link.springer.com/article/10.1007/s11227-013-0972-1\",\"Article\"\n\"Acceleration techniques and evaluation on multi-core CPU, GPU and FPGA for image processing and super-resolution\",\"Journal of Real-Time Image Processing\",\"\",\"16\",\"4\",\"10.1007/s11554-016-0619-6\",\"Georgios GeorgisGeorge LentarisDionysios Reisis\",\"2019\",\"http://link.springer.com/article/10.1007/s11554-016-0619-6\",\"Article\"\n\"Enhancing GPU parallelism in nature-inspired algorithms\",\"The Journal of Supercomputing\",\"\",\"63\",\"3\",\"10.1007/s11227-012-0770-1\",\"José M. CeciliaAndy NisbetMartyn AmosJosé M. GarcíaManuel Ujaldón\",\"2013\",\"http://link.springer.com/article/10.1007/s11227-012-0770-1\",\"Article\"\n\"Efficient GPU algorithms for parallel decomposition of graphs into strongly connected and maximal end components\",\"Formal Methods in System Design\",\"\",\"48\",\"3\",\"10.1007/s10703-016-0246-7\",\"Anton WijsJoost-Pieter KatoenDragan Bošnački\",\"2016\",\"http://link.springer.com/article/10.1007/s10703-016-0246-7\",\"Article\"\n\"Exploring the parallel capabilities of GPU: Berlekamp-Massey algorithm case study\",\"Cluster Computing\",\"\",\"23\",\"2\",\"10.1007/s10586-019-02961-x\",\"Hanan AliGhada M. FathyZeinab FayezWalaa Sheta\",\"2020\",\"http://link.springer.com/article/10.1007/s10586-019-02961-x\",\"Article\"\n\"Forecasting large scale conditional volatility and covariance using neural network on GPU\",\"The Journal of Supercomputing\",\"\",\"63\",\"2\",\"10.1007/s11227-012-0827-1\",\"Xianggao CaiGuoming LaiXiaola Lin\",\"2013\",\"http://link.springer.com/article/10.1007/s11227-012-0827-1\",\"Article\"\n\"Nearest Neighbor Searches on the GPU\",\"International Journal of Parallel Programming\",\"\",\"40\",\"3\",\"10.1007/s10766-011-0184-3\",\"Pedro LeiteJoão Marcelo TeixeiraThiago FariasBernardo ReisVeronica TeichriebJudith Kelner\",\"2012\",\"http://link.springer.com/article/10.1007/s10766-011-0184-3\",\"Article\"\n\"gEMpicker: a highly parallel GPU-accelerated particle picking tool for cryo-electron microscopy\",\"BMC Structural Biology\",\"\",\"13\",\"1\",\"10.1186/1472-6807-13-25\",\"Thai V HoangXavier CavinPatrick SchultzDavid W Ritchie\",\"2013\",\"http://link.springer.com/article/10.1186/1472-6807-13-25\",\"Article\"\n\"MSKD: multi-split KD-tree design on GPU\",\"Multimedia Tools and Applications\",\"\",\"75\",\"2\",\"10.1007/s11042-014-2371-x\",\"Xin YangBing YangPengjie WangDuanqing Xu\",\"2016\",\"http://link.springer.com/article/10.1007/s11042-014-2371-x\",\"Article\"\n\"A modular lattice boltzmann solver for GPU computing processors\",\"SeMA Journal\",\"\",\"59\",\"1\",\"10.1007/BF03322610\",\"M. AstorinoJ. Becerra SagredoA. Quarteroni\",\"2012\",\"http://link.springer.com/article/10.1007/BF03322610\",\"Article\"\n\"Efficient electro-magnetic analysis of a GPU bitsliced AES implementation\",\"Cybersecurity\",\"\",\"3\",\"1\",\"10.1186/s42400-020-0045-8\",\"Yiwen GaoYongbin ZhouWei Cheng\",\"2020\",\"http://link.springer.com/article/10.1186/s42400-020-0045-8\",\"Article\"\n\"A CPU-GPU-based parallel search algorithm for the best differential characteristics of block ciphers\",\"The Journal of Supercomputing\",\"\",\"77\",\"10\",\"10.1007/s11227-021-03703-w\",\"Pei LiShihao ZhouJiageng Chen\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-021-03703-w\",\"Article\"\n\"A GPU implementation of an iterative receiver for energy saving MIMO ID-BICM systems\",\"The Journal of Supercomputing\",\"\",\"70\",\"2\",\"10.1007/s11227-013-1081-x\",\"Carla RamiroM. Ángeles SimarroF. J. Martínez-ZaldívarAntonio M. VidalAlberto González\",\"2014\",\"http://link.springer.com/article/10.1007/s11227-013-1081-x\",\"Article\"\n\"GPU-Based FFT Computation for Multi-Gigabit WirelessHD Baseband Processing\",\"EURASIP Journal on Wireless Communications and Networking\",\"\",\"2010\",\"1\",\"10.1155/2010/359081\",\"Nicholas HinittTaskin Kocak\",\"2010\",\"http://link.springer.com/article/10.1155/2010/359081\",\"Article\"\n\"Comparing GPU-based multi-volume ray casting techniques\",\"Computer Science - Research and Development\",\"\",\"26\",\"1 - 2\",\"10.1007/s00450-010-0141-1\",\"Nicole SchubertIngrid Scholl\",\"2011\",\"http://link.springer.com/article/10.1007/s00450-010-0141-1\",\"Article\"\n\"Accelerating number theoretic transform in GPU platform for fully homomorphic encryption\",\"The Journal of Supercomputing\",\"\",\"77\",\"2\",\"10.1007/s11227-020-03156-7\",\"Jia-Zheng GoeyWai-Kong LeeBok-Min GoiWun-She Yap\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-020-03156-7\",\"Article\"\n\"GPU implementation of the 2D shallow water equations for the simulation of rainfall/runoff events\",\"Environmental Earth Sciences\",\"\",\"74\",\"11\",\"10.1007/s12665-015-4215-z\",\"Asier LacastaMario Morales-HernándezJavier MurilloPilar García-Navarro\",\"2015\",\"http://link.springer.com/article/10.1007/s12665-015-4215-z\",\"Article\"\n\"Almost optimal column-wise prefix-sum computation on the GPU\",\"The Journal of Supercomputing\",\"\",\"74\",\"4\",\"10.1007/s11227-018-2242-8\",\"Hiroki TokuraToru FujitaKoji NakanoYasuaki ItoJacir L. Bordim\",\"2018\",\"http://link.springer.com/article/10.1007/s11227-018-2242-8\",\"Article\"\n\"GPU-acceleration of waveform relaxation methods for large differential systems\",\"Numerical Algorithms\",\"\",\"71\",\"2\",\"10.1007/s11075-015-9993-6\",\"Dajana ConteRaffaele D’AmbrosioBeatrice Paternoster\",\"2016\",\"http://link.springer.com/article/10.1007/s11075-015-9993-6\",\"Article\"\n\"A non-sequential refinement approach to improve word embeddings using GPU-based string matching algorithms\",\"Cluster Computing\",\"\",\"24\",\"4\",\"10.1007/s10586-021-03321-4\",\"Behzad NaderalvojoudAdnan Ozsoy\",\"2021\",\"http://link.springer.com/article/10.1007/s10586-021-03321-4\",\"Article\"\n\"Caffe CNN-based classification of hyperspectral images on GPU\",\"The Journal of Supercomputing\",\"\",\"75\",\"3\",\"10.1007/s11227-018-2300-2\",\"Alberto S. GareaDora B. HerasFrancisco Argüello\",\"2019\",\"http://link.springer.com/article/10.1007/s11227-018-2300-2\",\"Article\"\n\"SPH-DEM coupling method based on GPU and its application to the landslide tsunami. Part I: method and validation\",\"Acta Geotechnica\",\"\",\"\",\"\",\"10.1007/s11440-021-01388-2\",\"Qian ZhouWen-Jie XuXue-Yang Dong\",\"2021\",\"http://link.springer.com/article/10.1007/s11440-021-01388-2\",\"Article\"\n\"Inertia based filtering of high resolution images using a GPU cluster\",\"Computing and Visualization in Science\",\"\",\"14\",\"4\",\"10.1007/s00791-012-0171-2\",\"Daniel JungblutGillian QueisserGabriel Wittum\",\"2011\",\"http://link.springer.com/article/10.1007/s00791-012-0171-2\",\"Article\"\n\"Rapid Automated Classification of Anesthetic Depth Levels using GPU Based Parallelization of Neural Networks\",\"Journal of Medical Systems\",\"\",\"39\",\"2\",\"10.1007/s10916-015-0197-3\",\"Musa PekerBaha ŞenHüseyin Gürüler\",\"2015\",\"http://link.springer.com/article/10.1007/s10916-015-0197-3\",\"Article\"\n\"GPU-parallel interpolation using the edge-direction based normal vector method for terrain triangular mesh\",\"Journal of Real-Time Image Processing\",\"\",\"14\",\"4\",\"10.1007/s11554-016-0575-1\",\"Jiaji WuLong DengGwanggil JeonJechang Jeong\",\"2018\",\"http://link.springer.com/article/10.1007/s11554-016-0575-1\",\"Article\"\n\"GPU-based RFA simulation for minimally invasive cancer treatment of liver tumours\",\"International Journal of Computer Assisted Radiology and Surgery\",\"\",\"12\",\"1\",\"10.1007/s11548-016-1469-1\",\"Panchatcharam MariappanPhil WeirRonan FlanaganPhilip VoglreiterTuomas AlhonnoroMika PollariMichael MocheHarald BusseJurgen FuttererHorst Rupert PortugallerRoberto Blanco SequeirosMarina Kolesnik\",\"2017\",\"http://link.springer.com/article/10.1007/s11548-016-1469-1\",\"Article\"\n\"Implementation and performance analysis of DVB-T2 rotated constellation demappers on a GPU\",\"Analog Integrated Circuits and Signal Processing\",\"\",\"78\",\"3\",\"10.1007/s10470-013-0101-3\",\"Stefan GrönroosKristian NybomJerker Björkqvist\",\"2014\",\"http://link.springer.com/article/10.1007/s10470-013-0101-3\",\"Article\"\n\"Parallel ILU preconditioners in GPU computation\",\"Soft Computing\",\"\",\"22\",\"24\",\"10.1007/s00500-017-2764-7\",\"Yan ChenXuhong TianHui LiuZhangxin ChenBo YangWenyuan LiaoPeng ZhangRuijian HeMin Yang\",\"2018\",\"http://link.springer.com/article/10.1007/s00500-017-2764-7\",\"Article\"\n\"Liutex-based analysis of drag force and vortex in two-phase flow past 2-D square obstacle using LBM on GPU\",\"Journal of Hydrodynamics\",\"\",\"32\",\"5\",\"10.1007/s42241-020-0058-5\",\"Peng-xin ChengNan GuiXing-tuan YangJi-yuan TuSheng-yao JiangHai-jun Jia\",\"2020\",\"http://link.springer.com/article/10.1007/s42241-020-0058-5\",\"Article\"\n\"Reinforcement learning-based spatial sorting based dynamic task allocation on networked multicore GPU processors\",\"Journal of Ambient Intelligence and Humanized Computing\",\"\",\"12\",\"10\",\"10.1007/s12652-020-02716-2\",\"K. RameshA. Thilagavathy\",\"2021\",\"http://link.springer.com/article/10.1007/s12652-020-02716-2\",\"Article\"\n\"On GPU–CUDA as preprocessing of fuzzy-rough data reduction by means of singular value decomposition\",\"Soft Computing\",\"\",\"22\",\"5\",\"10.1007/s00500-017-2887-x\",\"Salvatore CuomoArdelio GallettiLivia MarcellinoGuglielmo NavarraGerardo Toraldo\",\"2018\",\"http://link.springer.com/article/10.1007/s00500-017-2887-x\",\"Article\"\n\"Parallel Digital Predistortion Design on Mobile GPU and Embedded Multicore CPU for Mobile Transmitters\",\"Journal of Signal Processing Systems\",\"\",\"89\",\"3\",\"10.1007/s11265-017-1233-y\",\"Kaipeng LiAmanullah GhaziChance TarverJani BoutellierMahmoud AbdelazizLauri AnttilaMarkku JunttiMikko ValkamaJoseph R. Cavallaro\",\"2017\",\"http://link.springer.com/article/10.1007/s11265-017-1233-y\",\"Article\"\n\"MilkyWay-2 supercomputer: system and application\",\"Frontiers of Computer Science\",\"\",\"8\",\"3\",\"10.1007/s11704-014-3501-3\",\"Xiangke LiaoLiquan XiaoCanqun YangYutong Lu\",\"2014\",\"http://link.springer.com/article/10.1007/s11704-014-3501-3\",\"Article\"\n\"A vision of post-exascale programming\",\"Frontiers of Information Technology & Electronic Engineering\",\"\",\"19\",\"10\",\"10.1631/FITEE.1800442\",\"Ji-Dong ZhaiWen-Guang Chen\",\"2018\",\"http://link.springer.com/article/10.1631/FITEE.1800442\",\"Article\"\n\"GPU-aware resource management in heterogeneous cloud data centers\",\"The Journal of Supercomputing\",\"\",\"77\",\"11\",\"10.1007/s11227-021-03779-4\",\"Ashwin Kumar KulkarniB. Annappa\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-021-03779-4\",\"Article\"\n\"STEEL-RT: combining single task–single executor model and expanded scheduling to ease heterogeneity exploitation\",\"The Journal of Supercomputing\",\"\",\"76\",\"6\",\"10.1007/s11227-019-02955-x\",\"Antón ReyFrancisco D. IgualManuel Prieto-Matías\",\"2020\",\"http://link.springer.com/article/10.1007/s11227-019-02955-x\",\"Article\"\n\"NoT: a high-level no-threading parallel programming method for heterogeneous systems\",\"The Journal of Supercomputing\",\"\",\"75\",\"7\",\"10.1007/s11227-019-02749-1\",\"Shusen WuXiaoshe DongXingjun ZhangZhengdong Zhu\",\"2019\",\"http://link.springer.com/article/10.1007/s11227-019-02749-1\",\"Article\"\n\"Parallel computing of 3D smoking simulation based on OpenCL heterogeneous platform\",\"The Journal of Supercomputing\",\"\",\"61\",\"1\",\"10.1007/s11227-011-0652-y\",\"Zhiyong YuanWeixin SiXiangyun LiaoZhaoliang DuanYihua DingJianhui Zhao\",\"2012\",\"http://link.springer.com/article/10.1007/s11227-011-0652-y\",\"Article\"\n\"A novel parallel image encryption algorithm based on hybrid chaotic maps with OpenCL implementation\",\"Soft Computing\",\"\",\"24\",\"16\",\"10.1007/s00500-020-04683-4\",\"Lin YouErsong YangGuangyi Wang\",\"2020\",\"http://link.springer.com/article/10.1007/s00500-020-04683-4\",\"Article\"\n\"Hybrid of genetic algorithm and local search to solve MAX-SAT problem using nVidia CUDA framework\",\"Genetic Programming and Evolvable Machines\",\"\",\"10\",\"4\",\"10.1007/s10710-009-9091-4\",\"Asim MunawarMohamed WahibMasaharu MunetomoKiyoshi Akama\",\"2009\",\"http://link.springer.com/article/10.1007/s10710-009-9091-4\",\"Article\"\n\"DLPlib: A Library for Deep Learning Processor\",\"Journal of Computer Science and Technology\",\"\",\"32\",\"2\",\"10.1007/s11390-017-1722-2\",\"Hui-Ying LanLin-Yang WuXiao ZhangJin-Hua TaoXun-Yu ChenBing-Rui WangYu-Qing WangQi GuoYun-Ji Chen\",\"2017\",\"http://link.springer.com/article/10.1007/s11390-017-1722-2\",\"Article\"\n\"Four styles of parallel and net programming\",\"Frontiers of Computer Science in China\",\"\",\"3\",\"3\",\"10.1007/s11704-009-0028-0\",\"Zhiwei XuYongqiang HeWei LinLi Zha\",\"2009\",\"http://link.springer.com/article/10.1007/s11704-009-0028-0\",\"Article\"\n\"Comparison of OpenCL and RenderScript for mobile devices\",\"Multimedia Tools and Applications\",\"\",\"75\",\"22\",\"10.1007/s11042-016-3244-2\",\"SeongKi KimSeok-Kyoo Kim\",\"2016\",\"http://link.springer.com/article/10.1007/s11042-016-3244-2\",\"Article\"\n\"Towards Parallelism Extraction for Heterogeneous Multicore Android Devices\",\"International Journal of Parallel Programming\",\"\",\"45\",\"6\",\"10.1007/s10766-016-0479-5\",\"Miguel Angel AguilarJuan Fernando EusseProjjol RayRainer LeupersGerd AscheidWeihua ShengPrashant Sharma\",\"2017\",\"http://link.springer.com/article/10.1007/s10766-016-0479-5\",\"Article\"\n\"THUBrachy: fast Monte Carlo dose calculation tool accelerated by heterogeneous hardware for high-dose-rate brachytherapy\",\"Nuclear Science and Techniques\",\"\",\"32\",\"3\",\"10.1007/s41365-021-00866-2\",\"An-Kang HuRui QiuHuan LiuZhen WuChun-Yan LiHui ZhangJun-Li LiRui-Jie Yang\",\"2021\",\"http://link.springer.com/article/10.1007/s41365-021-00866-2\",\"Article\"\n\"High-Throughput parallel blind Virtual Screening using BINDSURF\",\"BMC Bioinformatics\",\"\",\"13\",\"14\",\"10.1186/1471-2105-13-S14-S13\",\"Irene Sánchez-LinaresHoracio Pérez-SánchezJosé M CeciliaJosé M García\",\"2012\",\"http://link.springer.com/article/10.1186/1471-2105-13-S14-S13\",\"Article\"\n\"Multi-relaxation-time lattice Boltzmann simulations of lid driven flows using graphics processing unit\",\"Applied Mathematics and Mechanics\",\"\",\"38\",\"5\",\"10.1007/s10483-017-2194-9\",\"Chenggong LiJ. P. Y. Maa\",\"2017\",\"http://link.springer.com/article/10.1007/s10483-017-2194-9\",\"Article\"\n\"High performance evaluation of evolutionary-mined association rules on GPUs\",\"The Journal of Supercomputing\",\"\",\"66\",\"3\",\"10.1007/s11227-013-0937-4\",\"Alberto CanoJosé María LunaSebastián Ventura\",\"2013\",\"http://link.springer.com/article/10.1007/s11227-013-0937-4\",\"Article\"\n\"GPUSVM: a comprehensive CUDA based support vector machine package\",\"Central European Journal of Computer Science\",\"\",\"1\",\"4\",\"10.2478/s13537-011-0028-7\",\"Qi LiRaied SalmanErik TestRobert StrackVojislav Kecman\",\"2011\",\"http://link.springer.com/article/10.2478/s13537-011-0028-7\",\"Article\"\n\"An MPI+\n                \n                  \n                \n                $$X$$\n                \n                  \n                    X\n                  \n                \n               implementation of contact global search using Kokkos\",\"Engineering with Computers\",\"\",\"32\",\"2\",\"10.1007/s00366-015-0418-x\",\"Glen A. HansenPatrick G. XavierSam P. MishThomas E. VothMartin W. HeinsteinMicheal W. Glass\",\"2016\",\"http://link.springer.com/article/10.1007/s00366-015-0418-x\",\"Article\"\n\"A new parallel particle filter face tracking method based on heterogeneous system\",\"Journal of Real-Time Image Processing\",\"\",\"7\",\"3\",\"10.1007/s11554-011-0225-6\",\"Ke-Yan LiuYun-Hua LiShanqing LiLiang TangLei Wang\",\"2012\",\"http://link.springer.com/article/10.1007/s11554-011-0225-6\",\"Article\"\n\"Programming GPGPU Graph Applications with Linear Algebra Building Blocks\",\"International Journal of Parallel Programming\",\"\",\"45\",\"3\",\"10.1007/s10766-016-0448-z\",\"Shuai CheBradford M. BeckmannSteven K. Reinhardt\",\"2017\",\"http://link.springer.com/article/10.1007/s10766-016-0448-z\",\"Article\"\n\"Design and evaluation of medical ultrasonic adaptive beamforming algorithm implementation on heterogeneous embedded computing platform\",\"EURASIP Journal on Embedded Systems\",\"\",\"2017\",\"1\",\"10.1186/s13639-017-0069-7\",\"Junying ChenJinhui ChenHuaqing Min\",\"2017\",\"http://link.springer.com/article/10.1186/s13639-017-0069-7\",\"Article\"\n\"Energy cost evaluation of parallel algorithms for multiprocessor systems\",\"Cluster Computing\",\"\",\"16\",\"1\",\"10.1007/s10586-011-0188-1\",\"Zhuowei WangXianbin XuNaixue XiongLaurence T. YangWuqing Zhao\",\"2013\",\"http://link.springer.com/article/10.1007/s10586-011-0188-1\",\"Article\"\n\"High-performance biocomputing for simulating the spread of contagion over large contact networks\",\"BMC Genomics\",\"\",\"13\",\"2\",\"10.1186/1471-2164-13-S2-S3\",\"Keith R BissetAshwin M AjiMadhav V MaratheWu-chun Feng\",\"2012\",\"http://link.springer.com/article/10.1186/1471-2164-13-S2-S3\",\"Article\"\n\"SDAM: a combined stack distance-analytical modeling approach to estimate memory performance in GPUs\",\"The Journal of Supercomputing\",\"\",\"77\",\"5\",\"10.1007/s11227-020-03483-9\",\"Mohsen KianiAmir Rajabzadeh\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-020-03483-9\",\"Article\"\n\"An efficient parallelization technique for x264 encoder on heterogeneous platforms consisting of CPUs and GPUs\",\"Journal of Real-Time Image Processing\",\"\",\"9\",\"1\",\"10.1007/s11554-012-0317-y\",\"Youngsub KoYoungmin YiSoonhoi Ha\",\"2014\",\"http://link.springer.com/article/10.1007/s11554-012-0317-y\",\"Article\"\n\"Paradigmatic shifts for exascale supercomputing\",\"The Journal of Supercomputing\",\"\",\"62\",\"2\",\"10.1007/s11227-012-0789-3\",\"Neal E. DavisRobert W. RobeyCharles R. FerenbaughDavid NicholaeffDennis P. Trujillo\",\"2012\",\"http://link.springer.com/article/10.1007/s11227-012-0789-3\",\"Article\"\n\"GPU implementation of a road sign detector based on particle swarm optimization\",\"Evolutionary Intelligence\",\"\",\"3\",\"3 - 4\",\"10.1007/s12065-010-0043-y\",\"Luca MussiStefano CagnoniElena CardarelliFabio DaolioPaolo MediciPier Paolo Porta\",\"2010\",\"http://link.springer.com/article/10.1007/s12065-010-0043-y\",\"Article\"\n\"A new MapReduce associative classifier based on a new storage format for large-scale imbalanced data\",\"Cluster Computing\",\"\",\"21\",\"4\",\"10.1007/s10586-018-2812-9\",\"Mehrdad AlmasiMohammad Saniee Abadeh\",\"2018\",\"http://link.springer.com/article/10.1007/s10586-018-2812-9\",\"Article\"\n\"A run-time optimization approach for reducing data movements using locality-aware searching\",\"The Journal of Supercomputing\",\"\",\"69\",\"2\",\"10.1007/s11227-014-1186-x\",\"Liang LiEndong WangXingjun ZhangKang YanTao JuXiaoshe Dong\",\"2014\",\"http://link.springer.com/article/10.1007/s11227-014-1186-x\",\"Article\"\n\"A Resource Selection System for Cycle Stealing in GPU Grids\",\"Journal of Grid Computing\",\"\",\"6\",\"4\",\"10.1007/s10723-008-9099-7\",\"Y. KotaniF. InoK. Hagihara\",\"2008\",\"http://link.springer.com/article/10.1007/s10723-008-9099-7\",\"Article\"\n\"Simultaneous CPU–GPU Execution of Data Parallel Algorithmic Skeletons\",\"International Journal of Parallel Programming\",\"\",\"46\",\"1\",\"10.1007/s10766-016-0483-9\",\"Fabian WredeSteffen Ernsting\",\"2018\",\"http://link.springer.com/article/10.1007/s10766-016-0483-9\",\"Article\"\n\"Real-time anomaly detection in hyperspectral images using multivariate normal mixture models and GPU processing\",\"Journal of Real-Time Image Processing\",\"\",\"4\",\"3\",\"10.1007/s11554-008-0105-x\",\"Yuliya TarabalkaTrym Vegard HaavardsholmIngebjørg KåsenTorbjørn Skauli\",\"2009\",\"http://link.springer.com/article/10.1007/s11554-008-0105-x\",\"Article\"\n\"An Infrastructure for Tackling Input-Sensitivity of GPU Program Optimizations\",\"International Journal of Parallel Programming\",\"\",\"41\",\"6\",\"10.1007/s10766-012-0236-3\",\"Xipeng ShenYixun LiuEddy Z. ZhangPoornima Bhamidipati\",\"2013\",\"http://link.springer.com/article/10.1007/s10766-012-0236-3\",\"Article\"\n\"Tracing and Profiling Machine Learning Dataflow Applications on GPU\",\"International Journal of Parallel Programming\",\"\",\"47\",\"5 - 6\",\"10.1007/s10766-019-00630-5\",\"Pierre ZinsMichel Dagenais\",\"2019\",\"http://link.springer.com/article/10.1007/s10766-019-00630-5\",\"Article\"\n\"Integration of GPU Computing in a Software Radio Environment\",\"Journal of Signal Processing Systems\",\"\",\"69\",\"1\",\"10.1007/s11265-011-0639-1\",\"Pierre-Henri HorreinChristine HennebertFrédéric Pétrot\",\"2012\",\"http://link.springer.com/article/10.1007/s11265-011-0639-1\",\"Article\"\n\"Evaluations of OpenCL-written tsunami simulation on FPGA and comparison with GPU implementation\",\"The Journal of Supercomputing\",\"\",\"74\",\"6\",\"10.1007/s11227-018-2315-8\",\"Fumiya KonoNaohito NakasatoKensaku HayashiAlexander VazheninStanislav Sedukhin\",\"2018\",\"http://link.springer.com/article/10.1007/s11227-018-2315-8\",\"Article\"\n\"Impact of data layouts on the efficiency of GPU-accelerated IDW interpolation\",\"SpringerPlus\",\"\",\"5\",\"1\",\"10.1186/s40064-016-1731-6\",\"Gang MeiHong Tian\",\"2016\",\"http://link.springer.com/article/10.1186/s40064-016-1731-6\",\"Article\"\n\"Exploiting task and data parallelism for advanced video coding on hybrid CPU + GPU platforms\",\"Journal of Real-Time Image Processing\",\"\",\"11\",\"3\",\"10.1007/s11554-013-0357-y\",\"Svetislav MomcilovicNuno RomaLeonel Sousa\",\"2016\",\"http://link.springer.com/article/10.1007/s11554-013-0357-y\",\"Article\"\n\"An analysis of the graph processing landscape\",\"Journal of Big Data\",\"\",\"8\",\"1\",\"10.1186/s40537-021-00443-9\",\"Miguel E. CoimbraAlexandre P. FranciscoLuís Veiga\",\"2021\",\"http://link.springer.com/article/10.1186/s40537-021-00443-9\",\"Article\"\n\"A survey on parallel clustering algorithms for Big Data\",\"Artificial Intelligence Review\",\"\",\"54\",\"4\",\"10.1007/s10462-020-09918-2\",\"Zineb DafirYasmine LamariSaid Chah Slaoui\",\"2021\",\"http://link.springer.com/article/10.1007/s10462-020-09918-2\",\"Article\"\n\"Two-Dimensional Compact Third-Order Polynomial Reconstructions. Solving Nonconservative Hyperbolic Systems Using GPUs\",\"Journal of Scientific Computing\",\"\",\"48\",\"1 - 3\",\"10.1007/s10915-011-9470-x\",\"José M. GallardoSergio OrtegaMarc de la AsunciónJosé Miguel Mantas\",\"2011\",\"http://link.springer.com/article/10.1007/s10915-011-9470-x\",\"Article\"\n\"A middleware for efficient stream processing in CUDA\",\"Computer Science - Research and Development\",\"\",\"25\",\"1 - 2\",\"10.1007/s00450-010-0107-3\",\"Shinta NakagawaFumihiko InoKenichi Hagihara\",\"2010\",\"http://link.springer.com/article/10.1007/s00450-010-0107-3\",\"Article\"\n\"A BSP model graph processing system on many cores\",\"Cluster Computing\",\"\",\"20\",\"2\",\"10.1007/s10586-017-0829-0\",\"Siyan LaiGuangda LaiFangzhou LuGuojun ShenJing JinXiaola Lin\",\"2017\",\"http://link.springer.com/article/10.1007/s10586-017-0829-0\",\"Article\"\n\"H.264/AVC inter prediction on accelerator-based multi-core systems\",\"Multimedia Tools and Applications\",\"\",\"66\",\"3\",\"10.1007/s11042-012-1056-6\",\"Rafael Rodríguez-SánchezJosé Luis MartínezGerardo Fernández-EscribanoJosé Luis SánchezJosé Manuel Claver\",\"2013\",\"http://link.springer.com/article/10.1007/s11042-012-1056-6\",\"Article\"\n\"Algorithmic Skeletons and Parallel Design Patterns in Mainstream Parallel Programming\",\"International Journal of Parallel Programming\",\"\",\"49\",\"2\",\"10.1007/s10766-020-00684-w\",\"Marco DaneluttoGabriele MencagliMassimo TorquatiHoracio González–VélezPeter Kilpatrick\",\"2021\",\"http://link.springer.com/article/10.1007/s10766-020-00684-w\",\"Article\"\n\"CUDASW++2.0: enhanced Smith-Waterman protein database search on CUDA-enabled GPUs based on SIMT and virtualized SIMD abstractions\",\"BMC Research Notes\",\"\",\"3\",\"1\",\"10.1186/1756-0500-3-93\",\"Yongchao LiuBertil SchmidtDouglas L Maskell\",\"2010\",\"http://link.springer.com/article/10.1186/1756-0500-3-93\",\"Article\"\n\"Toward a BLAS library truly portable across different accelerator types\",\"The Journal of Supercomputing\",\"\",\"75\",\"11\",\"10.1007/s11227-019-02925-3\",\"Eduardo Rodriguez-GutiezAna Moreton-FernandezArturo Gonzalez-EscribanoDiego R. Llanos\",\"2019\",\"http://link.springer.com/article/10.1007/s11227-019-02925-3\",\"Article\"\n\"Solving finite difference linear systems on GPUs: CUDA based Parallel Explicit Preconditioned Biconjugate Conjugate Gradient type Methods\",\"The Journal of Supercomputing\",\"\",\"61\",\"3\",\"10.1007/s11227-011-0619-z\",\"G. A. GravvanisC. K. Filelis-PapadopoulosK. M. Giannoutakis\",\"2012\",\"http://link.springer.com/article/10.1007/s11227-011-0619-z\",\"Article\"\n\"Data Layout Transformation Exploiting Memory-Level Parallelism in Structured Grid Many-Core Applications\",\"International Journal of Parallel Programming\",\"\",\"40\",\"1\",\"10.1007/s10766-011-0182-5\",\"I-Jui SungNasser AnssariJohn A. StrattonWen-Mei W. Hwu\",\"2012\",\"http://link.springer.com/article/10.1007/s10766-011-0182-5\",\"Article\"\n\"Speeding up the log-polar transform with inexpensive parallel hardware: graphics units and multi-core architectures\",\"Journal of Real-Time Image Processing\",\"\",\"10\",\"3\",\"10.1007/s11554-012-0281-6\",\"Marco AntonelliFrancisco D. IgualFrancisco RamosV. Javier Traver\",\"2015\",\"http://link.springer.com/article/10.1007/s11554-012-0281-6\",\"Article\"\n\"Dynamic load balancing on heterogeneous clusters for parallel ant colony optimization\",\"Cluster Computing\",\"\",\"19\",\"1\",\"10.1007/s10586-016-0534-4\",\"Antonio LlanesJosé M. CeciliaAntonia SánchezJosé M. GarcíaMartyn AmosManuel Ujaldón\",\"2016\",\"http://link.springer.com/article/10.1007/s10586-016-0534-4\",\"Article\"\n\"A framework for accelerating local feature extraction with OpenCL on multi-core CPUs and co-processors\",\"Journal of Real-Time Image Processing\",\"\",\"16\",\"4\",\"10.1007/s11554-016-0576-0\",\"Konrad MorenDiana Göhringer\",\"2019\",\"http://link.springer.com/article/10.1007/s11554-016-0576-0\",\"Article\"\n\"Emerging Architectures Enable to Boost Massively Parallel Data Mining Using Adaptive Sparse Grids\",\"International Journal of Parallel Programming\",\"\",\"41\",\"3\",\"10.1007/s10766-012-0202-0\",\"Alexander HeineckeDirk Pflüger\",\"2013\",\"http://link.springer.com/article/10.1007/s10766-012-0202-0\",\"Article\"\n\"A dynamic acceleration method for remote sensing image processing based on CUDA\",\"Wireless Networks\",\"\",\"27\",\"6\",\"10.1007/s11276-021-02715-x\",\"Xianyu ZuoZhe ZhangBaojun QiaoJunfeng TianLiming ZhouYunzhou Zhang\",\"2021\",\"http://link.springer.com/article/10.1007/s11276-021-02715-x\",\"Article\"\n\"A first look at integrated GPUs for green high-performance computing\",\"Computer Science - Research and Development\",\"\",\"25\",\"3 - 4\",\"10.1007/s00450-010-0128-y\",\"T. R. W. ScoglandH. LinW. Feng\",\"2010\",\"http://link.springer.com/article/10.1007/s00450-010-0128-y\",\"Article\"\n\"A survey on partitioning models, solution algorithms and algorithm parallelization for hardware/software co-design\",\"Design Automation for Embedded Systems\",\"\",\"23\",\"1 - 2\",\"10.1007/s10617-019-09220-7\",\"Neng HouXiaohu YanFazhi He\",\"2019\",\"http://link.springer.com/article/10.1007/s10617-019-09220-7\",\"Article\"\n\"Multiscale and local search methods for real time region tracking with particle filters: local search driven by adaptive scale estimation on GPUs\",\"Machine Vision and Applications\",\"\",\"21\",\"1\",\"10.1007/s00138-008-0140-4\",\"Raúl CabidoAntonio S. MontemayorJuan José PantrigoBryson R. Payne\",\"2008\",\"http://link.springer.com/article/10.1007/s00138-008-0140-4\",\"Article\"\n\"Systolic genetic search, a systolic computing-based metaheuristic\",\"Soft Computing\",\"\",\"19\",\"7\",\"10.1007/s00500-014-1363-0\",\"Martín PedemonteFrancisco LunaEnrique Alba\",\"2015\",\"http://link.springer.com/article/10.1007/s00500-014-1363-0\",\"Article\"\n\"CRState: checkpoint/restart of OpenCL program for in-kernel applications\",\"The Journal of Supercomputing\",\"\",\"77\",\"6\",\"10.1007/s11227-020-03460-2\",\"Genlang ChenJiajian ZhangZufang ZhuQiangqiang JiangHai JiangChaoyi Pang\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-020-03460-2\",\"Article\"\n\"Parallel probabilistic model checking on general purpose graphics processors\",\"International Journal on Software Tools for Technology Transfer\",\"\",\"13\",\"1\",\"10.1007/s10009-010-0176-4\",\"Dragan BošnačkiStefan EdelkampDamian SulewskiAnton Wijs\",\"2011\",\"http://link.springer.com/article/10.1007/s10009-010-0176-4\",\"Article\"\n\"Mapping of option pricing algorithms onto heterogeneous many-core architectures\",\"The Journal of Supercomputing\",\"\",\"73\",\"9\",\"10.1007/s11227-017-1968-z\",\"Shuai ZhangZhao WangYing PengBertil SchmidtWeiguo Liu\",\"2017\",\"http://link.springer.com/article/10.1007/s11227-017-1968-z\",\"Article\"\n\"Evaluating the SAT problem on P systems for different high-performance architectures\",\"The Journal of Supercomputing\",\"\",\"69\",\"1\",\"10.1007/s11227-014-1150-9\",\"José M. CeciliaJosé M. GarcíaGinés D. GuerreroManuel Ujaldón\",\"2014\",\"http://link.springer.com/article/10.1007/s11227-014-1150-9\",\"Article\"\n\"Exploiting OpenMP and OpenACC to accelerate a geometric approach to molecular docking in heterogeneous HPC nodes\",\"The Journal of Supercomputing\",\"\",\"75\",\"7\",\"10.1007/s11227-019-02875-w\",\"Emanuele VitaliDavide GadioliGianluca PalermoAndrea BeccariCarlo CavazzoniCristina Silvano\",\"2019\",\"http://link.springer.com/article/10.1007/s11227-019-02875-w\",\"Article\"\n\"A quantitative evaluation of unified memory in GPUs\",\"The Journal of Supercomputing\",\"\",\"76\",\"4\",\"10.1007/s11227-019-03079-y\",\"Qi YuBruce ChildersLibo HuangCheng QianZhiying Wang\",\"2020\",\"http://link.springer.com/article/10.1007/s11227-019-03079-y\",\"Article\"\n\"Accelerated bulk memory operations on heterogeneous multi-core systems\",\"The Journal of Supercomputing\",\"\",\"74\",\"12\",\"10.1007/s11227-018-2589-x\",\"JongHyuk LeeWeidong ShiJoonMin Gil\",\"2018\",\"http://link.springer.com/article/10.1007/s11227-018-2589-x\",\"Article\"\n\"A study of graphics hardware accelerated particle swarm optimization with digital pheromones\",\"Structural and Multidisciplinary Optimization\",\"\",\"51\",\"6\",\"10.1007/s00158-014-1215-7\",\"Vijay KalivarapuEliot Winer\",\"2015\",\"http://link.springer.com/article/10.1007/s00158-014-1215-7\",\"Article\"\n\"A Fuzzy Neural Network Based Dynamic Data Allocation Model on Heterogeneous Multi-GPUs for Large-scale Computations\",\"International Journal of Automation and Computing\",\"\",\"15\",\"2\",\"10.1007/s11633-018-1120-4\",\"Chao-Long ZhangYuan-Ping XuZhi-Jie XuJia HeJing WangJian-Hua Adu\",\"2018\",\"http://link.springer.com/article/10.1007/s11633-018-1120-4\",\"Article\"\n\"On the effect of using rCUDA to provide CUDA acceleration to Xen virtual machines\",\"Cluster Computing\",\"\",\"22\",\"1\",\"10.1007/s10586-018-2845-0\",\"Javier PradesCarlos ReañoFederico Silla\",\"2019\",\"http://link.springer.com/article/10.1007/s10586-018-2845-0\",\"Article\"\n\"DecGPU: distributed error correction on massively parallel graphics processing units using CUDA and MPI\",\"BMC Bioinformatics\",\"\",\"12\",\"1\",\"10.1186/1471-2105-12-85\",\"Yongchao LiuBertil SchmidtDouglas L Maskell\",\"2011\",\"http://link.springer.com/article/10.1186/1471-2105-12-85\",\"Article\"\n\"GPU-based normalized cuts for road extraction using satellite imagery\",\"Journal of Earth System Science\",\"\",\"123\",\"8\",\"10.1007/s12040-014-0513-1\",\"J SENTHILNATHS SINDHUS N OMKAR\",\"2014\",\"http://link.springer.com/article/10.1007/s12040-014-0513-1\",\"Article\"\n\"Object oriented framework for real-time image processing on GPU\",\"Multimedia Tools and Applications\",\"\",\"70\",\"3\",\"10.1007/s11042-013-1440-x\",\"Nicolas SeillerWilliemNitin SinghalIn Kyu Park\",\"2014\",\"http://link.springer.com/article/10.1007/s11042-013-1440-x\",\"Article\"\n\"Vectorized algorithm for multidimensional Monte Carlo integration on modern GPU, CPU and MIC architectures\",\"The Journal of Supercomputing\",\"\",\"74\",\"2\",\"10.1007/s11227-017-2172-x\",\"Przemysław Stpiczyński\",\"2018\",\"http://link.springer.com/article/10.1007/s11227-017-2172-x\",\"Article\"\n\"Software for numerical simulation of convection in spherical shells for hybrid CPU/GPU computing systems\",\"Mathematical Models and Computer Simulations\",\"\",\"7\",\"3\",\"10.1134/S2070048215030047\",\"I. V. BychinV. A. GalkinT. V. GavrilenkoA. V. GorelikovA. V. Ryakhovsky\",\"2015\",\"http://link.springer.com/article/10.1134/S2070048215030047\",\"Article\"\n\"GPU-accelerated denoising of 3D magnetic resonance images\",\"Journal of Real-Time Image Processing\",\"\",\"13\",\"4\",\"10.1007/s11554-014-0436-8\",\"Mark HowisonE. Wes Bethel\",\"2017\",\"http://link.springer.com/article/10.1007/s11554-014-0436-8\",\"Article\"\n\"Parallel regressions for variable selection using GPU\",\"Computing\",\"\",\"99\",\"3\",\"10.1007/s00607-016-0487-8\",\"Lauro Cássio Martins de PaulaAnderson S. SoaresTelma W. L. SoaresArlindo R. G. FilhoClarimar J. CoelhoAlexandre C. B. DelbemWellington S. Martins\",\"2017\",\"http://link.springer.com/article/10.1007/s00607-016-0487-8\",\"Article\"\n\"CPU/GPU computing for a multi-block structured grid based high-order flow solver on a large heterogeneous system\",\"Cluster Computing\",\"\",\"17\",\"2\",\"10.1007/s10586-013-0332-1\",\"Wei CaoChuan-fu XuZheng-hua WangLu YaoHua-yong Liu\",\"2014\",\"http://link.springer.com/article/10.1007/s10586-013-0332-1\",\"Article\"\n\"A performance- and energy-oriented extended tuning process for time-step-based scientific applications\",\"The Journal of Supercomputing\",\"\",\"77\",\"4\",\"10.1007/s11227-020-03402-y\",\"Natalia KalinnikRobert KieselThomas RauberMarcel RichterGudula Rünger\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-020-03402-y\",\"Article\"\n\"A fast single-image super-resolution method implemented with CUDA\",\"Journal of Real-Time Image Processing\",\"\",\"16\",\"1\",\"10.1007/s11554-018-0774-z\",\"Yuan YuanXiaomin YangWei WuHu LiYiguang LiuKai Liu\",\"2019\",\"http://link.springer.com/article/10.1007/s11554-018-0774-z\",\"Article\"\n\"Parallel Implementations of the Cooperative Particle Swarm Optimization on Many-core and Multi-core Architectures\",\"International Journal of Parallel Programming\",\"\",\"44\",\"6\",\"10.1007/s10766-015-0368-3\",\"Nadia NedjahRogério de M. CalazanLuiza de Macedo MourelleChao Wang\",\"2016\",\"http://link.springer.com/article/10.1007/s10766-015-0368-3\",\"Article\"\n\"CUDA-NP: Realizing Nested Thread-Level Parallelism in GPGPU Applications\",\"Journal of Computer Science and Technology\",\"\",\"30\",\"1\",\"10.1007/s11390-015-1500-y\",\"Yi YangChao LiHuiyang Zhou\",\"2015\",\"http://link.springer.com/article/10.1007/s11390-015-1500-y\",\"Article\"\n\"An experimental evaluation of extreme learning machines on several hardware devices\",\"Neural Computing and Applications\",\"\",\"32\",\"18\",\"10.1007/s00521-019-04481-6\",\"Liang LiGuoren WangGang WuQi Zhang\",\"2020\",\"http://link.springer.com/article/10.1007/s00521-019-04481-6\",\"Article\"\n\"Android\n                \n                  \n                \n                $$^\\mathrm{TM}$$\n                \n                  \n                    \n                      \n                      TM\n                    \n                  \n                \n               development and performance analysis\",\"The Journal of Supercomputing\",\"\",\"70\",\"2\",\"10.1007/s11227-014-1119-8\",\"Alejandro AcostaFrancisco Almeida\",\"2014\",\"http://link.springer.com/article/10.1007/s11227-014-1119-8\",\"Article\"\n\"Effect of baffles on the flow hydrodynamics of dual-Rushton turbine stirred tank bioreactor—a CFD study\",\"Brazilian Journal of Chemical Engineering\",\"\",\"38\",\"4\",\"10.1007/s43153-021-00176-5\",\"Alankar AgarwalGurveer SinghAkshay Prakash\",\"2021\",\"http://link.springer.com/article/10.1007/s43153-021-00176-5\",\"Article\"\n\"Finding the Next Computational Model: Experience with the UCSC Kestrel\",\"Journal of Signal Processing Systems\",\"\",\"53\",\"1 - 2\",\"10.1007/s11265-007-0130-1\",\"Richard HugheyAndrea Di Blas\",\"2008\",\"http://link.springer.com/article/10.1007/s11265-007-0130-1\",\"Article\"\n\"PPModel: a modeling tool for source code maintenance and optimization of parallel programs\",\"The Journal of Supercomputing\",\"\",\"62\",\"3\",\"10.1007/s11227-012-0821-7\",\"Ferosh JacobJeff GrayJeffrey C. CarverMarjan MernikPurushotham Bangalore\",\"2012\",\"http://link.springer.com/article/10.1007/s11227-012-0821-7\",\"Article\"\n\"Parallel programming for multimedia applications\",\"Multimedia Tools and Applications\",\"\",\"51\",\"2\",\"10.1007/s11042-010-0656-2\",\"Hari KalvaAleksandar ColicAdriana GarciaBorko Furht\",\"2011\",\"http://link.springer.com/article/10.1007/s11042-010-0656-2\",\"Article\"\n\"The experience of using DVM and SAPFOR systems in semi automatic parallelization of an application for 3D modeling in geophysics\",\"The Journal of Supercomputing\",\"\",\"75\",\"12\",\"10.1007/s11227-018-2551-y\",\"Nikita KataevAlexander Kolganov\",\"2019\",\"http://link.springer.com/article/10.1007/s11227-018-2551-y\",\"Article\"\n\"Status and future perspectives for lattice gauge theory calculations to the exascale and beyond\",\"The European Physical Journal A\",\"\",\"55\",\"11\",\"10.1140/epja/i2019-12919-7\",\"Bálint JoóChulwoo JungNorman H. ChristWilliam DetmoldRobert G. EdwardsMartin SavagePhiala Shanahan\",\"2019\",\"http://link.springer.com/article/10.1140/epja/i2019-12919-7\",\"Article\"\n\"Iris recognition in unconstrained environment on graphic processing units with CUDA\",\"Artificial Intelligence Review\",\"\",\"53\",\"5\",\"10.1007/s10462-019-09776-7\",\"Ali NoruziMahmoud MahloujiAli Shahidinejad\",\"2020\",\"http://link.springer.com/article/10.1007/s10462-019-09776-7\",\"Article\"\n\"A Fast MHD Code for Gravitationally Stratified Media using Graphical Processing Units: SMAUG\",\"Journal of Astrophysics and Astronomy\",\"\",\"36\",\"1\",\"10.1007/s12036-015-9328-y\",\"M. K. GriffithsV. FedunR. Erdélyi\",\"2015\",\"http://link.springer.com/article/10.1007/s12036-015-9328-y\",\"Article\"\n\"A generic optimization method of multivariate systems on graphic processing units\",\"Soft Computing\",\"\",\"22\",\"23\",\"10.1007/s00500-018-3507-0\",\"Guohong LiaoZheng GongZheng HuangWeidong Qiu\",\"2018\",\"http://link.springer.com/article/10.1007/s00500-018-3507-0\",\"Article\"\n\"Improving an autotuning engine for 3D Fast Wavelet Transform on manycore systems\",\"The Journal of Supercomputing\",\"\",\"70\",\"2\",\"10.1007/s11227-014-1302-y\",\"Gregorio BernabéJavier CuencaLuis Pedro GarcíaDomingo Giménez\",\"2014\",\"http://link.springer.com/article/10.1007/s11227-014-1302-y\",\"Article\"\n\"Relational Learning with GPUs: Accelerating Rule Coverage\",\"International Journal of Parallel Programming\",\"\",\"44\",\"3\",\"10.1007/s10766-015-0364-7\",\"Carlos Alberto Martínez-AngelesHaicheng WuInês DutraVítor Santos CostaJorge Buenabad-Chávez\",\"2016\",\"http://link.springer.com/article/10.1007/s10766-015-0364-7\",\"Article\"\n\"Graphics processing unit-accelerated joint-bitplane belief propagation algorithm in DSC\",\"The Journal of Supercomputing\",\"\",\"72\",\"6\",\"10.1007/s11227-016-1736-5\",\"Yuan DaiYong FangLong YangGwanggil Jeon\",\"2016\",\"http://link.springer.com/article/10.1007/s11227-016-1736-5\",\"Article\"\n\"The index array approach and the dual tiled similarity algorithm for UAS hyper-spatial image processing\",\"GeoInformatica\",\"\",\"20\",\"4\",\"10.1007/s10707-016-0253-2\",\"Lihong SuYuxia HuangJames GibeautLongzhuang Li\",\"2016\",\"http://link.springer.com/article/10.1007/s10707-016-0253-2\",\"Article\"\n\"Scaling database performance on GPUs\",\"Information Systems Frontiers\",\"\",\"14\",\"4\",\"10.1007/s10796-011-9322-0\",\"Yue-Shan ChangRuey-Kai SheuShyan-Ming YuanJyn-Jie Hsu\",\"2012\",\"http://link.springer.com/article/10.1007/s10796-011-9322-0\",\"Article\"\n\"The spectral cell method for wave propagation in heterogeneous materials simulated on multiple GPUs and CPUs\",\"Computational Mechanics\",\"\",\"63\",\"5\",\"10.1007/s00466-018-1623-4\",\"Farshid MossaibyMeysam JoulaianAlexander Düster\",\"2019\",\"http://link.springer.com/article/10.1007/s00466-018-1623-4\",\"Article\"\n\"Real-time virtual environment signal extraction and denoising using programmable graphics hardware\",\"International Journal of Automation and Computing\",\"\",\"6\",\"4\",\"10.1007/s11633-009-0326-x\",\"Yang SuZhi-Jie XuXiang-Qian Jiang\",\"2009\",\"http://link.springer.com/article/10.1007/s11633-009-0326-x\",\"Article\"\n\"A Survey on Parallel Particle Swarm Optimization Algorithms\",\"Arabian Journal for Science and Engineering\",\"\",\"44\",\"4\",\"10.1007/s13369-018-03713-6\",\"Soniya LalwaniHarish SharmaSuresh Chandra SatapathyKusum DeepJagdish Chand Bansal\",\"2019\",\"http://link.springer.com/article/10.1007/s13369-018-03713-6\",\"Article\"\n\"SearchaStore: fast and secure searchable cloud services\",\"Cluster Computing\",\"\",\"21\",\"2\",\"10.1007/s10586-017-0941-1\",\"Wai-Kong LeeRaphael C.-W. PhanGeong-Sen PohBok-Min Goi\",\"2018\",\"http://link.springer.com/article/10.1007/s10586-017-0941-1\",\"Article\"\n\"E-OSched: a load balancing scheduler for heterogeneous multicores\",\"The Journal of Supercomputing\",\"\",\"74\",\"10\",\"10.1007/s11227-018-2435-1\",\"Yasir Noman KhalidMuhammad AleemRadu ProdanMuhammad Azhar IqbalMuhammad Arshad Islam\",\"2018\",\"http://link.springer.com/article/10.1007/s11227-018-2435-1\",\"Article\"\n\"Parallel Mining of Neuronal Spike Streams on Graphics Processing Units\",\"International Journal of Parallel Programming\",\"\",\"40\",\"6\",\"10.1007/s10766-011-0181-6\",\"Yong CaoDebprakash PatnaikSean PonceJeremy ArchuletaPatrick ButlerWu-chun FengNaren Ramakrishnan\",\"2012\",\"http://link.springer.com/article/10.1007/s10766-011-0181-6\",\"Article\"\n\"ScrimpCo: scalable matrix profile on commodity heterogeneous processors\",\"The Journal of Supercomputing\",\"\",\"76\",\"11\",\"10.1007/s11227-020-03199-w\",\"Jose C. RomeroAntonio VilchesAndrés RodríguezAngeles NavarroRafael Asenjo\",\"2020\",\"http://link.springer.com/article/10.1007/s11227-020-03199-w\",\"Article\"\n\"Methodology and optimization for implementing cluster-based parallel geospatial algorithms with a case study\",\"Cluster Computing\",\"\",\"23\",\"2\",\"10.1007/s10586-019-02944-y\",\"Fang HuangBo TieJian TaoXicheng TanYan Ma\",\"2020\",\"http://link.springer.com/article/10.1007/s10586-019-02944-y\",\"Article\"\n\"Accelerating low-fidelity aerodynamic codes on multi- and many-core architectures\",\"The Journal of Supercomputing\",\"\",\"71\",\"9\",\"10.1007/s11227-015-1444-6\",\"Marcin ChrustEric LaurendeauLuc Ostiguy\",\"2015\",\"http://link.springer.com/article/10.1007/s11227-015-1444-6\",\"Article\"\n\"Normalized particle swarm optimization for complex chooser option pricing on graphics processing unit\",\"The Journal of Supercomputing\",\"\",\"66\",\"1\",\"10.1007/s11227-013-0893-z\",\"Bhanu SharmaRuppa K. ThulasiramParimala Thulasiraman\",\"2013\",\"http://link.springer.com/article/10.1007/s11227-013-0893-z\",\"Article\"\n\"Machine Learning and Deep Learning frameworks and libraries for large-scale data mining: a survey\",\"Artificial Intelligence Review\",\"\",\"52\",\"1\",\"10.1007/s10462-018-09679-z\",\"Giang NguyenStefan DlugolinskyMartin BobákViet TranÁlvaro López GarcíaIgnacio HerediaPeter MalíkLadislav Hluchý\",\"2019\",\"http://link.springer.com/article/10.1007/s10462-018-09679-z\",\"Article\"\n\"Fast Automatic Segmentation of White Matter Streamlines Based on a Multi-Subject Bundle Atlas\",\"Neuroinformatics\",\"\",\"15\",\"1\",\"10.1007/s12021-016-9316-7\",\"Nicole LabraPamela GuevaraDelphine DuclapJosselin HouenouCyril PouponJean-François ManginMiguel Figueroa\",\"2017\",\"http://link.springer.com/article/10.1007/s12021-016-9316-7\",\"Article\"\n\"OpenDwarfs: Characterization of Dwarf-Based Benchmarks on Fixed and Reconfigurable Architectures\",\"Journal of Signal Processing Systems\",\"\",\"85\",\"3\",\"10.1007/s11265-015-1051-z\",\"Konstantinos KrommydasWu-chun FengChristos D. AntonopoulosNikolaos Bellas\",\"2016\",\"http://link.springer.com/article/10.1007/s11265-015-1051-z\",\"Article\"\n\"Programming big data analysis: principles and solutions\",\"Journal of Big Data\",\"\",\"9\",\"1\",\"10.1186/s40537-021-00555-2\",\"Loris BelcastroRiccardo CantiniFabrizio MarozzoAlessio OrsinoDomenico TaliaPaolo Trunfio\",\"2022\",\"http://link.springer.com/article/10.1186/s40537-021-00555-2\",\"Article\"\n\"MapReduce: Review and open challenges\",\"Scientometrics\",\"\",\"109\",\"1\",\"10.1007/s11192-016-1945-y\",\"Ibrahim Abaker Targio HashemNor Badrul AnuarAbdullah GaniIbrar YaqoobFeng XiaSamee Ullah Khan\",\"2016\",\"http://link.springer.com/article/10.1007/s11192-016-1945-y\",\"Article\"\n\"A view of programming scalable data analysis: from clouds to exascale\",\"Journal of Cloud Computing\",\"\",\"8\",\"1\",\"10.1186/s13677-019-0127-x\",\"Domenico Talia\",\"2019\",\"http://link.springer.com/article/10.1186/s13677-019-0127-x\",\"Article\"\n\"VGL: a high-performance graph processing framework for the NEC SX-Aurora TSUBASA vector architecture\",\"The Journal of Supercomputing\",\"\",\"77\",\"8\",\"10.1007/s11227-020-03564-9\",\"Ilya V. AfanasyevVladimir V. VoevodinKazuhiko KomatsuHiroaki Kobayashi\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-020-03564-9\",\"Article\"\n\"SkePU 2: Flexible and Type-Safe Skeleton Programming for Heterogeneous Parallel Systems\",\"International Journal of Parallel Programming\",\"\",\"46\",\"1\",\"10.1007/s10766-017-0490-5\",\"August ErnstssonLu LiChristoph Kessler\",\"2018\",\"http://link.springer.com/article/10.1007/s10766-017-0490-5\",\"Article\"\n\"Real-time capable solution for optimal control problems: a heterogeneous hardware approach\",\"Automotive and Engine Technology\",\"\",\"3\",\"3 - 4\",\"10.1007/s41104-018-0032-1\",\"Janek HudecekLutz Eckstein\",\"2018\",\"http://link.springer.com/article/10.1007/s41104-018-0032-1\",\"Article\"\n\"Generating custom code for efficient query execution on heterogeneous processors\",\"The VLDB Journal\",\"\",\"27\",\"6\",\"10.1007/s00778-018-0512-y\",\"Sebastian BreßBastian KöcherHenning FunkeSteffen ZeuchTilmann RablVolker Markl\",\"2018\",\"http://link.springer.com/article/10.1007/s00778-018-0512-y\",\"Article\"\n\"Parallel co-location mining with MapReduce and NoSQL systems\",\"Knowledge and Information Systems\",\"\",\"62\",\"4\",\"10.1007/s10115-019-01381-y\",\"Jin Soung YooDouglas BoulwareDavid Kimmey\",\"2020\",\"http://link.springer.com/article/10.1007/s10115-019-01381-y\",\"Article\"\n\"SWIFOLD: Smith-Waterman implementation on FPGA with OpenCL for long DNA sequences\",\"BMC Systems Biology\",\"\",\"12\",\"5\",\"10.1186/s12918-018-0614-6\",\"Enzo RucciCarlos GarciaGuillermo BotellaArmando De GiustiMarcelo NaioufManuel Prieto-Matias\",\"2018\",\"http://link.springer.com/article/10.1186/s12918-018-0614-6\",\"Article\"\n\"Parallel probability density approximation\",\"Behavior Research Methods\",\"\",\"51\",\"6\",\"10.3758/s13428-018-1153-1\",\"Yi-Shin LinAndrew HeathcoteWilliam R. Holmes\",\"2019\",\"http://link.springer.com/article/10.3758/s13428-018-1153-1\",\"Article\"\n\"Parallelization Strategies for Computational Fluid Dynamics Software: State of the Art Review\",\"Archives of Computational Methods in Engineering\",\"\",\"24\",\"2\",\"10.1007/s11831-016-9165-4\",\"Asif AfzalZahid AnsariAhmed Rimaz FaizabadiM. K. Ramis\",\"2017\",\"http://link.springer.com/article/10.1007/s11831-016-9165-4\",\"Article\"\n\"Parallel algorithm for fringe pattern demodulation\",\"Journal of Real-Time Image Processing\",\"\",\"18\",\"6\",\"10.1007/s11554-021-01129-4\",\"Francisco J. Hernandez-LopezRicardo Legarda-SáenzCarlos Brito-Loeza\",\"2021\",\"http://link.springer.com/article/10.1007/s11554-021-01129-4\",\"Article\"\n\"BenchIP: Benchmarking Intelligence Processors\",\"Journal of Computer Science and Technology\",\"\",\"33\",\"1\",\"10.1007/s11390-018-1805-8\",\"Jin-Hua TaoZi-Dong DuQi GuoHui-Ying LanLei ZhangSheng-Yuan ZhouLing-Jie XuCong LiuHai-Feng LiuShan TangAllen RushWillian ChenShao-Li LiuYun-Ji ChenTian-Shi Chen\",\"2018\",\"http://link.springer.com/article/10.1007/s11390-018-1805-8\",\"Article\"\n\"Dawning Nebulae: A PetaFLOPS Supercomputer with a Heterogeneous Structure\",\"Journal of Computer Science and Technology\",\"\",\"26\",\"3\",\"10.1007/s11390-011-1138-3\",\"Ning-Hui SunJing XingZhi-Gang HuoGuang-Ming TanJin XiongBo LiCan Ma\",\"2011\",\"http://link.springer.com/article/10.1007/s11390-011-1138-3\",\"Article\"\n\"High-performance blob-based iterative three-dimensional reconstruction in electron tomography using multi-GPUs\",\"BMC Bioinformatics\",\"\",\"13\",\"10\",\"10.1186/1471-2105-13-S10-S4\",\"Xiaohua WanFa ZhangQi ChuZhiyong Liu\",\"2012\",\"http://link.springer.com/article/10.1186/1471-2105-13-S10-S4\",\"Article\"\n\"Accelerated multiscale space–time finite element simulation and application to high cycle fatigue life prediction\",\"Computational Mechanics\",\"\",\"58\",\"2\",\"10.1007/s00466-016-1296-9\",\"Rui ZhangLihua WenSam NaboulsiThomas EasonVijay K. VasudevanDong Qian\",\"2016\",\"http://link.springer.com/article/10.1007/s00466-016-1296-9\",\"Article\"\n\"High-Performance Computation of Bézier Surfaces on Parallel and Heterogeneous Platforms\",\"International Journal of Parallel Programming\",\"\",\"46\",\"6\",\"10.1007/s10766-017-0506-1\",\"Rafael PalomarJuan Gómez-LunaFaouzi A. CheikhJoaquín Olivares-BuenoOle J. Elle\",\"2018\",\"http://link.springer.com/article/10.1007/s10766-017-0506-1\",\"Article\"\n\"A scalable spatial skyline evaluation system utilizing parallel independent region groups\",\"The VLDB Journal\",\"\",\"28\",\"1\",\"10.1007/s00778-018-0519-4\",\"Wenlu WangJi ZhangMin-Te SunWei-Shinn Ku\",\"2019\",\"http://link.springer.com/article/10.1007/s00778-018-0519-4\",\"Article\"\n\"Performance characterization of data-intensive kernels on AMD Fusion architectures\",\"Computer Science - Research and Development\",\"\",\"28\",\"2 - 3\",\"10.1007/s00450-012-0209-1\",\"Kenneth LeeHeshan LinWu-chun Feng\",\"2013\",\"http://link.springer.com/article/10.1007/s00450-012-0209-1\",\"Article\"\n\"An fast simulation tool for fluid animation in VR application based on GPUs\",\"Multimedia Tools and Applications\",\"\",\"79\",\"23 - 24\",\"10.1007/s11042-019-08002-4\",\"Fengquan ZhangQiuming WeiLiuqing Xu\",\"2020\",\"http://link.springer.com/article/10.1007/s11042-019-08002-4\",\"Article\"\n\"CU++: an object oriented framework for computational fluid dynamics applications using graphics processing units\",\"The Journal of Supercomputing\",\"\",\"67\",\"1\",\"10.1007/s11227-013-0985-9\",\"Dominic D. J. ChandarJayanarayanan SitaramanDimitri Mavriplis\",\"2014\",\"http://link.springer.com/article/10.1007/s11227-013-0985-9\",\"Article\"\n\"Accelerating frequent itemset mining on graphics processing units\",\"The Journal of Supercomputing\",\"\",\"66\",\"1\",\"10.1007/s11227-013-0887-x\",\"Fan ZhangYan ZhangJason D. Bakos\",\"2013\",\"http://link.springer.com/article/10.1007/s11227-013-0887-x\",\"Article\"\n\"Accelerating thread-intensive and explicit memory management programs with dynamic partial reconfiguration\",\"The Journal of Supercomputing\",\"\",\"63\",\"2\",\"10.1007/s11227-012-0828-0\",\"Qianming YangMei WenNan WuChunyuan Zhang\",\"2013\",\"http://link.springer.com/article/10.1007/s11227-012-0828-0\",\"Article\"\n\"Magas: matrix-based asynchronous graph analytics on shared memory systems\",\"The Journal of Supercomputing\",\"\",\"\",\"\",\"10.1007/s11227-021-04091-x\",\"Le LuoYi LiuHailong YangDepei Qian\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-021-04091-x\",\"Article\"\n\"Efficient parallelization of multilevel fast multipole algorithm for electromagnetic simulation on many-core SW26010 processor\",\"The Journal of Supercomputing\",\"\",\"77\",\"2\",\"10.1007/s11227-020-03308-9\",\"Wei-Jia HeMing-Lin YangWu WangXin-Qing Sheng\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-020-03308-9\",\"Article\"\n\"Optimized OpenCL™ kernels for frequency domain image high-boost filters using image vectorization technique\",\"SN Applied Sciences\",\"\",\"1\",\"11\",\"10.1007/s42452-019-1445-9\",\"Ashutosh SatapathyL. M. Jenila Livingston\",\"2019\",\"http://link.springer.com/article/10.1007/s42452-019-1445-9\",\"Article\"\n\"Fast and accurate protein substructure searching with simulated annealing and GPUs\",\"BMC Bioinformatics\",\"\",\"11\",\"1\",\"10.1186/1471-2105-11-446\",\"Alex D StivalaPeter J StuckeyAnthony I Wirth\",\"2010\",\"http://link.springer.com/article/10.1186/1471-2105-11-446\",\"Article\"\n\"Implementation of Digital Watermarking Algorithms in Parallel Hardware Accelerators\",\"International Journal of Parallel Programming\",\"\",\"45\",\"5\",\"10.1007/s10766-016-0459-9\",\"Andrzej GłowaczMarcin Pietroń\",\"2017\",\"http://link.springer.com/article/10.1007/s10766-016-0459-9\",\"Article\"\n\"Programming high-performance parallel computations: formal models and graphics processing units\",\"Cybernetics and Systems Analysis\",\"\",\"47\",\"4\",\"10.1007/s10559-011-9346-y\",\"P. I. AndonA. Yu. DoroshenkoK. A. Zhereb\",\"2011\",\"http://link.springer.com/article/10.1007/s10559-011-9346-y\",\"Article\"\n\"Parallel mutual information estimation for inferring gene regulatory networks on GPUs\",\"BMC Research Notes\",\"\",\"4\",\"1\",\"10.1186/1756-0500-4-189\",\"Haixiang ShiBertil SchmidtWeiguo LiuWolfgang Müller-Wittig\",\"2011\",\"http://link.springer.com/article/10.1186/1756-0500-4-189\",\"Article\"\n\"A Credit-Based Load-Balance-Aware CTA Scheduling Optimization Scheme in GPGPU\",\"International Journal of Parallel Programming\",\"\",\"44\",\"1\",\"10.1007/s10766-014-0318-5\",\"Yulong YuXubin HeHe GuoYuxin WangXin Chen\",\"2016\",\"http://link.springer.com/article/10.1007/s10766-014-0318-5\",\"Article\"\n\"SkePU 3: Portable High-Level Programming of Heterogeneous Systems and HPC Clusters\",\"International Journal of Parallel Programming\",\"\",\"49\",\"6\",\"10.1007/s10766-021-00704-3\",\"August ErnstssonJohan AhlqvistStavroula ZouzoulaChristoph Kessler\",\"2021\",\"http://link.springer.com/article/10.1007/s10766-021-00704-3\",\"Article\"\n\"MeshCleaner: A Generic and Straightforward Algorithm for Cleaning Finite Element Meshes\",\"International Journal of Parallel Programming\",\"\",\"46\",\"3\",\"10.1007/s10766-017-0507-0\",\"Gang MeiSalvatore CuomoHong TianNengxiong XuLinjun Peng\",\"2018\",\"http://link.springer.com/article/10.1007/s10766-017-0507-0\",\"Article\"\n\"General-purpose coordinator–master–worker model for efficient large-scale simulation over heterogeneous infrastructure\",\"Journal of Simulation\",\"\",\"11\",\"3\",\"10.1057/s41273-016-0044-7\",\"Bilel Ben RomdhanneNavid Nikaein\",\"2017\",\"http://link.springer.com/article/10.1057/s41273-016-0044-7\",\"Article\"\n\"Performance evaluation of Unified Memory with prefetching and oversubscription for selected parallel CUDA applications on NVIDIA Pascal and Volta GPUs\",\"The Journal of Supercomputing\",\"\",\"75\",\"11\",\"10.1007/s11227-019-02966-8\",\"Marcin KnapPaweł Czarnul\",\"2019\",\"http://link.springer.com/article/10.1007/s11227-019-02966-8\",\"Article\"\n\"A survey of cloud resource management for complex engineering applications\",\"Frontiers of Computer Science\",\"\",\"10\",\"3\",\"10.1007/s11704-015-4207-x\",\"Haibao ChenSong WuHai JinWenguang ChenJidong ZhaiYingwei LuoXiaolin Wang\",\"2016\",\"http://link.springer.com/article/10.1007/s11704-015-4207-x\",\"Article\"\n\"Parallel fractal image compression using quadtree partition with task and dynamic parallelism\",\"Journal of Real-Time Image Processing\",\"\",\"\",\"\",\"10.1007/s11554-021-01193-w\",\"Francisco J. Hernandez-LopezOmar Muñiz-Pérez\",\"2022\",\"http://link.springer.com/article/10.1007/s11554-021-01193-w\",\"Article\"\n\"On parallel local search for permutations\",\"Journal of the Operational Research Society\",\"\",\"66\",\"5\",\"10.1057/jors.2014.29\",\"Atle RiiseEdmund K Burke\",\"2015\",\"http://link.springer.com/article/10.1057/jors.2014.29\",\"Article\"\n\"Association Rules Mining\",\"SN Computer Science\",\"\",\"2\",\"6\",\"10.1007/s42979-021-00819-x\",\"Leila HAMDADKarima BENATCHBA\",\"2021\",\"http://link.springer.com/article/10.1007/s42979-021-00819-x\",\"Article\"\n\"Implementation of a high-throughput low-latency polyphase channelizer on GPUs\",\"EURASIP Journal on Advances in Signal Processing\",\"\",\"2014\",\"1\",\"10.1186/1687-6180-2014-141\",\"Scott C KimShuvra S Bhattacharyya\",\"2014\",\"http://link.springer.com/article/10.1186/1687-6180-2014-141\",\"Article\"\n\"PRODA: improving parallel programs on GPUs through dependency analysis\",\"Cluster Computing\",\"\",\"22\",\"1\",\"10.1007/s10586-017-1295-4\",\"Xiong WeiMing HuTao PengMinghua JiangZhiying WangXiao Qin\",\"2019\",\"http://link.springer.com/article/10.1007/s10586-017-1295-4\",\"Article\"\n\"Protecting lightweight block cipher implementation in mobile big data computing\",\"Peer-to-Peer Networking and Applications\",\"\",\"11\",\"2\",\"10.1007/s12083-016-0481-0\",\"Weidong QiuBozhong LiuCan GeLingzhi XuXiaoming TangGuozhen Liu\",\"2018\",\"http://link.springer.com/article/10.1007/s12083-016-0481-0\",\"Article\"\n\"Coupling SIMD and SIMT architectures to boost performance of a phylogeny-aware alignment kernel\",\"BMC Bioinformatics\",\"\",\"13\",\"1\",\"10.1186/1471-2105-13-196\",\"Nikolaos AlachiotisSimon A BergerAlexandros Stamatakis\",\"2012\",\"http://link.springer.com/article/10.1186/1471-2105-13-196\",\"Article\"\n\"Algorithms and framework for computing 2-body statistics on GPUs\",\"Distributed and Parallel Databases\",\"\",\"37\",\"4\",\"10.1007/s10619-018-7238-0\",\"Napath PitaksiriananZhila Nouri LewisYi-Cheng Tu\",\"2019\",\"http://link.springer.com/article/10.1007/s10619-018-7238-0\",\"Article\"\n\"Fast T-overlap query algorithms using graphics processor units and its applications in web data query\",\"World Wide Web\",\"\",\"18\",\"2\",\"10.1007/s11280-013-0232-6\",\"Mengjuan LiLianyin JiaJinguo YouJianqing XiHaiFei QinRui Zeng\",\"2015\",\"http://link.springer.com/article/10.1007/s11280-013-0232-6\",\"Article\"\n\"Gravitational wave astrophysics, data analysis and multimessenger astronomy\",\"Science China Physics, Mechanics & Astronomy\",\"\",\"58\",\"12\",\"10.1007/s11433-015-5740-1\",\"Hyung Mok LeeEric-Olivier Le BigotZhiHui DuZhangXi LinXiangYu GuoLinQing WenKhun Sang PhukonVihan PandeySukanta BoseXi-Long FanMartin Hendry\",\"2015\",\"http://link.springer.com/article/10.1007/s11433-015-5740-1\",\"Article\"\n\"Revised simplex algorithm for linear programming on GPUs with CUDA\",\"Multimedia Tools and Applications\",\"\",\"77\",\"22\",\"10.1007/s11042-018-5947-z\",\"Lili HeHongtao BaiYu JiangDantong OuyangShanshan Jiang\",\"2018\",\"http://link.springer.com/article/10.1007/s11042-018-5947-z\",\"Article\"\n\"Accelerating large-scale protein structure alignments with graphics processing units\",\"BMC Research Notes\",\"\",\"5\",\"1\",\"10.1186/1756-0500-5-116\",\"Bin PangNan ZhaoMichela BecchiDmitry KorkinChi-Ren Shyu\",\"2012\",\"http://link.springer.com/article/10.1186/1756-0500-5-116\",\"Article\"\n\"High resolution topology optimization using graphics processing units (GPUs)\",\"Structural and Multidisciplinary Optimization\",\"\",\"49\",\"2\",\"10.1007/s00158-013-0980-z\",\"Vivien J. ChallisAnthony P. RobertsJoseph F. Grotowski\",\"2014\",\"http://link.springer.com/article/10.1007/s00158-013-0980-z\",\"Article\"\n\"Integration of Dataflow-Based Heterogeneous Multiprocessor Scheduling Techniques in GNU Radio\",\"Journal of Signal Processing Systems\",\"\",\"70\",\"2\",\"10.1007/s11265-012-0696-0\",\"George F. ZakiWilliam PlishkerShuvra S. BhattacharyyaCharles ClancyJohn Kuykendall\",\"2013\",\"http://link.springer.com/article/10.1007/s11265-012-0696-0\",\"Article\"\n\"A robust optimization model for agile and build-to-order supply chain planning under uncertainties\",\"Annals of Operations Research\",\"\",\"240\",\"2\",\"10.1007/s10479-013-1421-5\",\"Morteza LalmazloumianKuan Yew WongKannan GovindanDevika Kannan\",\"2016\",\"http://link.springer.com/article/10.1007/s10479-013-1421-5\",\"Article\"\n\"Real-Time Big Data Stream Processing Using GPU with Spark Over Hadoop Ecosystem\",\"International Journal of Parallel Programming\",\"\",\"46\",\"3\",\"10.1007/s10766-017-0513-2\",\"M. Mazhar RathoreHojae SonAwais AhmadAnand PaulGwanggil Jeon\",\"2018\",\"http://link.springer.com/article/10.1007/s10766-017-0513-2\",\"Article\"\n\"SIMD Monte-Carlo Numerical Simulations Accelerated on GPU and Xeon Phi\",\"International Journal of Parallel Programming\",\"\",\"46\",\"3\",\"10.1007/s10766-017-0509-y\",\"Bastien PlazollesDidier El BazMartin SpelVincent RivolaPascal Gegout\",\"2018\",\"http://link.springer.com/article/10.1007/s10766-017-0509-y\",\"Article\"\n\"Paradigm Shift in Big Data SuperComputing: DataFlow vs. ControlFlow\",\"Journal of Big Data\",\"\",\"2\",\"1\",\"10.1186/s40537-014-0010-z\",\"Nemanja TrifunovicVeljko MilutinovicJakob SalomAnton Kos\",\"2015\",\"http://link.springer.com/article/10.1186/s40537-014-0010-z\",\"Article\"\n\"Scheduling Parallel Computations by Work Stealing: A Survey\",\"International Journal of Parallel Programming\",\"\",\"46\",\"2\",\"10.1007/s10766-016-0484-8\",\"Jixiang YangQingbi He\",\"2018\",\"http://link.springer.com/article/10.1007/s10766-016-0484-8\",\"Article\"\n\"GHOST: Building Blocks for High Performance Sparse Linear Algebra on Heterogeneous Systems\",\"International Journal of Parallel Programming\",\"\",\"45\",\"5\",\"10.1007/s10766-016-0464-z\",\"Moritz KreutzerJonas ThiesMelven Röhrig-ZöllnerAndreas PieperFaisal ShahzadMartin GalgonAchim BasermannHolger FehskeGeorg HagerGerhard Wellein\",\"2017\",\"http://link.springer.com/article/10.1007/s10766-016-0464-z\",\"Article\"\n\"Parallel performance analysis of coupled heat and fluid flow in parallel plate channel using CUDA\",\"Computational and Applied Mathematics\",\"\",\"39\",\"3\",\"10.1007/s40314-020-01244-1\",\"Asif AfzalZahid AnsariM. K. Ramis\",\"2020\",\"http://link.springer.com/article/10.1007/s40314-020-01244-1\",\"Article\"\n\"Elastodynamic full waveform inversion on GPUs with time-space tiling and wavefield reconstruction\",\"The Journal of Supercomputing\",\"\",\"77\",\"3\",\"10.1007/s11227-020-03352-5\",\"Ole Edvard AakerEspen Birger RaknesBørge Arntsen\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-020-03352-5\",\"Article\"\n\"COMPSs-Mobile: Parallel Programming for Mobile Cloud Computing\",\"Journal of Grid Computing\",\"\",\"15\",\"3\",\"10.1007/s10723-017-9409-z\",\"F. LordanRosa M. Badia\",\"2017\",\"http://link.springer.com/article/10.1007/s10723-017-9409-z\",\"Article\"\n\"Implementation and evaluation of parallel FFT on Engineering and Scientific Computation Accelerator (ESCA) architecture\",\"Journal of Zhejiang University SCIENCE C\",\"\",\"12\",\"12\",\"10.1631/jzus.C1100027\",\"Dan WuXue-cheng ZouKui DaiJin-li RaoPan ChenZhao-xia Zheng\",\"2011\",\"http://link.springer.com/article/10.1631/jzus.C1100027\",\"Article\"\n\"Pattern matching of signature-based IDS using Myers algorithm under MapReduce framework\",\"EURASIP Journal on Information Security\",\"\",\"2017\",\"1\",\"10.1186/s13635-017-0062-7\",\"Monther AldwairiAnsam M. Abu-DaloMoath Jarrah\",\"2017\",\"http://link.springer.com/article/10.1186/s13635-017-0062-7\",\"Article\"\n\"Personalizable edge services for Web accessibility\",\"Universal Access in the Information Society\",\"\",\"6\",\"3\",\"10.1007/s10209-007-0091-y\",\"Ugo ErraGennaro IaccarinoDelfina MalandrinoVittorio Scarano\",\"2007\",\"http://link.springer.com/article/10.1007/s10209-007-0091-y\",\"Article\"\n\"3D Tomography Back-Projection Parallelization on Intel FPGAs Using OpenCL\",\"Journal of Signal Processing Systems\",\"\",\"91\",\"7\",\"10.1007/s11265-018-1403-6\",\"Maxime MartelliNicolas GacAlain MérigotCyrille Enderli\",\"2019\",\"http://link.springer.com/article/10.1007/s11265-018-1403-6\",\"Article\"\n\"Interval-based performance modeling for the all-pairs-shortest-path problem on GPUs\",\"The Journal of Supercomputing\",\"\",\"71\",\"11\",\"10.1007/s11227-015-1514-9\",\"Jörg DümmlerSebastian Egerland\",\"2015\",\"http://link.springer.com/article/10.1007/s11227-015-1514-9\",\"Article\"\n\"Highly interactive computational steering for coupled 3D flow problems utilizing multiple GPUs\",\"Computing and Visualization in Science\",\"\",\"13\",\"7\",\"10.1007/s00791-010-0151-3\",\"Jan LinxweilerManfred KrafczykJonas Tölke\",\"2010\",\"http://link.springer.com/article/10.1007/s00791-010-0151-3\",\"Article\"\n\"Performance evaluation of unified memory and dynamic parallelism for selected parallel CUDA applications\",\"The Journal of Supercomputing\",\"\",\"73\",\"12\",\"10.1007/s11227-017-2091-x\",\"Łukasz JarząbekPaweł Czarnul\",\"2017\",\"http://link.springer.com/article/10.1007/s11227-017-2091-x\",\"Article\"\n\"Gravitational search algorithm using CUDA: a case study in high-performance metaheuristics\",\"The Journal of Supercomputing\",\"\",\"71\",\"4\",\"10.1007/s11227-014-1360-1\",\"Amirreza ZarrabiKhairulmizam SamsudinEttikan K. Karuppiah\",\"2015\",\"http://link.springer.com/article/10.1007/s11227-014-1360-1\",\"Article\"\n\"Environment for integration of distributed heterogeneous computing systems\",\"Journal of Internet Services and Applications\",\"\",\"9\",\"1\",\"10.1186/s13174-017-0072-1\",\"Thiago W. B. SilvaDaniel C. MoraisHalamo G. R. AndradeAntonio M. N. LimaElmar U. K. MelcherAlisson V. Brito\",\"2018\",\"http://link.springer.com/article/10.1186/s13174-017-0072-1\",\"Article\"\n\"Implementation of algorithms with a fine-grained parallelism on GPUs\",\"Numerical Analysis and Applications\",\"\",\"4\",\"1\",\"10.1134/S1995423911010058\",\"K. V. Kalgin\",\"2011\",\"http://link.springer.com/article/10.1134/S1995423911010058\",\"Article\"\n\"Scalable SIMD-parallel memory allocation for many-core machines\",\"The Journal of Supercomputing\",\"\",\"64\",\"3\",\"10.1007/s11227-011-0680-7\",\"Xiaohuang HuangChristopher I. RodriguesStephen JonesIan BuckWen-mei Hwu\",\"2013\",\"http://link.springer.com/article/10.1007/s11227-011-0680-7\",\"Article\"\n\"Fast block QR update in digital signal processing\",\"The Journal of Supercomputing\",\"\",\"75\",\"3\",\"10.1007/s11227-018-2298-5\",\"Fran J. AlventosaPedro AlonsoAntonio M. VidalGema PiñeroEnrique S. Quintana-Ortí\",\"2019\",\"http://link.springer.com/article/10.1007/s11227-018-2298-5\",\"Article\"\n\"Accelerated image factorization based on improved NMF algorithm\",\"Journal of Real-Time Image Processing\",\"\",\"15\",\"1\",\"10.1007/s11554-018-0785-9\",\"Minghui SongYuanxi PengTian JiangJun LiSongsong Zhang\",\"2018\",\"http://link.springer.com/article/10.1007/s11554-018-0785-9\",\"Article\"\n\"A preliminary evaluation of OpenACC implementations\",\"The Journal of Supercomputing\",\"\",\"65\",\"3\",\"10.1007/s11227-012-0853-z\",\"Ruymán ReyesIván LópezJuan J. FumeroFrancisco de Sande\",\"2013\",\"http://link.springer.com/article/10.1007/s11227-012-0853-z\",\"Article\"\n\"High-performance pseudo-anonymization of virtual power plant data on a CPU cluster\",\"Cluster Computing\",\"\",\"\",\"\",\"10.1007/s10586-021-03526-7\",\"Mahdi AbbasiAzam Fazel NajafabadiSeifeddine Ben ElghaliMohamed ZerrouguiMohammad R. KhosraviHabib Nasser\",\"2022\",\"http://link.springer.com/article/10.1007/s10586-021-03526-7\",\"Article\"\n\"Optimizing the Matrix Multiplication Using Strassen and Winograd Algorithms with Limited Recursions on Many-Core\",\"International Journal of Parallel Programming\",\"\",\"44\",\"4\",\"10.1007/s10766-015-0378-1\",\"Ayaz ul Hassan KhanMayez Al-MouhamedAllam FatayerNazeeruddin Mohammad\",\"2016\",\"http://link.springer.com/article/10.1007/s10766-015-0378-1\",\"Article\"\n\"Biased solution of integral illumination equation via irradiance caching and path tracing on GPUs\",\"Programming and Computer Software\",\"\",\"37\",\"5\",\"10.1134/S0361768811050021\",\"V. A. FrolovA. A. KharlamovA. V. Ignatenko\",\"2011\",\"http://link.springer.com/article/10.1134/S0361768811050021\",\"Article\"\n\"QoS4IVSaaS: a QoS management framework for intelligent video surveillance as a service\",\"Personal and Ubiquitous Computing\",\"\",\"20\",\"5\",\"10.1007/s00779-016-0945-5\",\"Weishan ZhangPengcheng DuanXiaodan XieFeng XiaQinghua LuXin LiuJiehan Zhou\",\"2016\",\"http://link.springer.com/article/10.1007/s00779-016-0945-5\",\"Article\"\n\"Parallel implementations of frame rate up-conversion algorithm using OpenCL on heterogeneous computing devices\",\"Multimedia Tools and Applications\",\"\",\"78\",\"7\",\"10.1007/s11042-018-6532-1\",\"Huming ZhuDuo WangPeng ZhangZheng LuoLicheng JiaoHong Han\",\"2019\",\"http://link.springer.com/article/10.1007/s11042-018-6532-1\",\"Article\"\n\"Thread-scalable evaluation of multi-jet observables\",\"The European Physical Journal C\",\"\",\"71\",\"7\",\"10.1140/epjc/s10052-011-1703-5\",\"Walter T. GieleGerben C. StavengaJan Winter\",\"2011\",\"http://link.springer.com/article/10.1140/epjc/s10052-011-1703-5\",\"Article\"\n\"Protein alignment algorithms with an efficient backtracking routine on multiple GPUs\",\"BMC Bioinformatics\",\"\",\"12\",\"1\",\"10.1186/1471-2105-12-181\",\"Jacek BlazewiczWojciech FrohmbergMichal KierzynkaErwin PeschPawel Wojciechowski\",\"2011\",\"http://link.springer.com/article/10.1186/1471-2105-12-181\",\"Article\"\n\"Accelerating the scoring module of mass spectrometry-based peptide identification using GPUs\",\"BMC Bioinformatics\",\"\",\"15\",\"1\",\"10.1186/1471-2105-15-121\",\"You LiHao ChiLeihao XiaXiaowen Chu\",\"2014\",\"http://link.springer.com/article/10.1186/1471-2105-15-121\",\"Article\"\n\"A 2589 line topology optimization code written for the graphics card\",\"Computing and Visualization in Science\",\"\",\"14\",\"6\",\"10.1007/s00791-012-0180-1\",\"Stephan SchmidtVolker Schulz\",\"2011\",\"http://link.springer.com/article/10.1007/s00791-012-0180-1\",\"Article\"\n\"Real-time implementation of remotely sensed hyperspectral image unmixing on GPUs\",\"Journal of Real-Time Image Processing\",\"\",\"10\",\"3\",\"10.1007/s11554-012-0269-2\",\"Sergio SánchezRui RamalhoLeonel SousaAntonio Plaza\",\"2015\",\"http://link.springer.com/article/10.1007/s11554-012-0269-2\",\"Article\"\n\"H.264/AVC inter prediction for heterogeneous computing systems\",\"The Journal of Supercomputing\",\"\",\"64\",\"1\",\"10.1007/s11227-012-0782-x\",\"Rafael Rodríguez-SánchezJosé Luis MartínezGerardo Fernández-EscribanoJosé Manuel ClaverJosé L. Sánchez\",\"2013\",\"http://link.springer.com/article/10.1007/s11227-012-0782-x\",\"Article\"\n\"Memory bandwidth optimization of SpMV on GPGPUs\",\"Frontiers of Computer Science\",\"\",\"9\",\"3\",\"10.1007/s11704-014-4127-1\",\"Chenggang Clarence YanHui YuWeizhi XuYingping ZhangBochuan ChenZhu TianYuxuan WangJian Yin\",\"2015\",\"http://link.springer.com/article/10.1007/s11704-014-4127-1\",\"Article\"\n\"Practical Implementation of Prestack Kirchhoff Time Migration on a General Purpose Graphics Processing Unit\",\"Acta Geophysica\",\"\",\"64\",\"4\",\"10.1515/acgeo-2016-0033\",\"Guofeng LiuChun Li\",\"2016\",\"http://link.springer.com/article/10.1515/acgeo-2016-0033\",\"Article\"\n\"Serverless streaming for emerging media: towards 5G network-driven cost optimization\",\"Multimedia Tools and Applications\",\"\",\"\",\"\",\"10.1007/s11042-020-10219-7\",\"Konstantinos KonstantoudakisDavid BreitgandAlexandros DoumanoglouNikolaos ZioulisAvi WeitKyriaki ChristakiPetros DrakoulisEmmanouil ChristakisDimitrios ZarpalasPetros Daras\",\"2021\",\"http://link.springer.com/article/10.1007/s11042-020-10219-7\",\"Article\"\n\"Systolic neighborhood search on graphics processing units\",\"Soft Computing\",\"\",\"18\",\"1\",\"10.1007/s00500-013-1041-7\",\"Pablo VidalFrancisco LunaEnrique Alba\",\"2014\",\"http://link.springer.com/article/10.1007/s00500-013-1041-7\",\"Article\"\n\"A scalable and fast OPTICS for clustering trajectory big data\",\"Cluster Computing\",\"\",\"18\",\"2\",\"10.1007/s10586-014-0413-9\",\"Ze DengYangyang HuMao ZhuXiaohui HuangBo Du\",\"2015\",\"http://link.springer.com/article/10.1007/s10586-014-0413-9\",\"Article\"\n\"Implementation of a Multirate Resampler for Multi-carrier Systems on GPUs\",\"Journal of Signal Processing Systems\",\"\",\"89\",\"3\",\"10.1007/s11265-017-1239-5\",\"Scott C. KimShuvra S. Bhattacharyya\",\"2017\",\"http://link.springer.com/article/10.1007/s11265-017-1239-5\",\"Article\"\n\"GPGPU Based Parallel Implementation of Spectral Correlation Density Function\",\"Journal of Signal Processing Systems\",\"\",\"92\",\"1\",\"10.1007/s11265-019-01448-7\",\"Scott MarshallGarrett VanhoyAli AkogluTamal BoseBo Ryu\",\"2020\",\"http://link.springer.com/article/10.1007/s11265-019-01448-7\",\"Article\"\n\"On parallel software engineering education using python\",\"Education and Information Technologies\",\"\",\"23\",\"1\",\"10.1007/s10639-017-9607-0\",\"Ami Marowka\",\"2018\",\"http://link.springer.com/article/10.1007/s10639-017-9607-0\",\"Article\"\n\"Virtualizing high-end GPGPUs on ARM clusters for the next generation of high performance cloud computing\",\"Cluster Computing\",\"\",\"17\",\"1\",\"10.1007/s10586-013-0341-0\",\"Raffaele MontellaGiulio GiuntaGiuliano Laccetti\",\"2014\",\"http://link.springer.com/article/10.1007/s10586-013-0341-0\",\"Article\"\n\"Enhancing the performance of decision tree-based packet classification algorithms using CPU cluster\",\"Cluster Computing\",\"\",\"23\",\"4\",\"10.1007/s10586-020-03081-7\",\"Mahdi AbbasiAazad Shokrollahi\",\"2020\",\"http://link.springer.com/article/10.1007/s10586-020-03081-7\",\"Article\"\n\"An Adaptive Heterogeneous Runtime Framework for Irregular Applications\",\"Journal of Signal Processing Systems\",\"\",\"80\",\"3\",\"10.1007/s11265-014-0916-x\",\"Chih-Chen KaoWei-Chung Hsu\",\"2015\",\"http://link.springer.com/article/10.1007/s11265-014-0916-x\",\"Article\"\n\"Combining Data and Computation Distribution Directives for Hybrid Parallel Programming : A Transformation System\",\"International Journal of Parallel Programming\",\"\",\"44\",\"6\",\"10.1007/s10766-016-0428-3\",\"Rachid HabelFrédérique Silber-ChaussumierFrançois IrigoinElisabeth BrunetFrançois Trahay\",\"2016\",\"http://link.springer.com/article/10.1007/s10766-016-0428-3\",\"Article\"\n\"Exploiting GPUs with the Super Instruction Architecture\",\"International Journal of Parallel Programming\",\"\",\"44\",\"2\",\"10.1007/s10766-014-0319-4\",\"Nakul JindalVictor LotrichErik DeumensBeverly A. Sanders\",\"2016\",\"http://link.springer.com/article/10.1007/s10766-014-0319-4\",\"Article\"\n\"Accelerating exact and approximate inference for (distributed) discrete optimization with GPUs\",\"Constraints\",\"\",\"23\",\"1\",\"10.1007/s10601-017-9274-1\",\"Ferdinando FiorettoEnrico PontelliWilliam YeohRina Dechter\",\"2018\",\"http://link.springer.com/article/10.1007/s10601-017-9274-1\",\"Article\"\n\"A heterogeneous parallel Red–Black SOR technique and the numerical study on SIMPLE\",\"The Journal of Supercomputing\",\"\",\"76\",\"12\",\"10.1007/s11227-020-03221-1\",\"Ruitian LiLiang GongMinghai Xu\",\"2020\",\"http://link.springer.com/article/10.1007/s11227-020-03221-1\",\"Article\"\n\"A parallel algorithm for the Riesz fractional reaction-diffusion equation with explicit finite difference method\",\"Fractional Calculus and Applied Analysis\",\"\",\"16\",\"3\",\"10.2478/s13540-013-0041-8\",\"Chunye GongWeimin BaoGuojian Tang\",\"2013\",\"http://link.springer.com/article/10.2478/s13540-013-0041-8\",\"Article\"\n\"Specification and Implementation of the Universal Time Coordinated Synchronization Unit (UTCSU)\",\"Real-Time Systems\",\"\",\"12\",\"3\",\"10.1023/A:1007953214631\",\"Klaus SchossmaierUlrich SchmidMartin HorauerDietmar Loy\",\"1997\",\"http://link.springer.com/article/10.1023/A%3A1007953214631\",\"Article\"\n\"Formalised Composition and Interaction for Heterogeneous Structured Parallelism\",\"International Journal of Parallel Programming\",\"\",\"46\",\"1\",\"10.1007/s10766-017-0511-4\",\"Mehdi GoliHoracio González-Vélez\",\"2018\",\"http://link.springer.com/article/10.1007/s10766-017-0511-4\",\"Article\"\n\"MapReduce and Its Applications, Challenges, and Architecture: a Comprehensive Review and Directions for Future Research\",\"Journal of Grid Computing\",\"\",\"15\",\"3\",\"10.1007/s10723-017-9408-0\",\"Seyed Nima KhezrNima Jafari Navimipour\",\"2017\",\"http://link.springer.com/article/10.1007/s10723-017-9408-0\",\"Article\"\n\"Parallel bitsliced AES through PHAST: a single-source high-performance library for multi-cores and GPUs\",\"Journal of Cryptographic Engineering\",\"\",\"9\",\"2\",\"10.1007/s13389-017-0175-4\",\"Biagio PeccerilloSandro BartoliniÇetin Kaya Koç\",\"2019\",\"http://link.springer.com/article/10.1007/s13389-017-0175-4\",\"Article\"\n\"A modified ZS thinning algorithm by a hybrid approach\",\"The Visual Computer\",\"\",\"34\",\"5\",\"10.1007/s00371-017-1407-4\",\"Lynda Ben BoudaoudBasel SolaimanAbdelkamel Tari\",\"2018\",\"http://link.springer.com/article/10.1007/s00371-017-1407-4\",\"Article\"\n\"Toward fault-tolerant hybrid programming over large-scale heterogeneous clusters via checkpointing/restart optimization\",\"The Journal of Supercomputing\",\"\",\"75\",\"8\",\"10.1007/s11227-017-2116-5\",\"Cheng ChenYunfei DuKe ZuoJianbin FangCanqun Yang\",\"2019\",\"http://link.springer.com/article/10.1007/s11227-017-2116-5\",\"Article\"\n\"O2WebCL: an automatic OpenCL-to-WebCL translator for high performance web computing\",\"The Journal of Supercomputing\",\"\",\"71\",\"6\",\"10.1007/s11227-014-1260-4\",\"Myeongjin ChoYoungsun HanMinseong KimSeon Wook Kim\",\"2015\",\"http://link.springer.com/article/10.1007/s11227-014-1260-4\",\"Article\"\n\"Multicore and Manycore Implementations of ADMM-based Decoders for LDPC Decoding\",\"Journal of Signal Processing Systems\",\"\",\"90\",\"11\",\"10.1007/s11265-017-1284-0\",\"Imen DebbabiBertrand Le GalNadia KhoujaFethi TliliChristophe Jégo\",\"2018\",\"http://link.springer.com/article/10.1007/s11265-017-1284-0\",\"Article\"\n\"Understanding the Efficiency of kD-tree Ray-Traversal Techniques over a GPGPU Architecture\",\"International Journal of Parallel Programming\",\"\",\"40\",\"3\",\"10.1007/s10766-011-0186-1\",\"Artur SantosJoão Marcelo TeixeiraThiago FariasVeronica TeichriebJudith Kelner\",\"2012\",\"http://link.springer.com/article/10.1007/s10766-011-0186-1\",\"Article\"\n\"An FPGA accelerator for PatchMatch multi-view stereo using OpenCL\",\"Journal of Real-Time Image Processing\",\"\",\"17\",\"2\",\"10.1007/s11554-017-0745-9\",\"Shunsuke TatsumiMasanori HariyamaKoichi ItoTakafumi Aoki\",\"2020\",\"http://link.springer.com/article/10.1007/s11554-017-0745-9\",\"Article\"\n\"Marching cubes technique for volumetric visualization accelerated with graphics processing units\",\"Journal of the Brazilian Computer Society\",\"\",\"19\",\"3\",\"10.1007/s13173-012-0097-z\",\"Marcos Vinicius Mussel CirneHélio Pedrini\",\"2013\",\"http://link.springer.com/article/10.1007/s13173-012-0097-z\",\"Article\"\n\"Efficient scheduling of streams on GPGPUs\",\"The Journal of Supercomputing\",\"\",\"76\",\"11\",\"10.1007/s11227-020-03209-x\",\"Mohamad Beheshti RouiS. Kazem ShekoftehHamid NooriAhad Harati\",\"2020\",\"http://link.springer.com/article/10.1007/s11227-020-03209-x\",\"Article\"\n\"A Survey of parallel intrusion detection on graphical processors\",\"Central European Journal of Computer Science\",\"\",\"4\",\"4\",\"10.2478/s13537-014-0213-6\",\"Liberios VokorokosMichal EnnertMarek >ČajkovskýJán Radušovský\",\"2014\",\"http://link.springer.com/article/10.2478/s13537-014-0213-6\",\"Article\"\n\"A graphics processing unit-based robust numerical model for solute transport driven by torrential flow condition\",\"Journal of Zhejiang University-SCIENCE A\",\"\",\"22\",\"10\",\"10.1631/jzus.A2000585\",\"Jing-ming HouBao-shan ShiQiu-hua LiangYu TongYong-de KangZhao-an ZhangGang-gang BaiXu-jun GaoXiao Yang\",\"2021\",\"http://link.springer.com/article/10.1631/jzus.A2000585\",\"Article\"\n\"Evaluation of real-time LBP computing in multiple architectures\",\"Journal of Real-Time Image Processing\",\"\",\"13\",\"2\",\"10.1007/s11554-014-0410-5\",\"Miguel Bordallo LópezAlejandro NietoJani BoutellierJari HannukselaOlli Silvén\",\"2017\",\"http://link.springer.com/article/10.1007/s11554-014-0410-5\",\"Article\"\n\"A high-performance batched matrix multiplication framework for GPUs under unbalanced input distribution\",\"The Journal of Supercomputing\",\"\",\"\",\"\",\"10.1007/s11227-021-03936-9\",\"Ruimin WangZhiwei YangHao XuLu Lu\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-021-03936-9\",\"Article\"\n\"CUDAQuat: new parallel framework for fast computation of quaternion moments for color images applications\",\"Cluster Computing\",\"\",\"24\",\"3\",\"10.1007/s10586-021-03271-x\",\"Khalid M. HosnyMohamed M. DarwishAhmad SalahKenli LiAmr M. Abdelatif\",\"2021\",\"http://link.springer.com/article/10.1007/s10586-021-03271-x\",\"Article\"\n\"Efficient discovery of longest-lasting correlation in sequence databases\",\"The VLDB Journal\",\"\",\"25\",\"6\",\"10.1007/s00778-016-0432-7\",\"Yuhong LiLeong Hou UMan Lung YiuZhiguo Gong\",\"2016\",\"http://link.springer.com/article/10.1007/s00778-016-0432-7\",\"Article\"\n\"Accelerating MRI reconstruction via three-dimensional dual-dictionary learning using CUDA\",\"The Journal of Supercomputing\",\"\",\"71\",\"7\",\"10.1007/s11227-015-1386-z\",\"Jiansen LiJianqi SunYing SongJun Zhao\",\"2015\",\"http://link.springer.com/article/10.1007/s11227-015-1386-z\",\"Article\"\n\"Simulating Flows of Viscous Incompressible Fluid on Graphics Processors Using the Splitting Scheme and Multigrid Method\",\"Computational Mathematics and Mathematical Physics\",\"\",\"59\",\"1\",\"10.1134/S0965542519010160\",\"K. N. VolkovV. N. Emel’yanovA. G. KarpenkoI. V. Teterina\",\"2019\",\"http://link.springer.com/article/10.1134/S0965542519010160\",\"Article\"\n\"SPRING: a novel parallel chaos-based image encryption scheme\",\"Nonlinear Dynamics\",\"\",\"92\",\"2\",\"10.1007/s11071-018-4076-6\",\"Wai-Kong LeeRaphael C.-W. PhanWun-She YapBok-Min Goi\",\"2018\",\"http://link.springer.com/article/10.1007/s11071-018-4076-6\",\"Article\"\n\"CUDASW++: optimizing Smith-Waterman sequence database searches for CUDA-enabled graphics processing units\",\"BMC Research Notes\",\"\",\"2\",\"1\",\"10.1186/1756-0500-2-73\",\"Yongchao LiuDouglas L MaskellBertil Schmidt\",\"2009\",\"http://link.springer.com/article/10.1186/1756-0500-2-73\",\"Article\"\n\"Designing a benchmark for the performance evaluation of agent-based simulation applications on HPC\",\"The Journal of Supercomputing\",\"\",\"75\",\"3\",\"10.1007/s11227-018-2688-8\",\"Andreu MorenoJuan J. RodríguezDaniel BeltránAnna SikoraJosep JorbaEduardo César\",\"2019\",\"http://link.springer.com/article/10.1007/s11227-018-2688-8\",\"Article\"\n\"High performance memetic algorithm particle filter for multiple object tracking on modern GPUs\",\"Soft Computing\",\"\",\"16\",\"2\",\"10.1007/s00500-011-0715-2\",\"Raúl CabidoAntonio S. MontemayorJuan J. Pantrigo\",\"2012\",\"http://link.springer.com/article/10.1007/s00500-011-0715-2\",\"Article\"\n\"HGP4CNN: an efficient parallelization framework for training convolutional neural networks on modern GPUs\",\"The Journal of Supercomputing\",\"\",\"77\",\"11\",\"10.1007/s11227-021-03746-z\",\"Hao FuShanjiang TangBingsheng HeCe YuJizhou Sun\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-021-03746-z\",\"Article\"\n\"Volume Visualization: A Technical Overview with a Focus on Medical Applications\",\"Journal of Digital Imaging\",\"\",\"24\",\"4\",\"10.1007/s10278-010-9321-6\",\"Qi ZhangRoy EaglesonTerry M. Peters\",\"2011\",\"http://link.springer.com/article/10.1007/s10278-010-9321-6\",\"Article\"\n\"Parallel LDPC Decoding on GPUs Using a Stream-Based Computing Approach\",\"Journal of Computer Science and Technology\",\"\",\"24\",\"5\",\"10.1007/s11390-009-9266-8\",\"Gabriel FalcãoShinichi YamagiwaVitor SilvaLeonel Sousa\",\"2009\",\"http://link.springer.com/article/10.1007/s11390-009-9266-8\",\"Article\"\n\"A Hybrid Task Graph Scheduler for High Performance Image Processing Workflows\",\"Journal of Signal Processing Systems\",\"\",\"89\",\"3\",\"10.1007/s11265-017-1262-6\",\"Timothy BlattnerWalid KeyrouzShuvra S. BhattacharyyaMilton HalemMary Brady\",\"2017\",\"http://link.springer.com/article/10.1007/s11265-017-1262-6\",\"Article\"\n\"Using low-power platforms for Evolutionary Multi-Objective Optimization algorithms\",\"The Journal of Supercomputing\",\"\",\"73\",\"1\",\"10.1007/s11227-016-1862-0\",\"J. J. MorenoG. OrtegaE. FilatovasJ. A. MartínezEster M. Garzón\",\"2017\",\"http://link.springer.com/article/10.1007/s11227-016-1862-0\",\"Article\"\n\"Improving the performance of the needleman-wunsch algorithm using parallelization and vectorization techniques\",\"Multimedia Tools and Applications\",\"\",\"78\",\"4\",\"10.1007/s11042-017-5092-0\",\"Yaser JararwehMahmoud Al-AyyoubMaged FakirahLuay AlawnehBrij B. Gupta\",\"2019\",\"http://link.springer.com/article/10.1007/s11042-017-5092-0\",\"Article\"\n\"Large-scale graph processing systems: a survey\",\"Frontiers of Information Technology & Electronic Engineering\",\"\",\"21\",\"3\",\"10.1631/FITEE.1900127\",\"Ning LiuDong-sheng LiYi-ming ZhangXiong-lve Li\",\"2020\",\"http://link.springer.com/article/10.1631/FITEE.1900127\",\"Article\"\n\"Enabling collaborative MapReduce on the Cloud with a single-sign-on mechanism\",\"Computing\",\"\",\"98\",\"1 - 2\",\"10.1007/s00607-014-0390-0\",\"Jiaqi ZhaoJie TaoAchim Streit\",\"2016\",\"http://link.springer.com/article/10.1007/s00607-014-0390-0\",\"Article\"\n\"Exploiting Task Parallelism with OpenCL: A Case Study\",\"Journal of Signal Processing Systems\",\"\",\"91\",\"1\",\"10.1007/s11265-018-1416-1\",\"Pekka JääskeläinenVille KorhonenMatias KoskelaJarmo TakalaKaren EgiazarianAram DanielyanCristóvão CruzJames PriceSimon McIntosh-Smith\",\"2019\",\"http://link.springer.com/article/10.1007/s11265-018-1416-1\",\"Article\"\n\"Physical, numerical, and computational challenges of modeling neutrino transport in core-collapse supernovae\",\"Living Reviews in Computational Astrophysics\",\"\",\"6\",\"1\",\"10.1007/s41115-020-00010-8\",\"Anthony MezzacappaEirik EndeveO. E. Bronson MesserStephen W. Bruenn\",\"2020\",\"http://link.springer.com/article/10.1007/s41115-020-00010-8\",\"Article\"\n\"Rolex: resilience-oriented language extensions for extreme-scale systems\",\"The Journal of Supercomputing\",\"\",\"72\",\"12\",\"10.1007/s11227-016-1752-5\",\"Saurabh HukerikarRobert F. Lucas\",\"2016\",\"http://link.springer.com/article/10.1007/s11227-016-1752-5\",\"Article\"\n\"The Design and Implementation of TIDeFlow: A Dataflow-Inspired Execution Model for Parallel Loops and Task Pipelining\",\"International Journal of Parallel Programming\",\"\",\"44\",\"2\",\"10.1007/s10766-015-0373-6\",\"Daniel OrozcoElkin GarciaRobert PavelJaime ArteagaGuang Gao\",\"2016\",\"http://link.springer.com/article/10.1007/s10766-015-0373-6\",\"Article\"\n\"Development of a hybrid parallel MCV-based high-order global shallow-water model\",\"The Journal of Supercomputing\",\"\",\"73\",\"6\",\"10.1007/s11227-017-1958-1\",\"Peng ZhangChao YangChungang ChenXingliang LiXueshun ShenFeng Xiao\",\"2017\",\"http://link.springer.com/article/10.1007/s11227-017-1958-1\",\"Article\"\n\"Poster Session: Computer Assisted Radiology - 22nd International Congress and Exhibition\",\"International Journal of Computer Assisted Radiology and Surgery\",\"\",\"3\",\"1\",\"10.1007/s11548-008-0206-9\",\"\",\"2008\",\"http://link.springer.com/article/10.1007/s11548-008-0206-9\",\"Article\"\n\"Embedded Real-Time H264/AVC High Definition Video Encoder on TI’s KeyStone Multicore DSP\",\"Journal of Signal Processing Systems\",\"\",\"86\",\"1\",\"10.1007/s11265-015-1098-x\",\"Nejmeddine BahriThierry GrandpierreMed Ali Ben AyedNouri MasmoudiMohamed Akil\",\"2017\",\"http://link.springer.com/article/10.1007/s11265-015-1098-x\",\"Article\"\n\"DVM-Approach to the Automation of the Development of Parallel Programs for Clusters\",\"Programming and Computer Software\",\"\",\"45\",\"3\",\"10.1134/S0361768819030034\",\"V. A. BakhtinV. A. Krukov\",\"2019\",\"http://link.springer.com/article/10.1134/S0361768819030034\",\"Article\"\n\"Accelerating bioinspired lateral interaction in accumulative computation for real-time moving object detection with graphics processing units\",\"Natural Computing\",\"\",\"18\",\"2\",\"10.1007/s11047-018-9690-1\",\"José L. SánchezMaría T. LópezJosé Manuel PastorAna E. DelgadoAntonio Fernández-Caballero\",\"2019\",\"http://link.springer.com/article/10.1007/s11047-018-9690-1\",\"Article\"\n\"Simulation of an inelastic dispersive phenomenon: stimulated Brillouin scattering in a single-mode fiber segment through parallelism\",\"The Journal of Supercomputing\",\"\",\"74\",\"7\",\"10.1007/s11227-018-2379-5\",\"R. Sanchez-LaraJ. A. Trejo-SanchezJ. L. Lopez-MartinezJ. A. Alvarez-Chavez\",\"2018\",\"http://link.springer.com/article/10.1007/s11227-018-2379-5\",\"Article\"\n\"Smoothness-Increasing Accuracy-Conserving (SIAC) Filtering for Discontinuous Galerkin Solutions: Improved Errors Versus Higher-Order Accuracy\",\"Journal of Scientific Computing\",\"\",\"53\",\"1\",\"10.1007/s10915-012-9593-8\",\"James KingHanieh MirzaeeJennifer K. RyanRobert M. Kirby\",\"2012\",\"http://link.springer.com/article/10.1007/s10915-012-9593-8\",\"Article\"\n\"HipaccVX: wedding of OpenVX and DSL-based code generation\",\"Journal of Real-Time Image Processing\",\"\",\"18\",\"3\",\"10.1007/s11554-020-01015-5\",\"M. Akif ÖzkanBurak OkBo QiaoJürgen TeichFrank Hannig\",\"2021\",\"http://link.springer.com/article/10.1007/s11554-020-01015-5\",\"Article\"\n\"Efficient application of GPGPU for lava flow hazard mapping\",\"The Journal of Supercomputing\",\"\",\"65\",\"2\",\"10.1007/s11227-013-0949-0\",\"Donato D’AmbrosioGiuseppe FilipponeDavide MaroccoRocco RongoWilliam Spataro\",\"2013\",\"http://link.springer.com/article/10.1007/s11227-013-0949-0\",\"Article\"\n\"Fast extraction of neuron morphologies from large-scale SBFSEM image stacks\",\"Journal of Computational Neuroscience\",\"\",\"31\",\"3\",\"10.1007/s10827-011-0316-1\",\"Stefan LangPanos DrouvelisEnkelejda TafajPeter BastianBert Sakmann\",\"2011\",\"http://link.springer.com/article/10.1007/s10827-011-0316-1\",\"Article\"\n\"Application-aware NoC management in GPUs multitasking\",\"The Journal of Supercomputing\",\"\",\"75\",\"8\",\"10.1007/s11227-018-2694-x\",\"Zhen XuXia ZhaoZhiying WangCanqun Yang\",\"2019\",\"http://link.springer.com/article/10.1007/s11227-018-2694-x\",\"Article\"\n\"Optimizing Monte Carlo radiosity on graphics hardware\",\"The Journal of Supercomputing\",\"\",\"58\",\"2\",\"10.1007/s11227-009-0353-y\",\"J. R. SanjurjoM. AmorM. BóoR. DoalloJ. Casares\",\"2011\",\"http://link.springer.com/article/10.1007/s11227-009-0353-y\",\"Article\"\n\"Parallel refinement of slanted 3D reconstruction using dense stereo induced from symmetry\",\"Journal of Real-Time Image Processing\",\"\",\"16\",\"4\",\"10.1007/s11554-016-0592-0\",\"Ricardo RalhaGabriel FalcaoJoao AmaroVasco MotaMichel AntunesJoao BarretoUrbano Nunes\",\"2019\",\"http://link.springer.com/article/10.1007/s11554-016-0592-0\",\"Article\"\n\"Fast network centrality analysis using GPUs\",\"BMC Bioinformatics\",\"\",\"12\",\"1\",\"10.1186/1471-2105-12-149\",\"Zhiao ShiBing Zhang\",\"2011\",\"http://link.springer.com/article/10.1186/1471-2105-12-149\",\"Article\"\n\"Parallel strategies for 2D Discrete Wavelet Transform in shared memory systems and GPUs\",\"The Journal of Supercomputing\",\"\",\"64\",\"1\",\"10.1007/s11227-012-0750-5\",\"V. GalianoO. LópezM. P. MalumbresH. Migallón\",\"2013\",\"http://link.springer.com/article/10.1007/s11227-012-0750-5\",\"Article\"\n\"How separable median filters can get better results than full 2D versions\",\"The Journal of Supercomputing\",\"\",\"\",\"\",\"10.1007/s11227-021-04233-1\",\"Gilles PerrotStéphane DomasRaphaël Couturier\",\"2022\",\"http://link.springer.com/article/10.1007/s11227-021-04233-1\",\"Article\"\n\"A CUDA-powered method for the feature extraction and unsupervised analysis of medical images\",\"The Journal of Supercomputing\",\"\",\"77\",\"8\",\"10.1007/s11227-020-03565-8\",\"Leonardo RundoAndrea TangherloniPaolo CazzanigaMatteo MistriSimone GalimbertiRamona WoitekEvis SalaGiancarlo MauriMarco S. Nobile\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-020-03565-8\",\"Article\"\n\"DQN-based OpenCL workload partition for performance optimization\",\"The Journal of Supercomputing\",\"\",\"75\",\"8\",\"10.1007/s11227-019-02766-0\",\"Sanghyun ParkTaeweon Suh\",\"2019\",\"http://link.springer.com/article/10.1007/s11227-019-02766-0\",\"Article\"\n\"Tuning framework for stencil computation in heterogeneous parallel platforms\",\"The Journal of Supercomputing\",\"\",\"72\",\"2\",\"10.1007/s11227-015-1575-9\",\"Taieb Lamine Ben CheikhAlexandra AguiarSofiene TaharGabriela Nicolescu\",\"2016\",\"http://link.springer.com/article/10.1007/s11227-015-1575-9\",\"Article\"\n\"Three-dimensional multi-phase-field simulation of eutectoid alloy based on OpenCL parallel\",\"China Foundry\",\"\",\"18\",\"3\",\"10.1007/s41230-021-0123-x\",\"Chang-sheng ZhuYu-jie LiFang-lan MaLi FengPeng Lei\",\"2021\",\"http://link.springer.com/article/10.1007/s41230-021-0123-x\",\"Article\"\n\"A survey on platforms for big data analytics\",\"Journal of Big Data\",\"\",\"2\",\"1\",\"10.1186/s40537-014-0008-6\",\"Dilpreet SinghChandan K Reddy\",\"2014\",\"http://link.springer.com/article/10.1186/s40537-014-0008-6\",\"Article\"\n\"Prediction of drug solubility on parallel computing architecture by support vector machines\",\"Network Modeling Analysis in Health Informatics and Bioinformatics\",\"\",\"7\",\"1\",\"10.1007/s13721-018-0174-0\",\"P. RajendraA. SubbaraoG. RamuV. Brahmajirao\",\"2018\",\"http://link.springer.com/article/10.1007/s13721-018-0174-0\",\"Article\"\n\"Hybrid Parallel Bundle Adjustment for 3D Scene Reconstruction with Massive Points\",\"Journal of Computer Science and Technology\",\"\",\"27\",\"6\",\"10.1007/s11390-012-1303-3\",\"Xin LiuWei GaoZhan-Yi Hu\",\"2012\",\"http://link.springer.com/article/10.1007/s11390-012-1303-3\",\"Article\"\n\"A new approach to fluid–structure interaction within graphics hardware accelerated smooth particle hydrodynamics considering heterogeneous particle size distribution\",\"Computational Particle Mechanics\",\"\",\"5\",\"3\",\"10.1007/s40571-017-0176-1\",\"Adnan EghtesadMarko Knezevic\",\"2018\",\"http://link.springer.com/article/10.1007/s40571-017-0176-1\",\"Article\"\n\"Computing and visualizing popular places\",\"Knowledge and Information Systems\",\"\",\"40\",\"2\",\"10.1007/s10115-013-0639-5\",\"Marta FortJ. Antoni SellarèsNacho Valladares\",\"2014\",\"http://link.springer.com/article/10.1007/s10115-013-0639-5\",\"Article\"\n\"SS-ITS: secure scalable intelligent transportation systems\",\"The Journal of Supercomputing\",\"\",\"77\",\"7\",\"10.1007/s11227-020-03582-7\",\"Asma BelhadiYoucef DjenouriGautam SrivastavaJerry Chun-Wei Lin\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-020-03582-7\",\"Article\"\n\"Accelerating metagenomic read classification on CUDA-enabled GPUs\",\"BMC Bioinformatics\",\"\",\"18\",\"1\",\"10.1186/s12859-016-1434-6\",\"Robin KobusChristian HundtAndré MüllerBertil Schmidt\",\"2017\",\"http://link.springer.com/article/10.1186/s12859-016-1434-6\",\"Article\"\n\"Towards energy-efficient parallel analysis of neural signals\",\"Cluster Computing\",\"\",\"16\",\"1\",\"10.1007/s10586-011-0175-6\",\"Dan ChenDongcuan LuMingwei TianShan HeShuaiting WangJian TianChang CaiXiaoli Li\",\"2013\",\"http://link.springer.com/article/10.1007/s10586-011-0175-6\",\"Article\"\n\"Parallel implementation and optimization of high definition video real-time dehazing\",\"Multimedia Tools and Applications\",\"\",\"76\",\"22\",\"10.1007/s11042-016-4036-4\",\"Huailiang TanXiaofei HeZijian WangGaoming Liu\",\"2017\",\"http://link.springer.com/article/10.1007/s11042-016-4036-4\",\"Article\"\n\"Low-Latency Elliptic Curve Scalar Multiplication\",\"International Journal of Parallel Programming\",\"\",\"40\",\"5\",\"10.1007/s10766-012-0198-5\",\"Joppe W. Bos\",\"2012\",\"http://link.springer.com/article/10.1007/s10766-012-0198-5\",\"Article\"\n\"Effective NC machining simulation with OptiX ray tracing engine\",\"The Visual Computer\",\"\",\"35\",\"2\",\"10.1007/s00371-018-1497-7\",\"Marc JachymSylvain LavernheCharly EuzenatChristophe Tournier\",\"2019\",\"http://link.springer.com/article/10.1007/s00371-018-1497-7\",\"Article\"\n\"Similarity (range and kNN) queries processing on an Intel Xeon Phi coprocessor\",\"Cluster Computing\",\"\",\"19\",\"1\",\"10.1007/s10586-015-0515-z\",\"Carlos M. ToledoRicardo J. BarrientosAndrés I. Ávila\",\"2016\",\"http://link.springer.com/article/10.1007/s10586-015-0515-z\",\"Article\"\n\"Towards Accelerated Genome Informatics on Parallel HPC Platforms: The ReneGENE-GI Perspective\",\"Journal of Signal Processing Systems\",\"\",\"92\",\"10\",\"10.1007/s11265-019-01452-x\",\"Santhi NatarajanKrishna Kumar N.Debnath PalS. K. Nandy\",\"2020\",\"http://link.springer.com/article/10.1007/s11265-019-01452-x\",\"Article\"\n\"A statistical performance analyzer framework for OpenCL kernels on Nvidia GPUs\",\"The Journal of Supercomputing\",\"\",\"71\",\"8\",\"10.1007/s11227-014-1338-z\",\"Ali KaramiFarshad KhunjushSeyyed Ali Mirsoleimani\",\"2015\",\"http://link.springer.com/article/10.1007/s11227-014-1338-z\",\"Article\"\n\"Using heterogeneous computing for scattering prediction in scenarios with several source configurations\",\"The Journal of Supercomputing\",\"\",\"73\",\"1\",\"10.1007/s11227-015-1618-2\",\"M. López-PortuguésJ.  A. López-FernándezJosé RanillaR. G. AyestaránF. Las-Heras\",\"2017\",\"http://link.springer.com/article/10.1007/s11227-015-1618-2\",\"Article\"\n\"Demand look-ahead memory access scheduling for 3D graphics processing units\",\"Multimedia Tools and Applications\",\"\",\"73\",\"3\",\"10.1007/s11042-013-1639-x\",\"Chih-Chieh HsiaoMin-Jen LoSlo-Li Chu\",\"2014\",\"http://link.springer.com/article/10.1007/s11042-013-1639-x\",\"Article\"\n\"Networking and communication challenges for post-exascale systems\",\"Frontiers of Information Technology & Electronic Engineering\",\"\",\"19\",\"10\",\"10.1631/FITEE.1800631\",\"Dhabaleswar PandaXiao-Yi LuHari Subramoni\",\"2018\",\"http://link.springer.com/article/10.1631/FITEE.1800631\",\"Article\"\n\"Optimization Strategies Oriented to Loop Characteristics in Software Thread Level Speculation Systems\",\"Journal of Computer Science and Technology\",\"\",\"31\",\"1\",\"10.1007/s11390-016-1612-z\",\"Li ShenFan XuZhi-Ying Wang\",\"2016\",\"http://link.springer.com/article/10.1007/s11390-016-1612-z\",\"Article\"\n\"Heterogeneous Computing Utilizing FPGAs\",\"Journal of Signal Processing Systems\",\"\",\"91\",\"7\",\"10.1007/s11265-018-1382-7\",\"Marc ReichenbachPhilipp HolzingerKonrad HäubleinTobias LieskePaul BlinzerDietmar Fey\",\"2019\",\"http://link.springer.com/article/10.1007/s11265-018-1382-7\",\"Article\"\n\"Survey and design of paleozoic: a high-performance compiler tool chain for deep learning inference accelerator\",\"CCF Transactions on High Performance Computing\",\"\",\"2\",\"4\",\"10.1007/s42514-020-00044-7\",\"Zihan LiuJingwen LengGuandong LuChenhui WangQuan ChenMinyi Guo\",\"2020\",\"http://link.springer.com/article/10.1007/s42514-020-00044-7\",\"Article\"\n\"Simulation of one-layer shallow water systems on multicore and CUDA architectures\",\"The Journal of Supercomputing\",\"\",\"58\",\"2\",\"10.1007/s11227-010-0406-2\",\"Marc de la AsunciónJosé M. MantasManuel J. Castro\",\"2011\",\"http://link.springer.com/article/10.1007/s11227-010-0406-2\",\"Article\"\n\"Real-time H264/AVC encoder based on enhanced frame level parallelism for smart multicore DSP camera\",\"Journal of Real-Time Image Processing\",\"\",\"12\",\"4\",\"10.1007/s11554-014-0470-6\",\"Nejmeddine BahriNidhameddine BelhadjThierry GrandpierreMohamed Ali Ben AyedNouri MasmoudiMohamed Akil\",\"2016\",\"http://link.springer.com/article/10.1007/s11554-014-0470-6\",\"Article\"\n\"Parallel Smith-Waterman Comparison on Multicore and Manycore Computing Platforms with BSP++\",\"International Journal of Parallel Programming\",\"\",\"41\",\"1\",\"10.1007/s10766-012-0209-6\",\"Khaled HamidoucheFernando Machado MendoncaJoel FalcouAlba Cristina Magalhaes Alves de MeloDaniel Etiemble\",\"2013\",\"http://link.springer.com/article/10.1007/s10766-012-0209-6\",\"Article\"\n\"PrefixFPM: a parallel framework for general-purpose mining of frequent and closed patterns\",\"The VLDB Journal\",\"\",\"\",\"\",\"10.1007/s00778-021-00687-0\",\"Da YanWenwen QuGuimu GuoXiaoling WangYang Zhou\",\"2021\",\"http://link.springer.com/article/10.1007/s00778-021-00687-0\",\"Article\"\n\"Bio-inspired computation for big data fusion, storage, processing, learning and visualization: state of the art and future directions\",\"Neural Computing and Applications\",\"\",\"\",\"\",\"10.1007/s00521-021-06332-9\",\"Ana I. Torre-BastidaJosu Díaz-de-ArcayaEneko OsabaKhan MuhammadDavid CamachoJavier Del Ser\",\"2021\",\"http://link.springer.com/article/10.1007/s00521-021-06332-9\",\"Article\"\n\"Real-time Visual Tracker by Stream Processing\",\"Journal of Signal Processing Systems\",\"\",\"57\",\"2\",\"10.1007/s11265-008-0250-2\",\"Oscar Mateo LozanoKazuhiro Otsuka\",\"2009\",\"http://link.springer.com/article/10.1007/s11265-008-0250-2\",\"Article\"\n\"clusterCL: comprehensive support for multi-kernel data-parallel applications in heterogeneous asymmetric clusters\",\"The Journal of Supercomputing\",\"\",\"76\",\"12\",\"10.1007/s11227-020-03234-w\",\"Valon RacaEduard Mehofer\",\"2020\",\"http://link.springer.com/article/10.1007/s11227-020-03234-w\",\"Article\"\n\"Automatic translation of data parallel programs for heterogeneous parallelism through OpenMP offloading\",\"The Journal of Supercomputing\",\"\",\"77\",\"5\",\"10.1007/s11227-020-03452-2\",\"Farui WangWeizhe ZhangHaonan GuoMeng HaoGangzhao LuZheng Wang\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-020-03452-2\",\"Article\"\n\"Research on financial management of Guangdong-Hong Kong-macao greater Bay Area based on LS-SVM algorithm and multi-model fusion\",\"Annals of Operations Research\",\"\",\"\",\"\",\"10.1007/s10479-021-04398-1\",\"Liu YixinZhang Miao\",\"2021\",\"http://link.springer.com/article/10.1007/s10479-021-04398-1\",\"Article\"\n\"Jittor: a novel deep learning framework with meta-operators and unified graph execution\",\"Science China Information Sciences\",\"\",\"63\",\"12\",\"10.1007/s11432-020-3097-4\",\"Shi-Min HuDun LiangGuo-Ye YangGuo-Wei YangWen-Yang Zhou\",\"2020\",\"http://link.springer.com/article/10.1007/s11432-020-3097-4\",\"Article\"\n\"On-line range images registration with GPGPU\",\"Opto-Electronics Review\",\"\",\"21\",\"1\",\"10.2478/s11772-013-0074-x\",\"J. BędkowskiJ. Naruniec\",\"2013\",\"http://link.springer.com/article/10.2478/s11772-013-0074-x\",\"Article\"\n\"Adaptation and optimization of basic operations for an unstructured mesh CFD algorithm for computation on massively parallel accelerators\",\"Computational Mathematics and Mathematical Physics\",\"\",\"53\",\"8\",\"10.1134/S0965542513080046\",\"P. B. BogdanovA. V. GorobetsS. A. Sukov\",\"2013\",\"http://link.springer.com/article/10.1134/S0965542513080046\",\"Article\"\n\"Parallel Rendering and Animation of Subdivision Surfaces on the Cell BE Processor\",\"International Journal of Parallel Programming\",\"\",\"39\",\"4\",\"10.1007/s10766-010-0153-2\",\"L. BeniniR. GrottesiS. MorigiM. Ruggiero\",\"2011\",\"http://link.springer.com/article/10.1007/s10766-010-0153-2\",\"Article\"\n\"The TianHe-1A Supercomputer: Its Hardware and Software\",\"Journal of Computer Science and Technology\",\"\",\"26\",\"3\",\"10.1007/s02011-011-1137-8\",\"Xue-Jun YangXiang-Ke LiaoKai LuQing-Feng HuJun-Qiang SongJin-Shu Su\",\"2011\",\"http://link.springer.com/article/10.1007/s02011-011-1137-8\",\"Article\"\n\"Software Tools for Automation of Parallel Programming on the Basis of Algebra of Algorithms\",\"Cybernetics and Systems Analysis\",\"\",\"51\",\"1\",\"10.1007/s10559-015-9706-0\",\"F. I. AndonA. E. DoroshenkoA. G. BeketovV. A. IovchevE. A. Yatsenko\",\"2015\",\"http://link.springer.com/article/10.1007/s10559-015-9706-0\",\"Article\"\n\"ginSODA: massive parallel integration of stiff ODE systems on GPUs\",\"The Journal of Supercomputing\",\"\",\"75\",\"12\",\"10.1007/s11227-018-2549-5\",\"Marco S. NobilePaolo CazzanigaDaniela BesozziGiancarlo Mauri\",\"2019\",\"http://link.springer.com/article/10.1007/s11227-018-2549-5\",\"Article\"\n\"Large-scale paralleled sparse principal component analysis\",\"Multimedia Tools and Applications\",\"\",\"75\",\"3\",\"10.1007/s11042-014-2004-4\",\"W. LiuH. ZhangD. TaoY. WangK. Lu\",\"2016\",\"http://link.springer.com/article/10.1007/s11042-014-2004-4\",\"Article\"\n\"Vehicle-mounted surround vision algorithm based on heterogeneous architecture\",\"Multimedia Tools and Applications\",\"\",\"79\",\"33 - 34\",\"10.1007/s11042-020-09209-6\",\"Tong LiuJindong ZhangKunpeng ZhangJiabin XuDonghui WangXue Wang\",\"2020\",\"http://link.springer.com/article/10.1007/s11042-020-09209-6\",\"Article\"\n\"HCudaBLAST: an implementation of BLAST on Hadoop and Cuda\",\"Journal of Big Data\",\"\",\"4\",\"1\",\"10.1186/s40537-017-0102-7\",\"Nilay KhareAlind KhareFarhan Khan\",\"2017\",\"http://link.springer.com/article/10.1186/s40537-017-0102-7\",\"Article\"\n\"A suite of parallel algorithms for efficient band selection from hyperspectral images\",\"Journal of Real-Time Image Processing\",\"\",\"15\",\"3\",\"10.1007/s11554-018-0765-0\",\"Alessandro FontanellaElisa MarenziEmanuele TortiGiovanni DaneseAntonio PlazaFrancesco Leporati\",\"2018\",\"http://link.springer.com/article/10.1007/s11554-018-0765-0\",\"Article\"\n\"High-Level Parallel Ant Colony Optimization with Algorithmic Skeletons\",\"International Journal of Parallel Programming\",\"\",\"49\",\"6\",\"10.1007/s10766-021-00714-1\",\"Breno A. de Melo MenezesNina HerrmannHerbert KuchenFernando Buarque de Lima Neto\",\"2021\",\"http://link.springer.com/article/10.1007/s10766-021-00714-1\",\"Article\"\n\"Real-time stereo to multi-view conversion system based on adaptive meshing\",\"Journal of Real-Time Image Processing\",\"\",\"14\",\"2\",\"10.1007/s11554-015-0490-x\",\"Shao-Jun YaoLiang-Hao WangCheng-Liang LinMing Zhang\",\"2018\",\"http://link.springer.com/article/10.1007/s11554-015-0490-x\",\"Article\"\n\"Review of deep learning: concepts, CNN architectures, challenges, applications, future directions\",\"Journal of Big Data\",\"\",\"8\",\"1\",\"10.1186/s40537-021-00444-8\",\"Laith AlzubaidiJinglan ZhangAmjad J. HumaidiAyad Al-DujailiYe DuanOmran Al-ShammaJ. SantamaríaMohammed A. FadhelMuthana Al-AmidieLaith Farhan\",\"2021\",\"http://link.springer.com/article/10.1186/s40537-021-00444-8\",\"Article\"\n\"Complexity analysis of software defined DVB-T2 physical layer\",\"Analog Integrated Circuits and Signal Processing\",\"\",\"69\",\"2 - 3\",\"10.1007/s10470-011-9724-4\",\"Stefan GrönroosKristian NybomJerker Björkqvist\",\"2011\",\"http://link.springer.com/article/10.1007/s10470-011-9724-4\",\"Article\"\n\"A fast framework construction and visualization method for particle-based fluid\",\"EURASIP Journal on Image and Video Processing\",\"\",\"2017\",\"1\",\"10.1186/s13640-017-0227-9\",\"Fengquan ZhangZhaowei WangJian ChangJianjun ZhangFeng Tian\",\"2017\",\"http://link.springer.com/article/10.1186/s13640-017-0227-9\",\"Article\"\n\"Energy efficiency of load balancing for data-parallel applications in heterogeneous systems\",\"The Journal of Supercomputing\",\"\",\"73\",\"1\",\"10.1007/s11227-016-1864-y\",\"Borja PérezEsteban StaffordJosé Luis BosqueRamón Beivide\",\"2017\",\"http://link.springer.com/article/10.1007/s11227-016-1864-y\",\"Article\"\n\"A fast template matching-based algorithm for railway bolts detection\",\"International Journal of Machine Learning and Cybernetics\",\"\",\"5\",\"6\",\"10.1007/s13042-013-0223-z\",\"Yunguang DouYaping HuangQingyong LiSiwei Luo\",\"2014\",\"http://link.springer.com/article/10.1007/s13042-013-0223-z\",\"Article\"\n\"Comparative evaluation of platforms for parallel Ant Colony Optimization\",\"The Journal of Supercomputing\",\"\",\"69\",\"1\",\"10.1007/s11227-014-1154-5\",\"Ginés D. GuerreroJosé M. CeciliaAntonio LlanesJosé M. GarcíaMartyn AmosManuel Ujaldón\",\"2014\",\"http://link.springer.com/article/10.1007/s11227-014-1154-5\",\"Article\"\n\"Low-Latency Software Polar Decoders\",\"Journal of Signal Processing Systems\",\"\",\"90\",\"5\",\"10.1007/s11265-016-1157-y\",\"Pascal GiardGabi SarkisCamille LerouxClaude ThibeaultWarren J. Gross\",\"2018\",\"http://link.springer.com/article/10.1007/s11265-016-1157-y\",\"Article\"\n\"A two-level real-time vision machine combining coarse- and fine-grained parallelism\",\"Journal of Real-Time Image Processing\",\"\",\"5\",\"4\",\"10.1007/s11554-010-0159-4\",\"Lars Baunegaard With JensenAnders Kjær-NielsenKarl PauwelsJeppe Barsøe JessenMarc Van HulleNorbert Krüger\",\"2010\",\"http://link.springer.com/article/10.1007/s11554-010-0159-4\",\"Article\"\n\"GPUs and chaos: a new true random number generator\",\"Nonlinear Dynamics\",\"\",\"82\",\"4\",\"10.1007/s11071-015-2287-7\",\"Je Sen TehAzman SamsudinMishal Al-MazrooieAmir Akhavan\",\"2015\",\"http://link.springer.com/article/10.1007/s11071-015-2287-7\",\"Article\"\n\"Embedded real-time infrared and visible image fusion for UAV surveillance\",\"Journal of Real-Time Image Processing\",\"\",\"18\",\"6\",\"10.1007/s11554-021-01111-0\",\"Jun LiYuanxi PengTian Jiang\",\"2021\",\"http://link.springer.com/article/10.1007/s11554-021-01111-0\",\"Article\"\n\"Speeding Up Cycle Based Logic Simulation Using Graphics Processing Units\",\"International Journal of Parallel Programming\",\"\",\"39\",\"5\",\"10.1007/s10766-011-0164-7\",\"Alper SenBaris AksanliMurat Bozkurt\",\"2011\",\"http://link.springer.com/article/10.1007/s10766-011-0164-7\",\"Article\"\n\"Parallel simulation of Population Dynamics P systems: updates and roadmap\",\"Natural Computing\",\"\",\"15\",\"4\",\"10.1007/s11047-016-9566-1\",\"Miguel A. Martínez-del-AmorLuis F. Macías-RamosLuis Valencia-CabreraMario J. Pérez-Jiménez\",\"2016\",\"http://link.springer.com/article/10.1007/s11047-016-9566-1\",\"Article\"\n\"DRMaestro: orchestrating disaggregated resources on virtualized data-centers\",\"Journal of Cloud Computing\",\"\",\"10\",\"1\",\"10.1186/s13677-021-00238-6\",\"Marcelo AmaralJordà PoloDavid CarreraNelson GonzalezChih-Chieh YangAlessandro MorariBruce D’AmoraAlaa YoussefMalgorzata Steinder\",\"2021\",\"http://link.springer.com/article/10.1186/s13677-021-00238-6\",\"Article\"\n\"Monte Carlo Simulation of the Solar Radiation Transfer in a Cloudy Atmosphere with the Use of Graphic Processor and NVIDIA CUDA Technology\",\"Atmospheric and Oceanic Optics\",\"\",\"31\",\"2\",\"10.1134/S1024856018020100\",\"T. V. Russkova\",\"2018\",\"http://link.springer.com/article/10.1134/S1024856018020100\",\"Article\"\n\"Optimizing memory bandwidth exploitation for OpenVX applications on embedded many-core accelerators\",\"Journal of Real-Time Image Processing\",\"\",\"15\",\"1\",\"10.1007/s11554-015-0544-0\",\"Giuseppe TagliaviniGermain HaugouAndrea MarongiuLuca Benini\",\"2018\",\"http://link.springer.com/article/10.1007/s11554-015-0544-0\",\"Article\"\n\"Improvement of workload balancing using parallel loop self-scheduling on Intel Xeon Phi\",\"The Journal of Supercomputing\",\"\",\"73\",\"11\",\"10.1007/s11227-017-2068-9\",\"Chao-Tung YangChao-Wei HuangShuo-Tsung Chen\",\"2017\",\"http://link.springer.com/article/10.1007/s11227-017-2068-9\",\"Article\"\n\"Survey of external memory large-scale graph processing on a multi-core system\",\"The Journal of Supercomputing\",\"\",\"76\",\"1\",\"10.1007/s11227-019-03023-0\",\"Jianqiang HuangWei QinXiaoying WangWenguang Chen\",\"2020\",\"http://link.springer.com/article/10.1007/s11227-019-03023-0\",\"Article\"\n\"Towards efficient tile low-rank GEMM computation on sunway many-core processors\",\"The Journal of Supercomputing\",\"\",\"77\",\"5\",\"10.1007/s11227-020-03444-2\",\"Qingchang HanHailong YangMing DunZhongzhi LuanLin GanGuangwen YangDepei Qian\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-020-03444-2\",\"Article\"\n\"Special issue on evolutionary computation on general purpose graphics processing units\",\"Soft Computing\",\"\",\"16\",\"2\",\"10.1007/s00500-011-0719-y\",\"José L. Risco-MartínJuan LancharesCarlos A. Coello-Coello\",\"2012\",\"http://link.springer.com/article/10.1007/s00500-011-0719-y\",\"Article\"\n\"Performance and energy effects on task-based parallelized applications\",\"The Journal of Supercomputing\",\"\",\"74\",\"6\",\"10.1007/s11227-018-2294-9\",\"Helena CaminalDiego CaballeroJuan M. CebriánRoger FerrerMarc CasasMiquel MoretóXavier MartorellMateo Valero\",\"2018\",\"http://link.springer.com/article/10.1007/s11227-018-2294-9\",\"Article\"\n\"Region-based parallelization of irregular reductions on explicitly managed memory hierarchies\",\"The Journal of Supercomputing\",\"\",\"56\",\"1\",\"10.1007/s11227-009-0340-3\",\"Seonggun KimHwansoo HanKwang-Moo Choe\",\"2011\",\"http://link.springer.com/article/10.1007/s11227-009-0340-3\",\"Article\"\n\"Performance evaluation of enhancement of the layered self-scheduling approach for heterogeneous multicore cluster systems\",\"The Journal of Supercomputing\",\"\",\"62\",\"1\",\"10.1007/s11227-011-0726-x\",\"Chao-Chin WuLien-Fu LaiLiang-Tsung HuangMingLung Chen\",\"2012\",\"http://link.springer.com/article/10.1007/s11227-011-0726-x\",\"Article\"\n\"Big Data Management: What to Keep from the Past to Face Future Challenges?\",\"Data Science and Engineering\",\"\",\"2\",\"4\",\"10.1007/s41019-017-0043-3\",\"G. Vargas-SolarJ. L. Zechinelli-MartiniJ. A. Espinosa-Oviedo\",\"2017\",\"http://link.springer.com/article/10.1007/s41019-017-0043-3\",\"Article\"\n\"KPN-based parallelization of Wu–Manber algorithm on multi-core machines\",\"Cluster Computing\",\"\",\"23\",\"2\",\"10.1007/s10586-019-02955-9\",\"Monther AldwairiAbdulmughni Y. HamzahMoath Jarrah\",\"2020\",\"http://link.springer.com/article/10.1007/s10586-019-02955-9\",\"Article\"\n\"IMB-ASYNC: a revised method and benchmark to estimate MPI-3 asynchronous progress efficiency\",\"Cluster Computing\",\"\",\"\",\"\",\"10.1007/s10586-021-03452-8\",\"Alexey V. Medvedev\",\"2022\",\"http://link.springer.com/article/10.1007/s10586-021-03452-8\",\"Article\"\n\"Characterizing the efficiency of multicore and manycore processors for the solution of sparse linear systems\",\"Computer Science - Research and Development\",\"\",\"31\",\"4\",\"10.1007/s00450-015-0299-7\",\"José I. AliagaMaría BarredaErnesto DufrechouPablo EzzattiEnrique S. Quintana-Ortí\",\"2016\",\"http://link.springer.com/article/10.1007/s00450-015-0299-7\",\"Article\"\n\"Loop Parallelization Techniques for FPGA Accelerator Synthesis\",\"Journal of Signal Processing Systems\",\"\",\"90\",\"1\",\"10.1007/s11265-017-1229-7\",\"Oliver ReicheM. Akif ÖzkanFrank HannigJürgen TeichMoritz Schmid\",\"2018\",\"http://link.springer.com/article/10.1007/s11265-017-1229-7\",\"Article\"\n\"A Fast Parallel Implementation of a PTAS for Fractional Packing and Covering Linear Programs\",\"International Journal of Parallel Programming\",\"\",\"43\",\"5\",\"10.1007/s10766-015-0352-y\",\"Slobodan JelićSören LaueDomagoj MatijevićPatrick Wijerama\",\"2015\",\"http://link.springer.com/article/10.1007/s10766-015-0352-y\",\"Article\"\n\"Parallel algorithms for large-scale biological sequence alignment on Xeon-Phi based clusters\",\"BMC Bioinformatics\",\"\",\"17\",\"9\",\"10.1186/s12859-016-1128-0\",\"Haidong LanYuandong ChanKai XuBertil SchmidtShaoliang PengWeiguo Liu\",\"2016\",\"http://link.springer.com/article/10.1186/s12859-016-1128-0\",\"Article\"\n\"Explicit Fourth-Order Runge–Kutta Method on Intel Xeon Phi Coprocessor\",\"International Journal of Parallel Programming\",\"\",\"45\",\"5\",\"10.1007/s10766-016-0458-x\",\"Beata BylinaJoanna Potiopa\",\"2017\",\"http://link.springer.com/article/10.1007/s10766-016-0458-x\",\"Article\"\n\"Energy aware scheduling model and online heuristics for stencil codes on heterogeneous computing architectures\",\"Cluster Computing\",\"\",\"20\",\"3\",\"10.1007/s10586-016-0686-2\",\"Milosz CiznickiKrzysztof KurowskiJan Weglarz\",\"2017\",\"http://link.springer.com/article/10.1007/s10586-016-0686-2\",\"Article\"\n\"Adaptive sparse matrix representation for efficient matrix–vector multiplication\",\"The Journal of Supercomputing\",\"\",\"72\",\"9\",\"10.1007/s11227-015-1571-0\",\"Pantea ZardoshtiFarshad KhunjushHamid Sarbazi-Azad\",\"2016\",\"http://link.springer.com/article/10.1007/s11227-015-1571-0\",\"Article\"\n\"Multi-level complexity reduction for HEVC multiview coding\",\"Journal of Real-Time Image Processing\",\"\",\"17\",\"2\",\"10.1007/s11554-018-0757-0\",\"Caoyang JiangSaeid Nooshabadi\",\"2020\",\"http://link.springer.com/article/10.1007/s11554-018-0757-0\",\"Article\"\n\"A CUDA approach to compute perishable inventory control policies using value iteration\",\"The Journal of Supercomputing\",\"\",\"75\",\"3\",\"10.1007/s11227-018-2692-z\",\"G. OrtegaE. M. T. HendrixI. García\",\"2019\",\"http://link.springer.com/article/10.1007/s11227-018-2692-z\",\"Article\"\n\"A Review of High-Performance Computational Strategies for Modeling and Imaging of Electromagnetic Induction Data\",\"Surveys in Geophysics\",\"\",\"35\",\"1\",\"10.1007/s10712-013-9260-0\",\"Gregory A. Newman\",\"2014\",\"http://link.springer.com/article/10.1007/s10712-013-9260-0\",\"Article\"\n\"Visual analysis and simulation of dam-break flood spatiotemporal process in a network environment\",\"Environmental Earth Sciences\",\"\",\"74\",\"10\",\"10.1007/s12665-015-4418-3\",\"Lingzhi YinJun ZhuXiang ZhangYi LiJinhong WangHeng ZhangXiaofeng Yang\",\"2015\",\"http://link.springer.com/article/10.1007/s12665-015-4418-3\",\"Article\"\n\"A comparison study of wavelet transforms for the visualization of differentially methylated regions in DNA samples\",\"The Journal of Supercomputing\",\"\",\"77\",\"3\",\"10.1007/s11227-020-03269-z\",\"Lisardo FernándezMariano PérezJuan M. Orduña\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-020-03269-z\",\"Article\"\n\"Comparison and Computational Performance of Tsunami-HySEA and MOST Models for LANTEX 2013 Scenario: Impact Assessment on Puerto Rico Coasts\",\"Pure and Applied Geophysics\",\"\",\"173\",\"12\",\"10.1007/s00024-016-1387-8\",\"Jorge MacíasAurelio MercadoJosé Manuel González-VidaSergio OrtegaManuel Jesús Castro\",\"2016\",\"http://link.springer.com/article/10.1007/s00024-016-1387-8\",\"Article\"\n\"GLSC: LSC superpixels at over 130 FPS\",\"Journal of Real-Time Image Processing\",\"\",\"14\",\"3\",\"10.1007/s11554-016-0652-5\",\"Zhihua BanJianguo LiuJeremy Fouriaux\",\"2018\",\"http://link.springer.com/article/10.1007/s11554-016-0652-5\",\"Article\"\n\"Accelerating Scalar-Product Based Sequence Alignment using Graphics Processor Units\",\"Journal of Signal Processing Systems\",\"\",\"61\",\"2\",\"10.1007/s11265-009-0409-5\",\"Cem Savas BassoySvetlana TorgasinMei YangKarl-Heinz Zimmermann\",\"2010\",\"http://link.springer.com/article/10.1007/s11265-009-0409-5\",\"Article\"\n\"Poster Session CAR\",\"International Journal of Computer Assisted Radiology and Surgery\",\"\",\"2\",\"1\",\"10.1007/s11548-007-0113-5\",\"\",\"2007\",\"http://link.springer.com/article/10.1007/s11548-007-0113-5\",\"Article\"\n\"Faster modular arithmetic for isogeny-based crypto on embedded devices\",\"Journal of Cryptographic Engineering\",\"\",\"10\",\"2\",\"10.1007/s13389-019-00214-6\",\"Joppe W. BosSimon J. Friedberger\",\"2020\",\"http://link.springer.com/article/10.1007/s13389-019-00214-6\",\"Article\"\n\"Refactoring software to heterogeneous parallel platforms\",\"The Journal of Supercomputing\",\"\",\"75\",\"8\",\"10.1007/s11227-019-02942-2\",\"J. Daniel Garcia\",\"2019\",\"http://link.springer.com/article/10.1007/s11227-019-02942-2\",\"Article\"\n\"A dynamic CTA scheduling scheme for massive parallel computing\",\"Cluster Computing\",\"\",\"20\",\"1\",\"10.1007/s10586-017-0768-9\",\"Dong Oh SonCong Thuan DoHong Jun ChoiJiseung NamCheol Hong Kim\",\"2017\",\"http://link.springer.com/article/10.1007/s10586-017-0768-9\",\"Article\"\n\"A Hybrid Circular Queue Method for Iterative Stencil Computations on GPUs\",\"Journal of Computer Science and Technology\",\"\",\"27\",\"1\",\"10.1007/s11390-012-1206-3\",\"Yang YangHui-Min CuiXiao-Bing FengJing-Ling Xue\",\"2012\",\"http://link.springer.com/article/10.1007/s11390-012-1206-3\",\"Article\"\n\"MeterPU: a generic measurement abstraction API\",\"The Journal of Supercomputing\",\"\",\"74\",\"11\",\"10.1007/s11227-016-1792-x\",\"Lu LiChristoph Kessler\",\"2018\",\"http://link.springer.com/article/10.1007/s11227-016-1792-x\",\"Article\"\n\"Multilevel parallelism optimization of stencil computations on SIMDlized NUMA architectures\",\"The Journal of Supercomputing\",\"\",\"77\",\"11\",\"10.1007/s11227-021-03823-3\",\"Kaifang ZhangHuayou SuYong Dou\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-021-03823-3\",\"Article\"\n\"The state of the art and taxonomy of big data analytics: view from new big data framework\",\"Artificial Intelligence Review\",\"\",\"53\",\"2\",\"10.1007/s10462-019-09685-9\",\"Azlinah MohamedMaryam Khanian NajafabadiYap Bee WahEzzatul Akmal Kamaru ZamanRuhaila Maskat\",\"2020\",\"http://link.springer.com/article/10.1007/s10462-019-09685-9\",\"Article\"\n\"Probability/Possibility Systems for Modeling of Random/Fuzzy Information with Parallelization Consideration\",\"International Journal of Fuzzy Systems\",\"\",\"21\",\"6\",\"10.1007/s40815-019-00627-9\",\"Wei Mei\",\"2019\",\"http://link.springer.com/article/10.1007/s40815-019-00627-9\",\"Article\"\n\"Guest Editorial: High-Level Parallel Programming and the Road to High Performance\",\"International Journal of Parallel Programming\",\"\",\"47\",\"2\",\"10.1007/s10766-018-0606-6\",\"J. Daniel GarcíaArturo Gonzalez-Escribano\",\"2019\",\"http://link.springer.com/article/10.1007/s10766-018-0606-6\",\"Article\"\n\"Composition of weighted finite transducers in MapReduce\",\"Journal of Big Data\",\"\",\"8\",\"1\",\"10.1186/s40537-020-00397-4\",\"Bilal ElghadyryFaissal OuardiSébastien Verel\",\"2021\",\"http://link.springer.com/article/10.1186/s40537-020-00397-4\",\"Article\"\n\"Automatic tuning of sparse matrix-vector multiplication on multicore clusters\",\"Science China Information Sciences\",\"\",\"58\",\"9\",\"10.1007/s11432-014-5254-x\",\"ShiGang LiChangJun HuJunChao ZhangYunQuan Zhang\",\"2015\",\"http://link.springer.com/article/10.1007/s11432-014-5254-x\",\"Article\"\n\"Hybrid static–dynamic selection of implementation alternatives in heterogeneous environments\",\"The Journal of Supercomputing\",\"\",\"75\",\"8\",\"10.1007/s11227-017-2147-y\",\"D. del Rio AstorgaManuel F. DolzJavier FernandezJavier Garcia Blas\",\"2019\",\"http://link.springer.com/article/10.1007/s11227-017-2147-y\",\"Article\"\n\"Future Simulations of Tidal Disruption Events\",\"Space Science Reviews\",\"\",\"216\",\"5\",\"10.1007/s11214-020-00680-z\",\"Julian H. KrolikPhilip J. ArmitageYanfei JiangGiuseppe Lodato\",\"2020\",\"http://link.springer.com/article/10.1007/s11214-020-00680-z\",\"Article\"\n\"Data-Intensive Cloud Computing: Requirements, Expectations, Challenges, and Solutions\",\"Journal of Grid Computing\",\"\",\"11\",\"2\",\"10.1007/s10723-013-9255-6\",\"Jawwad ShamsiMuhammad Ali KhojayeMohammad Ali Qasmi\",\"2013\",\"http://link.springer.com/article/10.1007/s10723-013-9255-6\",\"Article\"\n\"Model-Based Design of Flexible and Efficient LDPC Decoders on FPGA Devices\",\"Journal of Signal Processing Systems\",\"\",\"92\",\"7\",\"10.1007/s11265-020-01519-0\",\"Yann DelomierBertrand Le GalJérémie CrenneChristophe Jego\",\"2020\",\"http://link.springer.com/article/10.1007/s11265-020-01519-0\",\"Article\"\n\"J2M: a Java to MapReduce translator for cloud computing\",\"The Journal of Supercomputing\",\"\",\"72\",\"5\",\"10.1007/s11227-016-1695-x\",\"Bing LiJunbo ZhangNing YuYi Pan\",\"2016\",\"http://link.springer.com/article/10.1007/s11227-016-1695-x\",\"Article\"\n\"The Fraunhofer virtual machine: a communication library and runtime system based on the RDMA model\",\"Computer Science - Research and Development\",\"\",\"23\",\"3 - 4\",\"10.1007/s00450-009-0088-2\",\"Rui MachadoCarsten Lojewski\",\"2009\",\"http://link.springer.com/article/10.1007/s00450-009-0088-2\",\"Article\"\n\"Memory Efficient Two-Pass 3D FFT Algorithm for Intel® Xeon PhiTM Coprocessor\",\"Journal of Computer Science and Technology\",\"\",\"29\",\"6\",\"10.1007/s11390-014-1484-z\",\"Yi-Qun LiuYan LiYun-Quan ZhangXian-Yi Zhang\",\"2014\",\"http://link.springer.com/article/10.1007/s11390-014-1484-z\",\"Article\"\n\"Parallel Bayesian ARTMAP and Its OpenCL Implementation\",\"Neural Processing Letters\",\"\",\"47\",\"2\",\"10.1007/s11063-017-9663-x\",\"István LőrentzRăzvan AndonieLucian M. Sasu\",\"2018\",\"http://link.springer.com/article/10.1007/s11063-017-9663-x\",\"Article\"\n\"A massively parallel algorithm for Bordered Almost Block Diagonal Systems on GPUs\",\"Numerical Algorithms\",\"\",\"86\",\"3\",\"10.1007/s11075-020-00931-8\",\"M. DessoleF. Marcuzzi\",\"2021\",\"http://link.springer.com/article/10.1007/s11075-020-00931-8\",\"Article\"\n\"Multi-relaxation time lattice Boltzmann simulations of oscillatory instability in lid-driven flows of 2D semi-elliptical cavity\",\"Journal of Visualization\",\"\",\"22\",\"6\",\"10.1007/s12650-019-00590-5\",\"Zhe FengHeeChang Lim\",\"2019\",\"http://link.springer.com/article/10.1007/s12650-019-00590-5\",\"Article\"\n\"Real-time Autonomous UAV Formation Flight with Collision and Obstacle Avoidance in Unknown Environment\",\"Journal of Intelligent & Robotic Systems\",\"\",\"84\",\"1 - 4\",\"10.1007/s10846-015-0318-8\",\"Omer CetinGuray Yilmaz\",\"2016\",\"http://link.springer.com/article/10.1007/s10846-015-0318-8\",\"Article\"\n\"Accelerating calculations of RNA secondary structure partition functions using GPUs\",\"Algorithms for Molecular Biology\",\"\",\"8\",\"1\",\"10.1186/1748-7188-8-29\",\"Harry A SternDavid H Mathews\",\"2013\",\"http://link.springer.com/article/10.1186/1748-7188-8-29\",\"Article\"\n\"Parallel multiprocessing and scheduling on the heterogeneous Xeon+FPGA platform\",\"The Journal of Supercomputing\",\"\",\"76\",\"6\",\"10.1007/s11227-019-02935-1\",\"Andrés RodríguezAngeles NavarroRafael AsenjoFrancisco CorberaRubén GranDarío SuárezJose Nunez-Yanez\",\"2020\",\"http://link.springer.com/article/10.1007/s11227-019-02935-1\",\"Article\"\n\"Low-latency and high-throughput software turbo decoders on multi-core architectures\",\"Annals of Telecommunications\",\"\",\"75\",\"1 - 2\",\"10.1007/s12243-019-00727-5\",\"Bertrand Le GalChristophe Jego\",\"2020\",\"http://link.springer.com/article/10.1007/s12243-019-00727-5\",\"Article\"\n\"Kernel density estimation in accelerators\",\"The Journal of Supercomputing\",\"\",\"72\",\"2\",\"10.1007/s11227-015-1577-7\",\"Unai Lopez-NovoaAlexander MendiburuJose Miguel-Alonso\",\"2016\",\"http://link.springer.com/article/10.1007/s11227-015-1577-7\",\"Article\"\n\"Accelerating iterative CT reconstruction algorithms using Tensor Cores\",\"Journal of Real-Time Image Processing\",\"\",\"18\",\"6\",\"10.1007/s11554-020-01069-5\",\"Mohsen NourazarBart Goossens\",\"2021\",\"http://link.springer.com/article/10.1007/s11554-020-01069-5\",\"Article\"\n\"Speed and accuracy improvement of higher-order epistasis detection on CUDA-enabled GPUs\",\"Cluster Computing\",\"\",\"20\",\"3\",\"10.1007/s10586-017-0938-9\",\"Daniel JüngerChristian HundtJorge González DomínguezBertil Schmidt\",\"2017\",\"http://link.springer.com/article/10.1007/s10586-017-0938-9\",\"Article\"\n\"Parallel design of intelligent optimization algorithm based on FPGA\",\"The International Journal of Advanced Manufacturing Technology\",\"\",\"94\",\"9 - 12\",\"10.1007/s00170-017-1447-y\",\"Xiaofu ZouLina WangYue TangYilong LiuShicheng ZhanFei Tao\",\"2018\",\"http://link.springer.com/article/10.1007/s00170-017-1447-y\",\"Article\"\n\"CUDA implementation of fractal image compression\",\"Journal of Real-Time Image Processing\",\"\",\"17\",\"5\",\"10.1007/s11554-019-00894-7\",\"Abir Al SideiriNasser AlzeidiMayyada Al HammoshiMunesh Singh ChauhanGhaliya AlFarsi\",\"2020\",\"http://link.springer.com/article/10.1007/s11554-019-00894-7\",\"Article\"\n\"The Case for Polymorphic Registers in Dataflow Computing\",\"International Journal of Parallel Programming\",\"\",\"46\",\"6\",\"10.1007/s10766-017-0494-1\",\"Cătălin Bogdan CiobanuGeorgi GaydadjievChristian PilatoDonatella Sciuto\",\"2018\",\"http://link.springer.com/article/10.1007/s10766-017-0494-1\",\"Article\"\n\"A lightweight BLASTP and its implementation on CUDA GPUs\",\"The Journal of Supercomputing\",\"\",\"77\",\"1\",\"10.1007/s11227-020-03267-1\",\"Liang-Tsung HuangKai-Cheng WeiChao-Chin WuChao-Yu ChenJian-An Wang\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-020-03267-1\",\"Article\"\n\"CUDA-based solver for large-scale groundwater flow simulation\",\"Engineering with Computers\",\"\",\"28\",\"1\",\"10.1007/s00366-011-0213-2\",\"Xiaohui JiTangpei ChengQun Wang\",\"2012\",\"http://link.springer.com/article/10.1007/s00366-011-0213-2\",\"Article\"\n\"What do Programmers Discuss about Deep Learning Frameworks\",\"Empirical Software Engineering\",\"\",\"25\",\"4\",\"10.1007/s10664-020-09819-6\",\"Junxiao HanEmad ShihabZhiyuan WanShuiguang DengXin Xia\",\"2020\",\"http://link.springer.com/article/10.1007/s10664-020-09819-6\",\"Article\"\n\"Numerical analysis of parallel implementation of the reorthogonalized ABS methods\",\"Central European Journal of Operations Research\",\"\",\"27\",\"2\",\"10.1007/s10100-018-0557-4\",\"Szabina FodorZoltán Németh\",\"2019\",\"http://link.springer.com/article/10.1007/s10100-018-0557-4\",\"Article\"\n\"Compressed dynamic mode decomposition for background modeling\",\"Journal of Real-Time Image Processing\",\"\",\"16\",\"5\",\"10.1007/s11554-016-0655-2\",\"N. Benjamin ErichsonSteven L. BruntonJ. Nathan Kutz\",\"2019\",\"http://link.springer.com/article/10.1007/s11554-016-0655-2\",\"Article\"\n\"Evaluation of the ITER Real-Time Framework for Data Acquisition and Processing from Pulsed Gigasample Digitizers\",\"Journal of Fusion Energy\",\"\",\"39\",\"5\",\"10.1007/s10894-020-00264-3\",\"M. KadzielaB. JablonskiP. PerekD. Makowski\",\"2020\",\"http://link.springer.com/article/10.1007/s10894-020-00264-3\",\"Article\"\n\"The international race towards Exascale in Europe\",\"CCF Transactions on High Performance Computing\",\"\",\"1\",\"1\",\"10.1007/s42514-019-00002-y\",\"Fabrizio GagliardiMiquel MoretoMauro OlivieriMateo Valero\",\"2019\",\"http://link.springer.com/article/10.1007/s42514-019-00002-y\",\"Article\"\n\"Optimizing an APSP implementation for NVIDIA GPUs using kernel characterization criteria\",\"The Journal of Supercomputing\",\"\",\"70\",\"2\",\"10.1007/s11227-014-1212-z\",\"Hector Ortega-ArranzYuri TorresArturo Gonzalez-EscribanoDiego R. Llanos\",\"2014\",\"http://link.springer.com/article/10.1007/s11227-014-1212-z\",\"Article\"\n\"Deep Learning Inference with Dynamic Graphs on Heterogeneous Platforms\",\"International Journal of Parallel Programming\",\"\",\"49\",\"2\",\"10.1007/s10766-020-00654-2\",\"V. PothosE. VassalosI. TheodorakopoulosN. Fragoulis\",\"2021\",\"http://link.springer.com/article/10.1007/s10766-020-00654-2\",\"Article\"\n\"Optimizing CUDA code by kernel fusion: application on BLAS\",\"The Journal of Supercomputing\",\"\",\"71\",\"10\",\"10.1007/s11227-015-1483-z\",\"Jiří FilipovičMatúš MadzinJan FousekLuděk Matyska\",\"2015\",\"http://link.springer.com/article/10.1007/s11227-015-1483-z\",\"Article\"\n\"A fast ray tracing algorithm based on a hybrid structure\",\"Multimedia Tools and Applications\",\"\",\"75\",\"4\",\"10.1007/s11042-014-2378-3\",\"Yuanlong WangPing GuoFuqing Duan\",\"2016\",\"http://link.springer.com/article/10.1007/s11042-014-2378-3\",\"Article\"\n\"Real-time video denoising on multicores and GPUs with Kalman-based and Bilateral filters fusion\",\"Journal of Real-Time Image Processing\",\"\",\"16\",\"5\",\"10.1007/s11554-016-0659-y\",\"Sergio G. PflegerPatricia D. M. PlentzRodrigo C. O. RochaAlyson D. PereiraMárcio Castro\",\"2019\",\"http://link.springer.com/article/10.1007/s11554-016-0659-y\",\"Article\"\n\"Graphic processing unit based phase retrieval and CT reconstruction for differential X-ray phase contrast imaging\",\"Journal of Shanghai Jiaotong University (Science)\",\"\",\"19\",\"5\",\"10.1007/s12204-014-1539-x\",\"Xiao-qing Chen 陈晓庆Yu-jie Wang 王宇杰Jian-qi Sun 孙建奇\",\"2014\",\"http://link.springer.com/article/10.1007/s12204-014-1539-x\",\"Article\"\n\"Performance and energy consumption of the SIMD Gram–Schmidt process for vector orthogonalization\",\"The Journal of Supercomputing\",\"\",\"76\",\"3\",\"10.1007/s11227-019-02839-0\",\"Thomas JakobsBilly NaumannGudula Rünger\",\"2020\",\"http://link.springer.com/article/10.1007/s11227-019-02839-0\",\"Article\"\n\"Performance and power consumption analysis of Arm Scalable Vector Extension\",\"The Journal of Supercomputing\",\"\",\"77\",\"6\",\"10.1007/s11227-020-03495-5\",\"Tetsuya OdajimaYuetsu KodamaMitsuhisa Sato\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-020-03495-5\",\"Article\"\n\"Application based brokering algorithm for optimal resource provisioning in multiple heterogeneous clouds\",\"Vietnam Journal of Computer Science\",\"\",\"3\",\"1\",\"10.1007/s40595-015-0055-8\",\"Thiruselvan SubramanianNickolas Savarimuthu\",\"2016\",\"http://link.springer.com/article/10.1007/s40595-015-0055-8\",\"Article\"\n\"MPI + MPI: a new hybrid approach to parallel programming with MPI plus shared memory\",\"Computing\",\"\",\"95\",\"12\",\"10.1007/s00607-013-0324-2\",\"Torsten HoeflerJames DinanDarius BuntinasPavan BalajiBrian BarrettRon BrightwellWilliam GroppVivek KaleRajeev Thakur\",\"2013\",\"http://link.springer.com/article/10.1007/s00607-013-0324-2\",\"Article\"\n\"Computational and mathematical models meet heterogeneous computing\",\"The Journal of Supercomputing\",\"\",\"75\",\"3\",\"10.1007/s11227-018-2713-y\",\"Diego R. LlanosJesús Vigo-Aguiar\",\"2019\",\"http://link.springer.com/article/10.1007/s11227-018-2713-y\",\"Article\"\n\"Parallel Algorithms for Successive Convolution\",\"Journal of Scientific Computing\",\"\",\"86\",\"1\",\"10.1007/s10915-020-01359-x\",\"Andrew J. ChristliebPierson T. GuthreyWilliam A. SandsMathialakan Thavappiragasm\",\"2020\",\"http://link.springer.com/article/10.1007/s10915-020-01359-x\",\"Article\"\n\"AutoWM: a novel domain-specific tool for universal multi-/many-core accelerations of the WRF cloud microphysics\",\"Cluster Computing\",\"\",\"24\",\"2\",\"10.1007/s10586-020-03170-7\",\"Peng ZhangChao YangYulong Ao\",\"2021\",\"http://link.springer.com/article/10.1007/s10586-020-03170-7\",\"Article\"\n\"Real-time tsunami inundation forecast system for tsunami disaster prevention and mitigation\",\"The Journal of Supercomputing\",\"\",\"74\",\"7\",\"10.1007/s11227-018-2363-0\",\"Akihiro MusaOsamu WatanabeHiroshi MatsuokaHiroaki HokariTakuya InoueYoichi MurashimaYusaku OhtaRyota HinoShunichi KoshimuraHiroaki Kobayashi\",\"2018\",\"http://link.springer.com/article/10.1007/s11227-018-2363-0\",\"Article\"\n\"Using Machine Learning Techniques to Detect Parallel Patterns of Multi-threaded Applications\",\"International Journal of Parallel Programming\",\"\",\"44\",\"4\",\"10.1007/s10766-015-0396-z\",\"Etem DenizAlper Sen\",\"2016\",\"http://link.springer.com/article/10.1007/s10766-015-0396-z\",\"Article\"\n\"Cooperative Computing Techniques for a Deeply Fused and Heterogeneous Many-Core Processor Architecture\",\"Journal of Computer Science and Technology\",\"\",\"30\",\"1\",\"10.1007/s11390-015-1510-9\",\"Fang ZhengHong-Liang LiHui LvFeng GuoXiao-Hong XuXiang-Hui Xie\",\"2015\",\"http://link.springer.com/article/10.1007/s11390-015-1510-9\",\"Article\"\n\"Computing infrastructure for big data processing\",\"Frontiers of Computer Science\",\"\",\"7\",\"2\",\"10.1007/s11704-013-3900-x\",\"Ling Liu\",\"2013\",\"http://link.springer.com/article/10.1007/s11704-013-3900-x\",\"Article\"\n\"In-memory database acceleration on FPGAs: a survey\",\"The VLDB Journal\",\"\",\"29\",\"1\",\"10.1007/s00778-019-00581-w\",\"Jian FangYvo T. B. MulderJan HiddersJinho LeeH. Peter Hofstee\",\"2020\",\"http://link.springer.com/article/10.1007/s00778-019-00581-w\",\"Article\"\n\"The survey on ARM processors for HPC\",\"The Journal of Supercomputing\",\"\",\"75\",\"10\",\"10.1007/s11227-019-02911-9\",\"Daniel YokoyamaBruno SchulzeFábio BorgesGiacomo Mc Evoy\",\"2019\",\"http://link.springer.com/article/10.1007/s11227-019-02911-9\",\"Article\"\n\"Practical scalable image analysis and indexing using Hadoop\",\"Multimedia Tools and Applications\",\"\",\"71\",\"3\",\"10.1007/s11042-012-1256-0\",\"Jonathon S. HareSina SamangooeiPaul H. Lewis\",\"2014\",\"http://link.springer.com/article/10.1007/s11042-012-1256-0\",\"Article\"\n\"Quantitative genetic analysis station for the genetic analysis of complex traits\",\"Chinese Science Bulletin\",\"\",\"57\",\"21\",\"10.1007/s11434-012-5108-0\",\"GuoBo ChenZhiXiang ZhuFuTao ZhangJun Zhu\",\"2012\",\"http://link.springer.com/article/10.1007/s11434-012-5108-0\",\"Article\"\n\"Aircraft noise scattering prediction using different accelerator architectures\",\"The Journal of Supercomputing\",\"\",\"70\",\"2\",\"10.1007/s11227-014-1107-z\",\"M. López-PortuguésJ. A. López-FernándezN. Díaz-GraciaR. G. AyestaránJosé Ranilla\",\"2014\",\"http://link.springer.com/article/10.1007/s11227-014-1107-z\",\"Article\"\n\"A highly parallelized framework for computationally intensive MR data analysis\",\"Magnetic Resonance Materials in Physics, Biology and Medicine\",\"\",\"25\",\"4\",\"10.1007/s10334-011-0290-7\",\"Roland N. BoubelaWolfgang HufKlaudius KalcherRonald SladkyPeter FilzmoserLukas PezawasSiegfried KasperChristian WindischbergerEwald Moser\",\"2012\",\"http://link.springer.com/article/10.1007/s10334-011-0290-7\",\"Article\"\n\"Coherent multiresolution isosurface ray tracing\",\"The Visual Computer\",\"\",\"25\",\"3\",\"10.1007/s00371-008-0215-2\",\"Aaron M. KnollIngo WaldCharles D. Hansen\",\"2009\",\"http://link.springer.com/article/10.1007/s00371-008-0215-2\",\"Article\"\n\"Accelerating Single Iteration Performance of CUDA-Based 3D Reaction–Diffusion Simulations\",\"International Journal of Parallel Programming\",\"\",\"42\",\"2\",\"10.1007/s10766-013-0251-z\",\"John K. HolmenDavid L. Foster\",\"2014\",\"http://link.springer.com/article/10.1007/s10766-013-0251-z\",\"Article\"\n\"A new memory mapping mechanism for GPGPUs’ stencil computation\",\"Computing\",\"\",\"97\",\"8\",\"10.1007/s00607-014-0434-5\",\"Tieqiang MoRenfa Li\",\"2015\",\"http://link.springer.com/article/10.1007/s00607-014-0434-5\",\"Article\"\n\"Practical Collision Attacks against Round-Reduced SHA-3\",\"Journal of Cryptology\",\"\",\"33\",\"1\",\"10.1007/s00145-019-09313-3\",\"Jian GuoGuohong LiaoGuozhen LiuMeicheng LiuKexin QiaoLing Song\",\"2020\",\"http://link.springer.com/article/10.1007/s00145-019-09313-3\",\"Article\"\n\"High Order Anchoring and Reinitialization of Level Set Function for Simulating Interface Motion\",\"Journal of Scientific Computing\",\"\",\"81\",\"3\",\"10.1007/s10915-019-01076-0\",\"Vimal RamanujRamanan Sankaran\",\"2019\",\"http://link.springer.com/article/10.1007/s10915-019-01076-0\",\"Article\"\n\"Using meta-heuristics and machine learning for software optimization of parallel computing systems: a systematic literature review\",\"Computing\",\"\",\"101\",\"8\",\"10.1007/s00607-018-0614-9\",\"Suejb MemetiSabri PllanaAlécio BinottoJoanna KołodziejIvona Brandic\",\"2019\",\"http://link.springer.com/article/10.1007/s00607-018-0614-9\",\"Article\"\n\"Embedded multi-core computing and applications\",\"The Journal of Supercomputing\",\"\",\"73\",\"8\",\"10.1007/s11227-017-2107-6\",\"Che-Lun HungFrédéric MagoulèsMeikang QiuRobert C. HsuChun-Yuan Lin\",\"2017\",\"http://link.springer.com/article/10.1007/s11227-017-2107-6\",\"Article\"\n\"Whole procedure heterogeneous multiprocessors low-power optimization at algorithm-level\",\"Cluster Computing\",\"\",\"22\",\"1\",\"10.1007/s10586-018-1920-x\",\"Zhuowei WangNaixue XiongHao WangLianglun ChengWuqing Zhao\",\"2019\",\"http://link.springer.com/article/10.1007/s10586-018-1920-x\",\"Article\"\n\"FPGA implementation of HOOFR bucketing extractor-based real-time embedded SLAM applications\",\"Journal of Real-Time Image Processing\",\"\",\"18\",\"3\",\"10.1007/s11554-020-00986-9\",\"Dai Duong NguyenAbdelhafid El OuardiSergio RodriguezSamir Bouaziz\",\"2021\",\"http://link.springer.com/article/10.1007/s11554-020-00986-9\",\"Article\"\n\"Computing element evolution towards Exascale and its impact on legacy simulation codes\",\"The European Physical Journal A\",\"\",\"51\",\"12\",\"10.1140/epja/i2015-15163-3\",\"Guillaume J.L. Colin de Verdière\",\"2015\",\"http://link.springer.com/article/10.1140/epja/i2015-15163-3\",\"Article\"\n\"High Level Data Structures for GPGPU Programming in a Statically Typed Language\",\"International Journal of Parallel Programming\",\"\",\"45\",\"2\",\"10.1007/s10766-016-0424-7\",\"Mathias BourgoinEmmanuel ChaillouxJean-Luc Lamotte\",\"2017\",\"http://link.springer.com/article/10.1007/s10766-016-0424-7\",\"Article\"\n\"Real-time line-structured light measurement system based on Scheimpflug principle\",\"Optical Review\",\"\",\"28\",\"4\",\"10.1007/s10043-021-00681-5\",\"Yong ZhangYucheng QianShanlin LiuYunfei Wang\",\"2021\",\"http://link.springer.com/article/10.1007/s10043-021-00681-5\",\"Article\"\n\"Prediction models for performance, power, and energy efficiency of software executed on heterogeneous hardware\",\"The Journal of Supercomputing\",\"\",\"75\",\"8\",\"10.1007/s11227-018-2252-6\",\"Dénes BánRudolf FerencIstván SiketÁkos KissTibor Gyimóthy\",\"2019\",\"http://link.springer.com/article/10.1007/s11227-018-2252-6\",\"Article\"\n\"The 2D wavelet transform on emerging architectures: GPUs and multicores\",\"Journal of Real-Time Image Processing\",\"\",\"7\",\"3\",\"10.1007/s11554-011-0224-7\",\"Joaquín FrancoGregorio BernabéJuan FernándezManuel Ujaldón\",\"2012\",\"http://link.springer.com/article/10.1007/s11554-011-0224-7\",\"Article\"\n\"Parallel multiple instance learning for extremely large histopathology image analysis\",\"BMC Bioinformatics\",\"\",\"18\",\"1\",\"10.1186/s12859-017-1768-8\",\"Yan XuYeshu LiZhengyang ShenZiwei WuTeng GaoYubo FanMaode LaiEric I-Chao Chang\",\"2017\",\"http://link.springer.com/article/10.1186/s12859-017-1768-8\",\"Article\"\n\"High-performance optimizations on tiled many-core embedded systems: a matrix multiplication case study\",\"The Journal of Supercomputing\",\"\",\"66\",\"1\",\"10.1007/s11227-013-0916-9\",\"Arslan MunirFarinaz KoushanfarAnn Gordon-RossSanjay Ranka\",\"2013\",\"http://link.springer.com/article/10.1007/s11227-013-0916-9\",\"Article\"\n\"Impact assessment of meteorological drought on rainfed agriculture using drought index and NDVI modeling: a case study of Tikamgarh district, M. P., India\",\"Applied Geomatics\",\"\",\"11\",\"1\",\"10.1007/s12518-018-0230-6\",\"Pushpendra Singh RajpootAjay Kumar\",\"2019\",\"http://link.springer.com/article/10.1007/s12518-018-0230-6\",\"Article\"\n\"Guest Editors’ introduction\",\"The Journal of Supercomputing\",\"\",\"63\",\"2\",\"10.1007/s11227-012-0743-4\",\"Abhinav VishnuPavan BalajiYong Chen\",\"2013\",\"http://link.springer.com/article/10.1007/s11227-012-0743-4\",\"Article\"\n\"Graph processing and machine learning architectures with emerging memory technologies: a survey\",\"Science China Information Sciences\",\"\",\"64\",\"6\",\"10.1007/s11432-020-3219-6\",\"Xuehai Qian\",\"2021\",\"http://link.springer.com/article/10.1007/s11432-020-3219-6\",\"Article\"\n\"Editorial: enabling technologies for programming extreme scale systems\",\"The Journal of Supercomputing\",\"\",\"61\",\"1\",\"10.1007/s11227-012-0745-2\",\"Ching-Hsien Hsu\",\"2012\",\"http://link.springer.com/article/10.1007/s11227-012-0745-2\",\"Article\"\n\"Ad Hoc File Systems for High-Performance Computing\",\"Journal of Computer Science and Technology\",\"\",\"35\",\"1\",\"10.1007/s11390-020-9801-1\",\"André BrinkmannKathryn MohrorWeikuan YuPhilip CarnsToni CortesScott A. KlaskyAlberto MirandaFranz-Josef PfreundtRobert B. RossMarc-André Vef\",\"2020\",\"http://link.springer.com/article/10.1007/s11390-020-9801-1\",\"Article\"\n\"Guest Editorial Special Issue: High-Level Programming for Heterogeneous Parallel Systems\",\"International Journal of Parallel Programming\",\"\",\"47\",\"1\",\"10.1007/s10766-018-0576-8\",\"Christopher Brown\",\"2019\",\"http://link.springer.com/article/10.1007/s10766-018-0576-8\",\"Article\"\n\"Handling big data: research challenges and future directions\",\"The Journal of Supercomputing\",\"\",\"72\",\"4\",\"10.1007/s11227-016-1677-z\",\"I. AnagnostopoulosS. ZeadallyE. Exposito\",\"2016\",\"http://link.springer.com/article/10.1007/s11227-016-1677-z\",\"Article\"\n\"Development of a 3D Hybrid Finite-Discrete Element Simulator Based on GPGPU-Parallelized Computation for Modelling Rock Fracturing Under Quasi-Static and Dynamic Loading Conditions\",\"Rock Mechanics and Rock Engineering\",\"\",\"53\",\"3\",\"10.1007/s00603-019-01960-z\",\"Daisuke FukudaMojtaba MohammadnejadHongyuan LiuQianbing ZhangJian ZhaoSevda DehkhodaAndrew ChanJun-ichi KodamaYoshiaki Fujii\",\"2020\",\"http://link.springer.com/article/10.1007/s00603-019-01960-z\",\"Article\"\n\"Interpretable Machine Learning for Texture-Dependent Constitutive Models with Automatic Code Generation for Topological Optimization\",\"Integrating Materials and Manufacturing Innovation\",\"\",\"10\",\"3\",\"10.1007/s40192-021-00231-6\",\"Karl GarbrechtMiguel AguiloAllen SandersonAnthony RollettRobert M. KirbyJacob Hochhalter\",\"2021\",\"http://link.springer.com/article/10.1007/s40192-021-00231-6\",\"Article\"\n\"Applications of the MapReduce programming framework to clinical big data analysis: current landscape and future trends\",\"BioData Mining\",\"\",\"7\",\"1\",\"10.1186/1756-0381-7-22\",\"Emad A MohammedBehrouz H FarChristopher Naugler\",\"2014\",\"http://link.springer.com/article/10.1186/1756-0381-7-22\",\"Article\"\n\"Parallel BRDF-based infrared radiation simulation of aerial targets implemented on Intel Xeon processor and Xeon Phi coprocessor\",\"Journal of Real-Time Image Processing\",\"\",\"16\",\"1\",\"10.1007/s11554-017-0739-7\",\"Xing GuoZhensen WuJiaji WuYunhua Cao\",\"2019\",\"http://link.springer.com/article/10.1007/s11554-017-0739-7\",\"Article\"\n\"Fast sorting for exact OIT of complex scenes\",\"The Visual Computer\",\"\",\"30\",\"6 - 8\",\"10.1007/s00371-014-0956-z\",\"Pyarelal KnowlesGeoff LeachFabio Zambetta\",\"2014\",\"http://link.springer.com/article/10.1007/s00371-014-0956-z\",\"Article\"\n\"Fast 3D wavelet transform on multicore and many-core computing platforms\",\"The Journal of Supercomputing\",\"\",\"65\",\"2\",\"10.1007/s11227-013-0868-0\",\"V. GalianoO. López-GranadoM. P. MalumbresH. Migallón\",\"2013\",\"http://link.springer.com/article/10.1007/s11227-013-0868-0\",\"Article\"\n\"A distributed approach for accelerating sparse matrix arithmetic operations for high-dimensional feature selection\",\"Knowledge and Information Systems\",\"\",\"51\",\"2\",\"10.1007/s10115-016-0981-5\",\"Antonela TommaselDaniela GodoyAlejandro ZuninoCristian Mateos\",\"2017\",\"http://link.springer.com/article/10.1007/s10115-016-0981-5\",\"Article\"\n\"Heuristic Search Space Generation for Maximum Clique Problem Inspired in Biomolecular Filtering\",\"Journal of Signal Processing Systems\",\"\",\"83\",\"3\",\"10.1007/s11265-015-1027-z\",\"Nelson E. Ordóñez-GuillénIsrael M. Martínez-Pérez\",\"2016\",\"http://link.springer.com/article/10.1007/s11265-015-1027-z\",\"Article\"\n\"GPUBlocks: GUI Programming Tool for CUDA and OpenCL\",\"Journal of Signal Processing Systems\",\"\",\"91\",\"3 - 4\",\"10.1007/s11265-018-1395-2\",\"Yuan-Shin HwangHsih-Hsin LinShen-Hung PaiChia-Heng Tu\",\"2019\",\"http://link.springer.com/article/10.1007/s11265-018-1395-2\",\"Article\"\n\"Towards an efficient parallel raycasting of unstructured volumetric data on distributed environments\",\"Cluster Computing\",\"\",\"17\",\"2\",\"10.1007/s10586-013-0244-0\",\"Cristiana BentesBernardo B. LabroniciLúcia M. A. DrummondRicardo Farias\",\"2014\",\"http://link.springer.com/article/10.1007/s10586-013-0244-0\",\"Article\"\n\"Real-time brain extraction method from cerebral MRI volume based on graphic processing units\",\"Neural Computing and Applications\",\"\",\"25\",\"5\",\"10.1007/s00521-014-1588-y\",\"Shaofeng JiangYu WangZhen ChenKaiqiong Sun\",\"2014\",\"http://link.springer.com/article/10.1007/s00521-014-1588-y\",\"Article\"\n\"MetaBinG2: a fast and accurate metagenomic sequence classification system for samples with many unknown organisms\",\"Biology Direct\",\"\",\"13\",\"1\",\"10.1186/s13062-018-0220-y\",\"Yuyang QiaoBen JiaZhiqiang HuChen SunYijin XiangChaochun Wei\",\"2018\",\"http://link.springer.com/article/10.1186/s13062-018-0220-y\",\"Article\"\n\"Parallel Simulation of Two-Dimensional Ising Models Using Probabilistic Cellular Automata\",\"Journal of Statistical Physics\",\"\",\"184\",\"1\",\"10.1007/s10955-021-02792-4\",\"Roberto D’AutiliaLouis Nantenaina AndrianaivoAlessio Troiani\",\"2021\",\"http://link.springer.com/article/10.1007/s10955-021-02792-4\",\"Article\"\n\"An accelerated nonlocal means algorithm for synthetic aperture radar ocean image despeckling\",\"Acta Oceanologica Sinica\",\"\",\"38\",\"11\",\"10.1007/s13131-019-1504-5\",\"Guozhen ZhaDewei XuYanming YangXin’gai SongFuhuang Zhong\",\"2019\",\"http://link.springer.com/article/10.1007/s13131-019-1504-5\",\"Article\"\n\"Automatic code generation for GPUs in llc\",\"The Journal of Supercomputing\",\"\",\"58\",\"3\",\"10.1007/s11227-011-0591-7\",\"Ruyman ReyesFrancisco de Sande\",\"2011\",\"http://link.springer.com/article/10.1007/s11227-011-0591-7\",\"Article\"\n\"Compilers for Low Power with Design Patterns on Embedded Multicore Systems\",\"Journal of Signal Processing Systems\",\"\",\"80\",\"3\",\"10.1007/s11265-014-0917-9\",\"Cheng-Yen LinChi-Bang KuanWen-Li ShihJenq Kuen Lee\",\"2015\",\"http://link.springer.com/article/10.1007/s11265-014-0917-9\",\"Article\"\n\"Geometric Algebra Computing for Heterogeneous Systems\",\"Advances in Applied Clifford Algebras\",\"\",\"27\",\"1\",\"10.1007/s00006-016-0694-6\",\"D. HildenbrandJ. AlbertP. CharrierChr. Steinmetz\",\"2017\",\"http://link.springer.com/article/10.1007/s00006-016-0694-6\",\"Article\"\n\"Comparison of different parallel implementations of the 2+1-dimensional KPZ model and the 3-dimensional KMC model\",\"The European Physical Journal Special Topics\",\"\",\"210\",\"1\",\"10.1140/epjst/e2012-01645-8\",\"J. KellingG. ÓdorM. F. NagyH. SchulzK. -H. Heinig\",\"2012\",\"http://link.springer.com/article/10.1140/epjst/e2012-01645-8\",\"Article\"\n\"A high performance parallel DCT with OpenCL on heterogeneous computing environment\",\"Multimedia Tools and Applications\",\"\",\"64\",\"2\",\"10.1007/s11042-012-1028-x\",\"Cheong Ghil KimYong Soo Choi\",\"2013\",\"http://link.springer.com/article/10.1007/s11042-012-1028-x\",\"Article\"\n\"Systems Simulation Analysis and Optimization of Insurance Business\",\"Cybernetics and Systems Analysis\",\"\",\"50\",\"2\",\"10.1007/s10559-014-9613-9\",\"B. V. Norkin\",\"2014\",\"http://link.springer.com/article/10.1007/s10559-014-9613-9\",\"Article\"\n\"A taxonomy of peer-to-peer desktop grid paradigms\",\"Cluster Computing\",\"\",\"14\",\"2\",\"10.1007/s10586-010-0138-3\",\"Han ZhaoXinxin LiuXiaolin Li\",\"2011\",\"http://link.springer.com/article/10.1007/s10586-010-0138-3\",\"Article\"\n\"Improving performance of background subtraction on mobile devices: a parallel approach\",\"Journal of Real-Time Image Processing\",\"\",\"\",\"\",\"10.1007/s11554-021-01184-x\",\"Marko MišićPetar KovačevMilo Tomašević\",\"2021\",\"http://link.springer.com/article/10.1007/s11554-021-01184-x\",\"Article\"\n\"Application of Graphics Processing Units for Self-Consistent Modelling of Shallow Water Dynamics and Sediment Transport\",\"Lobachevskii Journal of Mathematics\",\"\",\"41\",\"8\",\"10.1134/S1995080220080089\",\"S. S. KhrapovA. V. Khoperskov\",\"2020\",\"http://link.springer.com/article/10.1134/S1995080220080089\",\"Article\"\n\"Cooperative particle swarm optimization using MapReduce\",\"Soft Computing\",\"\",\"21\",\"22\",\"10.1007/s00500-016-2390-9\",\"Yang WangYangyang LiZhenghan ChenYu Xue\",\"2017\",\"http://link.springer.com/article/10.1007/s00500-016-2390-9\",\"Article\"\n\"Analytical Estimation of the Scalability of Iterative Numerical Algorithms on Distributed Memory Multiprocessors\",\"Lobachevskii Journal of Mathematics\",\"\",\"39\",\"4\",\"10.1134/S1995080218040121\",\"L. B. Sokolinsky\",\"2018\",\"http://link.springer.com/article/10.1134/S1995080218040121\",\"Article\"\n\"Big data analytics on Apache Spark\",\"International Journal of Data Science and Analytics\",\"\",\"1\",\"3 - 4\",\"10.1007/s41060-016-0027-9\",\"Salman SalloumRuslan DautovXiaojun ChenPatrick Xiaogang PengJoshua Zhexue Huang\",\"2016\",\"http://link.springer.com/article/10.1007/s41060-016-0027-9\",\"Article\"\n\"EVE: A Flexible SIMD Coprocessor for Embedded Vision Applications\",\"Journal of Signal Processing Systems\",\"\",\"75\",\"2\",\"10.1007/s11265-013-0770-2\",\"Jagadeesh SankaranChing-Yu HungBranislav Kisačanin\",\"2014\",\"http://link.springer.com/article/10.1007/s11265-013-0770-2\",\"Article\"\n\"Research and implementation of scalable parallel computing based on Map-Reduce\",\"Journal of Shanghai University (English Edition)\",\"\",\"15\",\"5\",\"10.1007/s11741-011-0763-3\",\"Thanh-cuong Nguyen 阮青强Wen-feng Shen 沈文枫Ya-hui Chai 柴亚辉Wei-min Xu 徐炜民\",\"2011\",\"http://link.springer.com/article/10.1007/s11741-011-0763-3\",\"Article\"\n\"PLAST: parallel local alignment search tool for database comparison\",\"BMC Bioinformatics\",\"\",\"10\",\"1\",\"10.1186/1471-2105-10-329\",\"Hoa Van NguyenDominique Lavenier\",\"2009\",\"http://link.springer.com/article/10.1186/1471-2105-10-329\",\"Article\"\n\"A novel data-driven neuro arch (DDNA) model for option pricing on cloud\",\"Journal of Banking and Financial Technology\",\"\",\"5\",\"2\",\"10.1007/s42786-021-00032-7\",\"Manmohit SinghRuppa K. ThulasiramA. Thavaneswaran\",\"2021\",\"http://link.springer.com/article/10.1007/s42786-021-00032-7\",\"Article\"\n\"MapReduce Data Skewness Handling: A Systematic Literature Review\",\"International Journal of Parallel Programming\",\"\",\"47\",\"5 - 6\",\"10.1007/s10766-019-00627-0\",\"Mohammad Amin IrandoostAmir Masoud RahmaniSaeed Setayeshi\",\"2019\",\"http://link.springer.com/article/10.1007/s10766-019-00627-0\",\"Article\"\n\"Implementation of a high-accuracy phase unwrapping algorithm using parallel-hybrid programming approach for displacement sensing using self-mixing interferometry\",\"The Journal of Supercomputing\",\"\",\"77\",\"9\",\"10.1007/s11227-021-03634-6\",\"Tassadaq HussainSaqib AminUsman ZabitEduard Ayguadé\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-021-03634-6\",\"Article\"\n\"Message-Passing Programming for Embedded Multicore Signal-Processing Platforms\",\"Journal of Signal Processing Systems\",\"\",\"75\",\"2\",\"10.1007/s11265-013-0732-8\",\"Shih-Hao HungPo-Hsun ChiuChia-Heng TuWei-Ting ChouWen-Long Yang\",\"2014\",\"http://link.springer.com/article/10.1007/s11265-013-0732-8\",\"Article\"\n\"Software system research in post-Moore’s Law era: a historical perspective for the future\",\"Science China Information Sciences\",\"\",\"62\",\"9\",\"10.1007/s11432-019-9860-1\",\"Xiaodong Zhang\",\"2019\",\"http://link.springer.com/article/10.1007/s11432-019-9860-1\",\"Article\"\n\"SCnC: Efficient Unification of Streaming with Dynamic Task Parallelism\",\"International Journal of Parallel Programming\",\"\",\"44\",\"2\",\"10.1007/s10766-015-0353-x\",\"Dragoş SbîrleaJun ShirakoRyan NewtonVivek Sarkar\",\"2016\",\"http://link.springer.com/article/10.1007/s10766-015-0353-x\",\"Article\"\n\"Multicore implementation and performance analysis of a chaos based LSB steganography technique\",\"Microsystem Technologies\",\"\",\"27\",\"11\",\"10.1007/s00542-020-04762-4\",\"Gaurav GambhirJyotsna Kumar Mandal\",\"2021\",\"http://link.springer.com/article/10.1007/s00542-020-04762-4\",\"Article\"\n\"CellJoin: a parallel stream join operator for the cell processor\",\"The VLDB Journal\",\"\",\"18\",\"2\",\"10.1007/s00778-008-0116-z\",\"Buğra GedikRajesh R. BordawekarPhilip S. Yu\",\"2009\",\"http://link.springer.com/article/10.1007/s00778-008-0116-z\",\"Article\"\n\"Real-Time Digital Image Correlation for Dynamic Strain Measurement\",\"Experimental Mechanics\",\"\",\"56\",\"5\",\"10.1007/s11340-016-0133-6\",\"R. WuC. KongK. LiD. Zhang\",\"2016\",\"http://link.springer.com/article/10.1007/s11340-016-0133-6\",\"Article\"\n\"Matrix-based streamization approach for improving locality and parallelism on FT64 stream processor\",\"The Journal of Supercomputing\",\"\",\"47\",\"2\",\"10.1007/s11227-008-0186-0\",\"Xuejun YangJing DuXiaobo YanYu Deng\",\"2009\",\"http://link.springer.com/article/10.1007/s11227-008-0186-0\",\"Article\"\n\"HAlign-II: efficient ultra-large multiple sequence alignment and phylogenetic tree reconstruction with distributed and parallel computing\",\"Algorithms for Molecular Biology\",\"\",\"12\",\"1\",\"10.1186/s13015-017-0116-x\",\"Shixiang WanQuan Zou\",\"2017\",\"http://link.springer.com/article/10.1186/s13015-017-0116-x\",\"Article\"\n\"Special issue on unconventional cluster architectures and applications\",\"Cluster Computing\",\"\",\"17\",\"2\",\"10.1007/s10586-013-0291-6\",\"Federico SillaHolger Fröning\",\"2014\",\"http://link.springer.com/article/10.1007/s10586-013-0291-6\",\"Article\"\n\"Legacy code and parallel computing: updating and parallelizing a numerical model\",\"The Journal of Supercomputing\",\"\",\"76\",\"7\",\"10.1007/s11227-020-03172-7\",\"Fernando G. TinettiMaximiliano J. PerezAriel FraidenraichAdolfo E. Altenberg\",\"2020\",\"http://link.springer.com/article/10.1007/s11227-020-03172-7\",\"Article\"\n\"Developing adaptive multi-device applications with the Heterogeneous Programming Library\",\"The Journal of Supercomputing\",\"\",\"71\",\"6\",\"10.1007/s11227-014-1352-1\",\"Moisés  ViñasZeki  BozkusBasilio  B.  FraguelaDiego  AndradeRamón  Doallo\",\"2015\",\"http://link.springer.com/article/10.1007/s11227-014-1352-1\",\"Article\"\n\"Task scheduling algorithms for energy optimization in cloud environment: a comprehensive review\",\"Cluster Computing\",\"\",\"\",\"\",\"10.1007/s10586-021-03512-z\",\"R. GhafariF. Hassani KabutarkhaniN. Mansouri\",\"2022\",\"http://link.springer.com/article/10.1007/s10586-021-03512-z\",\"Article\"\n\"Predicting the Soft Error Vulnerability of Parallel Applications Using Machine Learning\",\"International Journal of Parallel Programming\",\"\",\"49\",\"3\",\"10.1007/s10766-021-00707-0\",\"Işıl ÖzSanem Arslan\",\"2021\",\"http://link.springer.com/article/10.1007/s10766-021-00707-0\",\"Article\"\n\"Performance and programmability comparison of the thick control flow architecture and current multicore processors\",\"The Journal of Supercomputing\",\"\",\"\",\"\",\"10.1007/s11227-021-03985-0\",\"Martti ForsellSara NikulaJussi RoivainenVille LeppänenJesper Larsson Träff\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-021-03985-0\",\"Article\"\n\"Parallelization Strategies for Spatial Agent-Based Models\",\"International Journal of Parallel Programming\",\"\",\"45\",\"3\",\"10.1007/s10766-015-0399-9\",\"Nuno FachadaVitor V. LopesRui C. MartinsAgostinho C. Rosa\",\"2017\",\"http://link.springer.com/article/10.1007/s10766-015-0399-9\",\"Article\"\n\"Python accelerators for high-performance computing\",\"The Journal of Supercomputing\",\"\",\"74\",\"4\",\"10.1007/s11227-017-2213-5\",\"Ami Marowka\",\"2018\",\"http://link.springer.com/article/10.1007/s11227-017-2213-5\",\"Article\"\n\"Scheduling parity checks for increased throughput in early-termination, layered decoding of QC-LDPC codes on a stream processor\",\"EURASIP Journal on Wireless Communications and Networking\",\"\",\"2012\",\"1\",\"10.1186/1687-1499-2012-141\",\"JaWone A KennedyDaniel L Noneaker\",\"2012\",\"http://link.springer.com/article/10.1186/1687-1499-2012-141\",\"Article\"\n\"Computational monitoring in real time: review of methods and applications\",\"Geomechanics and Geophysics for Geo-Energy and Geo-Resources\",\"\",\"4\",\"3\",\"10.1007/s40948-018-0086-6\",\"Arcady V. DyskinHakan BasarirJames DohertyMohamed ElchalakaniGrand R. JoldesAli KarrechBarry LehaneKarol MillerElena PasternakIgor ShufrinAdam Wittek\",\"2018\",\"http://link.springer.com/article/10.1007/s40948-018-0086-6\",\"Article\"\n\"Automatic code generation and tuning for stencil kernels on modern shared memory architectures\",\"Computer Science - Research and Development\",\"\",\"26\",\"3 - 4\",\"10.1007/s00450-011-0160-6\",\"Matthias ChristenOlaf SchenkHelmar Burkhart\",\"2011\",\"http://link.springer.com/article/10.1007/s00450-011-0160-6\",\"Article\"\n\"MegaMol – a comprehensive prototyping framework for visualizations\",\"The European Physical Journal Special Topics\",\"\",\"227\",\"14\",\"10.1140/epjst/e2019-800167-5\",\"Patrick GralkaMichael BecherMatthias BraunFlorian FrießChristoph MüllerTobias RauKarsten SchatzChristoph SchulzMichael KroneGuido ReinaThomas Ertl\",\"2019\",\"http://link.springer.com/article/10.1140/epjst/e2019-800167-5\",\"Article\"\n\"New algorithms for fixed-length approximate string matching and approximate circular string matching under the Hamming distance\",\"The Journal of Supercomputing\",\"\",\"74\",\"5\",\"10.1007/s11227-017-2192-6\",\"ThienLuan HoSeung-Rohk OhHyunJin Kim\",\"2018\",\"http://link.springer.com/article/10.1007/s11227-017-2192-6\",\"Article\"\n\"Assessing and discovering parallelism in C\n                \n                  \n                \n                $$++$$\n                \n                  \n                    \n                      +\n                      +\n                    \n                  \n                \n               code for heterogeneous platforms\",\"The Journal of Supercomputing\",\"\",\"74\",\"11\",\"10.1007/s11227-016-1794-8\",\"David del Rio AstorgaRafael SotomayorLuis Miguel SanchezJavier Garcia BlasAlejandro CalderonJavier Fernandez\",\"2018\",\"http://link.springer.com/article/10.1007/s11227-016-1794-8\",\"Article\"\n\"CUDA-accelerated fast Sauvola’s method on Kepler architecture\",\"Multimedia Tools and Applications\",\"\",\"74\",\"24\",\"10.1007/s11042-014-2269-7\",\"Xin ChenYuefang GaoZhonghong Huang\",\"2015\",\"http://link.springer.com/article/10.1007/s11042-014-2269-7\",\"Article\"\n\"Applying FDTD to the Coverage Prediction of WiMAX Femtocells\",\"EURASIP Journal on Wireless Communications and Networking\",\"\",\"2009\",\"1\",\"10.1155/2009/308606\",\"Alvaro ValcarceGuillaume De La RocheÁlpar JüttnerDavid López-PérezJie Zhang\",\"2009\",\"http://link.springer.com/article/10.1155/2009/308606\",\"Article\"\n\"Structure-preserving image completion with multi-level dynamic patches\",\"The Visual Computer\",\"\",\"35\",\"1\",\"10.1007/s00371-017-1454-x\",\"Bowen LiuPing LiBin ShengYongwei NieEnhua Wu\",\"2019\",\"http://link.springer.com/article/10.1007/s00371-017-1454-x\",\"Article\"\n\"Uncertainty quantification in tsunami modeling using multi-level Monte Carlo finite volume method\",\"Journal of Mathematics in Industry\",\"\",\"6\",\"1\",\"10.1186/s13362-016-0022-8\",\"Carlos Sánchez-LinaresMarc de la AsunciónManuel J CastroJosé M González-VidaJorge MacíasSiddhartha Mishra\",\"2016\",\"http://link.springer.com/article/10.1186/s13362-016-0022-8\",\"Article\"\n\"High-performance and deep pedestrian detection based on estimation of different parts\",\"The Journal of Supercomputing\",\"\",\"77\",\"2\",\"10.1007/s11227-020-03345-4\",\"Mahmoud SaeidiAli Ahmadi\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-020-03345-4\",\"Article\"\n\"CAR Posters\",\"International Journal of Computer Assisted Radiology and Surgery\",\"\",\"1\",\"1\",\"10.1007/s11548-006-0031-y\",\"\",\"2006\",\"http://link.springer.com/article/10.1007/s11548-006-0031-y\",\"Article\"\n\"Introduction to sustainable ultrascale computing systems and applications\",\"The Journal of Supercomputing\",\"\",\"72\",\"11\",\"10.1007/s11227-016-1822-8\",\"Jesus CarreteroJavier Garcia-BlasRaimondas Ciegis\",\"2016\",\"http://link.springer.com/article/10.1007/s11227-016-1822-8\",\"Article\"\n\"Fish School Search with Algorithmic Skeletons\",\"International Journal of Parallel Programming\",\"\",\"47\",\"2\",\"10.1007/s10766-018-0564-z\",\"Fabian WredeBreno MenezesHerbert Kuchen\",\"2019\",\"http://link.springer.com/article/10.1007/s10766-018-0564-z\",\"Article\"\n\"Micro-sized parallel system design proposal for the solution of robotics based engineering problem\",\"Microsystem Technologies\",\"\",\"27\",\"12\",\"10.1007/s00542-020-05209-6\",\"Serkan Dereli\",\"2021\",\"http://link.springer.com/article/10.1007/s00542-020-05209-6\",\"Article\"\n\"Simultaneous multiprocessing in a software-defined heterogeneous FPGA\",\"The Journal of Supercomputing\",\"\",\"75\",\"8\",\"10.1007/s11227-018-2367-9\",\"Jose Nunez-YanezSam AmiriMohammad HosseinabadyAndrés RodríguezRafael AsenjoAngeles NavarroDario SuarezRuben Gran\",\"2019\",\"http://link.springer.com/article/10.1007/s11227-018-2367-9\",\"Article\"\n\"The basic matrix library (BML) for quantum chemistry\",\"The Journal of Supercomputing\",\"\",\"74\",\"11\",\"10.1007/s11227-018-2533-0\",\"Nicolas BockChristian F. A. NegreSusan M. MniszewskiJamaludin Mohd-YusofBálint AradiJean-Luc FattebertDaniel Osei-KuffuorTimothy C. GermannAnders M. N. Niklasson\",\"2018\",\"http://link.springer.com/article/10.1007/s11227-018-2533-0\",\"Article\"\n\"Optimization of cosmological N-body simulation with FMM-PM on SIMT accelerators\",\"The Journal of Supercomputing\",\"\",\"\",\"\",\"10.1007/s11227-021-04153-0\",\"Wen-Long ZhaoWu WangQiao Wang\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-021-04153-0\",\"Article\"\n\"Automatic Parallelization: Executing Sequential Programs on a Task-Based Parallel Runtime\",\"International Journal of Parallel Programming\",\"\",\"44\",\"6\",\"10.1007/s10766-016-0426-5\",\"Alcides FonsecaBruno CabralJoão RafaelIvo Correia\",\"2016\",\"http://link.springer.com/article/10.1007/s10766-016-0426-5\",\"Article\"\n\"FuPerMod: a software tool for the optimization of data-parallel applications on heterogeneous platforms\",\"The Journal of Supercomputing\",\"\",\"69\",\"1\",\"10.1007/s11227-014-1207-9\",\"David ClarkeZiming ZhongVladimir RychkovAlexey Lastovetsky\",\"2014\",\"http://link.springer.com/article/10.1007/s11227-014-1207-9\",\"Article\"\n\"$$FC^{2}$$\n                \n                  \n                    \n                      F\n                      \n                        C\n                        2\n                      \n                    \n                  \n                \n              : cloud-based cluster provisioning for distributed machine learning\",\"Cluster Computing\",\"\",\"22\",\"4\",\"10.1007/s10586-019-02912-6\",\"Nguyen Binh Duong Ta\",\"2019\",\"http://link.springer.com/article/10.1007/s10586-019-02912-6\",\"Article\"\n\"Computational storage: an efficient and scalable platform for big data and HPC applications\",\"Journal of Big Data\",\"\",\"6\",\"1\",\"10.1186/s40537-019-0265-5\",\"Mahdi TorabzadehkashiSiavash RezaeiAli HeydariGorjiHosein BobarshadVladimir AlvesNader Bagherzadeh\",\"2019\",\"http://link.springer.com/article/10.1186/s40537-019-0265-5\",\"Article\"\n\"Engineering Energy Efficient Visual Sensor Network Applications Using Skeletons\",\"International Journal of Parallel Programming\",\"\",\"42\",\"4\",\"10.1007/s10766-013-0260-y\",\"Stefano ChessaSusanna PelagattiNicoletta Triolo\",\"2014\",\"http://link.springer.com/article/10.1007/s10766-013-0260-y\",\"Article\"\n\"Special Issue: Bio-Inspired Optimization Techniques for High Performance Computing\",\"New Generation Computing\",\"\",\"29\",\"2\",\"10.1007/s00354-011-0101-8\",\"Gianluigi FolinoCarlo Mastroianni\",\"2011\",\"http://link.springer.com/article/10.1007/s00354-011-0101-8\",\"Article\"\n\"Preface\",\"Journal of Computer Science and Technology\",\"\",\"36\",\"1\",\"10.1007/s11390-021-0001-4\",\"Xian-He SunDong LiWen-Guang ChenTao LiJi-Wu ShuBo WuJin XiongJinging XueFeng ZhangJi-Dong ZhaiZhiia Zhao\",\"2021\",\"http://link.springer.com/article/10.1007/s11390-021-0001-4\",\"Article\"\n\"Data stream processing via code annotations\",\"The Journal of Supercomputing\",\"\",\"74\",\"11\",\"10.1007/s11227-016-1793-9\",\"Marco DaneluttoTiziano De MatteisGabriele MencagliMassimo Torquati\",\"2018\",\"http://link.springer.com/article/10.1007/s11227-016-1793-9\",\"Article\"\n\"Reliable MapReduce computing on opportunistic resources\",\"Cluster Computing\",\"\",\"15\",\"2\",\"10.1007/s10586-011-0158-7\",\"Heshan LinXiaosong MaWu-chun Feng\",\"2012\",\"http://link.springer.com/article/10.1007/s10586-011-0158-7\",\"Article\"\n\"Reconstructing evolutionary trees in parallel for massive sequences\",\"BMC Systems Biology\",\"\",\"11\",\"6\",\"10.1186/s12918-017-0476-3\",\"Quan ZouShixiang WanXiangxiang ZengZhanshan Sam Ma\",\"2017\",\"http://link.springer.com/article/10.1186/s12918-017-0476-3\",\"Article\"\n\"Application of cloud-based visual communication design in Internet of Things image\",\"Soft Computing\",\"\",\"24\",\"11\",\"10.1007/s00500-019-04111-2\",\"Xixia Liu\",\"2020\",\"http://link.springer.com/article/10.1007/s00500-019-04111-2\",\"Article\"\n\"MAHASIM: Machine-Learning Hardware Acceleration Using a Software-Defined Intelligent Memory System\",\"Journal of Signal Processing Systems\",\"\",\"93\",\"6\",\"10.1007/s11265-019-01505-1\",\"Bahar AsgariSaibal MukhopadhyaySudhakar Yalamanchili\",\"2021\",\"http://link.springer.com/article/10.1007/s11265-019-01505-1\",\"Article\"\n\"An Analysis of Public Clouds Elasticity in the Execution of Scientific Applications: a Survey\",\"Journal of Grid Computing\",\"\",\"14\",\"2\",\"10.1007/s10723-016-9361-3\",\"Guilherme GalanteLuis Carlos Erpen De BonaAntonio Roberto MuryBruno SchulzeRodrigo da Rosa Righi\",\"2016\",\"http://link.springer.com/article/10.1007/s10723-016-9361-3\",\"Article\"\n\"Resource-Aware Compiler Prefetching for Fine-Grained Many-Cores\",\"International Journal of Parallel Programming\",\"\",\"39\",\"5\",\"10.1007/s10766-011-0163-8\",\"George C. CarageaAlexandros TzannesFuat KeceliRajeev BaruaUzi Vishkin\",\"2011\",\"http://link.springer.com/article/10.1007/s10766-011-0163-8\",\"Article\"\n\"Mesoscopic Simulation Study of Wall Roughness Effects in Micro-channel Flows of Dense Emulsions\",\"Journal of Statistical Physics\",\"\",\"161\",\"6\",\"10.1007/s10955-015-1374-y\",\"Andrea ScagliariniMauro SbragagliaMassimo Bernaschi\",\"2015\",\"http://link.springer.com/article/10.1007/s10955-015-1374-y\",\"Article\"\n\"Sparse evolutionary deep learning with over one million artificial neurons on commodity hardware\",\"Neural Computing and Applications\",\"\",\"33\",\"7\",\"10.1007/s00521-020-05136-7\",\"Shiwei LiuDecebal Constantin MocanuAmarsagar Reddy Ramapuram MatavalamYulong PeiMykola Pechenizkiy\",\"2021\",\"http://link.springer.com/article/10.1007/s00521-020-05136-7\",\"Article\"\n\"A 3D graphics rendering pipeline implementation based on the openCL massively parallel processing\",\"The Journal of Supercomputing\",\"\",\"77\",\"7\",\"10.1007/s11227-020-03581-8\",\"Mingyu KimNakhoon Baek\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-020-03581-8\",\"Article\"\n\"Super-EGO: fast multi-dimensional similarity join\",\"The VLDB Journal\",\"\",\"22\",\"4\",\"10.1007/s00778-012-0305-7\",\"Dmitri V. Kalashnikov\",\"2013\",\"http://link.springer.com/article/10.1007/s00778-012-0305-7\",\"Article\"\n\"A cloud-terminal-based cyber-physical system architecture for energy efficient machining process optimization\",\"Journal of Ambient Intelligence and Humanized Computing\",\"\",\"10\",\"3\",\"10.1007/s12652-018-0832-1\",\"X. X. LiF. Z. HeW. D. Li\",\"2019\",\"http://link.springer.com/article/10.1007/s12652-018-0832-1\",\"Article\"\n\"Unscented Particle Filters with Refinement Steps for UAV Pose Tracking\",\"Journal of Intelligent & Robotic Systems\",\"\",\"102\",\"2\",\"10.1007/s10846-021-01409-y\",\"Nuno Pessanha SantosVictor LoboAlexandre Bernardino\",\"2021\",\"http://link.springer.com/article/10.1007/s10846-021-01409-y\",\"Article\"\n\"Astronomical big data processing using machine learning: A comprehensive review\",\"Experimental Astronomy\",\"\",\"\",\"\",\"10.1007/s10686-021-09827-4\",\"Snigdha SenSonali AgarwalPavan ChakrabortyKrishna Pratap Singh\",\"2022\",\"http://link.springer.com/article/10.1007/s10686-021-09827-4\",\"Article\"\n\"Cloud resource management using 3Vs of Internet of Big data streams\",\"Computing\",\"\",\"102\",\"6\",\"10.1007/s00607-019-00732-5\",\"Navroop KaurSandeep K. SoodPrabal Verma\",\"2020\",\"http://link.springer.com/article/10.1007/s00607-019-00732-5\",\"Article\"\n\"GeantV\",\"Computing and Software for Big Science\",\"\",\"5\",\"1\",\"10.1007/s41781-020-00048-6\",\"G. AmadioA. AnanyaJ. ApostolakisM. BandieramonteS. BanerjeeA. BhattacharyyaC. BianchiniG. BitzesP. CanalF. CarminatiO. Chaparro-AmaroG. CosmoJ. C. De Fine LichtV. DroganL. DuhemD. Elvira\",\"2021\",\"http://link.springer.com/article/10.1007/s41781-020-00048-6\",\"Article\"\n\"MCtandem: an efficient tool for large-scale peptide identification on many integrated core (MIC) architecture\",\"BMC Bioinformatics\",\"\",\"20\",\"1\",\"10.1186/s12859-019-2980-5\",\"Chuang LiKenli LiKeqin LiFeng Lin\",\"2019\",\"http://link.springer.com/article/10.1186/s12859-019-2980-5\",\"Article\"\n\"High performance computing: an essential tool for science and engineering breakthroughs\",\"The Journal of Supercomputing\",\"\",\"70\",\"2\",\"10.1007/s11227-014-1279-6\",\"J. RanillaE. M. GarzónJ. Vigo-Aguiar\",\"2014\",\"http://link.springer.com/article/10.1007/s11227-014-1279-6\",\"Article\"\n\"A novel parallel learning algorithm for pattern classification\",\"SN Applied Sciences\",\"\",\"1\",\"12\",\"10.1007/s42452-019-1687-6\",\"Yi WangJian FuBingyang Wei\",\"2019\",\"http://link.springer.com/article/10.1007/s42452-019-1687-6\",\"Article\"\n\"Domain-Specific Language Techniques for Visual Computing: A Comprehensive Study\",\"Archives of Computational Methods in Engineering\",\"\",\"28\",\"4\",\"10.1007/s11831-020-09492-4\",\"Liming ShenXueyi ChenRichen LiuHailong WangGenlin Ji\",\"2021\",\"http://link.springer.com/article/10.1007/s11831-020-09492-4\",\"Article\"\n\"Source-to-Source Parallelization Compilers for Scientific Shared-Memory Multi-core and Accelerated Multiprocessing: Analysis, Pitfalls, Enhancement and Potential\",\"International Journal of Parallel Programming\",\"\",\"48\",\"1\",\"10.1007/s10766-019-00640-3\",\"Re’em HarelIdan MosseriHarel LevinLee-or AlonMatan RusanovskyGal Oren\",\"2020\",\"http://link.springer.com/article/10.1007/s10766-019-00640-3\",\"Article\"\n\"A Loosely Coordinated Model for Heap-Based Priority Queues in Multicore Environments\",\"International Journal of Parallel Programming\",\"\",\"44\",\"4\",\"10.1007/s10766-015-0398-x\",\"Giuliano LaccettiMarco LapegnaValeria Mele\",\"2016\",\"http://link.springer.com/article/10.1007/s10766-015-0398-x\",\"Article\"\n\"High performance networked computing in media, services and information management\",\"The Journal of Supercomputing\",\"\",\"64\",\"3\",\"10.1007/s11227-013-0942-7\",\"Gang Kou\",\"2013\",\"http://link.springer.com/article/10.1007/s11227-013-0942-7\",\"Article\"\n\"Support for Parallel and Concurrent Programming in C++\",\"Programming and Computer Software\",\"\",\"44\",\"1\",\"10.1134/S0361768818010073\",\"N. I. V’yukovaV. A. GalatenkoS. V. Samborskii\",\"2018\",\"http://link.springer.com/article/10.1134/S0361768818010073\",\"Article\"\n\"3D Segmentation Algorithms for Computerized Tomographic Imaging: a Systematic Literature Review\",\"Journal of Digital Imaging\",\"\",\"31\",\"6\",\"10.1007/s10278-018-0101-z\",\"L. E. CarvalhoA. C. SobieranskiA. von Wangenheim\",\"2018\",\"http://link.springer.com/article/10.1007/s10278-018-0101-z\",\"Article\"\n\"A design methodology for soft-core platforms on FPGA with SMP Linux, OpenMP support, and distributed hardware profiling system\",\"EURASIP Journal on Embedded Systems\",\"\",\"2016\",\"1\",\"10.1186/s13639-016-0051-9\",\"Vittoriano MuttilloGiacomo ValenteFabio FedericiLuigi PomanteMarco FaccioCarlo TieriSerenella Ferri\",\"2016\",\"http://link.springer.com/article/10.1186/s13639-016-0051-9\",\"Article\"\n\"Microarchitectural performance comparison of Intel Knights Corner and Intel Sandy Bridge with CFD applications\",\"The Journal of Supercomputing\",\"\",\"70\",\"1\",\"10.1007/s11227-014-1245-3\",\"Yonggang CheLilun ZhangYongxian WangChuanfu XuWei LiuZhenghua Wang\",\"2014\",\"http://link.springer.com/article/10.1007/s11227-014-1245-3\",\"Article\"\n\"High-performance software implementations of SCAN decoder for polar codes\",\"Annals of Telecommunications\",\"\",\"73\",\"5 - 6\",\"10.1007/s12243-018-0634-7\",\"Bertrand Le GalCamille LerouxChristophe Jego\",\"2018\",\"http://link.springer.com/article/10.1007/s12243-018-0634-7\",\"Article\"\n\"A taxonomy of task-based parallel programming technologies for high-performance computing\",\"The Journal of Supercomputing\",\"\",\"74\",\"4\",\"10.1007/s11227-018-2238-4\",\"Peter ThomanKiril DichevThomas HellerRoman IakymchukXavier AguilarKhalid HasanovPhilipp GschwandtnerPierre LemarinierStefano MarkidisHerbert JordanThomas FahringerKostas KatrinisErwin LaureDimitrios S. Nikolopoulos\",\"2018\",\"http://link.springer.com/article/10.1007/s11227-018-2238-4\",\"Article\"\n\"PCJ Java library as a solution to integrate HPC, Big Data and Artificial Intelligence workloads\",\"Journal of Big Data\",\"\",\"8\",\"1\",\"10.1186/s40537-021-00454-6\",\"Marek NowickiŁukasz GórskiPiotr Bała\",\"2021\",\"http://link.springer.com/article/10.1186/s40537-021-00454-6\",\"Article\"\n\"Parallelizing multiclass support vector machines for scalable image annotation\",\"Neural Computing and Applications\",\"\",\"24\",\"2\",\"10.1007/s00521-012-1237-2\",\"Nasullah Khalid AlhamMaozhen LiYang Liu\",\"2014\",\"http://link.springer.com/article/10.1007/s00521-012-1237-2\",\"Article\"\n\"A stereoscopic video conversion scheme based on spatio-temporal analysis of MPEG videos\",\"EURASIP Journal on Advances in Signal Processing\",\"\",\"2012\",\"1\",\"10.1186/1687-6180-2012-237\",\"Guo-Shiang LinHsiang-Yun HuangWei-Chih ChenCheng-Ying YehKai-Che LiuWen-Nung Lie\",\"2012\",\"http://link.springer.com/article/10.1186/1687-6180-2012-237\",\"Article\"\n\"MapReduce inspired loop mapping for coarse-grained reconfigurable architecture\",\"Science China Information Sciences\",\"\",\"57\",\"12\",\"10.1007/s11432-014-5198-1\",\"ShouYi YinShengJia ShaoLeiBo LiuShaoJun Wei\",\"2014\",\"http://link.springer.com/article/10.1007/s11432-014-5198-1\",\"Article\"\n\"Exploration of 3D grid caching strategies for ray-shooting\",\"Journal of Real-Time Image Processing\",\"\",\"7\",\"1\",\"10.1007/s11554-010-0176-3\",\"Stéphane ManciniZahir LarabiYves MathieuTomasz ToczekLionel Pierrefeu\",\"2012\",\"http://link.springer.com/article/10.1007/s11554-010-0176-3\",\"Article\"\n\"An efficient parallel solution for Caputo fractional reaction–diffusion equation\",\"The Journal of Supercomputing\",\"\",\"68\",\"3\",\"10.1007/s11227-014-1123-z\",\"Chunye GongWeimin BaoGuojian TangBo YangJie Liu\",\"2014\",\"http://link.springer.com/article/10.1007/s11227-014-1123-z\",\"Article\"\n\"Chimera states in Leaky Integrate-and-Fire dynamics with power law coupling\",\"The European Physical Journal B\",\"\",\"93\",\"8\",\"10.1140/epjb/e2020-10252-9\",\"Astero ProvataIoannis E. Venetis\",\"2020\",\"http://link.springer.com/article/10.1140/epjb/e2020-10252-9\",\"Article\"\n\"Type-Driven Automated Program Transformations and Cost Modelling for Optimising Streaming Programs on FPGAs\",\"International Journal of Parallel Programming\",\"\",\"47\",\"1\",\"10.1007/s10766-018-0572-z\",\"Wim VanderbauwhedeSyed Waqar NabiCristian Urlea\",\"2019\",\"http://link.springer.com/article/10.1007/s10766-018-0572-z\",\"Article\"\n\"High-performance parallel frequent subgraph discovery\",\"The Journal of Supercomputing\",\"\",\"71\",\"7\",\"10.1007/s11227-015-1391-2\",\"Saeed ShahrivariSaeed Jalili\",\"2015\",\"http://link.springer.com/article/10.1007/s11227-015-1391-2\",\"Article\"\n\"Serverless Workflows for Containerised Applications in the Cloud Continuum\",\"Journal of Grid Computing\",\"\",\"19\",\"3\",\"10.1007/s10723-021-09570-2\",\"Sebastián RiscoGermán MoltóDiana M. NaranjoIgnacio Blanquer\",\"2021\",\"http://link.springer.com/article/10.1007/s10723-021-09570-2\",\"Article\"\n\"Parallel implementation and optimization of the Sebvhos algorithm\",\"Journal of Electronics (China)\",\"\",\"28\",\"3\",\"10.1007/s11767-011-0618-5\",\"Wen LiLi GuoHongxing YuanYifang WeiHua Guan\",\"2011\",\"http://link.springer.com/article/10.1007/s11767-011-0618-5\",\"Article\"\n\"Smart computational light microscopes (SCLMs) of smart computational imaging laboratory (SCILab)\",\"PhotoniX\",\"\",\"2\",\"1\",\"10.1186/s43074-021-00040-2\",\"Yao FanJiaji LiLinpeng LuJiasong SunYan HuJialin ZhangZhuoshi LiQian ShenBowen WangRunnan ZhangQian ChenChao Zuo\",\"2021\",\"http://link.springer.com/article/10.1186/s43074-021-00040-2\",\"Article\"\n\"Testing machine learning based systems: a systematic mapping\",\"Empirical Software Engineering\",\"\",\"25\",\"6\",\"10.1007/s10664-020-09881-0\",\"Vincenzo RiccioGunel JahangirovaAndrea StoccoNargiz HumbatovaMichael WeissPaolo Tonella\",\"2020\",\"http://link.springer.com/article/10.1007/s10664-020-09881-0\",\"Article\"\n\"Intelligent Classification Method of Remote Sensing Image Based on Big Data in Spark Environment\",\"International Journal of Wireless Information Networks\",\"\",\"26\",\"3\",\"10.1007/s10776-019-00440-z\",\"Zhichao XingGuangming Li\",\"2019\",\"http://link.springer.com/article/10.1007/s10776-019-00440-z\",\"Article\"\n\"Parallelization of spherical discontinuous deformation analysis (SDDA) for geotechnical problems based on cloud computing environment\",\"Science China Technological Sciences\",\"\",\"64\",\"9\",\"10.1007/s11431-020-1768-3\",\"Yu-Yong JiaoZeYang WuFei ZhengQiang ZhaoLong WangGang-Hai HuangFei Tan\",\"2021\",\"http://link.springer.com/article/10.1007/s11431-020-1768-3\",\"Article\"\n\"Survey on Algorithm and VLSI Architecture for MPEG-Like Video Coder\",\"Journal of Signal Processing Systems\",\"\",\"88\",\"3\",\"10.1007/s11265-016-1160-3\",\"Haibing YinHuizhu JiaJun ZhouZhiyong Gao\",\"2017\",\"http://link.springer.com/article/10.1007/s11265-016-1160-3\",\"Article\"\n\"ESMRMB 2019, 36th Annual Scientific Meeting, Rotterdam, NL, October 3–October 5: Electronic Posters / Paper Posters / Clinical Review Posters / Software Exhibits\",\"Magnetic Resonance Materials in Physics, Biology and Medicine\",\"\",\"32\",\"1\",\"10.1007/s10334-019-00756-0\",\"\",\"2019\",\"http://link.springer.com/article/10.1007/s10334-019-00756-0\",\"Article\"\n\"Enable back memory and global synchronization on LLC buffer\",\"The Journal of Supercomputing\",\"\",\"73\",\"12\",\"10.1007/s11227-017-2093-8\",\"Licheng YuYulong PeiTianzhou ChenXueqing LouMinghui WuTiefei Zhang\",\"2017\",\"http://link.springer.com/article/10.1007/s11227-017-2093-8\",\"Article\"\n\"Video reasoning for conflict events through feature extraction\",\"The Journal of Supercomputing\",\"\",\"77\",\"6\",\"10.1007/s11227-020-03514-5\",\"Sheng-Tzong ChengChih-Wei HsuGwo-Jiun HorngCi-Ruei Jiang\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-020-03514-5\",\"Article\"\n\"Continuous Probabilistic Subspace Skyline Query Processing Using Grid Projections\",\"Journal of Computer Science and Technology\",\"\",\"29\",\"2\",\"10.1007/s11390-014-1434-9\",\"Lei ZhaoYan-Yan YangXiaofang Zhou\",\"2014\",\"http://link.springer.com/article/10.1007/s11390-014-1434-9\",\"Article\"\n\"Network Management 2030: Operations and Control of Network 2030 Services\",\"Journal of Network and Systems Management\",\"\",\"28\",\"4\",\"10.1007/s10922-020-09517-0\",\"Alexander ClemmMohamed Faten ZhaniRaouf Boutaba\",\"2020\",\"http://link.springer.com/article/10.1007/s10922-020-09517-0\",\"Article\"\n\"Guest Editors’ Introduction to Special Issue on Advances in DSP System Design\",\"Journal of Signal Processing Systems\",\"\",\"71\",\"3\",\"10.1007/s11265-013-0731-9\",\"J. TakalaW. J. GrossW. Sung\",\"2013\",\"http://link.springer.com/article/10.1007/s11265-013-0731-9\",\"Article\"\n\"A Scalable Farm Skeleton for Hybrid Parallel and Distributed Programming\",\"International Journal of Parallel Programming\",\"\",\"42\",\"6\",\"10.1007/s10766-013-0269-2\",\"Steffen ErnstingHerbert Kuchen\",\"2014\",\"http://link.springer.com/article/10.1007/s10766-013-0269-2\",\"Article\"\n\"Special issue for data intensive eScience\",\"Distributed and Parallel Databases\",\"\",\"30\",\"5 - 6\",\"10.1007/s10619-012-7107-1\",\"Judy QiuDennis Gannon\",\"2012\",\"http://link.springer.com/article/10.1007/s10619-012-7107-1\",\"Article\"\n\"HPP controller: a system controller for high performance computing\",\"Frontiers of Computer Science in China\",\"\",\"4\",\"4\",\"10.1007/s11704-010-0382-y\",\"Fei ChenZheng CaoKai WangXuejun AnNinhui Sun\",\"2010\",\"http://link.springer.com/article/10.1007/s11704-010-0382-y\",\"Article\"\n\"A fine-granularity scheduling algorithm for parallel XDraw viewshed analysis\",\"Earth Science Informatics\",\"\",\"11\",\"3\",\"10.1007/s12145-018-0339-5\",\"Wanfeng DouYanan LiYanli Wang\",\"2018\",\"http://link.springer.com/article/10.1007/s12145-018-0339-5\",\"Article\"\n\"High-performance IP lookup using Intel Xeon Phi: a Bloom filters based approach\",\"Journal of Internet Services and Applications\",\"\",\"9\",\"1\",\"10.1186/s13174-017-0075-y\",\"Alexandre LucchesiAndré C. DrummondGeorge Teodoro\",\"2018\",\"http://link.springer.com/article/10.1186/s13174-017-0075-y\",\"Article\"\n\"A MapReduce-based distributed and scalable framework for stitching of satellite mosaic images\",\"Arabian Journal of Geosciences\",\"\",\"14\",\"18\",\"10.1007/s12517-021-07500-w\",\"Süleyman EkenAhmet Sayar\",\"2021\",\"http://link.springer.com/article/10.1007/s12517-021-07500-w\",\"Article\"\n\"A Roadmap for HEP Software and Computing R&D for the 2020s\",\"Computing and Software for Big Science\",\"\",\"3\",\"1\",\"10.1007/s41781-018-0018-8\",\"Johannes AlbrechtAntonio Augusto Alves JrGuilherme AmadioGiuseppe AndronicoNguyen Anh-KyLaurent AphecetcheJohn ApostolakisMakoto AsaiLuca AtzoriMarian BabikGiuseppe BagliesiMarilena BandieramonteSunanda BanerjeeMartin BarisitsLothar A. T. BauerdickStefano Belforte\",\"2019\",\"http://link.springer.com/article/10.1007/s41781-018-0018-8\",\"Article\"\n\"An asynchronous and task-based implementation of peridynamics utilizing HPX—the C++ standard library for parallelism and concurrency\",\"SN Applied Sciences\",\"\",\"2\",\"12\",\"10.1007/s42452-020-03784-x\",\"Patrick DiehlPrashant K. JhaHartmut KaiserRobert LiptonMartin Lévesque\",\"2020\",\"http://link.springer.com/article/10.1007/s42452-020-03784-x\",\"Article\"\n\"Structured mesh-oriented framework design and optimization for a coarse-grained parallel CFD solver based on hybrid MPI/OpenMP programming\",\"The Journal of Supercomputing\",\"\",\"76\",\"4\",\"10.1007/s11227-019-03063-6\",\"Feng HeXiaoshe DongNianjun ZouWeiguo WuXingjun Zhang\",\"2020\",\"http://link.springer.com/article/10.1007/s11227-019-03063-6\",\"Article\"\n\"A methodology for speeding up matrix vector multiplication for single/multi-core architectures\",\"The Journal of Supercomputing\",\"\",\"71\",\"7\",\"10.1007/s11227-015-1409-9\",\"Vasilios KelefourasAngeliki KritikakouElissavet PapadimaCostas Goutis\",\"2015\",\"http://link.springer.com/article/10.1007/s11227-015-1409-9\",\"Article\"\n\"On the use of models for high-performance scientific computing applications: an experience report\",\"Software & Systems Modeling\",\"\",\"17\",\"1\",\"10.1007/s10270-016-0518-0\",\"Ileana OberMarc PalyartJean-Michel BruelDavid Lugato\",\"2018\",\"http://link.springer.com/article/10.1007/s10270-016-0518-0\",\"Article\"\n\"GridFOR: A Domain Specific Language for Parallel Grid-Based Applications\",\"International Journal of Parallel Programming\",\"\",\"44\",\"3\",\"10.1007/s10766-014-0348-z\",\"Ye WangZhiyuan Li\",\"2016\",\"http://link.springer.com/article/10.1007/s10766-014-0348-z\",\"Article\"\n\"Mapping techniques in multicore processors: current and future trends\",\"The Journal of Supercomputing\",\"\",\"77\",\"8\",\"10.1007/s11227-021-03650-6\",\"Manjari GuptaLava BhargavaS. Indu\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-021-03650-6\",\"Article\"\n\"Self-tuning serverless task farming using proactive elasticity control\",\"Cluster Computing\",\"\",\"24\",\"2\",\"10.1007/s10586-020-03158-3\",\"Stefan KehrerDominik ZietlowJochen ScheffoldWolfgang Blochinger\",\"2021\",\"http://link.springer.com/article/10.1007/s10586-020-03158-3\",\"Article\"\n\"CRFs based parallel biomedical named entity recognition algorithm employing MapReduce framework\",\"Cluster Computing\",\"\",\"18\",\"2\",\"10.1007/s10586-015-0426-z\",\"Zhuo TangLingang JiangLi YangKenli LiKeqin Li\",\"2015\",\"http://link.springer.com/article/10.1007/s10586-015-0426-z\",\"Article\"\n\"Fast implementation of area integral model SART algorithm based on look-up table\",\"Cluster Computing\",\"\",\"22\",\"6\",\"10.1007/s10586-018-2533-0\",\"Shunli ZhangGuohua GengZhan LiYuhe Zhang\",\"2019\",\"http://link.springer.com/article/10.1007/s10586-018-2533-0\",\"Article\"\n\"The evolution of distributed computing systems: from fundamental to new frontiers\",\"Computing\",\"\",\"103\",\"8\",\"10.1007/s00607-020-00900-y\",\"Dominic LindsaySukhpal Singh GillDaria SmirnovaPeter Garraghan\",\"2021\",\"http://link.springer.com/article/10.1007/s00607-020-00900-y\",\"Article\"\n\"A survey: ICT enabled energy efficiency techniques for big data applications\",\"Cluster Computing\",\"\",\"23\",\"2\",\"10.1007/s10586-019-02958-6\",\"Sumedha AroraAnju Bala\",\"2020\",\"http://link.springer.com/article/10.1007/s10586-019-02958-6\",\"Article\"\n\"A fast scalable distributed kriging algorithm using Spark framework\",\"International Journal of Data Science and Analytics\",\"\",\"10\",\"3\",\"10.1007/s41060-020-00215-3\",\"Chandan MisraSourangshu BhattacharyaSoumya K. Ghosh\",\"2020\",\"http://link.springer.com/article/10.1007/s41060-020-00215-3\",\"Article\"\n\"SMOaaS: a Scalable Matrix Operation as a Service model in Cloud\",\"The Journal of Supercomputing\",\"\",\"77\",\"4\",\"10.1007/s11227-020-03400-0\",\"KC UjjwalSudheer Kumar BattulaSaurabh GargRanesh Kumar NahaMd Anwarul Kaium PatwaryAlexander Brown\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-020-03400-0\",\"Article\"\n\"Unimem: Runtime Data Management on Non-Volatile Memory-Based Heterogeneous Main Memory for High Performance Computing\",\"Journal of Computer Science and Technology\",\"\",\"36\",\"1\",\"10.1007/s11390-020-0942-z\",\"Kai WuDong Li\",\"2021\",\"http://link.springer.com/article/10.1007/s11390-020-0942-z\",\"Article\"\n\"Guest Editors’ Comments\",\"Journal of Signal Processing Systems\",\"\",\"54\",\"1 - 3\",\"10.1007/s11265-008-0259-6\",\"Feng LinMalini Olivo\",\"2009\",\"http://link.springer.com/article/10.1007/s11265-008-0259-6\",\"Article\"\n\"Exploiting dynamic transaction queue size in scalable memory systems\",\"Soft Computing\",\"\",\"22\",\"6\",\"10.1007/s00500-016-2470-x\",\"Mario Donato MarinoTien-Hsiung WengKuan-Ching Li\",\"2018\",\"http://link.springer.com/article/10.1007/s00500-016-2470-x\",\"Article\"\n\"Accelerating DES and AES Algorithms for a Heterogeneous Many-core Processor\",\"International Journal of Parallel Programming\",\"\",\"49\",\"3\",\"10.1007/s10766-021-00692-4\",\"Biao XingDanDan WangYongquan YangZhiqiang WeiJiajing WuCuihua He\",\"2021\",\"http://link.springer.com/article/10.1007/s10766-021-00692-4\",\"Article\"\n\"HAT: history-based auto-tuning MapReduce in heterogeneous environments\",\"The Journal of Supercomputing\",\"\",\"64\",\"3\",\"10.1007/s11227-011-0682-5\",\"Quan ChenMinyi GuoQianni DengLong ZhengSong GuoYao Shen\",\"2013\",\"http://link.springer.com/article/10.1007/s11227-011-0682-5\",\"Article\"\n\"Optimizing virtual machine placement in IaaS data centers: taxonomy, review and open issues\",\"Cluster Computing\",\"\",\"23\",\"2\",\"10.1007/s10586-019-02954-w\",\"Hamid TalebianAbdullah GaniMehdi SookhakAhmed Abdelaziz AbdelatifAbdullah YousafzaiAthanasios V. VasilakosFei Richard Yu\",\"2020\",\"http://link.springer.com/article/10.1007/s10586-019-02954-w\",\"Article\"\n\"Method of binary search for image elements of functionally defined objects using graphics processing units\",\"Optoelectronics, Instrumentation and Data Processing\",\"\",\"50\",\"6\",\"10.3103/S8756699014060090\",\"S. I. Vyatkin\",\"2014\",\"http://link.springer.com/article/10.3103/S8756699014060090\",\"Article\"\n\"Acquisition of High Spatial and Spectral Resolution Video with a Hybrid Camera System\",\"International Journal of Computer Vision\",\"\",\"110\",\"2\",\"10.1007/s11263-013-0690-4\",\"Chenguang MaXun CaoXin TongQionghai DaiStephen Lin\",\"2014\",\"http://link.springer.com/article/10.1007/s11263-013-0690-4\",\"Article\"\n\"EANM’16\",\"European Journal of Nuclear Medicine and Molecular Imaging\",\"\",\"43\",\"1\",\"10.1007/s00259-016-3484-4\",\"\",\"2016\",\"http://link.springer.com/article/10.1007/s00259-016-3484-4\",\"Article\"\n\"Parallel synchronous and asynchronous coupled simulated annealing\",\"The Journal of Supercomputing\",\"\",\"74\",\"6\",\"10.1007/s11227-018-2327-4\",\"Kayo Gonçalves-e-SilvaDaniel AloiseSamuel Xavier-de-Souza\",\"2018\",\"http://link.springer.com/article/10.1007/s11227-018-2327-4\",\"Article\"\n\"An improved segmentation algorithm of CT image based on U-Net network and attention mechanism\",\"Multimedia Tools and Applications\",\"\",\"\",\"\",\"10.1007/s11042-021-10841-z\",\"Jin YangKai Qiu\",\"2021\",\"http://link.springer.com/article/10.1007/s11042-021-10841-z\",\"Article\"\n\"Efficient computation of motif discovery on Intel Many Integrated Core (MIC) Architecture\",\"BMC Bioinformatics\",\"\",\"19\",\"9\",\"10.1186/s12859-018-2276-1\",\"Shaoliang PengMinxia ChengKaiwen HuangYingBo CuiZhiqiang ZhangRunxin GuoXiaoyu ZhangShunyun YangXiangke LiaoYutong LuQuan ZouBenyun Shi\",\"2018\",\"http://link.springer.com/article/10.1186/s12859-018-2276-1\",\"Article\"\n\"Deep Arm/Ear-ECG Image Learning for Highly Wearable Biometric Human Identification\",\"Annals of Biomedical Engineering\",\"\",\"46\",\"1\",\"10.1007/s10439-017-1944-z\",\"Qingxue ZhangDian Zhou\",\"2018\",\"http://link.springer.com/article/10.1007/s10439-017-1944-z\",\"Article\"\n\"pocl: A Performance-Portable OpenCL Implementation\",\"International Journal of Parallel Programming\",\"\",\"43\",\"5\",\"10.1007/s10766-014-0320-y\",\"Pekka JääskeläinenCarlos Sánchez de La LamaErik SchnetterKalle RaiskilaJarmo TakalaHeikki Berg\",\"2015\",\"http://link.springer.com/article/10.1007/s10766-014-0320-y\",\"Article\"\n\"Advances in Databases and Information Systems\",\"Information Systems Frontiers\",\"\",\"20\",\"1\",\"10.1007/s10796-017-9819-2\",\"Ladjel BellatrechePatrick ValduriezTadeusz Morzy\",\"2018\",\"http://link.springer.com/article/10.1007/s10796-017-9819-2\",\"Article\"\n\"Challenges and possible approaches: towards the petaflops computers\",\"Frontiers of Computer Science in China\",\"\",\"3\",\"3\",\"10.1007/s11704-009-0022-6\",\"Depei QianDanfeng Zhu\",\"2009\",\"http://link.springer.com/article/10.1007/s11704-009-0022-6\",\"Article\"\n\"Towards predicting GPGPU performance for concurrent workloads in Multi-GPGPU environment\",\"Cluster Computing\",\"\",\"23\",\"3\",\"10.1007/s10586-020-03105-2\",\"Sunggon KimDongwhan KimYongseok SonHyeonsang Eom\",\"2020\",\"http://link.springer.com/article/10.1007/s10586-020-03105-2\",\"Article\"\n\"A survey on data analysis on large-Scale wireless networks: online stream processing, trends, and challenges\",\"Journal of Internet Services and Applications\",\"\",\"11\",\"1\",\"10.1186/s13174-020-00127-2\",\"Dianne S. V. MedeirosHelio N. Cunha NetoMartin Andreoni LopezLuiz Claudio S. MagalhãesNatalia C. FernandesAlex B. VieiraEdelberto F. SilvaDiogo M. F. Mattos\",\"2020\",\"http://link.springer.com/article/10.1186/s13174-020-00127-2\",\"Article\"\n\"Legal Risk Management\",\"Informatik-Spektrum\",\"\",\"39\",\"2\",\"10.1007/s00287-016-0962-9\",\"\",\"2016\",\"http://link.springer.com/article/10.1007/s00287-016-0962-9\",\"Article\"\n\"Parallel technology for numerical modeling of fluid dynamics problems by high-accuracy algorithms\",\"Computational Mathematics and Mathematical Physics\",\"\",\"55\",\"4\",\"10.1134/S0965542515040065\",\"A. V. Gorobets\",\"2015\",\"http://link.springer.com/article/10.1134/S0965542515040065\",\"Article\"\n\"Modeling of a method of parallel hierarchical transformation for fast recognition of dynamic images\",\"EURASIP Journal on Advances in Signal Processing\",\"\",\"2013\",\"1\",\"10.1186/1687-6180-2013-87\",\"Leonid I. TimchenkoNataliya I. KokryatskayaViktoriya V. Shpakovych\",\"2013\",\"http://link.springer.com/article/10.1186/1687-6180-2013-87\",\"Article\"\n\"Optimizing inter-nest data locality in imperfect stencils based on loop blocking\",\"The Journal of Supercomputing\",\"\",\"74\",\"10\",\"10.1007/s11227-018-2443-1\",\"Yousef SeyfariShahriar LotfiJaber Karimpour\",\"2018\",\"http://link.springer.com/article/10.1007/s11227-018-2443-1\",\"Article\"\n\"Intelligent and independent processes for overcoming big graphs\",\"The Journal of Supercomputing\",\"\",\"73\",\"4\",\"10.1007/s11227-016-1834-4\",\"Masoud SagharichianHassan Naderi\",\"2017\",\"http://link.springer.com/article/10.1007/s11227-016-1834-4\",\"Article\"\n\"Parallelizing Convolutional Neural Networks for Action Event Recognition in Surveillance Videos\",\"International Journal of Parallel Programming\",\"\",\"45\",\"4\",\"10.1007/s10766-016-0451-4\",\"Qicong WangJinhao ZhaoDingxi GongYehu ShenMaozhen LiYunqi Lei\",\"2017\",\"http://link.springer.com/article/10.1007/s10766-016-0451-4\",\"Article\"\n\"Combining metaheuristics with mathematical programming, constraint programming and machine learning\",\"4OR\",\"\",\"11\",\"2\",\"10.1007/s10288-013-0242-3\",\"El-Ghazali Talbi\",\"2013\",\"http://link.springer.com/article/10.1007/s10288-013-0242-3\",\"Article\"\n\"Solving Dynamic Programming Problems on a Computational Grid\",\"Computational Economics\",\"\",\"45\",\"2\",\"10.1007/s10614-014-9419-x\",\"Yongyang CaiKenneth L. JuddGreg ThainStephen J. Wright\",\"2015\",\"http://link.springer.com/article/10.1007/s10614-014-9419-x\",\"Article\"\n\"A review of parallel computing for large-scale remote sensing image mosaicking\",\"Cluster Computing\",\"\",\"18\",\"2\",\"10.1007/s10586-015-0422-3\",\"Lajiao ChenYan MaPeng LiuJingbo WeiWei JieJijun He\",\"2015\",\"http://link.springer.com/article/10.1007/s10586-015-0422-3\",\"Article\"\n\"From latex specifications to parallel codes\",\"The Journal of Supercomputing\",\"\",\"64\",\"1\",\"10.1007/s11227-012-0797-3\",\"Alejandro AcostaFrancisco AlmeidaIgnacio Peláez\",\"2013\",\"http://link.springer.com/article/10.1007/s11227-012-0797-3\",\"Article\"\n\"A semantics comparison workbench for a concurrent, asynchronous, distributed programming language\",\"Formal Aspects of Computing\",\"\",\"30\",\"1\",\"10.1007/s00165-017-0443-1\",\"Claudio CorrodiAlexander HeußnerChristopher M. Poskitt\",\"2018\",\"http://link.springer.com/article/10.1007/s00165-017-0443-1\",\"Article\"\n\"MapReduce for parallel trace validation of LTL properties\",\"Journal of Cloud Computing\",\"\",\"4\",\"1\",\"10.1186/s13677-015-0032-x\",\"Sylvain HalléMaxime Soucy-Boivin\",\"2015\",\"http://link.springer.com/article/10.1186/s13677-015-0032-x\",\"Article\"\n\"ParDSL: a domain-specific language framework for supporting deployment of parallel algorithms\",\"Software & Systems Modeling\",\"\",\"18\",\"5\",\"10.1007/s10270-018-00705-w\",\"Bedir TekinerdoganEthem Arkin\",\"2019\",\"http://link.springer.com/article/10.1007/s10270-018-00705-w\",\"Article\"\n\"Canny edge detection and Hough transform for high resolution video streams using Hadoop and Spark\",\"Cluster Computing\",\"\",\"23\",\"1\",\"10.1007/s10586-019-02929-x\",\"Bilal IqbalWaheed IqbalNazar KhanArif MahmoodAbdelkarim Erradi\",\"2020\",\"http://link.springer.com/article/10.1007/s10586-019-02929-x\",\"Article\"\n\"Dynamic resource provisioning for cyber-physical systems in cloud-fog-edge computing\",\"Journal of Cloud Computing\",\"\",\"9\",\"1\",\"10.1186/s13677-020-00181-y\",\"Zhanyang XuYanqi ZhangHaoyuan LiWeijing YangQuan Qi\",\"2020\",\"http://link.springer.com/article/10.1186/s13677-020-00181-y\",\"Article\"\n\"Combining metaheuristics with mathematical programming, constraint programming and machine learning\",\"Annals of Operations Research\",\"\",\"240\",\"1\",\"10.1007/s10479-015-2034-y\",\"El-Ghazali Talbi\",\"2016\",\"http://link.springer.com/article/10.1007/s10479-015-2034-y\",\"Article\"\n\"Cloud workflow scheduling with hybrid resource provisioning\",\"The Journal of Supercomputing\",\"\",\"74\",\"12\",\"10.1007/s11227-017-2043-5\",\"Long ChenXiaoping Li\",\"2018\",\"http://link.springer.com/article/10.1007/s11227-017-2043-5\",\"Article\"\n\"A Resource Aware MapReduce Based Parallel SVM for Large Scale Image Classifications\",\"Neural Processing Letters\",\"\",\"44\",\"1\",\"10.1007/s11063-015-9472-z\",\"Wenming GuoNasullah Khalid AlhamYang LiuMaozhen LiMan Qi\",\"2016\",\"http://link.springer.com/article/10.1007/s11063-015-9472-z\",\"Article\"\n\"High-level dataflow programming for real-time image processing on smart cameras\",\"Journal of Real-Time Image Processing\",\"\",\"12\",\"4\",\"10.1007/s11554-014-0462-6\",\"Jocelyn SérotFrançois BerryCédric Bourrasset\",\"2016\",\"http://link.springer.com/article/10.1007/s11554-014-0462-6\",\"Article\"\n\"Dynamic frequency based parallel k-bat algorithm for massive data clustering (DFBPKBA)\",\"International Journal of System Assurance Engineering and Management\",\"\",\"9\",\"4\",\"10.1007/s13198-017-0665-x\",\"Ashish Kumar TripathiKapil SharmaManju Bala\",\"2018\",\"http://link.springer.com/article/10.1007/s13198-017-0665-x\",\"Article\"\n\"FDGLib: A Communication Library for Efficient Large-Scale Graph Processing in FPGA-Accelerated Data Centers\",\"Journal of Computer Science and Technology\",\"\",\"36\",\"5\",\"10.1007/s11390-021-1242-y\",\"Yu-Wei WuQing-Gang WangLong ZhengXiao-Fei LiaoHai JinWen-Bin JiangRan ZhengKan Hu\",\"2021\",\"http://link.springer.com/article/10.1007/s11390-021-1242-y\",\"Article\"\n\"On the impact of quantum computing technology on future developments in high-performance scientific computing\",\"Ethics and Information Technology\",\"\",\"19\",\"4\",\"10.1007/s10676-017-9438-0\",\"Matthias MöllerCornelis Vuik\",\"2017\",\"http://link.springer.com/article/10.1007/s10676-017-9438-0\",\"Article\"\n\"Deep learning for intelligent traffic sensing and prediction: recent advances and future challenges\",\"CCF Transactions on Pervasive Computing and Interaction\",\"\",\"2\",\"4\",\"10.1007/s42486-020-00039-x\",\"Xiaochen FanChaocan XiangLiangyi GongXin HeYuben QuSaeed AmirgholipourYue XiPriyadarsi NandaXiangjian He\",\"2020\",\"http://link.springer.com/article/10.1007/s42486-020-00039-x\",\"Article\"\n\"Big data fuzzy C-means algorithm based on bee colony optimization using an Apache Hbase\",\"Journal of Big Data\",\"\",\"8\",\"1\",\"10.1186/s40537-021-00450-w\",\"Seyyed Mohammad RazaviMohsen KahaniSamad Paydar\",\"2021\",\"http://link.springer.com/article/10.1186/s40537-021-00450-w\",\"Article\"\n\"Dynamic top-k influence maximization in social networks\",\"GeoInformatica\",\"\",\"\",\"\",\"10.1007/s10707-020-00419-6\",\"Binbin ZhangHao WangLeong Hou U\",\"2020\",\"http://link.springer.com/article/10.1007/s10707-020-00419-6\",\"Article\"\n\"Soil-moisture estimation from TerraSAR-X data using neural networks\",\"Machine Vision and Applications\",\"\",\"23\",\"5\",\"10.1007/s00138-011-0375-3\",\"Matej KsenemanDušan GleichBožidar Potočnik\",\"2012\",\"http://link.springer.com/article/10.1007/s00138-011-0375-3\",\"Article\"\n\"Real-Time FPGA Implementation of FIR Filter Using OpenCL Design\",\"Journal of Signal Processing Systems\",\"\",\"\",\"\",\"10.1007/s11265-021-01723-6\",\"Iman FirmansyahYoshiki Yamaguchi\",\"2022\",\"http://link.springer.com/article/10.1007/s11265-021-01723-6\",\"Article\"\n\"Primitives towards verifiable computation: a survey\",\"Frontiers of Computer Science\",\"\",\"12\",\"3\",\"10.1007/s11704-016-6148-4\",\"Haseeb AhmadLicheng WangHaibo HongJing LiHassan DawoodManzoor AhmedYixian Yang\",\"2018\",\"http://link.springer.com/article/10.1007/s11704-016-6148-4\",\"Article\"\n\"Bayesian computation: a summary of the current state, and samples backwards and forwards\",\"Statistics and Computing\",\"\",\"25\",\"4\",\"10.1007/s11222-015-9574-5\",\"Peter J. GreenKrzysztof ŁatuszyńskiMarcelo PereyraChristian P. Robert\",\"2015\",\"http://link.springer.com/article/10.1007/s11222-015-9574-5\",\"Article\"\n\"Massively parallel acceleration methods for image handling operations\",\"Cluster Computing\",\"\",\"20\",\"2\",\"10.1007/s10586-017-0788-5\",\"Nakhoon BaekKwan-Hee Yoo\",\"2017\",\"http://link.springer.com/article/10.1007/s10586-017-0788-5\",\"Article\"\n\"High-performance interconnection networks in the Exascale and Big-Data Era\",\"The Journal of Supercomputing\",\"\",\"72\",\"12\",\"10.1007/s11227-016-1893-6\",\"Jesús Escudero-SahuquilloPedro Javier Garcia\",\"2016\",\"http://link.springer.com/article/10.1007/s11227-016-1893-6\",\"Article\"\n\"Efficient parallel derivation of short distinguishing sequences for nondeterministic finite state machines using MapReduce\",\"Journal of Big Data\",\"\",\"8\",\"1\",\"10.1186/s40537-021-00535-6\",\"Bilal ElghadyryFaissal OuardiZineb LotfiSébastien Verel\",\"2021\",\"http://link.springer.com/article/10.1186/s40537-021-00535-6\",\"Article\"\n\"CHAOS: a parallelization scheme for training convolutional neural networks on Intel Xeon Phi\",\"The Journal of Supercomputing\",\"\",\"75\",\"1\",\"10.1007/s11227-017-1994-x\",\"André ViebkeSuejb MemetiSabri PllanaAjith Abraham\",\"2019\",\"http://link.springer.com/article/10.1007/s11227-017-1994-x\",\"Article\"\n\"Multimedia and multi-feature cluster fusion model based on saliency for mobile network applications\",\"Cluster Computing\",\"\",\"22\",\"4\",\"10.1007/s10586-017-1335-0\",\"Zhenze JiaXiaoguang FanHaoxiang Wang\",\"2019\",\"http://link.springer.com/article/10.1007/s10586-017-1335-0\",\"Article\"\n\"RCSoS: An IEC 61508 Compatible Server Model for Reliable Communication\",\"Journal of Signal Processing Systems\",\"\",\"80\",\"3\",\"10.1007/s11265-014-0914-z\",\"Rui ZhouXiaolong ChenHuaming ChenFenglong YanChunlin ChenQi YuQingguo ZhouKuan-Ching Li\",\"2015\",\"http://link.springer.com/article/10.1007/s11265-014-0914-z\",\"Article\"\n\"Volume rendering visualization of 3D spherical mantle convection with an unstructured mesh\",\"Visual Geosciences\",\"\",\"13\",\"1\",\"10.1007/s10069-008-0012-0\",\"Shi ChenHuai ZhangDavid A. YuenShuxia ZhangJian ZhangYaolin Shi\",\"2008\",\"http://link.springer.com/article/10.1007/s10069-008-0012-0\",\"Article\"\n\"Performance analysis of deep learning workloads using roofline trajectories\",\"CCF Transactions on High Performance Computing\",\"\",\"1\",\"3 - 4\",\"10.1007/s42514-019-00018-4\",\"M. Haseeb JavedKhaled Z. IbrahimXiaoyi Lu\",\"2019\",\"http://link.springer.com/article/10.1007/s42514-019-00018-4\",\"Article\"\n\"Dynamic simulation of liquid-filled flexible multibody systems via absolute nodal coordinate formulation and SPH method\",\"Nonlinear Dynamics\",\"\",\"75\",\"4\",\"10.1007/s11071-013-1093-3\",\"Wei HuQiang TianHaiyan Hu\",\"2014\",\"http://link.springer.com/article/10.1007/s11071-013-1093-3\",\"Article\"\n\"Scalable parallel implementation of migrating birds optimization for the multi-objective task allocation problem\",\"The Journal of Supercomputing\",\"\",\"77\",\"3\",\"10.1007/s11227-020-03369-w\",\"Dindar ÖzIşıl Öz\",\"2021\",\"http://link.springer.com/article/10.1007/s11227-020-03369-w\",\"Article\"\n\"Guest Editorial: Special Issue on Computing Frontiers\",\"International Journal of Parallel Programming\",\"\",\"46\",\"2\",\"10.1007/s10766-018-0556-z\",\"Antonino TumeoHubertus FrankeGianluca PalermoJohn Feo\",\"2018\",\"http://link.springer.com/article/10.1007/s10766-018-0556-z\",\"Article\"\n\"Special issue on data management on modern hardware\",\"Distributed and Parallel Databases\",\"\",\"33\",\"3\",\"10.1007/s10619-014-7168-4\",\"Qiong LuoJens Teubner\",\"2015\",\"http://link.springer.com/article/10.1007/s10619-014-7168-4\",\"Article\"\n\"Hybrid clusters for budget supercomputers and cloud computing\",\"Automation and Remote Control\",\"\",\"75\",\"10\",\"10.1134/S0005117914100130\",\"N. P. VasilyevM. M. Rovnyagin\",\"2014\",\"http://link.springer.com/article/10.1134/S0005117914100130\",\"Article\"\n\"Big Data-Aware Intrusion Detection System in Communication Networks: a Deep Learning Approach\",\"Journal of Grid Computing\",\"\",\"19\",\"4\",\"10.1007/s10723-021-09581-z\",\"Mahzad MahdavisharifShahram JamaliReza Fotohi\",\"2021\",\"http://link.springer.com/article/10.1007/s10723-021-09581-z\",\"Article\"\n\"PIC methods in astrophysics: simulations of relativistic jets and kinetic physics in astrophysical systems\",\"Living Reviews in Computational Astrophysics\",\"\",\"7\",\"1\",\"10.1007/s41115-021-00012-0\",\"Kenichi NishikawaIoana DuţanChristoph KöhnYosuke Mizuno\",\"2021\",\"http://link.springer.com/article/10.1007/s41115-021-00012-0\",\"Article\"\n\"Distributed deep learning platform for pedestrian detection on IT convergence environment\",\"The Journal of Supercomputing\",\"\",\"76\",\"7\",\"10.1007/s11227-020-03195-0\",\"Seong-Soo HanYoon-Ki KimYou-Boo JeonJinSoo ParkDoo-Soon ParkDuHyun HwangChang-Sung Jeong\",\"2020\",\"http://link.springer.com/article/10.1007/s11227-020-03195-0\",\"Article\"\n\"Downsampling Algorithms for Large Sparse Matrices\",\"International Journal of Parallel Programming\",\"\",\"43\",\"5\",\"10.1007/s10766-014-0315-8\",\"Daniel LangrPavel TvrdíkIvan ŠimečekTomáš Dytrych\",\"2015\",\"http://link.springer.com/article/10.1007/s10766-014-0315-8\",\"Article\"\n\"Big data as the new enabler in business and other intelligence\",\"Vietnam Journal of Computer Science\",\"\",\"1\",\"1\",\"10.1007/s40595-013-0001-6\",\"Gottfried Vossen\",\"2014\",\"http://link.springer.com/article/10.1007/s40595-013-0001-6\",\"Article\"\n\"A novel approach for big data processing using message passing interface based on memory mapping\",\"Journal of Big Data\",\"\",\"6\",\"1\",\"10.1186/s40537-019-0275-3\",\"Saad Ahmed DheyabMohammed Najm AbdullahButhainah Fahran Abed\",\"2019\",\"http://link.springer.com/article/10.1186/s40537-019-0275-3\",\"Article\"\n\"Seeking the best Weather Research and Forecasting model performance: an empirical score approach\",\"The Journal of Supercomputing\",\"\",\"76\",\"12\",\"10.1007/s11227-020-03219-9\",\"R. MorenoE. AriasD. CazorlaJ. J. PardoF. J. Tapiador\",\"2020\",\"http://link.springer.com/article/10.1007/s11227-020-03219-9\",\"Article\"\n\"The READEX formalism for automatic tuning for energy efficiency\",\"Computing\",\"\",\"99\",\"8\",\"10.1007/s00607-016-0532-7\",\"Joseph SchuchartMichael GerndtPer Gunnar KjeldsbergMichael LysaghtDavid HorákLubomír ŘíhaAndreas GochtMohammed SourouriMadhura KumaraswamyAnamika ChowdhuryMagnus JahreKai DiethelmOthman BouiziUmbreen Sabir MianJakub KružíkRadim Sojka\",\"2017\",\"http://link.springer.com/article/10.1007/s00607-016-0532-7\",\"Article\"\n\"High-level dataflow design of signal processing systems for reconfigurable and multicore heterogeneous platforms\",\"Journal of Real-Time Image Processing\",\"\",\"9\",\"1\",\"10.1007/s11554-013-0326-5\",\"Endri BezatiRichard ThavotGhislain RoquierMarco Mattavelli\",\"2014\",\"http://link.springer.com/article/10.1007/s11554-013-0326-5\",\"Article\"\n\"Machine Learning Meets Databases\",\"Datenbank-Spektrum\",\"\",\"17\",\"1\",\"10.1007/s13222-017-0247-8\",\"Stephan Günnemann\",\"2017\",\"http://link.springer.com/article/10.1007/s13222-017-0247-8\",\"Article\"\n\"Street sweeper: detecting and removing cars in street view images\",\"Multimedia Tools and Applications\",\"\",\"74\",\"23\",\"10.1007/s11042-014-2213-x\",\"Wei-Ta ChuYing-Chieh ChaoYi-Sheng Chang\",\"2015\",\"http://link.springer.com/article/10.1007/s11042-014-2213-x\",\"Article\"\n\"ZAKI: A Smart Method and Tool for Automatic Performance Optimization of Parallel SpMV Computations on Distributed Memory Machines\",\"Mobile Networks and Applications\",\"\",\"\",\"\",\"10.1007/s11036-019-01318-3\",\"Sardar UsmanRashid MehmoodIyad KatibAiiad AlbeshriSaleh M. Altowaijri\",\"2019\",\"http://link.springer.com/article/10.1007/s11036-019-01318-3\",\"Article\"\n\"Parallel decomposition of combinatorial optimization problems using electro-optical vector by matrix multiplication architecture\",\"The Journal of Supercomputing\",\"\",\"62\",\"2\",\"10.1007/s11227-010-0517-9\",\"Dan E. TamirNatan T. ShakedWilhelmus J. GeertsShlomi Dolev\",\"2012\",\"http://link.springer.com/article/10.1007/s11227-010-0517-9\",\"Article\"\n\"Energy-efficient computing-in-memory architecture for AI processor: device, circuit, architecture perspective\",\"Science China Information Sciences\",\"\",\"64\",\"6\",\"10.1007/s11432-021-3234-0\",\"Liang ChangChenglong LiZhaomin ZhangJianbiao XiaoQingsong LiuZhen ZhuWeihang LiZixuan ZhuSiqi YangJun Zhou\",\"2021\",\"http://link.springer.com/article/10.1007/s11432-021-3234-0\",\"Article\"\n\"Parallel Asynchronous Strategies for the Execution of Feature Selection Algorithms\",\"International Journal of Parallel Programming\",\"\",\"46\",\"2\",\"10.1007/s10766-017-0493-2\",\"Jorge SilvaAna AguiarFernando Silva\",\"2018\",\"http://link.springer.com/article/10.1007/s10766-017-0493-2\",\"Article\"\n\"Taxonomy and issues for antifragile-based multimedia cloud computing\",\"Journal of Reliable Intelligent Environments\",\"\",\"2\",\"1\",\"10.1007/s40860-016-0017-7\",\"Syed Fawad HaiderLaraib AbbasAmjad AliMuddesar IqbalImran RazaSyed Asad HussainDoug Young Suh\",\"2016\",\"http://link.springer.com/article/10.1007/s40860-016-0017-7\",\"Article\"\n\"Parallelization Strategy for Elementary Morphological Operators on Graphs: Distance-Based Algorithms and Implementation on Multicore Shared-Memory Architecture\",\"Journal of Mathematical Imaging and Vision\",\"\",\"59\",\"1\",\"10.1007/s10851-017-0737-1\",\"Imane YoukanaJean CoustyRachida SaouliMohamed Akil\",\"2017\",\"http://link.springer.com/article/10.1007/s10851-017-0737-1\",\"Article\"\n\"Real-Time 3D Depth Generation for Stereoscopic Video Applications with Thread-Level Superscalar-Pipeline Parallelization\",\"Journal of Signal Processing Systems\",\"\",\"72\",\"1\",\"10.1007/s11265-012-0691-5\",\"Guo-An JianCheng-An ChienPeng-Sheng ChenJiun-In Guo\",\"2013\",\"http://link.springer.com/article/10.1007/s11265-012-0691-5\",\"Article\"\n\"Mobile clusters of single board computers: an option for providing resources to student projects and researchers\",\"SpringerPlus\",\"\",\"5\",\"1\",\"10.1186/s40064-016-1981-3\",\"Christian Baun\",\"2016\",\"http://link.springer.com/article/10.1186/s40064-016-1981-3\",\"Article\"\n\"A two-level storage strategy for map-reduce enabled computation of local map algebra\",\"Earth Science Informatics\",\"\",\"13\",\"2\",\"10.1007/s12145-020-00452-x\",\"Jianbo ZhangSimin ZhouTingnan LiangYongchang LiCaikun ChenHao Xia\",\"2020\",\"http://link.springer.com/article/10.1007/s12145-020-00452-x\",\"Article\"\n\"Distributed discovery of frequent subgraphs of a network using MapReduce\",\"Computing\",\"\",\"97\",\"11\",\"10.1007/s00607-015-0446-9\",\"Saeed ShahrivariSaeed Jalili\",\"2015\",\"http://link.springer.com/article/10.1007/s00607-015-0446-9\",\"Article\"\n\"A multilayer shallow learning approach to variation prediction and variation source identification in multistage machining processes\",\"Journal of Intelligent Manufacturing\",\"\",\"32\",\"4\",\"10.1007/s10845-020-01649-z\",\"Filmon YacobDaniel Semere\",\"2021\",\"http://link.springer.com/article/10.1007/s10845-020-01649-z\",\"Article\"\n\"An Intra-Server Interconnect Fabric for Heterogeneous Computing\",\"Journal of Computer Science and Technology\",\"\",\"29\",\"6\",\"10.1007/s11390-014-1483-0\",\"Zheng CaoXiao-Li LiuQiang LiXiao-Bing LiuZhan WangXue-Jun An\",\"2014\",\"http://link.springer.com/article/10.1007/s11390-014-1483-0\",\"Article\"\n\"Shared memory implementation and performance analysis of LSB steganography based on chaotic tent map\",\"Innovations in Systems and Software Engineering\",\"\",\"17\",\"4\",\"10.1007/s11334-021-00385-8\",\"Gaurav GambhirJyotsna Kumar Mandal\",\"2021\",\"http://link.springer.com/article/10.1007/s11334-021-00385-8\",\"Article\"\n\"A fully-customized dataflow engine for 3D earthquake simulation with a complex topography\",\"Science China Information Sciences\",\"\",\"65\",\"5\",\"10.1007/s11432-020-2976-5\",\"Bingwei ChenHaohuan FuWayne LukGuangwen Yang\",\"2021\",\"http://link.springer.com/article/10.1007/s11432-020-2976-5\",\"Article\"\n\"Hybridizing particle swarm optimization with simulated annealing and differential evolution\",\"Cluster Computing\",\"\",\"24\",\"2\",\"10.1007/s10586-020-03179-y\",\"Emad MirsadeghiSalman Khodayifar\",\"2021\",\"http://link.springer.com/article/10.1007/s10586-020-03179-y\",\"Article\"\n\"Frame-based Programming, Stream-Based Processing for Medical Image Processing Applications\",\"Journal of Signal Processing Systems\",\"\",\"91\",\"1\",\"10.1007/s11265-018-1422-3\",\"Joost HoozemansRob de JongSteven van der VlugtJeroen Van StratenUttam Kumar ElangoZaid Al-Ars\",\"2019\",\"http://link.springer.com/article/10.1007/s11265-018-1422-3\",\"Article\"\n\"HeDPM: load balancing of linear pipeline applications on heterogeneous systems\",\"The Journal of Supercomputing\",\"\",\"73\",\"9\",\"10.1007/s11227-017-1971-4\",\"Andreu MorenoAnna SikoraEduardo CésarJoan SorribesTomàs Margalef\",\"2017\",\"http://link.springer.com/article/10.1007/s11227-017-1971-4\",\"Article\"\n\"Could we use a million cores to solve an integer program?\",\"Mathematical Methods of Operations Research\",\"\",\"76\",\"1\",\"10.1007/s00186-012-0390-9\",\"Thorsten KochTed RalphsYuji Shinano\",\"2012\",\"http://link.springer.com/article/10.1007/s00186-012-0390-9\",\"Article\"\n\"Improving the performance of GIS polygon overlay computation with MapReduce for spatial big data processing\",\"Cluster Computing\",\"\",\"18\",\"2\",\"10.1007/s10586-015-0428-x\",\"Yong WangZhenling LiuHongyan LiaoChengjun Li\",\"2015\",\"http://link.springer.com/article/10.1007/s10586-015-0428-x\",\"Article\"\n\"A survey on reliability and availability modeling of edge, fog, and cloud computing\",\"Journal of Reliable Intelligent Environments\",\"\",\"\",\"\",\"10.1007/s40860-021-00154-1\",\"Paulo MacielJamilson DantasCarlos MeloPaulo PereiraFelipe OliveiraJean AraujoRubens Matos\",\"2021\",\"http://link.springer.com/article/10.1007/s40860-021-00154-1\",\"Article\"\n\"Automating NEURON Simulation Deployment in Cloud Resources\",\"Neuroinformatics\",\"\",\"15\",\"1\",\"10.1007/s12021-016-9315-8\",\"David B. StocktonFidel Santamaria\",\"2017\",\"http://link.springer.com/article/10.1007/s12021-016-9315-8\",\"Article\"\n\"Molecular simulation and the collaborative computational projects\",\"The European Physical Journal H\",\"\",\"45\",\"4 - 5\",\"10.1140/epjh/e2020-10034-9\",\"William SmithMartyn GuestIlian TodorovPaul Durham\",\"2020\",\"http://link.springer.com/article/10.1140/epjh/e2020-10034-9\",\"Article\"\n\"Towards Enabling Live Thresholding as Utility to Manage Elastic Master-Slave Applications in the Cloud\",\"Journal of Grid Computing\",\"\",\"15\",\"4\",\"10.1007/s10723-017-9405-3\",\"Vinicius Facco RodriguesRodrigo da Rosa RighiGustavo RostirollaJorge Luis Victória BarbosaCristiano André da CostaAntônio Marcos AlbertiVictor Chang\",\"2017\",\"http://link.springer.com/article/10.1007/s10723-017-9405-3\",\"Article\"\n\"High-Level Heterogeneous and Hierarchical Parallel Systems (HLPGPU 2014)\",\"International Journal of Parallel Programming\",\"\",\"43\",\"5\",\"10.1007/s10766-015-0367-4\",\"Christopher Brown\",\"2015\",\"http://link.springer.com/article/10.1007/s10766-015-0367-4\",\"Article\""
  },
  {
    "path": "notebooks/example.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Example of using litstudy\\n\",\n    \"\\n\",\n    \"This notebook shows an example of how to use `litstudy` from inside a Jupyter notebook. It shows how to load a dataset, plot statistics, perform topic modeling, do network analysis, and some more advanced features. \\n\",\n    \"\\n\",\n    \"This notebook focuses on the topic of programming model for GPUs. GPUs (Graphic Processing Units) are specialized processors that are used in many data centers and supercomputers for data processing and machine learning. However, programming these devices remaining difficult, which is why there is a plethora of research on developing programming models for GPUs.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Imports\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Import other libraries \\n\",\n    \"import os\\n\",\n    \"import sys\\n\",\n    \"import numpy as np\\n\",\n    \"import pandas as pd\\n\",\n    \"import matplotlib.pyplot as plt\\n\",\n    \"import seaborn as sbs\\n\",\n    \"\\n\",\n    \"# Options for plots\\n\",\n    \"plt.rcParams['figure.figsize'] = (10, 6)\\n\",\n    \"sbs.set('paper')\\n\",\n    \"\\n\",\n    \"# Import litstudy\\n\",\n    \"path = os.path.abspath(os.path.join('..'))\\n\",\n    \"if path not in sys.path:\\n\",\n    \"    sys.path.append(path)\\n\",\n    \"\\n\",\n    \"import litstudy\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Collecting the dataset\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"For this example, we have queried both IEEE Xplore and Springer Link for `\\\"GPU\\\" and \\\"programming model\\\"`. IEEE Xplore gives 5 CSV files (1 per page) and Springer Link gives a single CSV file. We load all files document sets and merge the resulting document sets.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"441 papers loaded from IEEE\\n\",\n      \"1000 papers loaded from Springer\\n\",\n      \"1441 papers loaded from CSV\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Load the CSV files\\n\",\n    \"docs1 = litstudy.load_ieee_csv('data/ieee_1.csv')\\n\",\n    \"docs2 = litstudy.load_ieee_csv('data/ieee_2.csv')\\n\",\n    \"docs3 = litstudy.load_ieee_csv('data/ieee_3.csv')\\n\",\n    \"docs4 = litstudy.load_ieee_csv('data/ieee_4.csv')\\n\",\n    \"docs5 = litstudy.load_ieee_csv('data/ieee_5.csv')\\n\",\n    \"docs_ieee = docs1 | docs2 | docs3 | docs4 | docs5\\n\",\n    \"print(len(docs_ieee), 'papers loaded from IEEE')\\n\",\n    \"\\n\",\n    \"docs_springer = litstudy.load_springer_csv('data/springer.csv')\\n\",\n    \"print(len(docs_springer), 'papers loaded from Springer')\\n\",\n    \"\\n\",\n    \"# Merge the two document sets\\n\",\n    \"docs_csv = docs_ieee | docs_springer\\n\",\n    \"print(len(docs_csv), 'papers loaded from CSV')\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"We can also exclude some papers that we are not interested in. Here, we load a document set from a RIS file and subtract these documents from our original document set.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"1 papers were excluded\\n\",\n      \"1440 paper remaining\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"docs_exclude = litstudy.load_ris_file('data/exclude.ris')\\n\",\n    \"docs_remaining = docs_csv - docs_exclude\\n\",\n    \"\\n\",\n    \"print(len(docs_exclude), 'papers were excluded')\\n\",\n    \"print(len(docs_remaining), 'paper remaining')\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"The amount metadata provided by the CSV files is minimal. To enhance the metadata, we can find the corresponding articles on Scopus using `refine_scopus`. This function returns two sets: the set of documents that were found on Scopus and the set of original documents not were not found. We have two options on how to handle these two sets: (1) merge the two sets back into one set or (2) discard the documents that were not found. We chose the second option here for simplicity.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"100%|██████████| 1440/1440 [00:03<00:00, 361.20it/s]\"\n     ]\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"1387 papers found on Scopus\\n\",\n      \"53 papers were not found and were discarded\\n\"\n     ]\n    },\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"import logging\\n\",\n    \"logging.getLogger().setLevel(logging.CRITICAL)\\n\",\n    \"\\n\",\n    \"docs_scopus, docs_notfound = litstudy.refine_scopus(docs_remaining)\\n\",\n    \"\\n\",\n    \"print(len(docs_scopus), 'papers found on Scopus')\\n\",\n    \"print(len(docs_notfound), 'papers were not found and were discarded')\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Next, we plot the number of documents per publication source.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAlsAAAGBCAYAAABRiHSlAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAA0nklEQVR4nO3df3zN9f//8fvZmWE0PxKliOiNd1L5EfGmVn5F45MfzWTeNBv9YPqW+dHeqLcuTfQp9JZQfGTWO5FCTSpZH5VaVtZvKyTlx7uZMyP79fz+4eO88zbOC+e18zrb7frPe1uvc87zebe38/A657zuLmOMEQAAAGwREugFAAAAVGQMWwAAADZi2AIAALARwxYAAICNGLYAAABsxLAFAABgI4YtAOfsvvvu05tvvun9PjU1VVOnTrX9cT/55BP17dtXQ4cOvaD7+fnnn3XXXXeV+d+6dOkiScrOztbs2bPP677T09O936elpZ3yPYDKJzTQCwAQfCZPnqxRo0bp1ltv1fHjx7Vs2TK9/PLL531/JSUlcrvdPo9bt26dHnzwQXXv3v28H8uqa6+9Vtdee+05327v3r3asGGDevfuLUmKiYnx99IABBmGLQDnrFGjRurbt68WLVqkvLw8jRgxQmFhYZowYYJ+/PFHSdLf/vY3XX/99XrnnXf0/PPPq7CwUA0bNtTs2bNVo0YNTZo0SdWqVVN2drb69u2re+65x3v/u3fv1uTJk5Wfn6+rrrpKTzzxhN5++22lp6frww8/1JYtWzRt2jTv8atXr9b777+vgwcPKjc3VyNHjtSQIUO0detWvfzyy3r66aclSbGxsZo+fbqqVq2qwsJCjR07Vjk5OWrfvr0effRRhYT8+2T/H2975MgRTZs2Td9//71CQkI0Y8YMNW3aVPfdd5/y8/NljFFycrLat2+vp59+Wj/88IP69++vuLg47d69W/Xq1VNMTIy2b9+u6dOnq6ioSG3bttXUqVPldrt166236r/+67/0zjvv6KKLLtLzzz+vmjVraubMmdq0aZPCwsLUr18/jRo1qpz+hAH4lQGA83Ds2DHTu3dvM2jQIFNSUmJmzZplNm7caIwx5tdffzV33nmnMcaYvLw8720WLlxoli5daowxZuLEieb//b//Z0pLS0+771GjRpkNGzYYY4yZOXOm+cc//uG9zebNm087ftWqVSYyMtLk5+eb/Px807NnT7Nv3z7z8ccfm/Hjx3uPGzZsmMnJyTF79uwxLVu2NF9//bUpLS01999/v3nrrbeMMcZ07tzZGGNOuW1KSoqZO3euMcaYoqIik5+fbwoLC01+fr53v4MGDTrtdsYYM3fuXLNixQpjjDF9+/Y12dnZxhhjEhMTzZo1a4wxxkRGRprXXnvNGGPMY489Zv75z3+a3NxcExkZaUpKSowxxng8nrP/gQBwLM5sATgv1apVU+/evVWvXj2FhIToww8/VEZGhubNmydJysvLU3FxsX799VclJibqt99+07Fjx9S5c2fvffTq1Usul+u0+/7mm2/Us2dPSVK/fv0svXeqW7duqlmzpiTppptuUnZ2ti666KIzHt+0aVO1atVKktSnTx999tln3pf+/tPHH3+shQsXSpJCQ0NVs2ZNFRYWatasWdq2bZtCQkL0008/nXV9Ho9HpaWlat26tSQpKipKGRkZ6t+/vyTptttukyS1atVKe/bs0UUXXaQaNWrokUceUffu3XXLLbf4zACAMzFsAThvISEh3pfejDFatGiRGjRocMoxM2bM0NixY9WxY0elp6fr/fff9/63atWq+W0tfxzaTn7tdrtVWlrq/XlhYeEZjy9r6DubtWvXqqioSGvWrJHb7dYNN9xwvkuXJIWFhUk6kWlJSYlCQ0O1atUqffDBB1q7dq02btyolJSUC3oMAIHBpxEB+MVNN92kFStWeL//9ttvJUlHjhzRJZdcotLSUr3++uuW7qtVq1Z67733JJ14U3y7du183iYjI0NHjhzRkSNH9NFHH+naa6/VZZddppycHBUXF2vv3r367rvvvMf/+OOP+vbbb2WM0VtvvXXWx7jpppu8HwAoLi72Ps7FF18st9ut9PR0HT16VJJUo0YNFRQUnHYfERERcrvd3lzWr19/1scsKChQfn6+brvtNk2YMEHffPONzwwAOBNntgD4xf33368ZM2YoKipKJSUluummm/S3v/1N9913n+Lj41W7dm21bdtW+fn5Pu8rOTlZkydP1tNPP+19g7wv11xzjeLj471vkD95hu2mm25S37591aJFC1199dXe41u0aKF//OMf2rFjhzp06KAePXqc8b7vu+8+TZs2TVFRUXK73d59jh49WlFRUerYsaPq1avnvd/ff//d+wb5P3r88cc1ZcoUFRUV6YYbblDfvn3P+JgFBQW69957VVRUJJfLpcTERJ8ZAHAmlzHGBHoRAHAhVq9erR9//FEPP/xwoJcCAKfhZUQAAAAbcWYLAADARpzZAgAAsBHDFgAAgI0YtgAAAGzk6Es/HDzo+yPilV3t2uHKyzsa6GU4GhlZQ07WkJM15GQNOVkTDDldcsmZGyscPWwp1O390h3iUklhcQAXAwAAcO4cPWzdM2Oj9+sXk898wUEAAACn8vmeraKiIg0ZMkTt27dXenq6JCkzM1NDhgzR0KFDtXr1aklSaWmpJk+erGHDhmnMmDHKy8uTJD355JOKjY1VbGysOnbsqHfffde+3QAAADiMzzNboaGhmjt3rv75z396fzZz5kw999xzqlOnjoYPH67bbrtNW7duVUREhJYvX653331Xixcv1sMPP6ykpCRJUklJifr06aO//OUv9u0GAADAYXye2XK5XKpfv/4pP/v9999Vr149ud1uNWnSRNu3b9euXbt0zTXXSDrRUfbpp5+ecpuPP/5Y119/vapWrerH5QMAADjbeV36oUaNGvrxxx917NgxZWVlyePxqEWLFtqyZYskacuWLTp8+PApt1m3bt1ZS1cBAAAqovN6g/z06dM1Y8YMhYaGqnnz5rrkkkt04403atu2bYqNjVXbtm3VoEED7/GFhYX67LPP9Pe//91vCwcAAAgG5zVstWzZUi+++KKOHTumcePG6frrr5ckPfjgg5KkN954Q/Xq1fMe//7776tLly4KDXX0hx8BAAD8ztL0k5iYqC+//FLh4eHavn276tatq82bN8vtdisxMVFhYWHKzc1VYmKi3G63mjdvrokTJ3pvv27dOg0fPty2TQAAADiVyxhjAr2IM4l66HXv1y8m95CKSwK4GmcKhqvqBhoZWUNO1pCTNeRkDTlZEww5Be0V5P94IVN3iEuMWgAAINg4etj645ksBi0AABCMzuvSDwAAALCGYQsAAMBGDFsAAAA2sr2I+ssvv9Rdd92lu+++WxMmTFBJCe++AgAAlYfPYetkEfVf//pX789mzpypZ599Vi+99JJWrVqlw4cP65133vEWUQ8ePFiLFy+WJC1ZskRJSUlKTU1VlSpV9Mknn9i3GwAAAIexvYj66quvlsfjkTFGR44cUZ06dWzYBgAAgDPZXkR9yy23aMaMGerTp4+MMWrRooX/Vg8AAOBw5zVsnSyiTkxM9BZR33zzzbr00ksVGxurn376yVtEPX36dD3//PN666231KhRI61du9avGwAAAHCycimirl27tvd/PR7Pha0YAAAgiNheRD1+/Hg98MADqlKliqpVq6ZnnnnGzv0AAAA4iqOLqA8ezA/0EhwvGMo5A42MrCEna8jJGnKyhpysCYaczlZEzUVNAQAAbMSwBQAAYCOGLQAAABsxbAEAANjI0rB1of2IZR0LAABQGVgati60H7GsYwEAACoDS8PWhfYjlnUsAABAZXDe79k6l37Eso4FAACoDM6rrkf6dz9iaGiotx/xxhtv1LZt2xQbG6u2bdue0o/4n8cCAABUBuc9bJ1LP+KZjgUAAKjoLA9bF9KPuHjx4tOOBQAAqAzoRgxywdAXFWhkZA05WUNO1pCTNeRkTTDkRDciAABAgDBsAQAA2IhhCwAAwEYMWwAAADZi2AIAALCRz0s/ZGVlKSUlRVWqVFF4eLhmz56t4uJiJSUlqaCgQJ07d9bYsWMlSZs2bdKCBQvkcrk0ZcoUtWnTRqWlpXr00Ue1Y8cO1a9fXykpKapWrZrtGwMAAHACn2e2GjZsqKVLl2r58uWKjIxUamqqFi1apIEDByotLU3Z2dnKyclRSUmJ5syZoxdeeEFz5szRE088IUnKyMhQSEiIVqxYodatW2vVqlW2bwoAAMApfA5bDRo0UPXq1SVJVapUkdvt1rZt2xQZGSlJuuWWW/Tpp59q165datKkiWrWrKkGDRqouLhYx48fV2Zmpm655RZJUmRkpDIzM+3bDQAAgMNYfs/WoUOHtGLFCg0aNEhHjx71vhQYERGhw4cP6/Dhw4qIiPAeHxERoby8PB0+fFi1atWSJF100UXecmoAAIDKwNKwdezYMSUmJio5OVl169ZV9erVdfz4cUlSfn6+atWqpVq1aik//99XfM/Pz1ft2rUVEREhj8dzyrEAAACVhc9hq7i4WA8++KBiY2PVtm1bSVK7du20efNmSSfek9W+fXtdeeWV2rVrl44ePaqDBw/K7XaratWq6tChgzIyMk45FgAAoLLw+WnEdevWKTMzUwUFBVq2bJluvvlmxcfHKykpSUuWLFGnTp109dVXS5IeeOABjRw5Ui6XS5MnT5YkdevWTe+9956GDh2qSy65RCkpKfbuCAAAwEEoog5ywVDOGWhkZA05WUNO1pCTNeRkTTDkRBE1AABAgDBsAQAA2IhhCwAAwEYMWwAAADbyOWxlZWUpOjpaw4YNU0JCgjwej3JzczVq1CjFxMRo3rx53mM3bdqk6OhoDRkyRNu3b5ckff3114qKitK1116r3Nxc+3YCAADgQD4v/XCyG7F69epKS0tTamqqPB6PBg4cqNtvv10JCQnKyclR06ZNNWfOHC1fvlwFBQUaP3680tLS1LhxY6Wlpenee+8tj/0AAAA4is9hq0GDBt6v/9iNmJiYKOnf3Ygul8vbjVizZk1vN2LNmjXtWz0AAIDD2d6NCAAAUJnZ3o0IAABQmdnejQgAAFCZ2d6N+Ouvv2ry5Mn69ttvNW7cON11113q16+fvbsCAABwCLoRg1ww9EUFGhlZQ07WkJM15GQNOVkTDDnRjQgAABAgDFsAAAA2YtgCAACwEcMWAACAjRi2AAAAbOTz0g9ZWVlKSUlRlSpVFB4ertmzZ6u4uFhJSUkqKChQ586dNXbsWEkniqgXLFggl8ulKVOmqE2bNnr55Ze1atUqud1uXXvttXrkkUds3xQAAIBT2F5E3blzZ0VHR8vlcunBBx/UZ599pnbt2pXH3gAAAALO9iLqxo0bn3L70FCfDwkAAFBhlFsRdVZWln777Tddd911/ls9AACAw1k6zXSmIuqqVataKqLeuXOnUlJS9Nxzz9myCQAAAKeyvYj6wIEDmjBhgp588knVrVvX3t0AAAA4jO1F1M8884xyc3OVnJwsSRozZoy6dOli45YAAACcgyLqIBcM5ZyBRkbWkJM15GQNOVlDTtYEQ04UUQMAAAQIwxYAAICNGLYAAABsxLAFAABgI9u7ETMyMjR//nyFhoaqZs2aeuqpp1SjRg3bNwYAAOAEPj+NuH//fkVERHi7EfPy8uTxeNSmTRtvN2JSUpKaNm2qgQMHntaNWFhYqLCwMEnSvHnzdOmll2rw4MGWFsenEX0Lhk9oBBoZWUNO1pCTNeRkDTlZEww5ne3TiLZ3I1atWtV7+6NHj6pZs2YXshcAAICgUi7diGvXrlW/fv2UmZmpJk2a+HUDAAAATmZp2DpTN6IkS92IUVFReuONNxQVFaXFixf7fxcAAAAOZXs3YmFhofe+IiIivGfEAAAAKgPbuxFXrlyp9PR0SdJFF12kJ554wsbtAAAAOAvdiEEuGD6hEWhkZA05WUNO1pCTNeRkTTDkRDciAABAgDBsAQAA2IhhCwAAwEYMWwAAADZi2AIAALCRz2ErKytL0dHRGjZsmBISEuTxeJSbm6tRo0YpJiZG8+bN8x67adMmRUdHa8iQIdq+ffsp9/Pcc8/pjjvu8P8OAAAAHMzndbYaNmyopUuXeouoU1NT5fF4NHDgQG8RdU5Ojpo2bao5c+acVkQtSXl5ecrJybF9MwAAAE7j88xWgwYNVL16dUmnFlFHRkZK+ncR9a5du7xF1A0aNPAWUUvSwoULdc8999i4DQAAAGeyvYh63759OnjwoK655hr/rx4AAMDhbC+inj9/vkaPHm3P6gEAABzO9iLqPXv26IknnlBcXJz27t2rp556yt4dAQAAOIjtRdRLlizx3tcdd9yhhx56yKatAAAAOA9F1EEuGMo5A42MrCEna8jJGnKyhpysCYacKKIGAAAIEIYtAAAAG/l8z1ZAhbq9X7pDXCopLA7gYgAAAM6do4ete2Zs9H79YnKPAK4EAADg/Njejbh161Z17dpVsbGxio2N1cGDB+3bDQAAgMOUSzdijx49NHXqVNs3AwAA4DTl0o34/vvvKyYmRk8//bQcfKUJAAAAv7O9G7F169ZKT09XamqqDhw4oDfffNP/uwAAAHAo27sRa9SoobCwMIWEhKh37976+uuv7dkJAACAA9nejfjHAeyTTz5RkyZN7NkJAACAA9nejbh+/Xq98sorqlatmho3bqzx48fbuiEAAAAncXQ3YtRDr3u/fjG5h1RcEsDVOFMw9EUFGhlZQ07WkJM15GQNOVkTDDmdrRvR0Rc1/eOFTN0hLjFqAQCAYOPoYeuPZ7IYtAAAQDBy9rD1h27Ec0GPIgAAcApHD1t/7EY8F/QoAgAAp7B8UVMAAACcO59ntrKyspSSkqIqVaooPDxcs2fPVnFxsZKSklRQUKDOnTtr7Nixkk4UUS9YsEAul0tTpkxRmzZtJEkrV67U+vXrVVJSojFjxqhLly727goAAMAhbC+i/u6775Sdna2lS5eWw3YAAACcxfYi6o0bNyokJEQjRozQQw89pMOHD9u7IwAAAAexvYj6wIEDOnbsmJYuXapOnTpp4cKF/t8FAACAQ9leRB0REeF9j1bXrl31/fff27ANAAAAZ7K9iLpDhw766quvJElffvmlGjdubON2AAAAnMX2IuquXbtq8+bNio2Nldvt1syZM+3dEQAAgIMETRH1uahMpdXBUM4ZaGRkDTlZQ07WkJM15GRNMORUIYqozwWl1QAAwCkcPWyd79kpBi0AAOAUzh62zrOI+mwoqQYAAOXJ0cPW+RZRnw0l1QAAoDzZ3o24du1avfLKK5Kkffv26dZbb/V+UhEAAKCis70bMSoqSlFRUZKkcePGqWfPnrZvCgAAwCls70Y86ciRI9qxY4f3wqgAAACVge3diCdt3LhRt912m1wul/9WDwAA4HC2dyOetG7dOt1xxx3+XT0AAIDD2d6NKEm//fabDh48qJYtW9q4FQAAAOexvRtRktLT09W7d2/7dgEAAOBQFbIb8WwqWm9iMPRFBRoZWUNO1pCTNeRkDTlZEww5VbpuxLOhNxEAAJQnRw9bdpyBYtACAADlyfKlHwAAAHDunH1my4YiaieiHBsAgIrL0cOWHUXUTkQ5NgAAFZftRdQej0fjx49XUVGRXC6XZs2apQYNGti+MQAAACfw+Z6tk0XUy5cvV2RkpFJTU7Vo0SINHDhQaWlpys7OVk5OjkpKSjRnzhy98MILmjNnjp544glJJ66x1a5dO7300ksaMGCAXn75Zds3BQAA4BS2F1FfddVVKigokHSiwqdu3bo2bgcAAMBZbC+i/tOf/qRt27YpKipKy5cvV79+/fy/CwAAAIeyvYh68eLFioqK0tq1azVlyhTNmjXLnp0AAAA4kO1F1KWlpapTp44kqXbt2vJ4PDZuBwAAwFlsL6KOjY1VUlKS0tLSVFRUpGnTptm7IwAAAAepdEXUTnQh5djBUM4ZaGRkDTlZQ07WkJM15GRNMOREEbXDUY4NAEDF5ehhy44iaieqHLsEAKBycvawVUm6ES+E52ghOZWBvkkAgFM4etiqLN2I8L/K8hI0AMD5LF/UFAAAAOfO9iLqgwcPatKkSSosLFSLFi30yCOPyOVy2b4xAAAAJ7C9iPr555/X0KFD9dJLL8ntduuDDz6wfVMAAABOYXsR9a5du9S6dWtJ0p///Gd9+umnNm4HAADAWcqliPp///d/JUkffvihDh8+7OctAAAAOJftRdSjR4/Whx9+qBEjRqh69eqqX7++PTsBAABwINuLqGvVqqWnnnpKS5cuVWlpqbp3727vjgAAABzE9iLqLVu2eD+h2KdPH7Vs2dLeHQEAADiIo4uoDx5ydumkE4SEuFRa6tg/woD54xXkg6HA1AnIyRpysoacrCEna4Ihp6Atoq4s3YgXIiIIfgEDgd8cAIBTcAV5AAAAGzn7zBYFyz5RRO1beWVE+TUAoCyOHrYookYwofwaAFAWny8jZmVlKTo6WsOGDVNCQoI8Ho9yc3M1atQoxcTEaN68ed5j77//fnXs2FEvvPCC92e///67xo8fr6FDh2ratGkqLS21ZycAAAAO5LduREmaOnWqJk6ceMrtV61apdatW2vFihUKCQmhGxEAAFQqfutGPHnsf8rMzCzzWAAAgMrAb92IZ/LHzkRfxwIAAFQ0futGPJOIiAh5PB5LxwIAAFQ0futGPJMOHTooIyPD0rEAAAAVjV+7EWfMmKGPPvpIxcXF+v777zVz5kwNGDBAkyZN0t13361mzZqpW7dutm8KAADAKRzdjRj10OuBXgJg2YvJPYK6YioYusecgJysISdryMmaYMgpaLsRuUikbxRR+1ZeGblDXHQyAgBO4+hhK5jPEpQXiqh9K6+M+G0FAJTF2cMWnX8+0Y3oGxlZQ07WBConujeB4OXoYYtuRAA4gbdVAMHL8kVNAQAAcO5sL6LOyMhQnz59uL4WAAColHy+jHiyiLp69epKS0tTamqqPB6PBg4cqNtvv10JCQnKyclR8+bNNXXqVG3ZskWHDh3y3r5NmzZavXq1Bg0aZOtGAAAAnMj2IuratWt7exQBAAAqG9uLqAEAACoz24uoAQAAKjPbi6gBAAAqM9uLqLOzs/XUU09p7969GjFihEaPHq2bbrrJ9o0BAAA4gaOLqA8eoobGF7oRfSMja8jJmkDlFGxXkA+G4mAnICdrgiGnoC2iphvRN7oRfSMja8jJmkDlxN+GQPDiCvIAAAA2cvaZLUpxfaI82DcysoacrCEna86WU7C9JApcKEcPWxRRA0DFQ6k2Khufw1ZWVpZSUlJUpUoVhYeHa/bs2SouLlZSUpIKCgrUuXNnjR07VtKJbsTMzEwlJCQoLi5OkjRv3jx98MEHkqQePXooPj7exu0AAAA4i+3diFFRURo7dqyMMYqJiVFUVJQuvfRSWzcFAADgFLZ3IzZp0kSS5HK5FBoaqpAQ3pMPAAAqj3LrRkxPT1ejRo1Uv379818tAABAkLH0BvkzdSNWrVrVUjfiZ599phUrVmjhwoV+WTQAAECwsL0bcceOHZo5c6aeeeYZ79kwAACAysL2bsQZM2bI4/EoMTFRkpScnKwWLVrYuysAAACHcHQ3YtRDrwd6CQAAP3sxuQd1bP8nGDr/nCAYcjpbN6Kjhy2KqH2jPNg3MrKGnKwhJ2vOlhNXkP+3YBginCAYcqKIugKjPNg3MrKGnKwhJ2vOlhN/s6OycfawRf+YT/S0+UZG1pCTNeRkTXnlxFkyBANHD1t0IwIAzoaeRQQDLucOAABgI9uLqF999VWtXr1axhhdeeWVevzxx+V2cwoeAABUDrYXUffr10+DBg2SJE2aNElbt25V586d7dsRAACAg9heRB0WFiZJMsaotLRUjRo18tviAQAAnK5ciqiXLFmi3r176/Dhw6pXr96FrRgAACCIWBq2zlRELclSEfXIkSO1YcMGNW3aVKtXr77wVQMAAAQJ24uoCwsLvV/XrFmTMmoAAFCp2F5EPX/+fH322WcqLS3VFVdcoYSEBNs3BQAA4BR0IwY5etp8IyNryMkacrKmvHIK9ivIB0PnnxMEQ050I1Zg9LT5RkbWkJM15GRNeeXEswSCAVeQBwAAsJGzz2xR9uoTpbi+kZE15GQNOVlDTtb8Madgf0kUZ+boYYsiagBAZUGpdsXl82XErKwsRUdHa9iwYUpISJDH41Fubq5GjRqlmJgYzZs3z3vs/fffr44dO+qFF1447X6Sk5M1evRo/64eAADA4WzvRpSkH3/8Ub/99pttmwAAAHAq27sRJWnBggWKj4/315oBAACChu3diNnZ2br44otVv379C18tAABAkLG9G5GzWgAAoDKzvRvxp59+0oQJEzRp0iRt375dS5cu9c/KAQAAgoDt3Yhr166VJP3888/6+9//rhEjRti6IQAAACdxdDdi1EOvB3oJAACUixeTe1BTdwbB3o3o6GGLImrfKMX1jYysISdryMkacrLmjzlxBfkzC/Zhy9FXkGfC941SXN/IyBpysoacrCEna/6YE894FZezhy16tXyif8w3MrKGnKwhJ2sqck6cgcK5cvSwRTciAMBp6DDEubJ8UVMAAACcO9uLqFevXq3u3bsrNjZWsbGx9uwCAADAocqliDomJkZxcXG2bQIAAMCpyqWIeuXKlYqJieHq8QAAoNKxvYi6e/fuWr9+vf7nf/5HGRkZ+vzzzy940QAAAMHC9iLqiIgIud1uhYWF6bbbbtPXX3/tn5UDAAAEAduLqPPz8yVJxhhlZmaqSZMmflg2AABAcLC9iPrFF1/Uli1b5HK51L59e3Xu3Nn2TQEAADgF3YhBjv4x38jIGnKyhpysqcg5+fMK8sHQ+ecEwZAT3YgVGP1jvpGRNeRkDTlZU5Fz4pkJ54oryAMAANjI2We2KmiJqT9V5LJXfyEja8jJGnKyxok5USCNQHH0sEURNQDAXyiQRqDY3o0oSfPnz9fIkSMVGxur7777zv+7AAAAcCjbuxE3bdqkkJAQLVmyxNaNAAAAOJHt3Yhvv/228vLyNHz4cE2dOlWFhYX+XD8AAICj2d6NeODAAYWHh2vZsmWqU6eOXn311QtfNQAAQJAol27ELl26SJK6du2q77//3g/LBgAACA62dyN26NBBX331lSTpyy+/VOPGjf2xbgAAgKBgezfigAED9Mgjjyg2NlY1a9bU7Nmzbd8UAACAUzi6GzHqodcDvQQAQAXxYnIPx9XABUPnnxMEQ05n60Z09LBFEbVvFbns1V/IyBpysoacrHFiTk68gnwwDBFOEAw5UURdgVXksld/ISNryMkacrLGiTnxjIJAcfaw5bBeLSdyYv+Y05CRNeRkDTlZU5lycuIZMziLo4ctuhEBAE5H5yJ8sXxRUwAAAJw7n2e2srKylJKSoipVqig8PFyzZ89WcXGxkpKSVFBQoM6dO2vs2LGSThRRZ2ZmKiEhQXFxcZKkJUuW6L333pMk7d69W6NGjdLw4cNt3BIAAIBz2F5EPXLkSI0cOVKSNHjwYPXs2dO+3QAAADiM7UXUJ+3atUtVq1bVpZde6o91AwAABAXbi6hPWrdunfr27Xv+KwUAAAhCthdRn7Rhwwb16tXrwlYLAAAQZGwvopakr776Spdddpnq1q3rhyUDAAAED9uLqE/eBy8hAgCAysjR3YgUUQMAnO5CCq6DofPPCYIhJ4qoKzAnlr06DRlZQ07WkJM1lSmnC6nrCYYhwgmCISeKqCswJ5a9Og0ZWUNO1pCTNZUpJ56p4Iuzh61KUmJ6ISpT2ev5IiNryMkacrKGnKzxV06UYTubo4ctiqgBAPCNMmxns70b8eeff9bEiRMVEhKi8PBwPf300woPD7d3VwAAAA7h8zpbJ7sRly9frsjISKWmpmrRokUaOHCg0tLSlJ2drZycHEnS1KlTNXHixFNuv3LlSg0ePFgvvfSS2rRpozfffNOenQAAADiQ7d2IzZs3V35+vqQTV5vnwqYAAKAysb0bsX379kpLS1NUVJSysrLUtWvXC181AABAkLC9G3H27NmaOHGi1q5dq379+mnx4sX+WTkAAEAQsL0bsbS0VHXq1JEk1alTRx6Pxx/rBgAACAq2dyOOGTNG06dPV2joiYc62ZcIAABQGTi6roduRAAAfLuQfsZgEOx1PY4etuhG9K0y9Y+dLzKyhpysISdryMkaf+VU0a8gH+zDlqOvIF+Rp3R/qUz9Y+eLjKwhJ2vIyRpyssZfOfFs6WyWL/0AAACAc8fLiEGOU/W+kZE15GQNOVlDTtaQkzXnm1N5vrwatC8jUkQNAADOl1MKun2+jJiVlaXo6GgNGzZMCQkJ8ng8ys3N1ahRoxQTE6N58+Z5j73//vvVsWNHvfDCC96f/fDDDxo2bJiGDRumBQsW2LMLAAAAh/J5ZutkEXX16tWVlpam1NRUeTweDRw4ULfffrsSEhKUk5Oj5s2ba+rUqdqyZYsOHTrkvf2sWbOUnJysli1bauzYsfrhhx/UrFkzWzcFAADgFLYXUe/du1ctW7aUJLVq1cp7LAAAQGVgexH1VVddpY8//ljFxcXaunUrdT0AAKBSsb2IeuLEiVq6dKkSEhJ02WWX6ZJLLvHPygEAAIKA7UXUDRs21IIFC7Ro0SIVFBSoW7duflo6AACA89leRL1mzRqtWrVKLpdLw4cP18UXX2z7pgAAAJzC0Rc1pYgaAACcr/Is6KaIugLj6sO+kZE15GQNOVlDTtaQkzVcQd5OFFH7RNmrb2RkDTlZQ07WkJM15GTN+ebklCnC2cNWqDvQK3A8z9FCcvKBjKwhJ2vIyZpgz6k8z4ig4nP0sEU3IgAgEJzSqYeKweewlZWVpZSUFFWpUkXh4eGaPXu2iouLlZSUpIKCAnXu3Fljx47V7t27NXnyZLlcLoWGhurxxx/XFVdcod9//12TJk3SgQMHdPXVV2vatGkKCbF8LVUAAICg5nPqOdmNuHz5ckVGRio1NVWLFi3SwIEDlZaWpuzsbOXk5CgiIkLz589Xamqq4uLivKXTq1atUuvWrbVixQqFhITogw8+sH1TAAAATuG3bsQ6deqodu3apxwnSZmZmWX2KAIAAFQGfu9GPH78uJ599lkNHz5cknT48GFFRESUeSwAAEBF59duxJKSEk2YMEHDhw9Xs2bNJJ0YsE6WT/vqUQQAAKho/NqN+Oijj6p9+/bq1auX9/YdOnRQRkbGaccCAABUBj6HrZPdiMuWLVNsbKwWL16s+Ph4vfLKK4qJiVHLli119dVXKzMzU6+99po2btyo2NhYpaSkSJIGDBigzz//XHfffbcKCwspogYAAJWKo+t66EYEAARCeXXq1eYK8pYEQ050I1Zg9Gr5RkbWkJM15GRNsOdUXleQD4YhwgmCISe6ESswerV8IyNryMkacrIm2HPi2Qf+xKXcAQAAbOTsM1tBXGJaXoK97LU8kJE15GQNOVlDTtb4KyeKs53N0cMWRdQAAPhGcbaz2V5EnZGRoZSUFB04cECZmZnlsScAAADH8PlpxP379ysiIkLVq1dXWlqa8vLy5PF41KZNG91+++1KSEhQUlKSLr74YrlcLtWuXVsZGRl6++23NWPGDOXl5alatWoaNGiQ1q1bd06L49IPAAD4Vl6XqgiUYP80ou1F1LVr1/b2KAIAAFQ2thdRAwAAVGa2F1EDAABUZrYXUQMAAFRmthdRZ2dna8SIEdq7d69GjBihjz76yPZNAQAAOIWjuxH5NCIAAL7xacTAo4i6Agv2stfyQEbWkJM15GQNOVnjr5wq+hXkg33YcvQV5CvylO4vwV72Wh7IyBpysoacrCEna/yVE8+WzubsYascerUq+r8GAABAYDl62CqPbkT6pAAAgJ0sX9QUAAAA5872Iup58+bpgw8+kCT16NFD8fHxtm8KAADAKXwOWw0bNtTSpUu9RdSpqanyeDwaOHCgt4g6JydHF198sebPn+8tol6wYIFmzJihqKgojR07VsYYxcTEKCoqSpdeeml57A0AACDgbC+ibtKkiSR5z3iFhPDKJQAAqDzKrYg6PT1djRo1Uv369f20dAAAAOez9GnEMxVRV61a1VIR9WeffaYVK1Zo4cKF9uwCAADAoWwvot6xY4dmzpypZ555xns2DAAAoLLweWbrZBF1QUGBli1bpptvvlnx8fFKSkrSkiVL1KlTp1OKqK+//npt3LhR11xzjSZNmqQZM2bI4/EoMTFRkpScnKwWLVrYvjEAAAAnqPTdiMF+Bflg6IsKNDKyhpysISdryMkacrImGHKiG/Es6JMCAAB2cvSZLQAAgGDHRa8AAABsxLAFAABgI4YtAAAAGzFsAQAA2IhhCwAAwEYMWwAAADZi2AIAALARwxYAAICNHDlsvfLKKxoyZIhiY2O1Z8+eQC/HMbKyshQdHa1hw4YpISFBHo9Hubm5GjVqlGJiYjRv3rxAL9ExMjMz1aJFC+Xm5pLRGWzfvl333HOPYmNjtXjxYnI6g8cee0xDhgzRXXfdpa1bt+r333/X+PHjNXToUE2bNk2lpaWBXmLAFBUVaciQIWrfvr3S09Ml6Yy/R5s2bVJ0dLSGDBmi7du3B2rJ5a6sjJKTkxUdHa3BgwdrzZo13mMr83NfWTmdNHLkSD322GPe74MyJ+Mwhw4dMoMGDTJFRUXmiy++MOPGjQv0khxj37595ujRo8YYY1asWGHmz59vUlJSzJtvvmmMMSY+Pt7s2LEjkEt0jAceeMAMGDDA/Pbbb2RUhuPHj5v4+Hjv75MxhpzKsHPnTjN8+HBjjDG//PKLGTp0qFm+fLlZtGiRMcaY6dOnm/fffz+QSwyo0tJSs3//fjN37lzz1ltvGWPK/j0qLi42/fv3N/n5+Wbfvn1myJAhgVx2uSoro507dxpjTvz/sFevXqaoqKjSP/eVlZMxxmzZssXEx8ebRx991BgTvDOC485sbd++XTfeeKNCQ0PVpk0b7dy5M9BLcowGDRqoevXqkqQqVarI7XZr27ZtioyMlCTdcsst+vTTTwO5REfYtGmT2rVrp/DwcEkiozJ8/vnnqlatmsaNG6d77rlH3377LTmVoV69eqpWrZqKi4vl8XhUt25dZWZmktP/cblcql+//ik/K+v3aNeuXWrSpIlq1qypBg0aqLi4WMePHw/EkstdWRk1adJE0r//Hne5XJX+ua+snCRp2bJluvvuu73fB2tOjhu2Dh8+rFq1anm/N1Q3nubQoUNasWKFBg0apKNHj6patWqSpIiICB0+fDjAqwus0tJSrVixQjExMd6fkdHpDhw4oJycHM2ZM0ePPPKIHn30UXIqQ40aNdSwYUP17t1bcXFxiouL0+HDhxURESGJnMpS1u/RHzM7+fO8vLwArdA5XnzxRd1+++1yu90895UhPT1df/nLX7y/T1LwzgiOG7YiIiLk8Xi834eEOG6JAXXs2DElJiYqOTlZdevWVfXq1b3/QszPzz/ll7AyWrt2rW699VZVrVrV+zMyOl1ERITatm2r8PBwNWvWTEeOHCGnMmzZskV5eXl6++23tXr1aj322GOn/B1FTqcr6/eoVq1ays/P9x6Tn5+v2rVrB2iFzpCenq4vvvhC9913nySe+/5TSUmJVq5cqbvuuuuUnwdrTo5b5XXXXadPP/1UJSUl+uqrr3TllVcGekmOUVxcrAcffFCxsbFq27atJKldu3bavHmzJCkjI0Pt27cP5BID7vvvv9eGDRsUFxen7777Tg8//DAZleG6667Tzp07VVpaqoMHDyosLIycylBaWqpatWopJCRENWvW1NGjR9WhQwdlZGRIIqeylPV7dOWVV2rXrl06evSoDh48KLfbfco/iCqbrVu3asWKFXryySe9wwLPfaf617/+pdzcXN17772aNWuWNm3apHXr1gVtTi7jwHNwaWlpev311xUaGqrHH388aMK025o1azRjxgy1atVKknTzzTdrwIABSkpKUkFBgTp16qTExMQAr9I5YmNjNWfOHEkiozK8+uqrWr16tYqLizVhwgQ1a9aMnP5DSUmJJk2apL179+r48eP661//qh49emjSpEn617/+pWbNmmn69OlB869rOyQmJurLL79UeHi4unbtqlGjRpX5e/Tuu+9q4cKFcrlcmjx5sq677roAr7z8/GdGb7/9tmrUqOF9aXXOnDmqW7dupX/u+8+ckpKSJJ0YTjds2KCpU6dKCs4ZwZHDFgAAQEVRef85BgAAUA4YtgAAAGzEsAUAAGAjhi0AAAAbMWwBAADYiGELgF+0aNFCzz77rPf7SZMmea9H5S+JiYnq16+f3njjjTMek5aW5vgibY/Ho5UrVwZ6GQDKCcMWAL+oWbOmXnvtNR07dsyW+z9w4IB27dqlN954Q/369bPlMcoLwxZQuTBsAfCLatWqqWfPnnr11VdP+2+bN29WVFSU7rjjDktnnebPn6877rhDUVFReu+99yRJY8aM0e7du9W/f3999913pxz/zjvvqFevXho0aJC2b9/u/fn27ds1YMAARUVFadq0aSopKZF0oix50KBB6tevn0aNGiXp1DNxP//8s7cmZN68eZo8ebKGDBmi7t2765NPPtFDDz2kXr16ae7cud7HevXVVzVw4ED169fPe4Zv69atiouL05gxY9SzZ08999xzkqSnn35a33//vfr376/Fixfr448/VlRUlPr3768hQ4ZYCxxA8DAA4AedO3c2+/btMz179jRFRUVm4sSJZvPmzebYsWMmMjLS/PLLL6awsNBER0ebTz/99Iz388UXX5iBAwea48ePm/3795vIyEhz5MgRs2fPHjN48ODTjj95//v27TPHjx83gwYNMnPnzjXGGNO3b1+TnZ1tjDEmMTHRrFmzxhw/ftx0797d5OTkGGOMOXTokDHGeNdrjDnlsebOnWvi4uJMSUmJ2bhxo+nQoYP56aefzPHjx83NN99sjhw5Ynbs2GHGjRtniouLTUlJiRk9erTZvn27+fjjj02nTp1Mbm6uOXr0qOnWrZspKCg4bS+jR482H330kTHGGI/Hc4F/EgCchjNbAPymQYMGateund58803vz3bu3KlmzZrpsssuU5UqVdSnTx9t27btjPexbds29erVS2FhYapfv77+/Oc/Kycn54zHn7z/Bg0aKCwsTD179pR04qW60tJStW7dWpIUFRWlbdu26ccff1Tjxo3VrFkzSbJUiNytWzeFhISoRYsWuvzyy9WoUSOFhYXp8ssv18GDB/XRRx/p888/14ABA3TnnXfqhx9+0O7duyVJbdu2VZ06dVS9enVdccUVOnDgwGn3f8MNN2jWrFlavny5CgsLfa4HQHAJDfQCAFQscXFxeuihh9SyZctye0yXy1Xm1+ciJCRE5v/ay/5z4KlSpYr3vk9+ffI2JSUlMsYoJiZGY8aMOeV2W7duVVhY2GnHh4ae+lfv6NGj1a1bN7333nsaPHiwVq1apTp16pzXPgA4D2e2APhVs2bNdPnll+ujjz6SJDVt2lQ//PCD9u/fr+LiYqWnp6tt27ZnvH3btm31zjvvqKioSAcPHtTXX3+t5s2bn/H4pk2bKicnR/v371dRUZE2btwoSYqIiJDb7da3334rSVq/fr3atWunq666Snv27NEPP/wgScrLy5MkNWzYUN98840ked8nZlWnTp20fv16eTweSdK+fft06NChMx5fo0YNFRQUeL/fs2ePWrVqpfvvv1+XX3659u3bd06PD8DZOLMFwO/i4+MVHR0t6cQb56dNm6b4+HiVlpaqV69eat++vSSpf//+ev3110+5bZs2bXTzzTfrzjvvlMvlUnJysmrUqHHG4aVatWqaMmWKhg8froiIiFMGs8cff1xTpkxRUVGRbrjhBvXt21dut1szZ85UUlKSioqKdNlll+n555/X4MGDde+99yo9PV1dunQ5p/3+6U9/UlxcnIYNGyZjjGrUqKH//u//PuPxderUUYsWLbxviv/ll1+0detWhYSEqG3btuV6VhCA/Vzm5HlzAAAA+B0vIwIAANiIYQsAAMBGDFsAAAA2YtgCAACwEcMWAACAjRi2AAAAbMSwBQAAYKP/DwIMQGQcpJx9AAAAAElFTkSuQmCC\\n\",\n      \"text/plain\": [\n       \"<Figure size 720x432 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"litstudy.plot_year_histogram(docs_scopus);\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"In this example, we discover that one document was published in 1997. This document should not be in our set since GPUs were not used for general purpose computing before 2006. We can remove this document by filtering on year of publication.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"metadata\": {\n    \"scrolled\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"docs = docs_scopus.filter_docs(lambda d: d.publication_year >= 2000)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Print how many papers are left\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"1386 papers remaining\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"print(len(docs), 'papers remaining')\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## General statistics\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"litstudy supports plot many general statistics of the document set as histograms. We show some simple examples below. \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 8,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAmMAAAGBCAYAAAAqrLZpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAArW0lEQVR4nO3deXRU9d3H8c9khmzAJFACFh5BsFFpWSqJKCi7IIggiy0EiFXKoihSq1CiIMuBooKVICiboCiLIlsDEoh9hOAOhqckCAqyCIplTTIkmGXmPn94mJZCHIjc+WV5v87hnMydyf18M8xMPrn3zh2HZVmWAAAAYESI6QEAAAAqM8oYAACAQZQxAAAAgyhjAAAABlHGAAAADKKMAQAAGEQZA3DVjRgxQu+++67/8tKlS/XMM8/YnvvZZ5+pe/fuGjBgwM9az9GjR/X73//+ktfdfvvtkqTMzEzNmDGjVOtOTU31X16+fPkFlwFUPi7TAwCoeJKSkjRkyBB17NhRBQUFWrJkiVasWFHq9Xm9XjmdzoC3W79+vR5//HHdeeedpc66XE2bNlXTpk2v+Pu+/fZbbdq0SV27dpUkJSQkXO3RAJQzlDEAV921116r7t27a8GCBcrOztYDDzyg0NBQjR49WgcOHJAkjR8/Xr/97W/13nvvad68eSosLFTdunU1Y8YMVa1aVWPHjlV4eLgyMzPVvXt3DR482L/+w4cPKykpSR6PR40aNdK0adO0efNmpaam6qOPPtKHH36oCRMm+G+/evVqbdmyRSdOnNDp06f14IMPqn///vr000+1YsUKvfjii5KkxMRETZw4UWFhYSosLNTIkSO1f/9+xcfHa9KkSQoJ+ffOhP/83rNnz2rChAn66quvFBISoilTpqhhw4YaMWKEPB6PLMvSuHHjFB8frxdffFFff/217r33Xv3xj3/U4cOHVatWLSUkJGjXrl2aOHGiioqK1KJFCz3zzDNyOp3q2LGjevXqpffee0/Vq1fXvHnzVK1aNT333HN6//33FRoaqp49e2rIkCFB+h8GcFVZAGCDc+fOWV27drXuu+8+y+v1WtOnT7fS0tIsy7KsY8eOWb1797Ysy7Kys7P93zN//nzrtddesyzLsv7yl79Yf/7zny2fz3fRuocMGWJt2rTJsizLeu6556w5c+b4v2fr1q0X3X7VqlVWhw4dLI/HY3k8HqtLly7W999/b33yySfWn/70J//tBg0aZO3fv986cuSIddNNN1lffPGF5fP5rEceecTauHGjZVmW1bp1a8uyrAu+99lnn7VmzZplWZZlFRUVWR6PxyosLLQ8Ho//573vvvsu+j7LsqxZs2ZZy5YtsyzLsrp3725lZmZalmVZo0aNstauXWtZlmV16NDBWrNmjWVZljV58mTrrbfesk6fPm116NDB8nq9lmVZVm5u7k//hwAos9gyBsAW4eHh6tq1q2rVqqWQkBB99NFHSk9P10svvSRJys7OVnFxsY4dO6ZRo0bp1KlTOnfunFq3bu1fx1133SWHw3HRuvfs2aMuXbpIknr27HlZx261bdtW1apVkyS1atVKmZmZql69eom3b9iwoRo3bixJuvvuu/X555/7dy3+t08++UTz58+XJLlcLlWrVk2FhYWaPn26MjIyFBISom+++eYn58vNzZXP51OTJk0kST169FB6erruvfdeSVKnTp0kSY0bN9aRI0dUvXp1Va1aVU8//bTuvPNOtW/fPuB9AKBsoowBsE1ISIh/155lWVqwYIHq1KlzwW2mTJmikSNH6tZbb1Vqaqq2bNnivy48PPyqzfKfpe78106nUz6fz7+8sLCwxNtfqhT+lJSUFBUVFWnt2rVyOp26+eabSzu6JCk0NFTSj/ep1+uVy+XSqlWrtG3bNqWkpCgtLU3PPvvsz8oAYAbvpgQQFK1atdKyZcv8l/fu3StJOnv2rGJiYuTz+bRu3brLWlfjxo31v//7v5J+PGg/Li4u4Pekp6fr7NmzOnv2rD7++GM1bdpUv/zlL7V//34VFxfr22+/1Zdffum//YEDB7R3715ZlqWNGzf+ZEarVq38b1AoLi725/ziF7+Q0+lUamqq8vPzJUlVq1ZVXl7eRetwu91yOp3++2XDhg0/mZmXlyePx6NOnTpp9OjR2rNnT8D7AEDZxJYxAEHxyCOPaMqUKerRo4e8Xq9atWql8ePHa8SIERo6dKiio6PVokULeTyegOsaN26ckpKS9OKLL/oP4A/kN7/5jYYOHeo/gP/8FrpWrVqpe/fuuvHGGxUbG+u//Y033qg5c+Zo3759uuWWW9S5c+cS1z1ixAhNmDBBPXr0kNPp9P+cw4cPV48ePXTrrbeqVq1a/vX+8MMP/gP4/9PUqVP11FNPqaioSDfffLO6d+9eYmZeXp4efvhhFRUVyeFwaNSoUQHvAwBlk8OyLMv0EABgp9WrV+vAgQN68sknTY8CABdhNyUAAIBBbBkDAAAwiC1jAAAABlHGAAAADKKMAQAAGEQZAwAAMKhcn2fsxInA5yMCAAAwLSam5I9fY8sYAACAQZQxAAAAgyhjAAAABlHGAAAADKKMAQAAGEQZAwAAMIgyBgAAYBBlDAAAwCDKGAAAgEGUMQAAAIMoYwAAAAZRxgAAAAyijAEAABjkMj0AAACVnTPUJa/PsjcjxCFvYbGtGSgdyhgAAIZ5fZYGT0mzNWPRuM62rh+lx25KAAAAgyhjAAAABlHGAAAADKKMAQAAGGRbGSsqKlL//v0VHx+v1NTUC6578MEHNXnyZP/lt99+W/3791diYqKOHDli10gAAABljm1lzOVyadasWfrDH/5wwfKPPvpIVapU8V/Ozs7WypUr9eabb2r06NGaMWOGXSMBAACUObaVMYfDodq1a1+0fMmSJRo4cKD/8q5du9SyZUu5XC41a9ZMBw8etGskAACAMieo5xlLTU3VHXfcofDwcP+ynJwcRUVF+S9b1uWf9C46OvKqzgcAgAm5+YW2Z4SEOOTm92aZFLQy5vV6tXLlSr3yyivauXOnf7nb7daXX37pvxwScvkb67Kz86/qjAAAGOFy2h7h81n83jQoJqZ6idcFrYydPHlSp0+f1sMPP6ycnBydOnVKLVq00B133KGXX35ZXq9Xe/fuVYMGDYI1EgAAgHG2lrFRo0YpKytLkZGRatOmjdasWSNJ+vTTT7Vp0ybdc889kqRevXpp4MCBcrlcmjp1qp0jAQAAlCkO60oO0ipjTpzwmB4BAICfz+UMzmdTFnttzUDJfmo3JSd9BQAAMIgyBgAAYBBlDAAAwCDKGAAAgEGUMQAAAIMoYwAAAAZRxgAAAAyijAEAABhEGQMAADCIMgYAAGAQZQwAAMAgyhgAAIBBlDEAAACDKGMAAAAGUcYAAAAMoowBAAAYRBkDAAAwiDIGAABgEGUMAADAIMoYAACAQZQxAAAAgyhjAAAABlHGAAAADKKMAQAAGEQZAwAAMIgyBgAAYBBlDAAAwCCX6QEAACgLnKEueX2WvRkhDnkLi23NKE+4z39EGQMAQJLXZ2nwlDRbMxaN62zr+ssb7vMfsZsSAADAIMoYAACAQZQxAAAAgyhjAAAABlHGAAAADKKMAQAAGGRbGSsqKlL//v0VHx+v1NRUSdK4cePUr18//e53v9PatWv9t3377bfVv39/JSYm6siRI3aNBAAAUObYdp4xl8ulWbNm6a233vIvGzJkiK677joVFhaqZ8+euueee3T27FmtXLlSy5cv1xdffKEZM2YoOTnZrrEA4LJxQkoAwWBbGXM4HKpdu/YFy6677jpJUpUqVeR0OuVwOLRr1y61bNlSLpdLzZo108GDB+0aCQCuCCekBBAMRs7Av2jRInXr1k1Op1M5OTmKioryX2dZl/9XaHR0pB3jAYAkKTe/0PaMkBCH3LyWlQkm/78r62Otsv7c/y3oZSw1NVX//Oc/NXPmTEmS2+3Wl19+6b8+JOTyD2PLzs6/2uMBwL+5nLZH+HwWr2Vlhcn/78r6WKtEP3dMTPUSrwvquyk//fRTLVu2TM8//7y/dDVv3lzbt2+X1+vV7t271aBBg2COBAAAYJStW8ZGjRqlrKwsRUZGateuXdq8ebOqVq2qoUOHSpKSk5NVs2ZN9erVSwMHDpTL5dLUqVPtHAkAAKBMsbWM/fe7IseMGXPJ2yUkJCghIcHOUQAAAMokTvoKAABgEGUMAADAIMoYAACAQZQxAAAAg4yc9BUAgEvhI6hQGVHGAABlBh9BhcqIMgYAZRBbiIDKgzIGAGUQW4iAyoMD+AEAAAyijAEAABjEbkoAACoxjk80jzIGAEAlxvGJ5rGbEgAAwCDKGAAAgEGUMQAAAIMoYwAAAAZRxgAAAAzi3ZQAgAtwqgMguChjAIALcKoDILjYTQkAAGAQZQwAAMAgyhgAAIBBlDEAAACDOIAfQJnGO/sAVHSUMQBlGu/sA1DRsZsSAADAIMoYAACAQZQxAAAAgyhjAAAABlHGAAAADKKMAQAAGEQZAwAAMIgyBgAAYBBlDAAAwCDOwA8gID6SCADsY1sZKyoqUmJiovbv368pU6aoa9euOn36tMaMGaO8vDy1bt1aI0eOlCS9//77mjt3rhwOh5566ik1a9bMrrEAlAIfSQQA9rFtN6XL5dKsWbP0hz/8wb9swYIF6tu3r5YvX67MzEzt379fXq9XycnJevXVV5WcnKxp06bZNRIAAECZY1sZczgcql279gXLMjIy1KFDB0lS+/bttX37dh06dEjXXXedqlWrpjp16qi4uFgFBQV2jQUAAFCmBPWYsfz8fIWHh0uS3G63jh49qpycHLndbv9t3G63srOzVadOnYDri46OtG1WAP+Wm19oe0ZIiEPuSzynySabbLLtyC5LglrGIiIiVFBQoLCwMHk8HkVFRSkqKkoej8d/G4/Ho+jo6MtaX3Z2vk2TAriAy2l7hM9nXfo5TTbZZJNtR3aQxcRUL/G6oJ7aIi4uTlu3bpUkpaenKz4+Xg0aNNChQ4eUn5+vEydOyOl0KiwsLJhjAQAAGGPrlrFRo0YpKytLkZGR2rVrl4YOHaoxY8Zo8eLFuu222xQbGytJevTRR/Xggw/K4XAoKSnJzpEAAADKFFvLWHJy8kXLFi5ceNGyTp06qVOnTnaOAgAAUCZxBn4AAACDKGMAAAAGUcYAAAAMoowBAAAYRBkDAAAwiDIGAABgEGUMAADAoCsqYzk5Odq7d69dswAAAFQ6AcvYgAEDdPbsWZ0+fVp9+vTRtGnTNGnSpGDMBgAAUOEFLGPnzp1TtWrVtHHjRvXt21evv/66MjIygjEbAABAhRewjBUXF+uzzz7TmjVr1LFjR0mS1+u1fTAAAIDKIGAZGzdunBYtWqQuXbropptu0pEjR3TrrbcGYzYAAIAKL+AHhe/evVtz5871X7722mtVr149W4cCAACoLAJuGUtJSblo2bp162wZBgAAoLIpccvYypUr9c477+jQoUPq37+/f3leXp5uuOGGoAwHAABQ0ZVYxrp27apWrVpp5syZevzxx/3Lq1atqujo6GDMBgAAUOGVWMaqV6+u6tWra8aMGfrhhx90/Phxeb1eFRYW6syZM2rYsGEw5wQAAKiQAh7AP2/ePC1fvlzXXnutf5nD4dCSJUtsHQwAAKAyCFjGVq9erdTUVIWHhwdjHgAAgEol4LspGzZsqMLCwmDMAgAAUOkE3DJWVFSkbt26qUWLFgoNDfUvf+GFF2wdDAAAoDIIWMaGDx8ejDkABOAMdcnrs+zNCHHIW1hsawYA4EIBy1jLli21e/duHT58WHfffbeys7P1ww8/BGM2AP/B67M0eEqarRmLxnW2df0AgIsFPGZszpw5mj17tpKTkyVJBQUFF5x3DAAAAKUXsIylpaXp5ZdfVkREhCSpTp06ysvLs30wAACAyiBgGXO5ftyT6XA4JEkej8f/NQAAAH6egMeMJSQk6PHHH1d2drbmz5+vDRs2aPDgwcGYDQAAoMILWMb69u2r3/72t/r4449lWZZmzJih2NjYYMwGAABQ4QUsY5JUt25dtW3bVl6vV5J08OBBPpsSAADgKghYxl566SWtXr1a//M//+NfxmdTAgAAXB0By9iGDRu0adOmC86+DwAAgKsj4Lspf/Ob3+jEiRPBmAUAAKDSCbhlrH///urTp4/q1aun0NBQWZYlh8OhFStWBGM+AACACi1gGXv66af117/+VTfccINCQgJuSAMAAMAVCFjGatasqU6dOgVjFgAAgEonYBlr1KiRhg0bprZt26pKlSr+5f369StV4OTJk/XFF1/I5/PpiSeeUPPmzTV27FgdP35csbGxmjBhAlvgAABApRGw9dStW1fNmjVTdna2Tpw44f9XGocOHdLXX3+tFStWKDk5WbNmzdKqVavUpEkTLVu2TCEhIdq2bVup1g0AAFAeBdwy9uijj161sFq1aik8PFzFxcXKzc1VzZo1tWPHDn9G+/bttX37drVr1+6qZQIAAJRlActYv379LvnB4KV5N2XVqlVVt25dde3aVT/88INmz56tWbNmye12S5LcbrdycnKueL0AAADlVcAy9re//c3/dWFhof7xj3+UujB9+OGHys7O1ubNm3Xy5Ek99NBDql+/vnJzcxUTEyOPx6OoqKjLXl90dGSp5gDKo9z8QtszQkIccl/ieUU22WSTXdGyy5KAZaxevXoXXB4yZIj69OmjJ5544orDfD6foqKiFBISomrVqik/P1+33HKL0tPTdf311ys9PV133HHHZa8vOzv/imcAyi2X0/YIn8+69POKbLLJJruiZQdZTEz1Eq8LWMY++OAD/9c+n0979uy55G7Ly3H77bcrJSVFAwYMUEFBgUaMGKHOnTtr7NixGjhwoK6//nq1bdu2VOsGAAAojy7rsynPCwkJUd26dfXyyy+XKszpdGr69OkXLU9OTi7V+gAAAMq7gGVs2rRpwZgDAACgUgp4nrFhw4YpNzfXfzknJ0cPPfSQrUMBAABUFgHL2PHjx/2nnpCkqKgoff/997YOBQAAUFkELGNVqlTRwYMH/ZcPHDgglyvg3k0AAABchoCtKikpScOHD1eDBg1kWZaOHDmi559/PhizAQAAVHgBy1iLFi20fv16/9axRo0aXfCB4QAAACi9gGXMsixt2rRJGRkZkqT4+HjdfffdpT7XGAAA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PFq6dKmSkpIUFRWlZ599VsuXL7c1e+rUqXK5XGrcuLE++ugjRUZGqri4WE2aNNHvf/97W7MnTZokh8Oh9u3by+12y+PxaOvWrSoqKtKkSZNszS7J4MGDbX+svfrqq0pLS1OVKlV07bXXauLEiQoNDfU//u2UlJQkSfL5fMrJyVHDhg1VrVo1HT161Pbn90MPPXTRsszMTDVt2lRz5861Nfv8ffv6668rPT1dnTp10o4dO1SvXj098cQTQcmeOHGioqOj1aZNG2VlZemzzz7TnDlzbM1u166drrnmGoWGhuqee+7RXXfdpejoaFszz3vooYfUrFkzeTwe7dy5Uz179lR0dLRWrFhh++N8/vz5ysrKUuPGjfXpp5/ql7/8pfLy8tSrVy917NjR1mxe14L/uiZVwC1j5+3YsUNLly6V9OMTetCgQbZnnt/ydurUKf3ud7+TJNWpU0evv/667dl16tRRcnKy8vLylJaWpunTp+vkyZPq2rXrJX+JXE1er1f33nuvJOmtt95S27ZtJSkoWyq++uor//3bs2dP/5P2gQcesL2M7du3T2+++eYFy9q0aaPExERbcyWpZcuWl9xa8O2339qenZaWphUrVkiSUlNTNWzYMM2cOVPB+Lvum2++0dKlS2VZlrp16+YvQcG4z2vVqqXTp09r2LBhiomJkWVZSkpK0vjx423PPm/z5s1avHixQkNDlZCQoISEBNszzz+PDx486H+uxcXF6b333rM9u379+nrjjTd0+PBhpaSkKDExUfXq1VP37t3Vo0cPW7Pz8vI0YsQIST++tgwYMECS/I99O23btk1vvPGGJGno0KEaPny4FixYoMGDB9texnhdC/7rmlQBy9ihQ4c0ZcoUff/99yoqKlKVKlUkSefOnbM9++6779aECRN03XXXKSkpSbfffrt2794dtF1mklS1alX16tVLvXr10unTp7Vx40bbM0NDQ/XKK6/o7Nmzqlq1qpYvX64aNWrYvltY+vEXxZYtW/TrX/9aH374oX8zvs/nsz07JiZGixYtUvv27RUVFaXc3Fxt3brVv5vc7ux33nlHYWFhFyx/8MEHbc/+zxenrl27KiYmRsOHD5fH47E9+zyHw6H+/fsHLU+SpkyZooMHD2ru3LmqVauWhg4dqvDwcNWrV8/27GPHjmnx4sU6c+aM/zXN4XAE5RfFLbfcovnz5+vXv/61Zs+erdtvv11ZWVmqXbu27dnnNWjQQI8++qgeffRR7d69Wxs2bLC9jFmWpb///e/Kzc2V1+vVtm3bFB0dreLiYltzzzu/eywjI0OhoaEKCQnhdc1Gpl/XKtxuys8++8z/ddOmTRUREaGzZ89qw4YN6tevn+35X331lTZv3qzjx48rKipKt9xyi9q0aSOHw2Fr7vr163XPPffYmlESj8ej1NRUNWrUSDfccIMWLlwon8+nQYMG2X6sx8mTJzV37lwdPnxYN954o4YNGya3262PPvpIrVu3tjW7oKBA77zzjj7//HPl5OQoKipK8fHx6tOnj8LDw23N3rZtm5o3by63233B8qysLDVp0sTW7NmzZ6tnz56qX7++f9m+ffs0depUvfbaa7Zmr1q1Svfee+8FW10LCwv1yiuvaNSoUbZm/6esrCzNnTtXR44c0bp162zPW7Nmjf/rzp07q1q1ajp79qwWLVqkxx57zPb8LVu2aNOmTf7XtZYtW6p3794X/dK82l577TU98MADtmaU5Ntvv9Xbb7+tG264QXFxcZo+fbokafjw4bb/gX3gwAFNnz5d3333nRo1aqS//OUvuuaaa7Ru3Tr/Xgi78LoW/Nc1qQKWsfMKCwv9D6TQ0FCyyQYAoEyqcKe2yMrK0oABA5SYmKixY8cqMTFRAwcOVGZmpu3ZmZmZ/uykpCR/9q5du2zPLunnDkb2f/7cJrODfZ+X5PxB5mSTTTbZ5S37u+++0/jx4zVp0iQdOnTIv/y5554LavbBgwcrTbZUAY8Zmzp1qmbOnHnB7rETJ07oscces/2dfX/961+NZVfWn9tk9uLFiy9aZlmWdu7caWsu2WSTTbZdnn76aQ0ePFhVqlTRuHHj9MADD+jOO+9UVlZWULPHjx9fabKlCljGLMu6aH9z9erVg3KgK9mVK3vevHkaO3bsRVnnD7Amm2yyyS5v2cXFxWrTpo0k6eabb9bo0aP1/fff237cc2XOlipgGRs+fLgGDBighg0byu12Kzc3V4cOHdLIkSPJJvuqio+PV+vWrS96V9nu3bvJJptssstlts/nU25urtxut8LCwjRz5kxNnDhR//znP8m2UYU8gN/n8+nQoUPKycmR2+3WddddF5TTLJBd+bIBoCL55ptvFBUVpaioqAuW79ixQ/Hx8WTbpMJtGZN+PDnhjh07/O+uk6Trr7+ebLKvuq+//vqC7Pj4eLLJJpvscptdv359ff3110pNTb0gOxiFpLJmSxVwy9js2bOVmZl5wUc5pKenq3HjxrbvuiKbbLLJJptsssm+YlYFM2DAgCtaTjbZZJNNNtlkk20q27Isq8KdZywyMlKbNm1SYWGhpB9PBpqWlqbIyEiyySabbLLJJpvsMpUtVcDdlGfOnNGCBQuUkZGh/Px8RUZGKi4uTkOGDFGNGjXIJptssskmm2yyy0y2pIq3m9Lj8VivvPKKNX/+fOvMmTP+5a+++irZZJNNNtlkk012mcq2rAq4m/LJJ59UjRo1VLNmTQ0ZMsR/jpAtW7aQTTbZZJNNNtlkl6lsqQKe2iIvL0/9+vWTJHXs2FF/+tOflJiYSDbZZJNNNtlkk13msqUK+EHhRUVFKigokCTVqFFD8+bN06pVq7R3716yySabbLLJJpvsMpUtqeIdM7Zz507r+PHjFywrLi621q5dSzbZZJNNNtlkk12msi3LsircuykBAADKkwq3mxIAAKA8oYwBAAAYRBkDAAAwiDIGAABgEGUMAADAoP8H/pNy7p73zDwAAAAASUVORK5CYII=\\n\",\n      \"text/plain\": [\n       \"<Figure size 720x432 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"litstudy.plot_year_histogram(docs, vertical=True);\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 9,\n   \"metadata\": {\n    \"scrolled\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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xeW617+X7du3s2HDhgL1cfLkSaKjo417uG/fPgASExMZOXLkA+3nzZvHyZMnH6nvKVOmEBoaSkREBAMHDjT6PX78+C8e92uex/vjPHjwIDExMfm2T0pKYvHixY/U969x99l+nH9nRERERP4s9G0RYhPPP/88c+fOBWDr1q307duXTz755Hc9R05ODlu2bMHb2xtvb+/ftW+A5cuXExER8Uhtk5KS8PPze+DFbc2aNRw9epT4+Hjs7e05c+YMWVlZv3useUlISKBhw4a4uro+tG1OTg729v/3tWkzZsxg4MCBBAUFkZOT84svhWPHjv1d4i1s4eHhREdH/+bjhwwZ8jtGc0dOTg7169cvUB9ms5k+ffowYcIEqlSpwoULF4iOjmbFihX5HtO1a9dH6vv48eMkJSWxcuVKAFJTUwHYvXs3FStWJCAgIN9jf83z+GsFBgYSGBj4m4+///m/6+6z/Tj/zoiIiIj8Wai4IDYXHBzMggULuHjxIq6urgwbNozU1FScnZ0ZP3486enp9OnTh7Jly3Lu3Dmio6Np3rw5a9euZeXKlWRkZFCvXj169+5NYmIiH330Ec7OzlSuXJkdO3Zw9OhRKleuTKtWrZgzZw4lSpTgxIkT9OzZkzVr1pCcnMz48eOpWrUqu3btYsaMGVitVurUqcO7777L9OnTOXPmDDdv3uTKlSvMmTOH9evXk5ycTGRkJOHh4bz++utGPps3bzY+6W7Tpg1hYWG8//77XL16lffee48pU6YYbdesWcOIESOMF5cKFSoAcPnyZWJiYsjMzMTT05Px48fz888/895771G+fHl+/PFHunbtytatWzl58iQDBgygQYMGREZGUrFiRY4fP84TTzzBpEmT2LNnD5s2bWL48OFcvXqV3r1707NnT5KSkujRowcvvfQSPXv25J///Cfnz58HYNSoUVSoUIFXX32Vv/3tb2RkZPDBBx8Ycbu6uvL999/j5+dHyZIlKVGiBABr165lyZIluLi40LJlS9q2bUvz5s1Zt24d58+f5/333yczMxN3d3cmTpzIvn37mDdvHsWLF+fkyZMMHz6cWrVqcfjwYcaMGYPJZKJSpUoMGzYsz3tzr0WLFvH1119z48YNwsLCePPNN1m9ejVff/01OTk5JCcnM3nyZAICAvjyyy+ZO3cu5cqV4/r164/8rL766qvUqlWLpKQk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kpJwc3Nj+vTpnDt3jv79++Pk5ETx4sUZOHAgO3bs4OjRo1SuXJl33nmHUaNGER0dTVJSEj169OCll17Cz8+Pa9euER0dzcGDB1m6dCn169cnOTmZyMhIGjVqRKtWrRg2bBipqak4Ozszfvx4PD09jXjS09MZNGgQ165dM/Zv376d/fv306tXL3r06EH9+vUB2L9/PwEBAVSpUgUAk8lEnTp1gDujJdasWYPVaqVbt24EBwcTExODg4MDP/30Ew4ODvzjH/9gw4YNODs7M2/ePL7//ntmz56Nq6srFy5cICYmhr///e9ERkYybdo0PD09GTlyJE2aNGHJkiUcOHCAY8eOMWLECP75z38ybdo0vvnmG77++mtycnJITk5m8uTJBAQEsHbtWj766COefvppbty4Qd++falWrVq+9+X8+fO8//77ZGZm4u7uzsSJE3F2dmbcuHHs27cPR0dHYmJiANi3bx89evTIdb5mzZpRt25d9u/fT7Vq1RgyZEie1/bJJ580znn58mViYmLIzMzE09OT8ePH4+rqSlxcHAcPHqRy5cokJiayceNGIiIimD17NqVKlWLNmjX89NNPdO/e3ehrzZo1jBgxAnv7O99lX6FCBWPfli1b+OKLL7hy5Qpz5szhySefpHnz5qxbt47p06dz5swZbt68mWv/+vXrWbp0KRaLhTZt2tCuXTs+/fRTVq5cSfHixWnSpAkRERF5trtXRkYGly9fZsiQIcTExBjFhbVr17JkyRJcXFxo2bIlbdu2pVOnTmRnZ5Odnc24cePw9fXl+++/Jy4uDh8fH6xWKxUrVgTg448/5quvviInJ4du3brxj3/8g8jISKpUqcL//u//4u/vT5kyZdi+fTt+fn6MHTuW3r1706tXL/z9/dmzZw9ffPEFo0eP/sX7ER8fz9mzZ4mKimLw4MEEBgYC4OLiwsmTJzl9+jS+vr64u7sDd0bYDB8+nOzsbDw8PPjwww+JiYkhIiKCatWqMX78eA4dOoTZbCY2NpagoKA8n52srCyGDh3K+fPnsbOzY9KkSbi4uDzwu2xvb8+7775r5DB37lyKFSuW/x8gERERkb8ITYsQAerVq8eSJUvIzs7mxx9/JDExkddee434+HhmzZrFM888Q7169RgxYkSuT5hr1apFYGAgs2bNMkYy3O/111/nqaeeIj4+nrfeeot58+bR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apw4cYKZM2dSv359vvjiC1q3bp0rvpUrV1KjRg06derEhg0bmDdvHoMHDyYhIYFp06bleolPSUnBx8cnzzyvXLnCgAEDKFasGCEhIURHRz90/7x582jZsiXBwcFs27aNRYsWUadOHSpXrszQoUOxWq0AzJw584F2939Kv2vXLrp164aXlxeff/45NWvWZO7cuTRu3JhWrVphsViws7MjODiYkJAQrFYr4eHhtG/fnn379uHm5sakSZPYvXu3cb0nTpxIv379qFKlCvHx8SQkJODn58ft27dZuHAhW7duZebMmXz++eckJiby6aefMnLkSC5fvsz169e5desWdnZ2uQoLP//8MwkJCaxYsYLbt28TGhrKunXr6Nq1q1GIudeYMWOYNWsWkydP5rnnnmP06NFcvHiRnTt3snz5cuzt7cnJyeHChQvGMXFxcXk+P05OTnzwwQd89dVXrFq1ioEDBxIXF8cnn3yCh4cHOTk5pKamsnz5cuLj4zGZTHTo0IGmTZuydu1a5s+fj6enZ67nTUREROSvTMUFESlULi4uZGZmGj9nZmbi7OwMgKurK35+fgCUKVOGtLS0XMcGBwezefNm0tLSaNasGQDHjh2jb9++ANy6dYuKFStiMpl4/vnnjeMGDBjAsGHDMJlMdOnSBX9//zxj8/f35+effyYtLY1t27bxySef5Np/6tQpWrRoAUDNmjVJSEjIN09vb2+2bduW576yZcvi7u4OgKOj4yPtP3bsGP/973/5+OOPMZvNVKxYkVq1avHDDz/Qv39/ypYtS8+ePfNsd6/Dhw/z008/GVMKzp49S05ODsePHycqKgoAO7s7y/F89913LFq0CKvVyrlz50hJSeHUqVNUr14dwPgvwIkTJ4iLiwPu3NMGDRrg5+dHlSpVMJlMeHt7U6lSJezs7ChdujSpqakAhISEsH79elJTUx8o5iQnJ1OlShUcHBwoUaIEpUuX5tq1a/le8/LlyxvTXWbNmsWyZct4+umneeGFF4ypMfdPkcnv+bk7Fefuc3jt2jWefPJJPDw8jH7Onj3LmTNn6NixIwDXr18nJSWFQYMGMWnSJLKysoiIiKBGjRr5xiwiIiLyV6HigogUKl9fX5KSksjKysLJyYnExETjRe7+uf93P42/KyQkhOHDh5Oens7MmTMBqFSpElOnTjVGDWRnZ7N27dpcL5E1a9bk5ZdfZs+ePcyaNSvXYn6Ojo655uaHhIQwevRoqlatahQ97o19//79vPDCC+zduxdfX99886xevTqjR4/myJEjxpoL3333HbVr137oGgd57ff396dOnTrUq1cPuDMyIzs7mx49egAYU0jyanevdevWMWbMGGrXrg3AlClT+O677wgICGD37t20bNnSGLkwbdo0Fi9ejJubG+Hh4VitVnx9fdm9ezctWrTgwIEDRr9+fn706dOHZ555xjjvDz/8kCuXvPJ6/fXX6dGjB5mZmcTHx+fa99RTT3HkyBHMZjO3b98mJSXFeLnPy8mTJ43ze3l5cfnyZQICAvj888+NnO4fSZDf83NvrFarFQ8PD6Pw5ObmhsVioXz58vj7+7Nw4ULs7OzIzs7G0dGRjIwMxowZw8WLF+nTpw8rVqzIN2YRERGRvwoVF0SkULm5uREVFUVUVBSOjo6UKVPmgVX/8+Pj44PZbMbDwwM3NzcABg8eTL9+/TCbzdjZ2TF06NAHjnv33XfJysoiKyuLnj175trXoEEDJk2aRNWqVYmNjaVp06bExcWxZMmSB/oJDQ1lwIABbN261VjPID8ODg5MnTqVMWPGcOvWLcxmM61atTJe6n+tbt26MXz4cBYsWIDFYiE0NBQfHx8mT56Mg4MDzs7OVK9enWrVqj3QLiQkBLjzkrxt2zb69Olj9Pvyyy+TkJDAoEGDiI2N5bPPPsPe3p4FCxbQrFkzoqKiCAgIwMXFBbgzemTTpk1ERkbmGrkwaNAgRo0aRXp6OgDdu3c3RkD8khIlSlCuXDlcXV1xcnLKte+JJ56gVatWRmGjb9++v9jnkiVLOHz4MM7OzhQrVozx48fj7u5OnTp1CAsLw8XFhU6dOhEQEGAc8yjPD9wZzREbG0vXrl1xcnIy1lwIDQ0lMjISOzs7nJ2dmTdvHu+//z7nz58nKyuL9u3bP/QaiIiIiPwVmKz3fzQoIlKEpaen06VLF5YuXWrrUIqMwYMH06FDB5599llbh2IzIf3W2DoEkULx8fDGWLLMtg6j0Lm7FyM1Nd3WYdiEci96uRfVvKFo5O7lVTLffQ//WElEpIg4cOAAnTp1olOnTrYOpch47733MJvNRbqwICIiIvJXoGkRIiL/X1BQkObHF7IpU6bYOgQRERER+R1o5IKIiIiIiIiIFIhGLoiIiNjYwqGv2joEm7CzM2GxFL2ln4pq3gCO9nZkPryZiIj8Cam4ICIiYmvmnIe3+QsqVQQWvspLUc0bwLWEM5kZWQ9vKCIifzqaFiEiIiIiIiIiBaKvohQRERERERGRAtHIBREREREREREpEBUXRERERERERKRAVFwQERERERERkQJRcUFERERERERECkTFBREREREREREpEBUXRERERERERKRAVFwQERERERERkQJRcUFERERERERECkTFBRERERtZuXIlYWFhREZGcu7cOVuHU2h++OEH3nzzTTp06EDXrl25fv26rUMqVHv27KFy5cpcvXrV1qEUqgMHDtCpUyciIyNZsGCBrcMpNCNHjiQsLIzQ0FASExNtHc5jlZ2dTVhYGC+++CIbN24E4OrVq3Tu3Jnw8HCmT59u4wgfn7xyHzp0KG+++Sbt2rXjiy++sG2Aj0leed/1P//zP4wcOdJGkT1+eeVuNpuJi4ujY8eOREZGFrm/8w62DkBERKQoSk1N5bPPPmP58uUcPnyYSZMmMW3aNFuHVSjKli3Lxx9/jKurK8uXL2fp0qV0797d1mEVmsWLF/Pcc8/ZOoxClZWVxYwZM5g5cyaurq62DqfQnD59mhMnTrBixQouXLhA//79Wbp0qa3DemwcHBz48MMP+fTTT41t8+fPp02bNjRt2pSuXbty/PhxAgICbBjl45FX7p07d8bX15esrCxatGhB8+bNcXD4a71+5ZU3wH/+8x8cHR1tFFXhyCv3FStWEBQUxJAhQ2wYme1o5IKIiIgNHDhwgFq1auHg4EBQUBCnTp2ydUiFxtvb23jBdHR0xN7e3sYRFZ6vv/6aF154gWLFitk6lEK1b98+XFxc6NWrF506deLIkSO2DqlQPPnkk7i4uGA2m7l+/Tqenp62DumxMplMlC5dOte2vXv38o9//AOAhg0b8v3339sitMcur9x9fX2B//s7ZzKZbBDZ45VX3gBLliwhIiLCBhEVnrxy37x5M8eOHSMyMpIpU6bYKDLbUXFBRETEBtLS0nBzczN+tlqtNozGNq5du8ayZcto27atrUMpFBaLhWXLlhEeHm7rUArdpUuXOH78ONOmTWPIkCGMGDHC1iEViuLFi1O2bFlee+01oqOjiY6OtnVIhS49PR0XFxcASpUqRVpamo0jKnwLFy6kadOmRaaQunHjRurWrWvc96Lk4sWLVKhQgfj4eH766Se+/fZbW4dUqFRcEBERsYFSpUrlWmvAzq5o/U9yRkYGvXv3ZujQoX/5T3PvWrt2La+88grOzs62DqXQlSpVipo1a1KsWDH8/f25efOmrUMqFP/+979JTU3lq6++YvXq1X/p+ef5cXV1JTMzE4AbN27kKqoWBRs3bmT//v306NHD1qEUipycHD777DNCQ0NtHYpNuLm5UbduXQDq1q3L0aNHbRxR4Spa/09GRETkD6J69ep8//335OTk8L//+79UqFDB1iEVGrPZzHvvvUdkZCQ1a9a0dTiF5ujRo2zatIno6Gh+/PFH+vfvb+uQCk316tU5deoUFouFy5cv4+TkZOuQCoXFYsHNzQ07OztKlChBenq6rUMqdC+88ILx6e327dt58cUXbRxR4UlMTGTZsmVMmDChyBSQr1y5wtWrV+nevTsTJ07k66+/Zt26dbYOq9C89NJLHDp0CIBDhw7x9NNP2ziiwmWyFsVxmCIiIn8Ay5cvZ82aNTg4OBAXF1dkCgxffPEFo0ePJjAwEIAGDRrQuXNnG0dVuCIjI5k2bVqRGbUBsGrVKlavXo3ZbGbAgAG89NJLtg7pscvJySEmJobz58+TmZnJW2+9RYsWLWwd1mPVu3dvDh06RLFixahXrx6dO3dm4MCB3Lp1i7///e/07t3b1iE+Nvfn/tVXX1G8eHFKlSoF8Jf9nb8/74EDBwJ3iiubNm1i+PDhNo7w8bk/9y5duhAbG8vNmzcpV64cY8aMKTLTYUDFBREREREREREpoKIxPkdEREREREREHhsVF0RERERERESkQFRcEBEREREREZECUXFBRERERERERApExQURERERERERKRAVF0REREREfoXKlSszY8YM4+eYmBi2b9/+u56jd+/etGjRgn/961/5tlm+fDnTp0//Xc/7e7t+/TqfffaZrcMQkUKg4oKIiIiIyK9QokQJEhISyMjIeCz9X7p0idOnT/Ovf/2LFi1aPJZzFBYVF0SKDhUXRERERER+BRcXFxo3bsyqVase2Pftt98SEhJC8+bNH2lUwaxZs2jevDkhISFs27YNgG7dunHmzBlatmzJjz/+mKv9li1baNKkCW3btuXAgQPG9gMHDvDGG28QEhLCP//5T3JycgDYu3cvbdu2pUWLFnTu3BnIPdIiOTmZ0NBQAKZPn05sbCxhYWE0atSI3bt3069fP5o0acKHH35onGvVqlW0adOGFi1aGCM4EhMTiY6Oplu3bjRu3JjZs2cDMGXKFI4ePUrLli1ZsGAB3333HSEhIbRs2ZKwsLBHu+Ai8qfgYOsARERERET+bDp27EhUVBTh4eHGttu3bzNixAiWLl3Kk08+SWRkJLVr1+bFF1/Ms48DBw6wbds2Vq9eTWpqKmFhYfztb3/jww8/pG/fvqxcuTJX+9u3bzNmzBiWL1+Oh4cHERERlC1bFoDBgwczbtw4nnvuOfr06cO6deto2rQpgwYNYs6cOfj7+5OamvrQvC5fvsyyZcvYtm0b7777Lp9//jne3t40btyY6OhoLly4wI4dO1i5ciUmk4kePXpw8OBBAA4fPsyGDRtwcXHhtdde46233uK9997j3LlzRi7dunVjyJAh/P3vf+fGjRu/5dKLyB+URi6IiIiIiPxK3t7evPDCC2zYsMHYdurUKfz9/SlTpgyOjo68/vrr7N27N98+9u7dS5MmTXBycqJ06dI8++yzHD9+PN/2d/v39vbGycmJxo0bA3emHlgsFp577jkAQkJC2Lt3LydPnuTpp5/G398fAHd394fmVb9+fezs7KhcuTLlypWjfPnyODk5Ua5cOS5fvsyuXbvYt28fb7zxBq1bt+bEiROcOXMGgJo1a+Lh4YGrqytPPfUUly5deqD/GjVqMHHiRD755BOysrIeGo+I/Hlo5IKIiIiIyG8QHR1Nv379qFKlSqGd02Qy5fnvX8POzg6r1QrwwAu+o6Oj0ffdf989JicnB6vVSnh4ON26dct1XGJiIk5OTg+0d3DI/brx9ttvU79+fbZt20a7du34/PPP8fDw+E15iMgfi0YuiIiIiIj8Bv7+/pQrV45du3YB4Ofnx4kTJ0hJScFsNrNx40Zq1qyZ7/E1a9Zky5YtZGdnc/nyZQ4fPkxAQEC+7f38/Dh+/DgpKSlkZ2ezefNmAEqVKoW9vT1HjhwBYP369bzwwgs888wznDt3jhMnTgAY0yLKli1LUlISgLHOw6P6+9//zvr167l+/ToAFy9e5Nq1a/m2L168OLdu3TJ+PnfuHIGBgbzzzjuUK1eOixcv/qrzi8gfl0YuiIiIiIj8Rl26dOHNN98E7iz0+M9//pMuXbpgsVho0qSJsd5Cy5YtWbNmTa5jg4KCaNCgAa1bt8ZkMjF06FCKFy+e78u6i4sLgwcPJioqilKlSuUqRMTFxTF48GCys7OpUaMGzZo1w97envHjxzNw4ECys7MpU6YMc+fOpV27dnTv3p2NGzfy8ssv/6p8K1WqRHR0NB06dMBqtVK8eHEmT56cb3sPDw8qV65sLOL4008/kZiYiJ2dHTVr1izUUR8i8niZrHfHRImIiIiIiIiI/AaaFiEiIiIiIiIiBaLigoiIiIiIiIgUiIoLIiIiIiIiIlIgKi6IiIiIiIiISIGouCAiIiIiIiIiBaLigoiIiIiIiIgUiIoLIiIiIiIiIlIg/w8mJ0xByWYcogAAAABJRU5ErkJggg==\\n\",\n      \"text/plain\": [\n       \"<Figure size 720x432 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"litstudy.plot_affiliation_histogram(docs, limit=15);\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 720x432 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"litstudy.plot_author_histogram(docs);\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 11,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 720x432 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"litstudy.plot_language_histogram(docs);\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 12,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 720x432 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"litstudy.plot_number_authors_histogram(docs);\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 13,\n   \"metadata\": {\n    \"scrolled\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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X3/FbDZjNps5e/YsMTExmfbn2LFjvPrqq/a/jUYj/fv356uvviIoKCjdvgkRERGR3EwJhGA0GsmfP7999gGgYMGC1K9fn06dOqUr26pVK+bNm2f/+9ChQ8TFxWVad8GCBdPVC1C6dGn2798PwJ49eyhduvQ95xkMBvtrm82W7lihQoWIiYnhxo0bpKSkEBUVxfPPP2/vS0Z13P36jjlz5jB37lwsFgslS5bEZrPh7OxMamrqPWXLly/P7t277X9brVaKFi3K+PHjmTJlygP3b4iIiIjkFlrC9Ay7s4QpNTUVb29vXnvttXTfwg8YMADA/u0+QO/evZkzZw6dO3cGoFixYkyYMOGeut977z2cnZ1JSUm5ZzlQx44dCQ4OZuvWrfY9EA/DZDLx/vvv884772AwGGjfvj2enp4PVQeAn58fXbt2pVy5cri5uQFQoUIFjh07xqBBgwgODraX7dChA6NGjSIwMBCTycSMGTOwWCzs3buX1NRU2rdv/9Dti4iIiDyNDLa/f70rIlmmddDanA4hSy0NbQ6paTkdRrby8MhDXFxiTochj5nGNffS2OZOGtfHr0iR/Jke0xImERERERFxmBIIERERERFxmBIIERERERFxmDZRi2SjpaHNczqELGUyGni2dkCIiIg8e5RAiGSnXL7BOHf3TkREREBLmERERERE5CEogRAREREREYcpgRAREREREYdpD4RIdnIy5XQEWcpkNJCWnJrTYYiIiEgWUgIhko3enbglp0PIUrn9KVMiIiKiJUwiIiIiIvIQlECIiIiIiIjDlECIiIiIiIjDlECIiIiIiIjD/nECER0dTZ8+fR5HLA8UERHBkiVLHCq7c+dO2rVrx8yZM9O9f/nyZYYMGUKXLl3w9/dn7ty5WRHqPa5du8a6dese+fzw8HA6dOhAYGAg3bp1y7Tc9u3b2bhx4yO3kx1atWqV7u/58+djNptp2bIlzZo1w2w2M336dIfqMpvNXL169ZFj2bVrF+PHj3/k80VERESeNTn6FKa0tDRMpqx5rOXmzZsJDQ2lZs2a6d4PDg6mZ8+e/Otf/wJgx44dWdL+3127do3169fTunVrh8rffW0SEhL45ptv+PbbbzGZTMTFxWV63muvvfY4ws1W/fr1o1+/fkRERBAbG0uPHj1yOiQRERERycRjSyB+//13pk+fjsFgoF69egwa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nTt3xmAwMH78+Ezbeu+995g3bx5hYWFUrlwZi8WCyWSiSJEiGS6/gttLmsqXL4+/vz82m42QkBD7sd27d/PFF1/g6elJ06ZN+fe//+1QnSIiIiK5jcFms9lyOgiRJ5nZbGbOnDkZLtt6WK2D1j6GiJ4MS0ObQ6qefOXhkYe4uMScDkMeM41r7qWxzZ00ro9fkSL5Mz2mTdQiIiIiIuIwLWESeYD77f0QERERedZoBkJERERERBymGQiRbLQ0tHlOh/DYmIwGtANCRETk2aMEQiQ75aJNx7mnJyIiIvIwtIRJREREREQcpgRCREREREQcpiVMItnJyfTgMtnMZDSQlpya02GIiIjIU0IJhEg2enfilpwO4R65aWO3iIiIZD0tYRIREREREYcpgRAREREREYcpgRAREREREYcpgRAREREREYdpE7U8srS0NEaPHs3JkycBeOmllwgODs60/NixYzl+/DiDBg3i5s2bNGzY8J4yp0+fZvLkydy4cYPU1FTefPNNAgICsqwPd0RHR3P8+HF7TJMmTWLQoEHkz58/y9sWEREReZoogZBHtmPHDlxdXVm5ciUAcXFx9y2/Z88e1q1bx65du/j555/vSSBSU1MZPHgwU6ZMoVKlSthsNn755ZesCj+dc+fOpYtp1KhR2dKuiIiIyNNGCYQ8Mjc3N06cOMGpU6coXbo0Hh4eABw/fpyxY8ditVopU6YMEyZMYPLkyZw9exaz2QzAqVOnOHr0KOPGjaNMmTIA7N+/n3LlylGpUiUADAYD9erVAyA8PJy1a9dis9no27cvTZs2JSQkBCcnJ86fP4+TkxONGzdm48aNuLq6snDhQv773/8yf/583N3duXDhAiEhIbz66quYzWbmzJmDp6cn48ePp0WLFixfvpwDBw7YYxo7dixz5sxh27Zt/PTTT6SlpREdHc2sWbMoV64c69atY8mSJbzwwgtcv36doUOHUrVq1ewfBBEREZFspj0Q8sjq1KmDn58fI0eO5PXXX2fjxo0AhIWFERISwooVK3BycmLr1q2MGjWK559/HovFwoABA2jevDkWi8WePADExMRQrFixe9q5cuUKa9asYcWKFSxbtoyZM2ditVoBqFq1KkuXLsXZ2ZmkpCQsFguFChVi//79AFy7do1PPvmEhQsXEhYWlmlfunbtmmFMAC4uLsybN48BAwawevVq0tLSmD9/PitXriQsLIwLFy7842spIiIi8rRQAiH/SMeOHVmxYgUrV65k9uzZpKamEh0dTZUqVQCoWbOmfY/Eg3h5eWV4Mx4dHU2lSpVwcnIiX758FC1alNjYWAB8fX3t596ZufDy8iI+Ph6AypUrYzKZKFq0KElJSffUbbPZHhjXnTaKFy9OfHw8V69excvLC3d3d1xcXOzHRURERJ4FSiDkkV26dImEhAQA8ufPj7OzMwAlSpQgMjISgL179+Lj45PuPGdnZ1JTU++pr3r16hw/fpzDhw8D2PdAPP/88xw+fJjU1FQSEhKIiYmhUKFCwO1lTnfc/fpOYnDo0CGsViuXL1/GxcUFgIIFCxITE4PNZrO3lVlMGdXr6elJTEwMt27dIiUlxV6HiIiIyLNAeyDkkV28eJHJkydjMplITU2lV69eODk5MWzYMMaMGQNA6dKladKkSbrzKlSowLFjxxg0aBDBwcGULFkSACcnJz766KN0T2F66623qFu3Lm+99RYBAQHYbDaGDh2K0ehY7vvcc8/x3nvvcfHiRYYPHw5Aly5dCA4OpmzZshQoUCDDmO7HZDLRp08f/P39KVGiBIULF7YnTyIiIiK5ncHmyBoOkafQrl272Lx5sz2ZeZxSUlJwdnYmOTmZdu3asWLFCoce+do6aO1jj+WfWhraHFLTcjqMp5aHRx7i4hJzOgx5zDSuuZfGNnfSuD5+RYpkfl+jGQiRR7B69Wo2btxIQkICHTt21O9FiIiIyDNDCYTkWnXq1KFOnTpZUndAQEC2/MCdiIiIyJNGm6hFRERERMRhSiBERERERMRhWsIkko2WhjbP6RDuYTIa0BZqERERcZQSCJHs9AQ+7ejJi0hERESeZFrCJCIiIiIiDlMCISIiIiIiDtMSJpHs5GTK6QjsTEYDacmpOR2GiIiIPGWUQIhko3cnbsnpEOyexA3dIiIi8uTTEiYREREREXGYEggREREREXGYEggREREREXGYEggREREREXGYEgh54hw8eJDu3bvTpUsXAgIC2LIl6zceR0VFsWfPHvvfI0aMyPI2RURERJ5GegqTPFGuXbvGyJEjWbBgAd7e3iQnJ7Nv374sbzcqKorY2FheeuklAKZMmZLlbYqIiIg8jZRAyBNl27ZtNG3aFG9vbwBcXFyoXbs2s2fPZteuXQAMHz6cmjVrYjabqVSpEn/88Qdly5alePHibN++HR8fH6ZMmUJERARbtmwhLS2NK1euMGXKFCpUqECrVq1Yv349AH369GH06NEsX76chIQEtm3bxrx58wgICGD9+vXMnTuX06dPk5CQwOXLl/nss88oXLgwixcv5ocffsDHx4cTJ06wePFiPD09c+y6iYiIiGQXLWGSJ8rFixcpVqxYuvcOHTrEkSNHWLVqFbNnz2by5Mn2Yw0bNmTFihVERkZSvnx5Vq1axZkzZ7h06RIABoOBhQsXMmHCBGbNmpVpu127diUgIACLxUL+/PnTHfP29uazzz7Dz8+PH374gcuXL7N582a+/vprxowZQ3R09GO8AiIiIiJPNiUQ8kQpVqwYFy5cSPfeqVOnqF69OgDFixfn1q1b9mOVK1cGoGjRolSqVMn+Oj4+HoCqVavay507d+6e9mw22wNj8vX1tbcdHx9PdHQ0FStWxGQyUaBAAUqXLv2QvRQRERF5eimBkCdKo0aN+PHHHzl//jwAKSkpFClShP379wNw4cIF3NzcMjzXYDDYX99JDP744w8ADh8+TIkSJYDby6Li4uJITk7m2LFjADg7O5OWluZQvSVKlODPP/8kLS2N69evc+rUqX/QYxEREZGni/ZAyBOlQIECTJ48mZEjR5KamkpaWhrvvvsu5cuXx9/fH5vNRkhIiMP1GY1GevXqxZUrV+xLn7p3747ZbMbX15eiRYsCULNmTcLDw4mMjEy3RCojRYoUoVmzZnTs2JHSpUvj5eWFi4vLo3daRERE5ClisDmyhkPkKRQREUFsbCw9evR47HWnpKTg7OzMtWvX6NSpEz/88IND57UOWvvYY3lUS0ObQ2rGsy7iOA+PPMTFJeZ0GPKYaVxzL41t7qRxffyKFMmf6THNQIg8gs8++4zdu3eTkJDA+++/n9PhiIiIiGQbJRCSa7Vt2zbL6h44cGCW1S0iIiLyJNMmahERERERcZhmIESy0dLQ5jkdgp3JaEA7IERERORhKYEQyU5P0KblJycSEREReZpoCZOIiIiIiDhMCYSIiIiIiDhMCYSIiIiIiDhMeyBEspOTKVubMxkNpCWnZmubIiIikrspgRDJRu9O3JKt7T1JT30SERGR3EFLmERERERExGFKIERERERExGFKIERERERExGFKIERERERExGFKIASA6Oho+vTpky1tRUREsGTJEofK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rVY6duxI69at7ee88MILDB48mAEDBtjfGzx48CP3sX79+gQEBFChQgUKFCjwyPUA9OrVi5CQECwWCx4eHkyfPp2rV68+VB1169YlODiYX375BS8vL5ycbn+8GjVqRO/evWnevLk9IXnuued46623CAgIwGazMXTo0EyXX93t6NGjDBkyBFdXV1JTU+3J3pgxYxg+fDgmk4mKFSsSGhpqP6dDhw6MGzeOjRs3YrPZaNq0Kd26dcuw/j59+jBixAi++eYbTCYTixcvZvjw4UyYMIHExEQA+vXrR2xsLBaLBZPJRJEiRShZsuRDXSsRERGRp5XBdr+vrUXksWodtDbL6l4a2hxSM36il2QdD488xMUl5nQY8phpXHMvjW3upHF9/IoUyZ/psVz7OxAiIiIiIvL4KYEQERERERGHKYEQERERERGH5dpN1CJPoqWhzbOsbpPRgHZAiIiISFZTAiGSnbJwk7OSBxEREckOWsIkIiIiIiIO02NcRURERETEYZqBEBERERERhymBEBERERERhymBEBERERERhymBEBERERERhymBEBERERERhymBEBERERERhymBEBERERERhymBEBERERERhymBEMkGX3/9Nf7+/pjNZs6ePZvT4cg/UKNGDcxmM2azme3bt3Pr1i0GDx5M586dGTt2LFarNadDFAelpKTg7+/Pyy+/zKZNmwC4evUqPXv2JCAggLlz59rL/vTTT3Tq1Al/f38OHDiQUyGLAzIa17lz5+Ln54fZbGbIkCH2shrXp8fevXvp1KkTXbp0oXfv3ly7dk3/XnOSTUSyVGxsrK19+/a2lJQU2/79+22DBg3K6ZDkH/Dz80v395dffmlbtGiRzWaz2T788EPbtm3bciIseQRWq9UWExNj+/jjj20//PCDzWaz2aZOnWrbuHGjzWaz2Xr16mU7evSoLTU11fbmm2/arl+/brt48aLN398/J8OWB8hoXO9+fYfG9ely8eJFW2Jios1ms9lWrFhhmzdvnv695iDNQIhksQMHDlC7dm2cnJyoVq0aJ0+ezOmQ5B+4cOECgYGBBAUFERsby2+//Ubjxo0BaNSoEf/9739zOEJxlMFgoGjRoune27Nnzz3jeerUKUqXLk2+fPnw8vIiNTWVpKSknAhZHJDRuALMnz+fzp07s379egCN61PGy8sLd3d3AJydnTGZTPr3moOUQIhksfj4eAoWLGj/22az5WA08k9t2bKF8PBw6taty+zZs4mPj6dAgQIAFChQgPj4+ByOUP6JxMRE3NzcgP83nneP8Z334+LicihCeRRdunRh7dq1LFiwgKVLl3LhwgWN61MqNjaWFStW0L59e/17zUFKIESyWIECBbh27Zr9b6NR/+yeZp6engD4+fkRFRWVbnyvX7+eLlmUp4+7u7v928o741mwYEGuX79uL3P9+nU8PDxyKEJ5FIUKFQIgf/78vPrqq/z5558a16fQzZs3ef/99wkNDcXT01P/XnOQ7mREslj16tX573//S1paGn/88QelSpXK6ZDkESUmJpKWlgbA7t27KVWqFK+88grbt28HYPv27bz88ss5GaL8Q7Vq1eLnn38G/t94lipVilOnTpGYmMhff/2FyWTC1dU1hyOVh3HnhjI1NZV9+/bxwgsvaFyfMqmpqQwZMgSz2cxLL70E6N9rTnLK6QBEcjsPDw/eeustAgMDcXJyYtKkSTkdkjyiEydOEBoaSr58+XBxcWHixIkUKlSIkJAQAgMDKVu2LK+99lpOhykP4f333ycyMpI8efJw4MABevXqxQcffMCyZct49dVXKV++PAADBgyge/fuGAwGRowYkcNRy4P8fVzj4+M5fvw4aWlptGrVCh8fH0Dj+jRZv349v/32Gzdu3GD58uU0bNhQ/15zkMGmBdkiIiIiIuIgLWESERERERGHKYEQERERERGHKYEQERERERGHKYEQERERERGHKYEQERERERGHKYEQERHJRMWKFfnkk0/sf4eEhNh/9+Nxef/992nTpg3ff/99pmVWrlzJ3LlzH2u7j9u1a9f45ptvcjoMEckGSiBEREQykS9fPtasWcPNmzezpP5Lly5x6tQpvv/+e9q0aZMlbWQXJRAizw4lECIiIplwc3Pj9ddfZ/Xq1fcc+/nnn2ndujWtWrVyaHZg3rx5tGrVitatW/Pjjz8C0LdvX06fPs2bb77JkSNH0pX/z3/+Q4sWLWjfvj0HDhywv3/gwAHatm1L69atGTt2rP3X0ffs2UP79u1p06YNPXv2BNLPmERHR9OxY0cA5s6dy4gRI/D396dZs2bs3r2boKAgWrRowccff2xva/Xq1bRr1442bdrYZ2J27dpFjx496Nu3L6+//jrz588HYPbs2fz555+8+eabLF68mF9//ZXWrVvz5ptv4u/v79gFF5Gng01EREQyVK9ePdvFixdtr7/+ui0lJcU2fPhw288//2y7efOmrXHjxrbz58/bkpOTbZ06dbL997//zbSe/fv329q1a2dLSkqyxcTE2Bo3bmxLSEiwnT171tahQ4d7yt+p/+LFi7akpCRb+/btbR9//LHNZrPZ/Pz8bAcPHrTZbDbb+++/b/vuu+9sSUlJtmbNmtmOHTtms9lsttjYWJvNZrPHa7PZ0rX18ccf23r06GFLS0uzbdmyxfbKK6/Yzpw5Y0tKSrI1bNjQlpCQYDt69Kjt/2vf/kLZ3+M4jj+32aKV7MZiKCZDUjYXKzV3FEnUkpKbtUbKjXIh5cqFlHv3bl24mFbkdtwsucCFkZSwQqu5MPY5F78oOTvmnM7vOPV6XH2+396ff31vPu/e38/s7Kx5eXkxr6+vJhaLmaOjI7O/v2+CwaC5v783T09PJhQKmVwu92kvsVjMJJNJY4wx2Wz2H34JEflJVIEQERH5C263m0AgwPb29vu7i4sLvF4vNTU12O12BgYGSKVSRcdIpVL09/fjcDiorq6mvb2ds7OzovFv47vdbhwOB319fcCv34QKhQIdHR0ADA0NkUqlOD8/p6GhAa/XC0BVVdWX+wqFQlitVnw+Hx6Ph/r6ehwOBx6Ph0wmQzKZ5PDwkNHRUUZGRkin01xeXgLg9/txuVxUVFRQV1fH3d3dp/G7urpYXV1lY2OD5+fnL9cjIv8fZf/1AkRERH66SCTC3Nwcra2tv21Oi8Xyp+3vsFqtGGMAPh3i7Xb7+9hv7bc+r6+vGGMYHx9namrqQ7+DgwMcDsen+LKyj0eKWCxGKBRib2+PcDjM5uYmLpfrb+1DRH4WVSBERES+4PV68Xg8JJNJABobG0mn09ze3vLy8kIikcDv9xft7/f72d3dJZ/Pk8lkOD4+prm5uWh8Y2MjZ2dn3N7eks/n2dnZAaCyshKbzcbp6SkA8XicQCBAU1MTV1dXpNNpAB4fHwGora3l5OQE4P3eRamCwSDxeJxsNgvAzc0NDw8PReOdTie5XO79+erqira2NmZmZvB4PNzc3HxrfhH5uVSBEBERKUE0GmVsbAz4dbl6aWmJaDRKoVCgv7+f7u5uAIaHh9na2vrQt7Ozk97eXkZGRrBYLCwuLuJ0OoseyMvLy1lYWGBycpLKysoPycby8jILCwvk83m6uroYHBzEZrOxsrLC/Pw8+Xyempoa1tfXCYfDTE9Pk0gk6Onp+dZ+W1paiEQiTExMYIzB6XSytrZWNN7lcuHz+d4vTl9fX3NwcIDVasXv9//W6o2I/Lss5q22KSIiIiIi8gX9wiQiIiIiIiVTAiEiIiIiIiVTAiEiIiIiIiVTAiEiIiIiIiVTAiEiIiIiIiVTAiEiIiIiIiVTAiEiIiIiIiX7A2uLaVdQx6ldAAAAAElFTkSuQmCC\\n\",\n      \"text/plain\": [\n       \"<Figure size 720x432 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# This names are long, which is why a short abbreviation is provided.\\n\",\n    \"mapping = {\\n\",\n    \"    \\\"IEEE International parallel and distributed processing symposium IPDPS\\\": \\\"IEEE IPDPS\\\",\\n\",\n    \"    \\\"IEEE International parallel and distributed processing symposium workshops IPDPSW\\\": \\\"IEEE IPDPS Workshops\\\",\\n\",\n    \"}\\n\",\n    \"\\n\",\n    \"litstudy.plot_source_histogram(docs, mapper=mapping, limit=15);\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 14,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAosAAAGBCAYAAAAOmfvsAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAA8sElEQVR4nO3dZ3xUZd7/8e/MkIRiAuQ2GwgiQSIIK0tdFBYUliIaQi+JkKiwFKnLHwsi4opIsaAYFgkiUUJbQBCR4mJBLAgq0jSrdIiYUJMQkiUzk/N/4E1uIzmUkcmZTD7vJ8zMKfM7P2c339d1nWvGZhiGIQAAAKAYdqsLAAAAgO8iLAIAAMAUYREAAACmCIsAAAAwRVgEAACAKcIiAAAATBEWAcALfv75Zw0fPlwdOnRQz549NW7cOGVlZV2Xc6elpWnjxo2m25cuXXrZ7QBwLWx8zyIAXF+GYahXr15KSEhQ9+7dJUmfffaZatWqpZo1a/7u82/btk3Lli3Tyy+/fMk2t9sth8Pxu98DAC4iLALAdfbFF1/otddeU0pKSpHX8/Ly9OSTT2rfvn2qVKmSpk2bptq1aysxMVE33nij4uLiJEl/+ctf9Pnnn2vVqlX69NNPdebMGf30008aMWKEevToodjYWB04cEAREREaNGiQjhw5ouPHj+vgwYNq0qSJKlWqVHi+w4cP65lnnlFWVpaqVq2qGTNmqGrVqnr88ceVmpoqu92uIUOGKCYmxopWASgFylldAAD4m/3796t+/fqXvL5o0SKFhoZq7dq1+uSTT/TMM8/ozTffvOK5li9frpycHPXr1089evTQ2LFji4wsJiYm6ujRo1q0aJECAgKUmJhYePzkyZM1ZcoU1ahRQxs2bNCcOXPUs2dPpaena926dZKkc+fOXb+LB+B3CIsA4AU2m+2S17799lsNGzZMknT33Xdr4sSJVzxPy5YtVaFCBVWoUEEFBQVyOp3F7tehQwcFBAQUeS0nJ0c7duzQ8OHDJUkFBQWqWbOmatasqePHj+vZZ59Vhw4d1LJly2u9PABlCGERAK6zOnXqaNOmTVe9v91uV0FBgSQpPz+/yLbAwMBi9/ut8uXLX/KaYRgKDw/XmjVrLtn27rvvasuWLXr99df19ddfa9SoUVddL4CyhdXQAHCdtWrVSjk5OUVC2hdffKEmTZpo/fr1kqQtW7YoKipKklSjRg395z//kSR9+OGHVzx/pUqVdP78+SvuFxwcrJCQEH322WeSJKfTqQMHDujMmTOSpPvuu0/Dhg1TamrqtV0ggDKFsAgA15nNZtM///lPbdiwQR06dFB0dLRWr16trl276sSJE4qJidGcOXM0adIkSVLHjh11+PBhxcTEaN++fVc8f7169fTf//5X3bp107vvvnvZfV988UW98cYb6tq1q7p3765du3YpIyNDAwYMULdu3TR9+nQNGTLkulw3AP/EamgAAACYYmQRAAAApgiLAAAAMEVYBAAAgCnCIgAAAEwRFgEAAGCKL+X2opMn+Qmta1WlSkVlZuZaXUapRO88R+88Q988R+88Q988d6XehYUFm25jZBEAAACmGFn0pnIOqysodbJz8+mbh+id5+idZ+ib5+idZ8pa3xx2m9z5LqvLICx608ApV//bsAAAAL+2YGJHq0uQxDQ0AAAALoOwCAAAAFOERQAAAJgiLAIAAMCU3y5w2bNnj2bOnCmn0ym326177rlHW7duVVJSUpH9Vq1apZtuukktWrSwqFIAAADf5ZdhMTs7WxMmTFBSUpIiIiKUn5+vnTt3auvWrZfs27NnTwsqBAAAKB38chp68+bNat++vSIiIiRJgYGBioiI0NmzZzVu3DjFxMRo3bp1kqTExERt3LhRaWlp6tu37yXb165dq/j4ePXu3VuzZs2y7JoAAACs4Jcji+np6apWrdolr586dUqLFi1STk6O/va3vyk6OvqK29u3b6+YmBgZhqG4uDjdf//9CgsLK6lLAQAAsJRfhsVq1arpwIEDl7weFRWlwMBAhYaGKj8//6q2f/nll0pOTpZhGDp27JgyMjIIiwAAoMzwy2notm3b6qOPPtLx48clSU6nUz///LNsNttljytu+6xZs5SYmKiUlBTVrFlThmF4pWYAAABf5JcjiyEhIZo6daomTJggl8tVuBraE9HR0UpISFBUVJTKly9/nSsFAADwbTaDoTKviRm3xuoSAABAKbVgYkfJ5b4u56pSpaIyM3NNt4eFBZtu88tpaAAAAFwfhEUAAACYIiwCAADAFPcsetHJs+b3BqB4drtNBQV8JD1B7zxH7zxD3zxH7zxT1vrmsNvkznddl3P9nnsW/XI1tM+4TjelliUhV/gwwxy98xy98wx98xy980xZ65uvpAimoQEAAGCK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3FCan7q4aOXiVLS3xYxbUyLvA+B/fxva5fbo2CpVKiozM/c6V+T/6Jvn6J1n6JvnrtS7sLBg021+Ow0NAACA389vp6GLM336dKtLAAAAKFUYWQQAAICpMjWyWNIWTOxodQmljt1uU0FBmbmN9roq671z2G3y7I5FAMDlEBa9ycOb7cuyEG5e9lhZ7x3/awMA72AaGgAAAKYIiwAAADBFWAQAAIAp7ln0pnIOqysodbJz8/22bw67Te58l9VlAABwTQiLXjRwyiarS4APYXU8AKA0YhoaAAAApgiLAAAAMEVYBAAAgCnCIgAAAEz59AKXvXv3aubMmXI6nXK5XGrRooXGjh1rdVkAAABlhs+GxezsbD3xxBOaO3euatSoIUnaunXrFY9zu91yOPzzq1cAAABKms+Gxc2bN6t9+/aFQVGSWrZsqaysLD311FPKzMxUUFCQZsyYodzcXD3yyCOqUaOGQkNDde7cOZUrV07Hjx9XuXLl1K5dO61fv15BQUGaN2+eMjMzNXbsWBUUFMhms+mVV15RaGiooqOj1bp1a+3atUsNGzbUk08+qTFjxmj06NGqU6eOvv76a73zzjuaMmWKhZ0BAAAoOT57z2J6erqqVasmSTpy5Iji4+PVuXNnvfTSS+rWrZsWLlyouLg4JScnS5J++uknTZkyRU8++aQkqWHDhlqwYIECAgJ04cIFpaSkqGrVqtq1a5eCg4M1f/58paSk6L777tPKlSslSXl5eYqNjdWyZcu0bds25eTkqFevXlq9erUk6Z133lGvXr0s6AYAAIA1fHZksVq1ajpw4IAkqVatWkpJSVF8fLzS09P1+uuv680335TL5dKtt94qSapXr54qVKhQeHz9+vUlSeHh4brtttsKH2dlZSkrK0vPPPOMzpw5o5ycHDVv3lySVKFCBdWuXVuSVL16dWVlZal169aaPXu2zp8/rx9//FFNmjQpsR4AAABYzWfDYtu2bfX666+rT58+uummmyRJLpdL//M//6P4+Hi1adNGkpSfn68TJ05ccp+izWYr9rFhGFq7dq2aNWumBx98UEuXLtW+ffsu2e/ivna7XX/5y1/0j3/8Qx078gscAACgbPHZsBgSEqJp06bpqaeeksvlUkBAgJo2bapBgwbpmWee0fz581VQUKC+ffte82hfy5Yt9eijj2rr1q0KDw9XuXKXb0PP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tH79en322WeqV6+e/v3vf1t9KQAAAJbw67B4cRq6oKBAo0eP1s6dO9WwYcPC6ecvv/xSycnJMgxDx44dU0ZGhsLCwrRjxw6tWbPmd93nCAAA4A/8OixeZLfbFRwcrKioKGVkZBS+PmvWLL311luqXLmy4uLiZBiGjh49qpdffllz5sxRQECAhVUDAABYz6/D4sVpaJfLpYiICJUvX77I9ujoaCUkJCgqKqpw29y5c3X69GkNHz5ckjRlypQSrxsAAMBX2AzDMKwuwl/FjFtjdQmWWzCxo+RyX/X+VapUVGZmrhcr8l/0znP0zjP0zXP0zjP0zXNX6l1YWLDpNr/9nkUAAAD8foRFAAAAmCIsAgAAwJRfL3Cx2oKJHa0uwXIOu01Xf8ciAADwNYRFb7qGhR3+ig4AAFC6MQ0NAAAAU4RFAAAAmCIsAgAAwBT3LHpTOYfVFXiNw26TO99ldRkAAMDLCIteNHDKJqtL8BpWegMAUDYwDQ0AAABThEUAAACYIiwCAADAFGERAAAApvw2LKalpWno0KFWlwEAAFCq+W1YBAAAwO/n91+dk5ycrI8//ljnzp1TbGys+vXrp1WrVmnTpk1yu906ffq0pk2bprp16+r555/Xnj17dP78eY0YMULt27dXYmKijhw5opycHJ06dUpz587VjTfeaPVlAQAAlAi/H1ns16+fFi5cqH/961966623VFBQIEmy2WyaN2+enn32Wc2cOVOSNHLkSKWkpCg5OVn//Oc/C88RERGhuXPnKjo6Whs2bLDkOgAAAKzg9yOL69ev1+rVq2Wz2XTixAllZWVJkho2bChJatCggX766SdJUkpKijZv3qxy5crp+PHjheeoX7++JKl69erav39/CV8BAACAdfw+LCYlJWndunWSpM6dO8swDEnSd999J0n6z3/+oxo1aigzM1MbN27U22+/rezsbN13332F57DZbIWPLx4PAABQFvhtWDQMQ3a7Xa1bt1ZcXJzq1q2rkJCQwu12u12DBw/W6dOnNXXqVFWuXFkRERHq37+/GjRooODgYAurBwAA8A1+GxZ//vln/eEPf9DTTz9d7PZGjRpp0KBBRV779X2KF40aNarwcefOndW5c+frWygAAIAP88sFLhs3btSMGTN0//33W10KAABAqeaXI4tXGgHs2bNnCVYDAABQevnlyCIAAACuD78cWfQVCyZ2tLoEr3HYbXJbXQQAAPA6wqI3ufw3TvnvlQEAgF9jGhoAAACmCIsAAAAwxTS0N5VzWF2BVzjsNrnzXVaXAQAASgBh0YsGTtlkdQle4c8LdwAAQFFMQwMAAMAUYREAAACmCIsAAAAwRVgEAACAqVK/wMXtduvBBx+UJKWmpioqKkoBAQEaPny4WrZsWbjfE088oWnTpllUJQAAQOlU6sOiw+FQSkqKJCk+Pl6zZs1SaGjoJfsRFAEAAK6d301DHzhwQPHx8erfv78efvhh5efnS5K6dOkiSXrooYd0/vx5ffHFF2rZsqUMw9CqVau0ePFi7d+/v9hjO3bsqCeffFI9e/bUG2+8Ydm1AQAAlDS/C4s33XST3nrrLS1evFhRUVH64IMPimxv2rSpvvnmG23fvl2NGjXSvn379NVXX+mOO+4wPfbUqVN69NFHtWzZMi1fvtyKywIAALBEqZ+G/q0TJ07o6aefVm5urk6dOqWqVasW2d6iRQtt2bJFR44c0YABA7Rt2zYdPHhQUVFROnjwoKZPn37JsREREapSpYokKSAgoKQvCQAAwDJ+N7K4evVq9e3bV4sWLVKHDh1kGEaR7Y0bN9a2bdsUFBSkZs2aad26dYqIiJAkLVmypNhjbTZbiV8HAACAL/C7kcU77rhDM2fO1Ntvv63g4OBLRhaDgoJUoUIFNWnSRBUqVJDNZlOLFi0kSe3atdNzzz1neiwAAEBZYzN+O/SG6yZm3BqrS/CKBRM7Si63V85dpUpFZWbmeuXc/o7eeY7eeYa+eY7eeYa+ee5KvQsLCzbd5nfT0AAAALh+CIsAAAAwRVgEAACAKcIiAAAATPndamhfsmBiR6tL8AqH3SbvLG8BAAC+hrDoTV5aMWw1/7wqAABQHKahAQAAYIqwCAAAAFNMQ3tTOYfVFVyWw26TO99ldRkAAMCHERa9aOCUTVaXcFn+ugAHAABcP0xDAwAAwBRhEQAAAKYIiwAAADBFWAQAAICpMhkW09LSNHToUKvLAAAA8HllMiz+lmEYMgzD6jIAAAB8Tpn+6pz4+HjdfvvtSk1N1cyZM/XII4/I6XTK6XRq+vTpioyMVHx8vBo0aKDU1FRVrlxZiYmJVpcNAABQYsr8yGKzZs305ptvKjQ0VLNnz1ZKSopGjBih5OTkwn3atGmjhQsXyul06ocffrCwWgAAgJJVpkcWJalx48aSpLy8PE2ePFlHjx6Vy+VSaGho4T4NGjSQJEVERCgrK8uKMgEAACxR5kcW7fZfWvDpp58qODhYS5Ys0ciRI03vYeTeRgAAUJaU+bB4UaNGjfTNN99o0KBB+vzzz60uBwAAwCfYDIbKvCZm3BqrS7isBRM7Si631WUUUaVKRWVm5lpdRqlE7zxH7zxD3zxH7zxD3zx3pd6FhQWbbmNkEQAAAKYIiwAAADBFWAQAAIApwiIAAABMlfnvWfSmBRM7Wl3CZTnsNvnW8hYAAOBrCIve5GMrjX/Lt6sDAAC+gGloAAAAmCIsAgAAwBTT0N5UzmF1BZflsNvkzndZXQYAAPBhhEUvGjhlk9UlXJavL8ABAADWYxoaAAAApgiLAAAAMEVYBAAAgCnCIgAAAEyVirA4evRojR079pqOyc7O1tq1a6/pmPHjx2vPnj06efKkXnrppWs6FgAAwB/5fFjMyclRdna2Tpw4odzc3Ks+Ljs7W++9994lrxuGIcMwLntsWFiYxo0bd821AgAA+BufD4ubNm1Sp06d1KlTJ3344Yfatm2bJk+eLEk6c+aM4uPjJUmvvvqq+vbtq4SEBL3//vtauHChdu7cqfj4eG3fvl3x8fGaMWOGHnroIZ09e1YDBw5UfHy8YmNjdfjw4SLvmZaWpqFDh0qSkpOTlZCQoB49euhf//pXiV47AACA1Xz+exbff/99TZs2TYZhaNKkSYXh8Lc++ugjLV++XIGBgSooKNAf//hHHTlyRElJSYX7NGvWTI8//rgkafbs2apYsaI+/fRTJScn65lnnin2vP369dNDDz2k/Px8de/eXX369JHd7vMZGwAA4Lrw6bB45swZ7d27V4888ogkad++fbLZbMXu++ijj+qpp56SzWbT4MGDFRQUdMk+jRs3liTl5eVp8uTJOnr0qFwul0JDQ01rWL9+vVavXi2bzaYTJ04oKytLVatW/f0XBwAAUAr4dFjcsGGDxowZoz59+kiSVqxYodTUVKWnp0uSvv/++8J9mzZtqr/85S/6+uuvNWfOHD322GNyuYr+lN3FEcFPP/1UwcHBWrJkibZs2aLFixeb1pCUlKR169ZJkjp37nzF+x0BAAD8iU+HxXXr1unFF18sfN6qVSuNHz9elStXVkJCQuFIoSSNHDlS+fn5ys/P16hRoxQWFibpl5XUAwcOLHLeRo0aae7cuRo0aJCioqIuW0Pr1q0VFxenunXrKiQk5PpdHAAAQClgMxgq85qYcWusLuGyFkzsKLncVpdRRJUqFZWZefWr3vF/6J3n6J1n6Jvn6J1n6JvnrtS7sLBg022s1AAAAIApwiIAAABMERYBAABgyqcXuJR2CyZ2tLqEy3LYbfKtOxYBAICvISx6k48tHvkt364OAAD4AqahAQAAYIqvzgEAAIApRhYBAABgirAIAAAAU4RFAAAAmCIsAgAAwBRhEQAAAKYIiwAAADBFWAQAAIApwiIAAABMERa9YPny5YqNjVV8fLyOHTtmdTk+rXHjxoqPj1d8fLy2bNmi//73v/r73/+u+++/X08//bQKCgqsLtGnOJ1OxcbGqnnz5tq4caMk6cyZM/rb3/6muLg4JSYmFu778ccfq1+/foqNjdXu3butKtknFNe3xMRERUdHKz4+XmPHji3cl779n2+//Vb9+vXTgAEDNGTIEGVnZ/N5u0rF9Y7P3NU5deqUYmNjNWDAAMXFxenHH380/duwe/duxcbGql+/fvr4448trtxaxfVt1apV6tChQ+Hf2YuuuW8GrquzZ88avXv3NpxOp7Fr1y5j9OjRVpfk06Kjo4s8X7RokfH6668bhmEY//jHP4zNmzdbUZbPKigoMDIyMoxXX33V2LBhg2EYhjF9+nRj/fr1hmEYxuDBg419+/YZLpfL6Natm3Hu3DkjPT3diI2NtbJsyxXXt18/voi+FZWenm7k5uYahmEYS5YsMebMmcPn7SoV1zs+c1fH5XIZbrfbMAzD+PLLL41x48aZ/m2IjY010tPTjZycHKNbt26Gy+WyrG6rFde3t99+25g/f/4l+15r3xhZvM52796tFi1aqFy5cvrTn/6kQ4cOWV2ST/v555/Vv39/jRs3TmfPntXXX3+tdu3aSZLatm2rr776yuIKfYvNZtMf/vCHIq/t2LHjkp4dPnxYkZGRuuGGGxQeHi6Xy6ULFy5YUbJPKK5vkvTaa6/p/vvv13vvvSdJ9O03wsPDVaFCBUlSQECAHA4Hn7erVFzvJD5zV8PhcMhu/yWenDt3TrfddluxfxsuXLggt9ut8PBwVapUSZGRkTp8+LCFlVuruL5J0ooVKxQXF6c333xTkjzqWzlvFl4WZWVlqXLlyoXPDX56+7I2bdqk0NBQrVy5Ui+//LKysrIUEhIiSQoJCVFWVpbFFfq+3NxclS9fXtIvPUtLSyvSx4uvZ2ZmKjw83Koyfc6AAQM0atQonTt3Tg888ICaNWtG30ycPXtWS5Ys0fz587V27Vo+b9fg172z2Wx85q7S/v37NXHiRP38889KTEzUF198ccnfhszMTAUHBxcew9+MS/sWGRmpbt26ye12a9iwYWrcuLGqV69+zX1jZPE6CwkJUXZ2duHziykfxQsNDZUkRUdHKzU1tUj/zp07VyR4o3gVKlQoHIm42LPKlSvr3LlzhfucO3dOVapUsahC31S1alVJUnBwsO688079+OOP9K0YeXl5GjNmjCZOnKjQ0FA+b9fgt73jM3f1oqKitGzZMiUlJenZZ58t9m9Dcb0r638ziuubw+FQYGCg2rdvr++//96jvpFkrrNGjRrpq6++ktvt1nfffadatWpZXZLPys3NldvtliRt375dtWrV0p///Gdt2bJFkrRlyxY1b97cyhJLhWbNmumTTz6R9H89q1Wrlg4fPqzc3FydPHlSDodDQUFBFlfqWy7+n6XL5dLOnTt1880307ffcLlcGjt2rOLj49W0aVNJfN6uVnG94zN3dfLz8wsfBwcHq3z58sX+bShfvrwcDodOnDih3NxcHTlypEz/zS2ubxc/c4Zh6Ouvv1ZkZKRHfWMa+jqrUqWKunfvrv79+6tcuXJ67rnnrC7JZx08eFATJ07UDTfcoMDAQE2ZMkVVq1bV+PHj1b9/f9WpU0d33XWX1WX6nDFjxmjv3r2qWLGidu/ercGDB+uxxx5TcnKy7rzzTt16662SpJEjR+qhhx6SzWbTE088YXHV1vtt37KysnTgwAG53W516dJFtWvXlkTffu29997T119/rfPnz2vhwoW6++67+bxdpeJ6d+jQIT5zV+G7777TSy+9JJvNJkkaP368brnllmL/NowfP16jR4+WYRgaMWKEypUru7GmuL4tWLBAn3/+uWw2m5o3b65WrVoVbruWvtkMbqoDAACACaahAQAAYIqwCAAAAFOERQAAAJgiLAIAAMAUYREAAACmCIsAIKlevXqaPXt24fPx48cXfq/b9TJmzBh17dpV7777ruk+S5cuVWJi4nV93+stOztbK1assLoMACWEsAgAkm644QatXr1aeXl5Xjn/iRMndPjwYb377rvq2rWrV96jpBAWgbKFsAgAksqXL69OnTpp5cqVl2z75JNPFBMToy5dulzVqN+cOXPUpUsXxcTE6KOPPpIkDRs2TEeOHFG3bt30ww8/FNn/gw8+0D333KPevXtr9+7dha/v3r1bPXv2VExMjJ5++unCXzzasWOHevfura5du+pvf/ubpKIjoWlpaerbt68kKTExUU888YRiY2PVoUMHbd++XePGjdM999yjV199tfC9Vq5cqV69eqlr166FI6zbtm3ToEGDNGzYMHXq1EmvvfaaJOnll1/Wjz/+qG7dumn+/Pn68ssvFRMTo27duik2NvbqGg6g9DAAAEarVq2M9PR0o1OnTobT6TQef/xx45NPPjHy8vKMdu3aGcePHzfy8/ONfv36GV999ZXpeXbt2mX06tXLuHDhgpGRkWG0a9fOyMnJMY4dO2b06dPnkv0vnj89Pd24cOGC0bt3b+PVV181DMMwoqOjjT179hiGYRhjxowx3nnnHePChQtGhw4djP379xuGYRhnz541DMMorNcwjCLv9eqrrxqDBg0y3G63sWnTJuPPf/6zcfToUePChQvG3XffbeTk5Bj79u0zRo8ebbhcLsPtdhtDhw41du/ebXz55ZfGnXfeaZw5c8bIzc017rrrLuP8+fOXXMvQoUONrVu3GoZhGNnZ2b/zvwQAX8PIIgD8r/DwcDVr1kzr168vfO3QoUOqU6eOqlevroCAAN13333asWOH6Tl27Nihe+65R4GBgfrDH/6gBg0aaP/+/ab7Xzx/eHi4AgMD1alTJ0m/TPUWFBTo9ttvlyTFxMRox44dOnjwoG6++WbVqVNH0i8/MXold911l+x2u+rVq6caNWqoZs2aCgwMVI0aNXTy5Elt3bpVO3fuVM+ePdWjRw8dOHBAR44ckSQ1bdpUVatWVYUKFXTTTTfpxIkTl5y/SZMmeuGFF7Ro0aIiv08LwD+U3R9RBIBiDBo0SOPGjdNtt91WYu958bdcf/v4Wtjtdhn/++utvw1sAQEBhee++PjiMW63W4ZhKC4uTsOGDSty3LZt2xQYGHjJ/r/9HdmhQ4fqrrvu0kcffaQ+ffro7bffVtWqVT26DgC+h5FFAPiVOnXqqEaNGtq6daskqXbt2jpw4IAyMjLkcrm0ceNGNW3a1PT4pk2b6oMPPpDT6dTJkyf1/fffKyoqynT/2rVra//+/crIyJDT6dSmTZskSSEhIXI4HPrPf/4jSVq3bp2aNWumW265RceOHdOBAwckSZmZmZKkiIgIpaamSlLhfZJX684779S6deuUnZ0tSUpPT9fZs2dN969UqZLOnz9f+PzYsWOqX7++RowYoRo1aig9Pf2a3h+Ab2NkEQB+Y/DgwerXr5+kXxa+PP300xo8eLAKCgp0zz33qHnz5pKkbt26ac2aNUWO/dOf/qS7775bPXr0kM1m08SJE1WpUiXT8FW+fHlNmDBBCQkJCgkJKRIsn3vuOU2YMEFOp1NNmjRRdHS0HA6HZsyYoccee0xOp1PVq1dXUlKS+vTpo4cfflgbN27UX/7yl2u63rp162rQoEEaMGCADMNQpUqVNHPmTNP9q1atqnr16hUuajl+/Li2bdsmu92upk2bluioLADvsxkX5y0AAACA32AaGgAAAKYIiwAAADBFWAQAAIApwiIAAABMERYBAABgirAIAAAAU4RFAAAAmPr/QonARSOynu8AAAAASUVORK5CYII=\\n\",\n      \"text/plain\": [\n       \"<Figure size 720x432 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"litstudy.plot_country_histogram(docs, limit=15);\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 15,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 720x432 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"litstudy.plot_continent_histogram(docs);\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Network analysis\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"The network below shows an example of a co-citation network. \\n\",\n    \"This is a type of network where nodes represent documents and edges represent pairs of documents that have been cited together simulatenously by other papers. The strength of the edges indicates how often two documents have been cited together.\\n\",\n    \"Two papers with a high co-citation strength (i.e., stronger edge) are usually highly related. \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 16,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"100%|██████████| 1000/1000 [00:00<00:00, 1752.38it/s]\"\n     ]\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"BarnesHut Approximation  took  0.14  seconds\\n\",\n      \"Repulsion forces  took  0.32  seconds\\n\",\n      \"Gravitational forces  took  0.01  seconds\\n\",\n      \"Attraction forces  took  0.01  seconds\\n\",\n      \"AdjustSpeedAndApplyForces step  took  0.04  seconds\\n\"\n     ]\n    },\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/html\": [\n       \"\\n\",\n       \"        <iframe\\n\",\n       \"            width=\\\"100%\\\"\\n\",\n       \"            height=\\\"1000px\\\"\\n\",\n       \"            src=\\\"citation.html\\\"\\n\",\n       \"            frameborder=\\\"0\\\"\\n\",\n       \"            allowfullscreen\\n\",\n       \"        ></iframe>\\n\",\n       \"        \"\n      ],\n      \"text/plain\": [\n       \"<IPython.lib.display.IFrame at 0x7f200d5357c0>\"\n      ]\n     },\n     \"execution_count\": 16,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"litstudy.plot_cocitation_network(docs, max_edges=500)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Topic modeling\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"litstudy supports automatic topic discovery based on the words used in documents abstracts. We show an example below. First, we need to build a corpus from the document set. Note that `build_corpus` supports many arguments to tweak the preprocessing stage of building the corpus. In this example, we pass `ngram_threshold=0.85`. This argument adds commonly used n-grams (i.e., frequent consecutive words) to the corpus. For instance, `artificial` and `intelligence` is a bigram, so a token `artificial_intelligence` is added to the corpus.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 17,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"corpus = litstudy.build_corpus(docs, ngram_threshold=0.8)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"We can compute a word distribution using `litstudy.compute_word_distribution` which shows how often each word occurs across all documents. In this example, we focus only on n-grams by selecting tokens that contain a `_`. We see that words such as `artificial intelligence` and `trade offs` indeed have been recognized as common bigrams.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 18,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>count</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>artificial_intelligence</th>\\n\",\n       \"      <td>13</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>author_exclusive</th>\\n\",\n       \"      <td>41</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>berlin_heidelberg</th>\\n\",\n       \"      <td>83</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>chinese_academy</th>\\n\",\n       \"      <td>6</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>coarse_grained</th>\\n\",\n       \"      <td>16</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>...</th>\\n\",\n       \"      <td>...</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>synthetic_aperture</th>\\n\",\n       \"      <td>7</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>trade_offs</th>\\n\",\n       \"      <td>10</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>unified_device</th>\\n\",\n       \"      <td>108</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>xeon_phi</th>\\n\",\n       \"      <td>21</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>zhejiang_university</th>\\n\",\n       \"      <td>6</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"<p>63 rows × 1 columns</p>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"                         count\\n\",\n       \"artificial_intelligence     13\\n\",\n       \"author_exclusive            41\\n\",\n       \"berlin_heidelberg           83\\n\",\n       \"chinese_academy              6\\n\",\n       \"coarse_grained              16\\n\",\n       \"...                        ...\\n\",\n       \"synthetic_aperture           7\\n\",\n       \"trade_offs                  10\\n\",\n       \"unified_device             108\\n\",\n       \"xeon_phi                    21\\n\",\n       \"zhejiang_university          6\\n\",\n       \"\\n\",\n       \"[63 rows x 1 columns]\"\n      ]\n     },\n     \"execution_count\": 18,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"litstudy.compute_word_distribution(corpus).filter(like='_', axis=0).sort_index()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Let's visualize the word distribution from this corpus.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 19,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAABIsAAAEDCAYAAAC1VIR8AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAADI0klEQVR4nOzdd1QVV/c38C8I2LFrosZeYo89scSSxBY1lhg1dhTUKCIIdlTAiooiYsHeFXsvWBB7QxEVe0Ok997ufv/gvfNc85ifzgVMzPP9rJW1FOO+x7kzZ87sOWcfAxEREBERERERERERATD8uxtARERERERERET/HEwWERERERERERGRgskiIiIiIiIiIiJSMFlEREREREREREQKJouIiIiIiIiIiEjBZBERERERERERESmM/u4GEBEREX1KvXr1QmZmJiIiImBkZISiRYuiWLFi2Lhx49/dNMVvv/0GFxcXlC9f/u9uChEREf0PYrKIiIiI/qfs27cPAODm5oaSJUuif//+f2t7MjMzkSdPnr+1DURERES6uAyNiIiI/uedP38e3bp1Q9euXeHm5qb8vEWLFpgxYwa6dOmCsWPHIjk5+Z2/d+vWLUyaNAkAsHHjRnTv3h0AcPXqVdjb2wMA9u7di65du6Jr167YtWsXAODNmzf45ZdfYGVlhS5duiAzMxPTp09H586dMW7cOKSlpQEAQkND0a9fP/zyyy/o1q0bnj17luvHgoiIiIjJIiIiIvqflpKSAgcHB3h4eGD//v24dOkSbt68CQCIjIxEmzZtcOzYMZQtWxbbt29/5+/Wq1cP9+/fBwD4+vrC2NgYCQkJ8PX1RaNGjRASEoJVq1Zh+/bt2LlzJzZs2IA3b94AAJ4+fYqxY8fi5MmTOHnyJGJjY3Hs2DGMGjUKDx8+BAAcPXoULVq0wMGDB7Fv3z6UK1fuEx4ZIiIi+l/FZBERERH9T3vx4gWqVq2KL7/8EsbGxujSpQt8fX0BAPnz58cPP/wAAOjatStu3br1zt81MTFBoUKFEBERgcjISPzwww+4c+cOfH190bBhQ9y7dw8tW7aEqakpChUqhDZt2uDu3bsAgCpVqqB69eoAgNu3b6Nz584wMDBA7dq1UaVKFQBZyaiDBw9i+fLlePXqFfLly/epDgsRERH9D2OyiIiIiOgjGRgY/NfPGjZsiIMHD6JChQpo3Lgxbt68icDAQFSqVOn/jJU/f/6/jK39ddOmTbFt2zYUL14clpaWuHLlSvb/EUREREQfwGQRERER/U+rXLkynj17htDQUGRkZODEiRNo1KgRACA5ORnnzp0DABw/fhyNGzf+r7/fuHFjbNq0CY0aNUL9+vVx6NAhVKtWDUDWzKArV64gISEBiYmJ8PHxQf369f8rRsOGDXH8+HEAwMOHD/H8+XMAQFBQEEqVKoXff/8dP//8Mx49epQrx4CIiIhIF3dDIyIiov9p+fLlw8yZM2Fubg6NRoOOHTuiSZMmAIASJUrg3LlzWLRoESpVqoRx48b9199v2LAhQkND0ahRI+TPnx/FixdHw4YNAQBlypSBubk5+vXrBwAYOnQoypcvr9Qt0urYsSMuXbqEzp07o3r16qhZsyYA4Pr161i7di2MjY1RtGhRuLi45OahICIiIgIAGIiI/N2NICIiIvonatmyJS5duvR3N4OIiIjok+IyNCIiIiIiIiIiUnBmERERERERERERKTiziIiIiIiIiIiIFEwWERERERERERGRgskiIiIiIiIiIiJSGP3dDfhY4eHxf3cTiIiIiIiIiIj+NUqVKvzen3NmERERERERERERKZgsIiIiIiIiIiIiBZNFRERERERERESkYLKIiIiIiIiIiIgUTBYREREREREREZGCySIiIiIiIiIiIlIY/d0NUCOPiREyNZL9OIYGyEzLyIEWERERERERERH9u3xWyaJMjcBstle246yf/lMOtIaIiIiIiIiI6N+Hy9CIiIiIiIiIiEjBZBERERERERERESk+q2VouYW1kIiIiIiIiIiIsjBZBNZCIiIiIiIiIiLS4jI0IiIiIiIiIiJSMFlEREREREREREQKJouIiIiIiIiIiEjBmkW5LCeKZ7NwNhERERERERF9KkwW5bKcKJ7NwtlERERERERE9KlwGRoRERERERERESmYLCIiIiIiIiIiIgWTRUREREREREREpGCyiIiIiIiIiIiIFEwWERERERERERGRgskiIiIiIiIiIiJSMFlEREREREREREQKJouIiIiIiIiIiEhh9Hc3gPSTx8QImRrJfhxDA2SmZeRAi4iIiIiIiIjo34DJos9UpkZgNtsr23HWT/8pB1pDRERERERERP8Wub4M7ebNm6hZsyaioqIQFRWFESNGoH///nBzc8vtjyYi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YPLkyRgwYACqVq2K77//Xn2LiYiIiIiIiIgo13wwWdSiRQv4+fmhQYMGqgI3bNgQW7du/a+fu7q6qopDRET0T8flbURERET0b/LBZNF3332HIUOGIG/evDA2NlZ+fvHixVxtGBER0ecit5a3MQlFRERERH+HDyaL5s6di507d6JmzZrKkjIiIiLKfayxRERERER/B8MP/Q/lypVD1apVmSgiIiIiIiIiIvof8MGZRcWLF8evv/6KFi1avLMMzcbGJlcbRkREREREREREn94Hk0Vt2rRBmzZtPkVbiIiI6BNhPSQiIiIi+isfTBb17NnzU7SDiIiIPiHWQyIiIiKiv/LBZFGrVq3e+3PuhkZERERERERE9O/zwWSRblIoLS0NZ86cwbNnz3K1UURERERERERE9Pf44G5oukxMTNC5c2d4eWV/2joREREREREREf3zfHBm0a5du5RfazQaBAQEwNTUNFcbRURERJ+n3CqczYLcRERERJ/OB5NF4eHhyq8NDQ3RqFEjTJ48OVcbRURERJ+n3CqcnZsFuZmIIiIiInrXB5NFI0eOhJGREQwMDAAAIoKMDA6EiIiI6N8htxJRTEIRERHR5+qDyaKBAwdi3bp1KFSoEAAgMTERI0aMwM6dO3O9cURERESfq9ycDUVERESUmz5Y4DolJUVJFAFAoUKFkJycnKuNIiIiIiIiIiKiv8cHk0Wmpqa4ceOG8vtr166hcOHCudooIiIiIiIiIiL6e3xwGZqDgwMmTpyIpKQkiAhMTU2xYMGCT9E2IiIiIiIiIiL6xD6YLKpSpQr27NmDhIQEAHhnSRoREREREREREf27fDBZlJKSgo0bN8LX1xcA0LhxYwwZMgT58uXL9cYRERER0bu4yxoRERHltg8mi6ZMmYKyZctiwoQJAIAjR45gypQpWLJkSa43joiIiIjelZu7rOVEIopJKCIios/fB5NFz58/fycxVLNmTfzyyy+52igiIiIi+vRyIhH1viQUERERfV4+mCwqVKgQTp8+jR9//BEA4O3tzbpFRERERPTRcmvpHJfkERER5Y4PJovmzZuH2bNnw8HBAQBQu3ZtzJs3L9cbRkRERET/Drm1dC43l+QRERH9L/tgsqhChQrw8PD4FG0hIiIiIvpHyK36TZwNRUREn4O/TBZNmTLl//yLnF1ERERERP9WuVW/KbdmQzEJ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VGwei9yP+77YPBbsh94X+3OLm5uxP7e4uRn7c4ub27F1fdJkUf78+ZGamoq8efMiPj4eRYoU+ei/GxOTBBjlyZF2aDSSFU8rt+LmUOzcivve2DwWuR83h2LzWOR+3PfG/tzi5mbszy1ubsb+3OLmZuzPLW5uxv7c4uZQ7H/FMc6h2DwWuR/3vbF5LD7fuLkZ+3OLm5uxP7e4uRn7c4ubC7FLlSr83j//pLuhNW7cGOfPnwcA+Pj4oEmTJp/y44mIiIiIiIiI6ANydWaRlZUV7t27hwIFCuDu3bswNzfHxIkTsWHDBnz77beoXr16bn48ERERERERERGplKvJIldX1//62dq1a3PzI4mIiIiIiIiIKBs+6TI0IiIiIiIiIiL6Z2OyiIiIiIiIiIiIFEwWERERERERERGRgskiIiIiIiIiIiJSMFlEREREREREREQKJouIiIiIiIiIiEjBZBERERERERERESmYLCIiIiIiIiIiIgWTRUREREREREREpGCyiIiIiIiIiIiIFEwWERERERERERGRgskiIiIiIiIiIiJSMFlEREREREREREQKJouIiIiIiIiIiEjBZBERERERERERESmYLCIiIiIiIiIiIgWTRUREREREREREpGCyiIiIiIiIiIiIFEwWERERERERERGRgskiIiIiIiIiIiJSMFlEREREREREREQKJouIiIiIiIiIiEjBZBERERERERERESmYLCIiIiIiIiIiIgWTRUREREREREREpPjkySJPT0/069cPgwYNQmBg4Kf+eCIiIiIiIiIi+j980mRRTEwMdu/eja1bt8LOzg6LFi36lB9PREREREREREQf8EmTRXfv3kWzZs1gZGSE+vXr48WLF5/y44mIiIiIiIiI6AMMREQ+1YcdPnwYwcHBsLCwAAB069YNhw8f/lQfT0REREREREREH/BJZxaZmpoiLi7uPx9uyPraRERERERERET/JJ80W9OgQQPcuHEDmZmZuH//PipWrPgpP56IiIiIiIiIiD7A6FN+WNGiRdGjRw8MGDAARkZGmDNnzqf8eCIiIiIiIiIi+oBPWrOIiIiIiIiIiIj+2Vg0iIiIiIiIiIiIFEwWERERERERERGRgskiIiIiIiIiIiJSMFlEREREREREREQKJouIiCjbuFcCEf0bxcTE/N1NICIi+lt8VsmizMxM5defy4OJ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\\n\",\n      \"text/plain\": [\n       \"<Figure size 1440x216 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(20, 3))\\n\",\n    \"litstudy.plot_word_distribution(corpus, limit=50, title=\\\"Top words\\\", vertical=True, label_rotation=45);\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"This word distribution looks normal. Next, we train an NMF topic model. Topic modeling is a technique from natural language processing for discovering abstract \\\"topics\\\" in a set of document. We need to manually select the number of desired topics. Here we choose 15 topics. It is recommended to experiment with more or less topics to obtain topics that are more fine-grained or more coarse-grained\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 20,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"num_topics = 15\\n\",\n    \"topic_model = litstudy.train_nmf_model(corpus, num_topics, max_iter=250)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"To understand the result of NMF, we can print the top 3 words for each topic.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 21,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Topic 1: ['cluster', 'mpi', 'node', 'hybrid', 'communication']\\n\",\n      \"Topic 2: ['mapreduce', 'big', 'data', 'hadoop', 'cloud']\\n\",\n      \"Topic 3: ['simulation', 'particle', 'numerical', 'fluid', 'flow']\\n\",\n      \"Topic 4: ['learning', 'network', 'deep', 'deep_learning', 'training']\\n\",\n      \"Topic 5: ['fpga', 'memory', 'access', 'cache', 'bandwidth']\\n\",\n      \"Topic 6: ['openacc', 'compiler', 'openmp', 'directive', 'language']\\n\",\n      \"Topic 7: ['image', 'segmentation', 'algorithm', 'medical', 'sensing']\\n\",\n      \"Topic 8: ['sequence', 'alignment', 'protein', 'database', 'search']\\n\",\n      \"Topic 9: ['video', 'decoding', 'encoding', 'ldpc', 'motion']\\n\",\n      \"Topic 10: ['gpgpu', 'cuda', 'code', 'general_purpose', 'general']\\n\",\n      \"Topic 11: ['energy', 'heterogeneous', 'power', 'consumption', 'systems']\\n\",\n      \"Topic 12: ['graph', 'vertex', 'framework', 'analytics', 'edge']\\n\",\n      \"Topic 13: ['scheduling', 'task', 'heterogeneous', 'resources', 'execution']\\n\",\n      \"Topic 14: ['intel', 'matrix', 'phi', 'xeon', 'cloud']\\n\",\n      \"Topic 15: ['opencl', 'portability', 'benchmark', 'platforms', 'sycl']\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"for i in range(num_topics):\\n\",\n    \"    print(f'Topic {i+1}:', topic_model.best_tokens_for_topic(i))\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"An alternative way to visualize the output of NMF is to plot each discovered topic as a word cloud. The size of each word in a cloud indicate the importance of that word for that topic.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 22,\n   \"metadata\": {\n    \"scrolled\": true\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAA1MAAAEkCAYAAADKAGvMAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAEAAElEQVR4nOy9d4AdZ3n2/Zt+etteterNsmTJvWPjBhhMCaGHhJCQvEBCeuENIfVLQhoEAiQhEEIJvHRsMDbuvciS1btWWm0vp7cpz/fHMzO7q2ILg0vgXInw7p5z5kx5yl2u+7oVIYSghRZaaKGFFlpooYUWWmihhR8J6ot9Ai200EILLbTQQgsttNBCC/8b0XKmWmihhRZaaKGFFlpooYUWngNazlQLLbTQQgsttNBCCy200MJzQMuZaqGFFlpooYUWWmihhRZaeA5oOVMttNBCCy200EILLbTQQgvPAS1nqoUWWmihhRZaaKGFFlpo4TlAf7FP4MXE6173OlzXZXp6Gl3XyWQyZLNZPvvZz571Md797nfz8Y9/HNM0n/W9n/rUp/jSl76Ebds8+OCDP8aZt/CzihdyzHqex6//+q9z9OhRNE3jTW96E29/+9t/zCto4WcNL/Q6+0d/9Efs2rUL13XZsmULH/rQh1DVVtywhbPHCz1mA7z//e9nfHycr3zlK8/hrFv4WcYLPWbf/va3Mz09Hb73W9/61nM99Z8KKK0+U/Cxj32M9vZ23vzmNz+v37Njxw46Ozt53ete13KmWvix8EKMWc/zePjhh7nsssuoVqu8/vWv59Of/jQDAwPP23e28NOLF2qdLZfLJBIJhBD8xm/8Bq95zWu49tprn9fvbOGnEy/UmAV48MEH+epXv8ro6GjLmWrhOeOFGrNvf/vb+dM//VOWL1/+vH7P/xa0wnUn4d577+Xmm2/mVa96FR/72MfCv1966aX8yZ/8Ca94xSt473vfS61WA+Caa66h0WgA8JWvfIWbb76ZV7/61Xz0ox895dgbNmygq6vrhbmQFn5m8HyNWVVVueyyywCIxWIMDQ0xNTX1Al1VCz/NeD7X2UQiAYDrujSbTRRFeQGuqIWfdjyfY9a2bT75yU/ya7/2ay/MxbTwM4Hnc8y2sBgtZ2oB6vU6H/7wh/n0pz/NN77xDR588EGeeOIJAGZmZrjqqqu47bbb6O3t5Ytf/OKiz+7du5cvfOELfOlLX+Lb3/4273jHO16MS2jhZwwv1JidmJhg3759rFmz5nm9nhZ++vFCjNnf/u3f5rLLLiMej3P11Vc/35fUwk85nu8x+5//+Z+89rWvJR6PvyDX08JPP16IdfYDH/gAr33ta/nCF77wvF/PSx0tZ2oBjhw5wvLly+np6cEwDF7xilewdetWAKLRaEgVedWrXsWTTz656LOPPfYYr3zlK8OoaCaTeUHPvYWfTbwQY7bZbPKBD3yA3/3d3yUWiz1/F9PCzwReiDH793//99x///2oqsrDDz/8/F1MCz8TeD7H7MTEBA8++CCvfe1rn/8LaeFnBs/3OvuRj3yEb3/723z2s5/l29/+No8++ujze0EvcbScqeeIFnWkhf9teK5j9oMf/CAXXXQRN91000/4jFpo4Znx46yzpmly3XXXceedd/4Ez6iFFp4ZP+qY3bNnD4cOHeLaa6/lLW95C7t37+Y973nP83R2LbRwKp7LOhuUrKTTaW644QZ27tz5kz6t/1VoOVMLsHTpUg4dOsTExASO4/D973+fzZs3A1Cr1bj77rsB+N73vseWLVsWffbiiy/m1ltvpVwuA5DP51/Qc2/hZxPP95j9xCc+gW3bvP/9739+L6SFnxk8n2NWCMGxY8cAKaBy9913s2zZsuf5ilr4acfzOWavvvpqHnjgAe666y6++MUvsm7dOj75yU8+/xfVwk81ns8x6zgOs7OzgGSu3H///axYseJ5vqKXNn6mpdFPRiQS4UMf+hDvfve78TyPG264gfPPPx+AtrY27r77bj7ykY8wNDR0inG5atUq3va2t/GmN70JVVW57rrreN/73rfoPZ/4xCf48pe/zOzsLFdeeSW/+qu/ylvf+tYX7Ppa+OnD8zlmy+UyH/3oR1m6dCm33HILAL//+7/PpZde+oJdXws/fXg+x6wQgt/7vd+jUqkghGDLli286U1vekGvr4WfPjzftkELLfyk8XyO2WazyS//8i9j2zZCCG688UauuuqqF/T6XmpoSaOfJS677LKWnHkL/6vQGrMt/G9Da8y28L8NrTHbwv82tMbsTx4tml8LLbTQQgsttNBCCy200MJzQCsz1UILLbTQQgsttNBCCy208BzQyky10EILLbTQQgsttNBCCy08B7ScqRZaaKGFFlpooYUWWmihheeAljPVQgsttNBC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d+V6uvj3jwu5Zv/gD/6A66+/nsOHD/PmN7/5u3ZNXfz7xoVas3fddRfbt29naGjou3o9Xfz7x4XcZ3//938/TsJ+EAlvP/DJ1LFjx1i/fj2Dg4MYhsFtt93GE088AUAikeBVr3oVALfffjuPP/74qt999NFHee1rXxtXP/P5/Pf1vXfxg4kLuWbDMOTXf/3Xeetb38rg4OC//mK6+IHAhVyz/+k//SceeOABtm/fzpe+9KV//cV08QOBC7Fmm80mf/d3f8d73/ve796FdPEDgwu1z37gAx/grrvu4pOf/CQHDhzgs5/97Hflev4t4Qc+mXox6FJEuvi3hu/2mv3TP/1TTNPkPe95z3f1dbvoIsL3Yp9VFIXbb7+de+6557v+2l108d1as6dOneLkyZPcdttt3HzzzSwuLvKGN7zhu/LaXXSxEt/Nfbavrw9FUbBtmzvvvJM9e/Z811773wp+4JOptWvXcuTIEWZmZvA8j7vvvpudO3cC0Gq1uO+++wD48pe/zK5du1b97tVXX82XvvQl6vU6AOVy+fv63rv4wcSFWrOf+9znePTRR/lv/+2/fXcupIsfGFyoNXv8+PH43/feey/r1q37111IFz8wuBBrdvPmzTz00EPce++93HvvvRSLRT7zmc989y6qi3/XuFD77OzsLABBEHDfffexYcOG78LV/NvCD3wyZds2v/3bv8173/teXv/613PNNdfEsyClUon77ruP1772tZw8efIspZRNmzbxzne+k7e97W3ceeed/P3f//1Zr/8Xf/EX3HDDDSwuLnLDDTfw8Y9/HIBPf/rT3HDDDUxPT3PrrbfyR3/0R9/7i+3i3wUu1Jr9vd/7PWZmZnjzm9/M6173uh/IVn4XLw0Xas3+0R/9Ebfffjt33HEHR48e5ed+7ue+9xfbxb8LXKg120UXLxUXas3+yq/8SixckUgkeMtb3vK9v9iXGX5gpdHPB9ddd11XlrSLf1Portku/q2hu2a7+LeG7prt4t8aumv2e4sf+M5UF1100UUXXXTRRRdddNHFS0G3M9VFF1100UUXXXTRRRdddPES0O1MddFFF1100UUXXXTRRRddvAR0k6kuuuiiiy666KKLLrrooouXgG4y1UUXXXTRRRdddNFFF1108RLQTaa66KKLLrrooosuuuiiiy5eAvQX88O1jsfJpRaqNE7uz1h4QUjT8elJmRxdaJKxdJKmRtPxKSYN2l5A0/HJ2DrHFpqYuoKtaxSSBjnb4OhCg4GszWLDIWvrVNoeLddnvJBkpt6h3HLJJwzWFpPM1DromoIK1BwfS1PRVGg6PsO5BF4QMF3rYOkaGUvDDUKKCWOV03MYhvhhiOeHKAroqhp/XVUV/CBEAfwwRFdVgjBEV892ig5C8TvaOb4H4PpC10NTFZ7jR1a91pk/E0hZEEWBMARF/juCoijiWgLxvhWUVd8PgpC/+OYxBnIWP7Jz+Jx/NwzFZxeEkLa0sxyxwzAU10mI9jxu2dF7VZXvrqv2vwZ+EFJuuXhBSMbWSejic257AdW2h64q5BMGigL1jk/T8UmZGmlLAyAEPr93lvWlJDsGMwAEYUil5eEFIfmEjq4q57xnofz7YSheR1cV5uodZusOmqIwnLPJJXTCEBZbLoaqMFlp44cwVrDJWOKxrHU8Jisd2q5PKWUymLNXrcWvH5xn71SNn7t+HE1VcP2ApaZLMWmgayphGNJwfBwvIJcwKLdcPvX0FMWkyVVr8liGSm/KBGCx6dJwfCxdpTdtosrrCsMQxw+ZqLSptlySpsZIPkHCUAlCmKl1mKt30DWVwaxFIWEAYh10vIC79s8xXkxgGyrrikmqbY97Ds5zUX+akZxNMWnw+X2z5CydgazFSM7m8dMV1hQSDOds7to/x6s2lnjkZBlLVykmDUZyNgrw1UMLDGUt1haTpEyNrx9e4LVbezm51GKi0mHHYJrP753j4sEMGUtjNG/zreNlspZGteOTs3UuH8m+bNZshDM1gULEHqAq4t8AHS/gVLlFPmHQcn38IMTxA1RFwdBU/CBkvJhEU+DEUotAvmbL9elNW1TbLjnbYL7pAIg1F0LHDygkDExNZbrWJmXqKIr4e7WOx3DWls/Nc+wV0WYl3zNEe6BCueUyV+9g6iqqfA4Wmw4dLxDPC6AqCllbJ23qHFtsMpyzma136E2Z4vlRFbKWjqqK/a/jBaRMjRAIAlBV8XdNTcUNxOvqqoor740fhqgK2LqGKfeEesfjwEydf3pikuvXF7lje/95rYm257PYdMlYOq4f0PECFAUMTSWhq5TbHklDw/UDbF3j9796mDdcPMAVa/JnfcZBKD6bpKmx8i+7frjqDAlDaLo+CUOLv3ah1+9i0+XZ2TodLyRpqCgKXDKU5dnZOtM1h4ylsXM4y3zD5asH5zE0lbXFBJeP5pitd5iru5RbLoWEwcVDGY4uNjkw2+CK0Rz9GYsgDDm60OLIQhNDVbh8NIemKuyerFF3PDaUkowXE0xVO+yfaRACOwbT9GesVe8z2pujZymQ+7OqiCXr+CGnyi2ShjgD6o6HqaksNh1yCYOMpWPrGglD5VS5RQjkbIOlpkMxaVLteGiK+NpMvRPv49W2RylpsNhySZkaCgo9KTNef2ciDMXZVW57DGVtTpVbjOZtZmodXD8kZYn4SgFaXkBf2qLpinjINlQWGg5DWRvb0AjDkPmGQ8cPSBoaGUtnseli6SK2URRouwEZS8eRa1hXFYIQsrZOveNhaCr1jodlqGQtnXLLRVMVcrZByw3kvQxRFBGbhUDC0J4zNnq5IJB7FnJdRIgeTUNTmK51CEJxFhuaSqXtinMfBVNX4p+N9khdVbB0FVNT49i1J2VyaL5B2tQZy9uUWy5tL6A3bXFgtk7a0mi6PjnboNJycfxQxsc6U9UOxaSBpasUEgYhcK67Wut4aKpCyjw7pI/2GkVRCIGO61Npexia2Jf9IMSSa7HSFn8/oaskTY2UqcdxbhRzrr6HZ8euUfyjKKAp4vcCGXOrqkIQhPHr+CEippevoaLghWEc74bh6r8RnSXPhzAMOTTfQAHSlk617ZG1dRabTnwPE4ZGrSNiORA5xIDMZ3pSJqfKLTKWTtsLaDhiHw+BNYXkc/7dF0ymQvmQhGFIveMRhCGGpqKrCmlTp+X5VFpufKhlbA3XD+n4AQ3XJ2VoVNsuqgJJU6OQMOIELG3qJA2NtuujqwoLTRFsJg2NlKWRcjS8IKCUNFAVyCV0NPlhWLqGrombmjJ12p5PGCI2KU3F0FQcPzjrWqYqHe49MMeh2TohMF5K8vpLBimmTMIw5PRSi6/sm2Wi0qY3bfLqrX1s7E+jKgoz1Q4PH11kvCfJNw/Os9BwWFtKcvuOAXrSJooiAtrvHF/iwSOL8Yd41doC164voSnw5KkKU5U2P7StLw54Hzq6iOsH3Lixh28fW0QBHjtRJmPrXL22yF17ZygmDd68cxhTV/nK/llGCwn2TFQ5NFtnMGdz+44BhvM2AAdn6zx+oswDRxYYzFrM1x0UBV65sYfNAyIxODBT45sHFwjCkA29KW7e3LsqGfP8gMdPlrn/0AL1jsem/jSv3tZHjwy+d09UmZfBzUNHFvCCkF1jeW7e0ktCHkYXCmEY8tipCkcXm9i6ynDO5orRHAtNl3uencPQxGZ34/oiuqZw/9FFPD9kqeXymq29DGQskEHXytd8aqLKofkmqgIpU+OmDSUMefBoqgjUog3VkGvTUBXmGw6fenoaTVVodDxcP+R9141hGxofe+QUIZA2Ncptj4Su8lPXiO9949ACxxdbmLrKycUWd+7o56o1+ecMnlpuwN995zR3bu9nY2+KMIQvPDNDxtK5bl2Be56d4+mJKvmEwUytw2je5rZtfaiqwt6pGo+cKOMHIb/4yrXxZ9hyAz755CQnFluUUuLZfd2OAcaLCXZPVvni3hkGMhYtN2BtKclr5euBSCIHsxYTlTbrS0l0VaGYNMjbOiM5m960iR+IRH1rf5rBrAh+ou06lP9ryc3/tq29caADUEgYDGVtBrMWtY4X/+LK38/aOjsG0xiaSq3jcWyhyVDOxpV7w3MdThcSfhhSbomE3wtEwURTlVWJtOsH8lCHUtLE0sV+FwVCXhCy2HQIQygmDfwgxA1CTE2l7QaYmkiGMzJZAkABW1fjAMrSNXT5dw1VxfECmq5PXibMKw9WRVEQS375PfpByF17ZyilTa4ZL4jnxtLFHiIDFAUFU1MxTZHwRAFY0/XJ2jqaojCQsQhDEdzkbYOUpcd/O2U+dxHHXEG8CMPlf5/5s2lL59KRHF8/OH/Wa0RJYq3jEYaQsbQ4sLA0UYxoOD5BIIJo21BREOuqX9douT5eIPaGCA1H7AHRvRVBjgjk15WSLDVdQsRZNtdw6EkZOH5IEIYkDY2papvBrI2hKbRkIHwhA9eG4zNV7WDr4tlcbDps7E3Rl7boTZk8eLxMf6bDcNZiIGPRmzbZ0pfC0BTmGy4HZhvcuL6ALRPEsXyCA7MNqm2P/ozFfMPl0ZMVrlubx9JVLF3l0ZNlwhDWFZM8fKJMKWXy9GSNnK0zXkyQMs8+g6LPMXr2NVVBUxTcQNxbBbEPK4qCbaj0Z0SSYhsqfWlreWUrCuNFEVQpIAu24jkLQxEEpi09Ln70Z8TvFlPmWXvNmcFpFPBWOx7llkspKZ41LwiptD3Sls5MrYMmn8mUqVFuuQRhyGDGYrbuUO145BwfW+6VpZRJ0/HpeAFtL6CUMlEV8XwCaIqP54dkLJ1CQvz9IBQBpqqI53Moa8f7RCFhosoidhCK+EuTxY2oeC6+rq0qAtQdTxZudbQLWHiN7rmqKCiID+y53ksuYfDMVI2BjEXHD1AQZ0rLDehNmXGylbF0HC8giAo5viji9KZFPNqXtpistunzTDK2TrvuEBJi6ir5hEHD8eMCWK0j9n5NVeLmxFLTxdRUJqtt0qaOpasijpaxc9rUZAx+dkhfbrnxWhAJDSQNjSAUfz8UNwVVVSgkTBw/EN/TVO56eorHji3xi6/eSCFl0HR9PHmOqMpy4hnFQKam8PChBb6+b5afvmkdAzk7vtemruD5AR/71nGeks9vb9bi/3n1RgoyrgRY+ZSEYcjX983yyJFF3n/zOkrp1QWS58Jg1qbt+qQtnSAMSVs6vrzeliuuz9JV9CCM13jK1Kl1vLi4Z2gqfhjSn7EwVHXVHn4uvGAyVZfV6uiPj+UT8cYdEmJpKqWUGR96iqKg20q8wVu6SGyiTTIgxNZVmk4gEqWUiR+GcRUnqtYoiE0oa+uYmvhalCWH2vKHCIC2OiiKDteEuryhhmHIVLXDB+85iKLANeuKaIrCYsOR1aqQk4st/vtXDjFWTHLN2iKHZuv80dcO80uv2sCWgTQLjQ4f+/ZJhvM2160vsqaY5It7plhoOPzizesxNIXdE1X+8v7j3LK1l4tHskyU20xXO0TvcO9kladOV7hlSy/y7OE7x5doOh7XbyjxyLElji00uHZdiS/tmWbfVI3LRnPcvW+WTf1pLh3N8eW9M7Rdn2vWFrlyvMB9B+f5s/uO8Guv2UzW1ml0xGYWBCEJU4s7MCsrYRnLYKRg8+VnZpiqtHnl5h5UlrsR9x9e4GMPn+TGTT1sG8zw4JEFnp2u8cu3bCSX0Nk3VeOfHjvNjqEsV60tsNBw+NuHT2JoKrdu7b3g1dJyyyVr6Vw+mqMgD6SnJqoMZm1uWF8EQJPVyV0jWWptn4dPLDFZaYtk6gw03YBHT1bYMZjBNlS+cXiRYtKgV1YYdVk9VhSFlisKBX4Y0psyKSZNfvyqESxNpdrx+JNvHGOy0mFtKcli02XXaI47tvdTbrn8yTeOMV3rsK6U5NbNvTJwgy8+M8OTpytcuSb/nMF/2tIYKyT4zskyG3pTVNoeB+cavGPXMPmEwZsuGWSu1mHbYIZXbiitCIDhFeuL5BMGn90zvZyNAHunaxyZb/Bz14/TmxaVmyioPzTXYDBr86O7hjE0Ja50RlAU2DGYodbxuP/oIqWUSY/8LDpegCe7wKrCqmBQUxSark+949F0/PjvVdseqqKgK6BralwN9AKR+PphSNsV3bkoUFjZPYy6kTsG0mQsHUNTXnaJFICCQkJXMeW+G6zoTCuKiNACXY332OgaDW1l8hDGiWdUhXeDYFXCKe69CPSVKANgxfdXHJaWrFRGRYIIT56u0pcxGcknznktXhASyM8ibeqrAq+WK/6GLj8fQxPX6wchoUzsDE1BUcTXe1IWpvz7C02XtKVhacvMgpXXFV2KsuJrM/UOuqrGBaHzQcPx+dzuaQ7MNgBYU0jwxksHySd0Ol7Avzw5xZH5BoFM9t5y2RCb+lIowO7JKp/dPQ1AX9qi3vEAOF1uU5eV5IytY+viINdVUeluuMtrvtHxyFo6x5eaJAwt7hr6YciJ+RYdT7AyzuzCfL+RTxiimGrpNByPluNzeL6J44tuvuMFWLronCQNjbS1HHqM5EVBJHpOTY34zAexlxeSoqqvyEr66XKHkJByW9xT1w+4eCjDE6erlNseV47lODPuUhVRkU4amljziPVnyQXi+mLt2bJzqioiubLlc9hyAzqeTzFpxgUOTwZj9Y5HwhBsGE0RxbSo6t3xAhHzuH7c6Q1DUAmpNtr8zecepdro8J7XX8VwXw4AQ1Xj5CxiGIQhOF7AYNbG8QJsQ6PW9igmjTiYNVRRcEgYy/dvz2QtLhSEYcht2/rY0p/mm4cXmakJ9k+t7bGlP81t2/owNIVvH1uSCavYf950yQBrS0kajs/n98yQS+gcnG3ghyFvvnSQsUKCQ3MNvrxvLn6Gb9rUw86RLK4f8vWD8+ybrhGE4hm6fXs/yXMkvN8P1OWZoikKXhDIZoE4H0JAU5c7KqYqOujFpIECzDccEqZGyhD762DGRlXF2TScs1EVhUrbI2eLTl/bDfB80YjI2cuffSFp0HJ8TE0E8llLpy9jYevqqmcjZxsyuHdE0SYMMXWFuYbofLZkcSsqoEXND9cP2D9ZZX1fmqbrU2578d6ZNDQ8uX7LLZem42NoqrgXQNIUnXY/CDk61+Chwwu87+Z1hBjUOz5tz8fWNXEeIdg+0bNlJgyOzTd49Ogib7t6NE6mIqiKws7xArmkwZefnubhQwv8zE3rn/fzOjxT57FjS9Tb3nMmU42Ox5HZOlsHsxjybDQ18VlE3TcF8SzmbB0/CAmA/5+5946z6yrvvb+7nt6n96beZVuWq9x7A0wNvYQkJCR5E0hugMBNgRtCEtK4CaGaSwdjjLuNuy3bki1ZvVhtep85vez2/rH23jOjGVkmCbGfzwcsac6css/aaz3lVxRFnJumZVM2ReMkVzFJhXWCbqH7WuOsxdS0CwPRFRlFlihbAjakugVSPKBhWDZl28GwRMXaFA8guQmmJEmENJnpkoFh25QNC00Wm2rVcBYctm3JEPI8+JokLR5b2g7MuJ0YWQJFkqlaFqrb0XEQnVrvzJ//XI8dnqBYM/nLm1fTnJjrgnsH7sMHxwlqCh+7rJt4UOMKs44vPnSUu/eMsKyhDxCb9rWrG7hxXRMS4gD9yUvDYpQf0RnLVdBUiatWNvivsdQo9EzhAB2pMLdvbuHwWJ5EUOMtm1s5NFZgOFthY3sC23boqYvw3q0daIrE8sYon7n7IAdH8mztSbO5I8nKpijbj0+zuSPJW0+D+TmOQ3MiQEuyiaPjRaaLtQU/L1Yt7to9wrbldbxvaweyBBvbE3zq5wd44eQMV6+qB8SN8f4LOuitj2DaohjdNTDLlSvrUV7j5/11xcU9KfYM53no8CS9dWG2diYpVC26M6EFXbGjEwVeHMixvD4CzEEWTw/DsqmYFhXDwsHh/I4EmbBGJKDg+F0ZUY56RYVtO1iOGKvvHMjSP1OmatpMFWt+d1RXZPrqI2huZySgigmAAwzMltk9lKNUs+ifKZMICmjgmSoAWZI4ryPJd3YMMlMyXNitQpubhKiyeIxyWuKN+5TyEqiTk1MlOtNh0V2VpLlGiuNwXkeSH7w4xFeePsmWziTntCeYfz4alsOLg1mKNYtMWCcWEBtwdzrES0M5eithltWF/Q69F711YV4azDHqQhxCmsKG5hg7+rOoisTGljjN8QBdqRB7RwsUaxbrmqO0JoI8dWIGWYLGaAAZcajkqyapkEZQldnUGmPvSB5JkljTFF1wcL1RQpElIoHT9z0PsmmJIkKV/cTSsBw0ZQ766xWpc9+VmIaYtujQafMKTMdxkB0BdbVsh5Cm+ImYYTkoytx3rrmTdCTcYsjmoUPjXLG8jrqI7kIMJf99mZbNtasa/H+T5u3JXrGGLaZV3mO8RMxLUGfLpj8NCsxrBuWrJoWqSSygMlM2ANExzpYNEiGN6ZIhIFchjalijVRYFCGlmvWavwfHcXj0yCSvTJb40AXtaIrMj14a5u69o7z7vDZUWeK8ziRXrqgT58DuEe4/ME5ffTfFmsmPd41wXmeSi3vS7B7K8syJaUDAWiIBFcsWyVbNFJPCimlTs2wiblLuOGA6DmXT8psDpu1QNm1Chtg/YgFtySnM/3T4w033DyO5KmOFGlf0pf0cAkSSWqhZlA3RpPWaKfPXo2m7UHx3KhvVFbJlk+mSgabIBFWZhphOWFNYXh/GcsT3rNUsLu1J8dJQjgNjBS7pTi16n15CqS2xiQbVxf9mO2JiaNkOTbEgNdOhbFgMzlZIhTV/ejaUrdCWDFGqWQRVmamShSZLhDSFbMXACWqM5Co0RMWEQ5EE1G/34WH++uuPUK7UaG9K8oFbtiBLEo2xABXDIqQrJEIaNcv2G1nevQYi13HwCkOJhtOKasuBp45Ns7Y5xoXdKR/ODjCaq3BqusxHLuygYth8/bl+VjZGWdEQEf9tjBBQFe7eO8ozx2fozoQxbYeXh3Js6Uzyvi1tOIipjAM8e2KGtmSQa1bWUzEtAm63+NB4gT3DOd57XhuqIvGt5wfZNZjlop70a1xd/70xWxL5Y1CTsWyxT3o5YMWwiAc1kiGx/5ZNG8dxyLlFe0hTxIS+ZrnFiyjCIrqYQmfCOsGogHx6BbXjQJMLVzUsh6oj7l1VlkiFRLEUD4rJVnBJ6KdDPKj6BUJEFwOGoAvblN19U5ZkP58dma3wt/cd4XNvWk1TMug3xVS3OWvZ+AMSDwEgGgySu57URTmrhJhyzu+6ibNF3MteY+u2za1sW1FPc3JhIQUgyxLndKXY3JlkaLrM0Ez5rN/Xuy7o4KaNzTSfoWEHsH8ox789eoy/f9cGkqpolonJo/jOxPWZO0Msd4Ksu3uQDSjg1yIeHehXibNmEomgwBh6XXxdkYkF8CEosozgKLl4UkmCyUKNhw9P8qb1TX73IawrGJbgS6ku7rFm2WiKRLFmYVi2nyg6wP0HJ+jOhFnr8lW8ODpRZN9InpvXNvgbStiZhx9nceHy4KFJmuI6h0YLrGqK0TivC+Y9tGZaHBkvsLwhOjclU2TWtsS5b9+YfwiHdYXlLuwPIBXRMG0b002O17cmeOjAOH913yEuWVbHhb1p2pKhJfGmZ4pkWEORJYKaQjqio7qJuvcakiTRUxfxE5DGuJjg9c+U2XqG56y5HXwQhYGASyx9CE+XakwUqqxpjvmJVH0sQHMiyKHRvF9MNcXFv3mJejKkudCi1xc85QDZsklPJkxQU9g3kue89gRtySAHxwp+ZzoT1hjNVUmGVNqSQV4ezvnFUKlmUTHEplk2LMKaQlMsQCyo0pEMYdg2zbEAiiyRr5p+wey4sAePq5GvGPzyyCTHp0rcsraJkCbTP28DkSSW5OQNZyvc8cIgV62op68+zI5Ts/TPVs762VuTQVIhjb3DeY5MFNjUlliQhP6q4W3Up3+jkiTRlQ7xsUu7ODha4LGjUxyfLPEb57b60wtdkbigM+mPzL2kaVVjlL66CLIkeArL6sIkQ6qfZLfEA9SvqPNhMook0VsXpjMdEjBjWST13ekQLYkgIDbKLe0JH/7m3Wk9mTBHxouc35n0/97ubsqaIs0l9vM+1xstDMvm0SOTPH1sGtMWB+tbN7XQWxdmqljjezuHuHZVPSsbo8yUDL67c5BLejNsaI1TMW3udaeatgMNsQDv2NxCkwupHM1X+enuEU5NlwCJVFjjIxd2EA+ofPP5AS7sTrO+NQ7A9hPTnJou885zWtk3kuOhQxO82J9lolDjwYMTtCbFlDKoKZyaLnHnyyNMFQ2uWVXP5cvq/M9TNW3uOzDOTg/qEdV566YW2pJBxvNVfrJ7hGRI48h4gbJhsaIhyjvPaV1QYBqWzazL4ZspGcSCKqWaSITCmkJOFlCZwdkKigQ10/ELfa97e7aoWQ4vDYikryMl1sy2vgzfe3GIQlVAuDtSIcbyVSYLYjIxnq9hOQ5juSrFmsnWrhR1UZ1zO5Lcu28cgJZ40IeVGbaDbYvJX1NMJHaZiE6hZuEgJlqqLKEqks+dyFdNqpZNOiwSMeNMHaD/gXAch4AqksKAO3XKhHWa4wJytmMgSzqsEXUv/rL6CDv6s1RNmy0dCXdCPDddNGyHXUM5ZkqGy8eR6M2EWFEf4cnjMwRVma1dSc5ti7NzIMfTJ2ZpiOok2+McnSwynBUQuM1tcUxbwK4XTCkdsBF7SEiTGZvK8+17dnDtBSvZsLzF/1zeNNgr6sK6IjhFlkW2DKYtkmxZEmvRg7Q5CKibYdmEtbkpvOqe5yFNYSRfpdU9N2PhAKlYCF1TqE9G/Oswlq9QNCwaIgFqlk1IU9BkCVWRGckJLqNpO2iKRLZsENFVMT05bV0rEqxsjLL9xDQ10+acjgShecX38oYI9VEd2xFIoIGZMisaIuiqxPHJMjNlg1zFXIA4CKgym13Ex/wieGVjlAcPTiBJcF5HknRYnLOHxgpUDJtdQzlAFCwnpkqvWzHVGAuANG/PZ648qBjKgqmeJkuEdYVC1UJTRHFs2gIu5vE8VSSCbhPUayglJY2qaRHWVYpVk6m84IpmooFF032AmmUzVagxU6yJYi6s+XD5gKpQF5mDZ2uKhGFJjM1WcBA5qJezOojm7d7BLMMzZXJlk0zUbdy6EFkvF3UcwRf1istoQCUZ0VAkecE68u6bmZLh8qZVMlHdzw2TIdltrolBC0BiibX4q4TH5/eazvHQ4vaH9xmqps3OE9PMFA2yJdP/eUhTqIvoAg5ZFYXu6dfe+1kiqPmNllep2V41zlpMLYWPh4WdJNxJWEAN4AAj2QoDM2UsZ45oFnI3kvnP5S3aoKr4G5PjOODASK7iVsELXztfNRnPC7iGBxc54/tCLK7RXIWAKoo3D5d9etiO6MTq87pTkuQVMXNVquDDzMPfn/YVtyaDfPqGFTx9bJrHj0zwwP4x3nZOK9etaTzjdMo+7TMo8wq9+etx/qEwHxYluxMDr9g6PRzHIVsxyFVN0u5IWHuVws4TT5j/OWXE3+cfTh6R3I83UB46mq9yaqaMIktc3J1ClSXWNccwLJvnTs4S1hUu6k6xrjnG9lOz7B7KsaIhQjqiUTFsdgxkMWyH/lkhuLK5LcFVy+vYOZBlYLZCs4v/BxZMN06/rOJgrNGbidBbF2ZgpsxsyTjr+591eRMbWmPoqsxovuqvaa/DZbjdyqoLoZElsfmf15nk4cMTSEjctq5prnEggaaKMba3SXmFnGE51EzBHaiaosmhyBI9dWFe3JWlf7pMcyJIzbJ9aEK2Igjam9sTyJLEfQfG3QaJC9V1DxZtXhLruEmkrkhYDhybKsyN4C2bfSMFbMchHdZoTQTZP1rAchzqIkJ44uBY0RWoCZEKaxwYK/iwisao2C/SYZ0T0yVWNUZpigXonxXFa9W0OTAmJlnL6yNEAwoHxgpYNjTHA3Qs0Ul7vcNxHPYO53j40ATvO7+d+qjOgwcn+M4LA3zyqj4yEZ2uTIgfvDTE71zSzX37x6iaDssaRGL29LFpdg/l+MDWDkK6wo93DfPDl4b52KVdWLbDd14YxLQdPnJhJ2FdoVgVBYllO5yYKrFmXjNrslCjf6YkiLjpMNevamA0V+WqFfV0pUPoLo6/WDVJR3Ru39jCN57rZ6JQW/B5nj0xw9PHpvnQBR2kwxoPHBznjhcG+MPLe6kYNs+emOaSngwfvaiTmZLBvz51kvWtcbZ0zk0akiGNeFCIZtRHdSH6oMlosoyqCBELD3oiJliKPxHxktCzhWnbPifJu4ciAZFU1yybsXyVO14YREKiIaYzkp27RytuYuU1MjRZ8HCAM3JKvfNQkiRSIfHngKpjOw6dcpiorvgEaa/TGtaVRXvO/2RMuHzcznTQn8SvaBB8onPb49iOSL4tWwghpEIqN672kA3QnZnLXAzLoVAzWVYXpiMZ9KF2s2WDrnSQ7kxI7HlucXH5sjS27QkwwabWOBuaXSEEt/nribHMP3ttR8I72nYeGOBLdzxOe2OKns4GLIH595tjFZcLrsrieXRFTNdTYZ14UCOiqwQ12Z/2eEltMiSarN4kSVNk6iMiPxLEfvH4dcua+X9//W4M0+KcVW3+e9RUmaQiM1M2kGWJQs0koqvUTIspVyzIQ0R4cNilQpIkLutL05kKsf3kDP/+TD+3b2xmTVPU/Q7mzgZFFhPlYs3iW88PkgxpLKuPEHanLt4yU+S5CfT81zmvI0lTLMBzp2b4+vZ+bljTwHkdSX/yqrlfwtauFB3p/2TG+t8QiiwxUagRC6qLprqnIzY8jp6XB0vg84+88K5CUFP8CeGzRyf46c4hrl/fxE93DjE4XUKRJS5b2cCHL+v2C1HHcTgxUeRrT5zg5f4shmUTD2ncvKmZ289rE4I07nX+wfMDjMyWuX59E//x+AleGRNn44V9Gf7s5lUENZkH945x38sjHBzOMZar8Od37vOb5lesbuC3rujx4W7ffbafR/aPMV2sYTtiXV6ztpH3XtxFLDgvpwEe2DPKIwfGmMrXCGoKt2xq5l0XdBCeV8T94LkBHto35n+Gv3jTGtozZxZseLWwHfjWUyd56sgkhmmTiQX4yzevoXEebNCwHH7w/ADPHJlk31CWYsXiD76728+N339JFzduaGJ4psxf/PwgN21s5rbNLQtqhKcOT/Ltp0/yJzeuZLXbNPzPxmvCuNRMm5cGsxyfLJEMa2ztSpIIahwaKzBdqjFbNmlPhTg6XvC7Dabt8PzJWcbyVTpTIc7rTPoQpt1DOV6ZKJIIqWztSglsMBL7R8U4OBPWKVYt/wOPF2o8e3way908vNVrWDYvD+U4MlEkHlA5vytFXURM0g6NFXh5KEcqLMh9qizTENUZcqFWp98QmgtPHMlWxVTB7VoPZyukI9qix58pJEmiLhrg1vVNXLWinp/tHuanu4Y5vzsluGXuRM9rJhqWw3TRIKy/9umB4zhMFqp+R71UE/ySTHQ+F0BawHmIBcTGoavyAgWapSIe1AjrCmO5qt/FLRsCnra8IbqwZnoDFVBeyJLEptY4G92bw3Fg/1iBU9NlVEViW18aXZHZN5pnS0eCK/oyvDSY5dyOBGP5GofGRYJfH9HZ2pnkwFjBJwOvbYoxXqiyoSXO8akSRydLhDWZzW0JqqbNyZkS57QlsB3Y0T/LyoYo53cmuWf/GKMucbinLkzAVb3KuAetBw3MuBysVFioAH3juQGC7hQxERMb+uBshQcPjjOaq1IyLL75XD+b2hNc0JVCkiRWNka5a88oy+ojfkMCxFd1XkeCn+8d4+R0id66MDesbiRXMbh73xgjuSrFqsUdOwZZ3hDhqhX1rG6Ksrk9wbdeGBCETVnmtvVN9NaFeerYFAdGC4IIX7PZ0pkk4DZGYPGUx7YdvnP3c+zYd4rVvU385lsvpSUe5MBYwVcAGitUuagrRVgTSetYocrFXSlCmsJAtsJYvkp9VGffaJ61TTGKrmqoKkmUDNtVb7SZPA26CgJikInoVK0Kp2bKLK+PMFGocUlP+r80vft1x/MnZ4kGBEdnaLZCMqTRP1NmslijMx3mmpUNnJgq8Y+PH8d2HH7v0m6hImc7bD8xTX1UJ1s2yJYN6iI6Tx+fJl8xKdYsjk+W+IPLu1lWH1nwfZ0NDuclF7oiIFed6fBpHCuJ5kRgUbJiOQ7Pn5zhnI4Eq5uiSJLEVSvq+cLDRxnKVkQnWFO4YkUdLYkgDbGAL6LjKUThCPERL/mLWkKAKBF0G38I+JPtOO6EX0DOW+clRK8ldEUoaI0X5oqkqaJBSFMIqgqPvzJFsWrxx1f2Egko3LdfTNtgbjpdrJmkXFXb4qtcU6GaafukeC/RkmXJF57weDHxoOon+2dTtvp1R0hT5lTB3EaJFw7e+3N8YQavCerF/Mcr7ncvuUWw11T0vkdR54gOveR+dllZ+Fzz/65IC5uOp4dtO2zfe4pKVTS3gqqCjbOAVxhQ3earNP+9isZlUJ3r4Hvbx3yQXQCvIBb3gKorWLZDSzzofzZNVdiytmPB+5IkiYimAAL+XDIs4iFxLti2Q0N0Tn0w6HIrPfXgRZ/REWqs3XVhOjMhfrxrhL3DOb+YOjVTFvBS02ayUOP8ziTTJYPxfJV3bG4hFdY4Nlk8a8HuKWu2JYPcnmzmfn2C3YM5zu1I0p0JM5avcX5XUhSELnrg9QpJEmIYluMQ0kTB6jgQDwgBAstxSLkqqfmq5cLT3emT5fgctmRINJ2yFaGOGNYUshUBPc6WDZ46MslotsLt57XRVRdm16lZ7njmFLoq8btX9aEqEuO5Kv/7rgOUaha/fWUP9bEAu07N8q2nTlI1bD54aZcvtDaeq/DYwXFOTpbY1JnkrVvamC0ZaIrk8+G76sLcsqmFeEjjkf1jvG3LHG+pJRVaMI0rGxbbVtazpjWOIks8sHeUbzx1ks66MDdtnJvSjmUrPH5ogt+4oIO6aIDHDk3wtSdPEA9pvHVLm4BwA9esbWRNa5z7Xh7l0YPjVM2lm/uvJWQJbtrYzLndKX6yY4iXTs4sEpSTZVjTGqcpHsCwbAamyrzvkk6fGrTCbQQ2xIOENIWfvzTEVasbiLnngGE53LdnhKppLwlJ/FXjNan5PXtyhkOjBbZ2JTkyUeSnu0d5x+YWHjw0QW9dmKMTRYay4pB/5vg0W7tSTBZr5CoGKxujPHJ4AlmWuKAryQunZtkznOOC7hTHJkv8ePcI79/Sxnihxs/2jHJZX4aaZXNyusz5XSlqls1Pd4+Qiej01oV5+PCkL1/94kCWnf1ZLupJcXK6zI93DfOBre1MFw3ufHmUS3rT2I7osG5sjXNxX4a/e+QV7t07ygW9GdH1Khm0pYT6z7ZldXzlyRNsPzHN6uY4A9Nlth+f5tYNzWfAsi6+Vscmi9g2ZKJCHVCRJV/OUZIkmhNBxnJV9o/k6K6LcGA4x+ExITLxmkOCF07OcElfhuZEkEcPTQCwsnGui6zKEomQxivjBV91L+x22GxHdI8F+dCkYlhM5gWxMhpQRcHcnebBA2P0NURIhTWeOTZNoWKypSt1pnf1hgrvBgeYrRhsPznLJT0pdEV0miqGzZGJIue2JTBthyOTJTa1xZko1Hihf5arltcRdAnTFcPi4FiBC7tT7BnJ0RQLMFao8typWc7vTHJqusyTx6e5tCfNwbEivZkIpm1zZKLEyoYIyxsi/Gaik+mSkKy1EeT6bMXg9o3NrsKMhWE53LS2gfpIgIpp8cEL2hmcqRAPCkUfRRY8klRI44bVDTiIJoCH1fZCcxOu8zqSCzqykiSxqTVBRypEwZUGlyVRPN+6rmnBNFeTZZGMKDK3rWvk4p4UB8YKdKfDtCSEutplfXWsaYoxXhCqlgWXx6IrMoWaIEar84hYtuPw+I4j/PD+nVx9wSo++JaL5wp697AOuThwRRaTZI+sPn8KHdEVMuEIsaBKsSZU3zrTIVc6WEwTDEskRQ6OPxEbmK0wkqugynPqalG3yfB6J6VnCtsR0tMjuQqPHBb3uePA2pa4XwCGNJkLu9N84eGjvGl9M01xASEyLZtsRXBNyobl/+46F75brFlIEktKnS8Vjv9/c1ExLH9Ccnp4PJ/T/y3nkua91wy7179YNUmGNAKq4quqgUPG5SCM5CtCVdCyyVe8IkWQ+ieLNQpVk5qbVMaDQsI5ogsJ3PpI4IyywSO5KuP5KtNFg8HZCvtH8jS7pPNL+9LcvW+MhliAgCrz4MFxtnaliASEkEGxZjEwU6ZsWDx3csZf703xAA2xAPfuH+fS3jT7RvLMzJtID04V+fGzJ1nVluSajS2iKWYI6NhMSUwjFBkCyhySwpg3YakYgmeRDr92MY1fR8zvYM8PD21hO3NkfhAFTKVqoCoyiiIzMVNkbCpPJhmmKRMnqCnUDJOh0RmqNYvWhgSJaHDB+vSKE9t2yJcqTM4UyZeqPmyuPhUlGtZfdU07jsN0rsQLe0/hAIZpYVkLi11ZktC1xZYhlm3jWA6GaaG578UwLcam8szkykiyRDoepi4ZWfT7iixhmzaV0wprCdA0BcVdP2F3rYZ1hZT7fmuGhYRDKqAu+b6Y9zi/AJVk7tozSq5iuhOZKresaxKvKUlMFWvc8cIghapFOqKzrD6C7Yim3o93jxB2JaTTEc2nUMQC6iKrFNuBB9wGX0CVGcvXuGpFBgnY2Brn6ESRf3+mn2hAwbQcblrbSPd/cmrxX435E2PbgVzZZCRfpS0RZCRXJRpQqLjcZoFY0oQtRCLIVEkIWw3MlinUhPKbpxXg2SMosquoatnctLGZt25pEw3ezhQD02Ue2CuKnOZkkCcOTXBktMDfvXMDF/SlkSTBKSpUTX68Y5Br1jbS5fK5AcayVX7ril5u29y6CJklSRKrWuKsaokzMlvmqcMTXNCXoa8xuuga6KrMb13es0DyvLMuwnPHptk7mOPGDc0LEC3vuaiTq9c0IEkSq1vjHBnJ84vdI1y/vomYe360pcO0pcMcGS3w2MHx/9J3JEkSnXUROusivHhyhpdOzSx6jCrLnNOVwrIdnjoyyWzJ4LIV9SRPExgKajLXr2/iC/ccYv9wjvN7xHUenC6x+9Qsb93STjK8WGjCth1X2XDO4uj0yeWC93O2D1U1bXacmmV5QwRZFsTIXYM5ZsuGD50ybYe46xOzoz/r+i+oXNqXIRPWKFRN9gzn2NwW54X+WbrSQhGwMabz4kCW6ZLBkfECLfEAF3aLi7NrMAvAZNFgqmTw9s0tpMMas2WTQ2N5Mfk6NUtLXPBWGqI6L5yaZbJQ49hkifqozsU9opjaPZTDATa2J3n3lnbu2TvKvfvGRCIZ0vjDK/uIBlQ2dyR588ZmvvfCoP/ZL+pNc5WrTqcrMk2J4IKRelCTqY8F/Bzj0GiBn7884ssWy7LEO89r8zu5mzuSbGpP8K+PnyAcUEiHNbYtrxOkcITKS9w9oASUQPw5HdGIB+Y8fDrTYe54boCCK7X97i3ttKXmRueaInHTuia+8ewp/vwXB9FVmfdu7WBTe4KKYXHHcwOcmCq5I16Hv334KJmIzm9e0kUmovPWc1r49naTLz181IcRfuBCITYB4hCtny8Xi5uU8cbjnUR0RYgeDObozYRpiQeYzz5yTssQO1IhltWF/c+xvCHCY0enWdloMFk0uLBLNAJGclV2D+WomDYhTcCMWhMBjk4IlaP2ZJBc1RQKUa7vRsmwMGybiB6kULVojAWomTYVW2DzNVnA9fJVAeuIBhUqlkWtLKB8qguxK7ubtmkL6JLAUTv0z5TYO5Ijoiv0zZs2zE2LhORyJiy6c6J7LO5XL2qWQ6lmMlu2fQiNkHAVXcXBbIVYQHBUUmEd03FoiOq+eEDeNBnNi8e8Wg+iYlgcnxHKZsenhWR5OqSJQsclBqfmYaXbEkFmygYThRptySAVw/b9xI5NlehKhRjO5SlURYFVqFmcnC6Tq5j0z1aIuJ1h73lVWSJ5hmTwjRKyJPaEWDDGb13ctSCJ8WDRs2WDBw6Oc2lfhr3DYuq/vCEiGipBlRWNUd6ysXkBJFmWIFsxBQS4bNIYW8gjcpvxLuRXrJ1s2Vhwp0je//0KMDNFFpCZqaLhT71LriywB5c9ffuQEOgIRZKYKdcEEdsVOAprqvu9iumPxykruB4iArIq+0WI7cIQwwGRuDrA4bECRyaKNMYD4mA+Ns2GtjjnuXt1zbJ54qiwf9jUlmDbsgyOA+d0JBjOVrh7n7CuuGlNI7mqiYxolrz7vFbu2TfOz/eMsaY5yts3t1DvNtmGpkv8470HedP5HVy9oUUI1rj3T9iVObZsUDQxramYFpbj+IWJIi/tf/h6hUfS90QSbJdrZDui2K+ZNumIzpFT43z6K/dzzdYVrO1r5lP/ci9H+ydoro/zqQ9dzeXnLeMf/t/jfPf+l6jWDDYub+XzH7+RNT1zcGXTtNh1eIi7HtvHMy+fYHBsllKlhoREJKTT3Zrh7dds5K3XbCQaWlhU9Y/O8MjzR9h/bJQDx8d48eAgtmXz5e8+wfcfeGnBZ+psTvGFj99EOr4w6d9/bJTP/tsDrO1t5lMfvppjA5P88w+e4qldx5l1i6lULMQNF6/isx+9lnBwYXL3/Qde4nv3L3ytgKbymd+8hnNXty95fS3b4dv37OCux/ZSl4zwuY9eR3dresFncxyHPUdH+OuvPUypUuN9N5/HW67cwLWr6pkoiHO+PqrPoRUch81tCTa3J5guGTTHA74a4Ts2tzBZrCEh+NKmCymP6CrvO7/NFUNyXH6y4GxdvqyOsbxA9qTDmi+GEdYV3rG5heGcUA6sj+g+Z/P1CM/zSJKECt9M2UBCoKkSIZV4UPWVHT2I33TJIF8V8vJDlYrr6yiuVdGyaE8GOT5VJqwrJIIq/WMC9reqJe436jRFYnNXkof2jTKSrdCYCLLr1CwN8QArmmP+d6nIEuf3ZPjh8wO8Ml5YUEzVxQKc1532J67/lVxLkiRmigaThaporhfFdagaCwv9RFijr3Eul4gFVda1J/jFrmGmizV/0vNGCWfe3uOJbJzXk6IhHuDhfWOc25VCkeH544KDfOmKuiWvY9m0GM5WfMVcTZFpjp95gnXWTMK0HfJVk6FshZKL093cJrqionsm++pgXicR8I3LJEkiGlCpGBY1SximjuSqPvdmU1uckCZTqFq+NwOy8LACUdAoEj5xLhYUHRnTtl2pZFcSEtEBCesKxZrpE0IlSTxXvmpyYrrEhX0ZmlNBSlWLqsuh8tSpdFXmlvXNXNibIVs2mCjW6KsXijam7dAQD/Kp61eIzoVhoSoSKxpj/OYlXVRcbforVtSzoS1BtmwgSxJN8QAR1xBPl4QCy+9s62G6WMOwxUGfCGk++fa2Dc2+X9FbNrf4BNe3n9vmY45xYF1rnMtX1Ltmx5owWp13uFYtm+66MH98dR+FqsA7t6WEYVw8qHLbxmZfVhrwJwGam/0mQxq/s62HsXyVqiG6VvNxvleuqOeSvswCeNRbNrX8SsqF/1OhyBLbetPMlA1+eWQKVZHoSoWwHQE7Khs2FXcDkWCB2hlAfUQQF190ydTxoMDJtyaCXLuyzk9wVFliVUOUR1+ZwrLhquUZqqaQqfdN7GSJoKa60D3Zvy8sG5IhsU5LhiiQgqrsd7qiuoppi86XaTk+PyTnSixLkjAR3X5yBttxuH1j8wIiLQhZV02RqZiW31X3ZFQNy8ZyoMklvAdVBVmegxFZjhCRCLr3qoyAiaXCGoYlNq+aJeA3YU0hqquv2sUBAavZ1BJ3ld2ETHtvXZjxQpWQKhTrOlJB4T8nC1+V3kxYGFfqCv2zZVriARIhjYHZMpHGKBtaYti28N9QZFjREPEFK2zEVMYTwLEdh966MBOFGnWROULtGykkSeKC7hRff7af507M0FsXpmwIVdTVTTEs2+Fne0aJ6AofvqCTXx6e4PsvDvH7l3WTDGlc2JPmnn1j9NVFaIoHKVRFAb2iIUJDVKcrE+Zne0Z4y4ZmQrqQWu5IhQioMnVRnV2DWZY3CGGLXYPZBRLcQllN4ehEkdZkEFmWfAnhbMUkXzEp1CxmSwZDs2LCGg0oXNiT4q49o2xojZOJ6Dx0aIKWRJDmRICJ/GJ4Zq4iYOQN0QBJVxq8bFi+EpMsSWgRAV+2XVKy5EJwPL9Bz7T75ESBv/7JHj51+3p6GmNCqrc9wermKJYtOFGyJFExhJG3LEusaorRVx8RcDsXvjdTFtO+bcsyJELCZFiofdrMVsTeH9IU3ra5eaEMve0IZdslYFnJoNcsE5OnsmG53B/H5ZwIaLCAwcmvu5/f6SFyAAcQqmCqLNav7eCfTblilad3HSebL3P3E/soVWrEI0H2Hxvlr7/+MAeOj3LHPTtpro8zMDrLI88fofF7Mf7lT95CwM0JylWT//PNX3L/MweJBHWa6uK0NSaxbZuB0Vme2nWMHfv7GZ/O80fvvdyfHgE8v/cUn//6I5iuQmLNEPfD8ESOmVxpweexLBtzCahSNl/m6V3HmcmWeGHvcv7kn+7hyKlxGtJRGjMx8qUqg2Oz5IvVBa/thWnZZAsViuUquWKViekCuq4sev35ocgSl53Tyzfuep4ndh4jGgrwxT+8mWho7n6cyZX46689zD1P7efSzb1cuKHbhzZnTuvWe4WQqgghoWa3keAhOuIh1c9LvPPFa6pmIjoVw+LkTJlkSMW0HBTZolgzCWgSjiNRNCzGCkKEJaKJeyMeFNC5ZFh7XRsBpntegeBOCslyIb7jFVAlVwDGy3/rozoV06YhqlN1YZFx11RXU8Qkrs89S4IuVFVVpAX0EJG/qtg2fgMpWzaIBtQFeZQkScRCKhIS2dP41UFNXiAg8p+NYtXiB8/389C+MV/FVZJgIl9d9NiAslCsTJIk4q4KYeW/AOX7dYVlO/5UUZIE5LsuFuCK1Q3cu3uEkdkKmajOYwcn2NCRpHtesTo/NEXYaFQtm6iuLtI2OD3OWkxpikw6rLOpNcH5XUlX7Qw/CT/TLVGsiZsrFlCYchP+gKqQiWisb4lzUU/Kfy7ZhZp4XBXTxaGCSMwsWzxfxFVu8hS96iIaKxujbOvLLHquE1NlvzrNlg0ibgGUq4jFu6k1wbGpku/67YUsC3nRhliA6mie0XyVbMWk3nVFToU0ZiviMGyOBxjJValYNiXT9hdXKqSRCGtMFmvIssTB8YKQ0dZVBrNlJGBFQxRVlhjKVsiWDd9UNOL6E02Xam4hKeA4uiLj4BBSFP+6J0MaSZc7sOh7k0WRFg9q/sjfk4pUJImUyykoG5bvkSJLcxLVkiQhy2LcH9JEIVuzbHAEn6xsCi+luVHwYjnnN0rkKiZPn5jxDRoTQdWHd913cAIJT4hBHBbqad41qiyxrD7Co0enuGVNAwBd6RCHxos8fHjK/XmY1Y1RGqJCttZ0xMY7O2+z9AxqPcVKz+/BM7uMBlSCmkKuYvqQpLCm+AZ+siRjWpbrwSM8Zwzbdg09BfziXee04r7E4m6LhPt9CwELD+pWqJq+gbSDOLhP37BVR5jXmbZDV1onWxbqZY4jJn9V0xbJHiKJFOqdNqp85o1fHDjzvZFEouE4ooHg4MwZIaoyIU0iXxX+dGFdoSsVZjBbwbBsNrTEfRikl8BNubwprxj11H9G81V/ShULCqL4GznWNce4fVMzDx+e4J59org+pz3BqsYoQ9kKubLJ2ze3EgsoXLOynslijf0jeS7qSXNxT5qyYfHTl0cwLZE8bFuWYUVDhIAq874t7fxk9wj//ORJAqowmXzf+e0UahbbltVx7/4x/umJEyRDKhf3ZnyxEBAJ/c1rG/nFvjFeHJilOxPmA1s7UGSJJ45OcXAs73oClfl/OwfZ0pHksmUZtnSmyJZNfvDSELaN/5qeD1sqrGE5IuHwCvaQpjBRqKEpEoGQa1hZMlyFNJmZkuAteInR/PASFcdxePnkNC8cnaA8D2YluU23kC4KMtMWjT7L7WALeIeErohCy4PbBVzIcFCVXSEAwfPxpr3us/sTJ++elCUWWUd4zQQv5jzGHP/5HO+9shDG/HqG97kE5Fjy5c5Fquq4IhKL3+kL+/v58Ju28vXPvoPB8Vne95nvcfDEOFOzz/PZj17LzdvW8ND2w/zu//kpz+89xfh0nvamFADRsM67rtvMqu5Grt66nL72emJhIT19cniav/jqQzzwzEHuuGcnt1+9ke7WjM9H23buMn72Dx/CdhxGJvP83hd+wshElj/5wBXceMnqBe8xoKmkE2eGop0ameHP/uVewkGNb3zunWxc0UIwoFEoVdl/fIyGtJg2VE0LkFz1UHjHdZu55bK1VKomB46N8oHPfZ9SZXETYX5IkkRfRz2f+cg1/NZf/5gfPbybLWs7eM9N56LIMoZp8fW7XuDB7Ydob0zy2Y9eS0v9HKHe84vypsG249CdCQsBE0Sed3pt7jUBYLExtifjDx4vyyZXNX2uqyQJVeCAKmPYNkFVnAdhXfGb7K9XqIpEZyrkI4yip8ENvfstqIrzLKDKpN08S/D2xONsx2GyKPLRkCb2nvm+RJbtuN/9XJRdaLUYRghbiNFsZYF4mOM4lGsWjuMQDvz3N0wcx+Gel0f42uMn+OC2bq5b10Q8pFKomPzOt19a9HjDdnzBKu/3S66xu36WhunrEQKpNocW8/biK1c38NMdg2x/ZYpVLXGOjub54+tXEFDlRXBJEJxZLaTN436+epw1+9Vdwv6DhyYYzVf9RXZJb0aYLbodC9HFdvHRiAX34MEJ6qM6uwdz3LKuUTxXb4b7DowzUaj63jxXrahjVVOU7SdnuGvvmKvgI6ZOmYhGRzrEnS+P0pUOsW8kTywoOBSX9mb4xb4xZkqGS2yFq1fUs7whylPHp/nZnlE0WWa6bNCeDhHSFKG+owpir+gSiA1//sYx/7NnwgFGC1WmSjWhVOVyBFriAYKa2CDqIjqzZZPZioB0RTwZVbfA0hWJtkSQ0bwQDIgFhF+QVxBJ4CaeKrIMmi35ogS411Keh6lRhVESg7NlkiENTRHwL9MS/l+G62PhSUSLhEDyJdHLho0igyaJZMAr2GwERKNselLvEoPZMm2JEFFdJPm6IhNVFKZLBrYDaUXAOD3/jzcKxM9zY/cSoQ0tMQpVi42tMZ+ofvXyDDNlk5A7ZQWHjlSQxphO1bQoVEUB7wB9mTCqLFTfClWTgCpz7Yo6JotiXXgde1mWiAYUmusjvpITuEnUvGzJcRwSQQXTFKaBmqogIaHJkAyqJN2k0L/JJQkcx1Upk3ylq+Z40Cd3G6aYHKuKjLREgZ0MavM8KSQilnC/zoTE/STJMkv8mv/+G+YZ5nnFnuM4xHQF07Kpj2iuma70quPwpb4r8d7FvRMJCJU2r0ngvV9JEom3l0wqssTy+siCsX486GH7hV+GYTmucbjk4t9tQQCXJdfJXUKT31gwBZjjG3nF/bY+UYSUagLu5fl9tCWDfOzSLt/TL6wrfOD8dix/Gipx3aoGLunNUHXvh3RY96eyiZCQQn/6xAwrGyK+UM3x6TJI8CdX9VFyE4CwC1W1HIdKTRg3bu1OscIt6qqu0iPADWsauG51g/tpRFGiuwRuVZa4YU0D2/oymLYtfKZkiaq7P13aV8ds2WC2bDBeqHFuZ4r6iE62YjCUrbK5Lc7LwzkaYwEaFImjE2VfqW9Ta8KHRnvhrY9C2eCpA8LwfDpfZWx2zqIgFtIWNRBsx2G2WGM6X6VmikSwPh4kswS+Htw92oGJXJl8yUCSRQc3E5sT4vD2R/kMN5qXSOXLBroqk4joZy6a3gB7rQcFQ8Kf+IJ4a7YtJnmBJfybgrrGm69YT0M6SjoRZsvaDo4NTtHRlOTmS9eQjoe5YH0XjZkY09kSk7Mlv5iSJInbLl/Hm65YJ4rKeddhw/IW/vi9l/Hc3pOMTOU4NjBJZ0sawxKKcuFwgO6w4Hw6kiKaOZJEUybOis4G/3nmJ1dnsjQZncpTn4rytc++gxWdc0b1Dako9XUJKoZNwTVadZy54kSSAFUjoKg01sUX8EpfLWRJ4uqty/no7RfyxW89ypfueIyNK1rZsLyFp3cd5ys/ehpVkfnj917OljUdi87iUs2iago0ggOsbhIWL56ktew2oTRF8vcfw3I4NlWkULM4tz3hn52xgEpTLCAQDJIwwW1LiLPIW9sSQvI7ME/117Scs3b4f90xUzIo1kQz0HIcZIRITbFm+U1l03Z8kZugKjPrcs5s28GwbSFMAjTGdGqm7RZRC693pWZxbKzIua4wlGU7HBjKkQhpNMYDKJLEuvYE21+Zon+65MuJO8DewSxBXaGrbumpydlCCNcszVu1HXi5f5Z0VOe2zS00xIM4jsNErkq2bC56fLZkMDBVojMjqA8Vw+bQSJ7GeIDUGfbC/+mQZXF9hX+UtOTW2FMfYXNXil8eGGc0WyEe0jinW3w3ZQ+J4DZ4PUVrh7mc62xx1mJKkiTWt8RJhTVOTJWQJInudJiAKnPjmgbqojpbu5I+lyMR1EhHNH774k7f3O72Tc301QnM5drmGEFN5pXJEqZt050JUzEE5+T2jc2cmi5RFw1wXmfSJzpev7qe3YPCo+B2F542WzborQvzrnNbOT5ZomJatCaCVF3+ypvWN3F4vEA6pPO+LW3EAqorI+tQdUm+IVVAQBRZpuByW6quIbHocmoENaHoZLuJXiKo+Z1MENOEmZLhOtNLqK5/Ra0snJZVRSIWEBhcT1nQM4mzHPwCxDOFrbmFkKaI7qflJpIgEsFkSOO3LhUQnrJp+R2gsK4wlq+KaQG4HATFhwSFVAFn9IqsaEBhpmz4xdiRyaLADAfFZEyTZd8DbChbFhChmklAESZvXrd3slhjMFtBAtY2xV6T5PD/RDgOjBeqpEIaI7kqqiwRUCVMy2G8IMxgxwtVIppw+w7JCgOzZcGvQGKyWHOl8mVmSjUxencN8jxZ2qy7wVYMoaboOA57RwrkKiaX9UYWHWbifTkMjc3y4DMHeO7l44xP59FVhZU9TXS2ZBZsAqlEhOsvXkPIx9xLjI/P8vD2gzSkY1x1wSocx2HHvlPc98RejpwcwzAt6tMxzlnTyZuv2khDRnQnBQxRJDijE1l27jvFC3tPcGJwkmK5RlBXaW1MccHGHi7bstzvqs6PfLHC/U/tw3Hg+kvWYDsODz97kF9uP8ToZJZQUGfz6g5uuXw9yzobkF8lSZBkCcO0ePnwIPc+sZdDx0ep1kwyyQjnb+jmhkvW0tYkNjqFOT8or2jwRCW8KFRNsZHiHiS27YpPeE0exTe+FFNscV+ZlnhMzbIJSq9vM8C0bWZKhjuFxr//PRhGsWYRD6i+TP5M2SAWEPwgVZaQXRx/OqSRrRpMFmqMFmq0xgOUDdsXnJgumySDKgfHC8QCKr2uH5thO5yYKbOmMUoypJKrmARV2TVgFfCPNY0xxgpVpoo1wppCayLIgfECNdMmEdR8WEzAVRjzuHx515dJyEuLbrWXtDjuAThTMihUBXxaU4QdQDSgkq+YRHWFkmFjOZ5JsUyXC0cUipIy8aC2ZDNg14lp/u3Bwxwfy3N0JEe5ZvHxrz/vK2AB/OHNa3j7RV3+2joxVuA/HjnC9iMTjM8KlENAlelqjPGhK5dx4zltC2CstuOw+8Q0/3r/IXadmKLoevNEgxrLmuN8/MZVbF1e/6rfv+M4TOaqfP6ne9hzaobfvm4Fbzq/84yF1xsh0mHNn3icjpDw7sWlIhEL0lQn9hhVkWltSALQ05YhHnG5NkGNWDjAxHSBcnXh5EY5Q0dckiQ6mlPUJSOcGJomWxCCM568/fw9IzXPywcEl05A/sVZK2CLc5/FmzLWbC9hk3jHdZtYPq+Q8iKsqwQ1Bxn8Zu3paocSMP4rfre6pvJbt1/Iy4eHuO/pg3z+64/wqQ9fzV997WEmZgq89+bzeOd1m5e8PpGAskAoRkxZxP0XDCpev841bZX8x3QT5u594yyriwjfUUfkJil3ChPU5EUqjl7Da0FRCgTVNwanOuzC5g0XMu81mxVJIajLOI7tN/sDqkLFMPy9RXdRHIYjkCZeg+n0j+UAd+4cpC0doj0TZv9glof2jXHJinqaXe/RK1bV84tdw/zfXx7jo5f3korq7B/M8tMdg1y1uuGMELSzRUsyRNW0eOzgOEFNnCchTaEhHkCSoCkR5ImSwcv9Wda1w1ShyneeOUWuvNi2xbRsvru9n0hAJR3VefrIJLtOzfKBS7qIhzwvNYupQo2qYTORrwr+9lQJzVU5TLu+VOWaxXSxRtUQ/61ZNicni0JsSheP82DW0wWBzpoq1DBMm1OTJRxHcPDSkTlaiyxBRzrMg3tHefrIBJs7Uxi2yLdT8+CtuiqEKD7/i0Ocmipx+ap66t0muPCBE/eMIs3lG7Ik8sHXEq8Jl6XIEl3pMF3phePQdlfwYD522yMRez9b3rBQSUSSxDTm3I4EIEjouercZOmC7tQC1aWay+fY0BpHknC5VsJ3oWYJKc6OVEjANqQ5PnR7MkSbK3fodX7KhpBILztCBECTZQENdBxMW+DUHRwURxycntGgJzMsMefF4HU3EkGVTFgTcKeA6idqdWGXg+GI6zNZrNEQ1Wl3XdKrlo1k4XfOLcf1+nFhTmEJgcOvmng8NMcRX/SqpphQIyqLxCvmFjcRXXASsmVDcKBcR23F7Vgrkiiyapbj+lI5hFw+WFCTwYVvemPoiinghaprGKxIkkuMdtwiVHRqLNtxFcFey2r6Hwr3+oV1lYhuoioSuYpJVJddZUPBc/CmiCAeH3CJ7Q4QUB0BOwOCioys4XY/5hL7oCY21rAuJksRXeHaFfXEAnOeavOnni/sPcknv/RTXjrQT0BXScXDmJbNg88cwJgHCdBUhU2r2rlkc9+8YgoOnxzjj/7mx6zpa2Hjyna+f+8LfPmOXzIxU1hweD3w1H7OW9flF1NePPD0fj7zz3dzrH+CmiGKQUWRsSwHy7b55s+e4aLNffz9J9/Kiu7GBQff5GyBz/7zL8iXKsQiQX7y0Ivc9chuDLfbaZoWP3/0Zb57z/P89e/fxvWXrDljQaXIMt+48xn+4Y5fMjGVR3EPKNOy+dGDL/L9e3fw5T99GxtWCunVimlzbLJEX51I/GfLpuBa1kRX1PNGWnh0i4XgHYKKJIGMb6gsy+Ke8tbw6x01yyFXNZEQZuk1x6FQNZEliXGXQB6Yl+AJ5UKLfFV0Ews1wbOLB1QCisx4sYZp2Yzmq/7aXNEQ4YX+LEFVJqwrbG6N4ziCb7dnJM+lPekFfAbHgaFshQ0tcYZyFcYKQq0rpCmMuSqhLfEgmiwx6UKTZ8uG/5hiTfARDdshXxFFVtm2mCrVCKoCHuqZSXrw8aAL15stC1L8mGspYFo2ERf2Gp2nwNiTEXBPfZ5E8PwIqDIrWhP0NsUoVEyGpopcvaGFhnmeJcuaF94nE7kKzxwap7cpxq3ntRMP6xwanOWuFwb41HdfojUd5ry+OSPi4ekSn7xjJ8MzJd60pZOephjlqsmh4SxHh3OvSVp6Ml/lcz/czYO7h/i9G1Zxw+a2NySPb36cjRd5pggFtAXCDLqbQ6TiYb8QkN0GgeMsfX/ajkOxVGVipsh0rkSxXKNmmIxN5SlXhFiK7ZwmrLLgz3PP5eCpmErYNuDeZ9694H1/ogEjzuhQQGPjilYXlq0s8Ndzd/8FSobKEknZf+bMzCTCfPoj13Dk1AQPbj/E8aEpDp0Y45zV7XzyfVcQCS1WePRhoe7rTRRq7BzIUjEt2pMhNrXGKRs2OweyzJQMWhMBNrbG0RSZTFhfMLUVHo4VtnQksGyHZ0/OsqFFKAnvHMhSrFn0ZATsPV812TuSx3FgqmRwQVfS92d8vSIV0sDNJUEUR6btUB8NoLscy2hARZVFgeU4DumI7kPddP97xj9mlvoeY0GNjZ1J/v6BI5SqJmXDZn17go9s6/abzq2pEJ+6eRX/9PBR/vgHL/tKgBcuy/DbV/Yu4FJFdJVUWH9NnPRzulJct66J7z/Xz507h1BkidvOaeE3L+vBcYTs+J6BLF+45yAxF7GybWU9N2xoXuCbGdYVtq1soK8xyufuOkDFsKgaNtesbeT2LW1uAe5wdLTAF+89TK5iUKyKgcGX7j9MUFPoro/w6VtWkQhr7O6f5Z8eOirOrYqJaTn85d0HCaoya9ri/OmNKwkHVPYN5sR1q5kUKoLX+IV7DhFUZVY0x/izm1cRnYdAuHZdIy8cn+bvHjhCWBfaCx+/ehnXrW/yHyNJEps7U9TFdE5OlrhidQOyBMWa6U9lPaVfLwcEcTaGzqCeOT9ekzS6FyUX4hZU5SVhcV6M5cWB6/Fyqqbtdz08p2VFFuNGjxPiIEbHp/u9qLLkj1vF48X7MV3cuvcevKryTB/YcRw0RRQ7IX1uW3NcXwlJkkiG5m+ac89VMS1hToh74zmOO4maS2yWOizn3WsCsy2LTVYPLb7swixY8pVmxMSKBSbDtrMQa592uwLeNWtLBpHAFysIutMo77341wIxbq+P6qiKeM2GaADHXUSFqpiQJQIqYU10rqIBlXy1SqlmusRoIbPam4n4xoyOI7rrXpLzespNS4iuKUBrIij4MQGV8LzCv9VNpl5tLQMkTnPfjgTE+hEiDqbbrQPTselMh3ylNO99VE2b+qjO+HSeT//jz9mx9yQXbOzhkx++lmUdDdQMi8deOMzffO1BxqZyXHPRat57y1Z62utJnqYk5dmgTM4W+I8fP8V//ORpVnQ38tG3X0pLfZJ8qcLLhwapGSbdrZlFnyWTjFCu1Niwso0LN/awbnkrqXiYmVyZB5/ezz2P7+HxFw7zpW8+zD9/+h2EAtrpL082X+bT//RzZrJF3nfbBVy4qZegrrH36BD/7xfPc/jEGH/693fS1phi/YrWJe/J3YcGeH7PCTpb0nz8Ny5nWWcj5arBL587yJ0P7+L5PSf4/H/cz9f+8r3EI0FhTSDhK7SN5Ct0JkMUqiaTReEB1hgLMJyrIEuSn4TXLIeOZJDhXNU3AzYsAfMtVQVE90wwntcjaqZNOqxjuTwEb59LuORtyxHO8DMlg6rLJwtpgv+VDIrEzRO2KRs2jVGdgdkKvXVhsi50TnEh2QEXkungoMkSrfEgg7MVYo0RAVG2bAx3IjNbFkahEU3h1EyRNvfe8bieqiy5U0CJiK6SDAlUge1AzZ2We7wAB6iPBrBtAaFQZQGzSIc1d/orkpM1gSiqLJMJi0ZNayLoTyZ7MmFMt7HhcapUt9FVtq0F5uprOlKs6UhRMy329c8wU6jyvsv7WNOeXPI7kCSJjd1pvveHl1IfD/oFmmE5NCZDfPGufTx9cIxzezP+2j46kuPQUJYPXrmMP3/rBr8IsmyH2VKN+Bnk57090iukHt4zzP93yxo+cEUf+jzPtkXrxG1u/Xeoer0eoSrykoWivoRgw+nhOA6D41l+9NBuHtx+iJND0+RLVUzLxrYdbMemWjNfdTJ+enjNhrNdR8dxXGEfh4CmYMtCCKc7FWYkVyUREnYNUV1hNF8V9/I8yK5l29RFAv+lIlmSJNb1NfPJD1zB73/xZ+w/NkpdMsJnPnINnc2p17QW9ozksR2H8zuSPizqhf5ZapbN+Z1JnjkxQ0BTWD/PtNuLsKZweLzA6sYohZrJwGyZ89oTPHxkknRYozMV4vFj09RFBPRtx0CWa1fUsaw+vEA19vUKWRbIk6FshYy7d5ycKVMf0QlqQkxCkqA1HuT4VIl0RKMxGuDgeIFkSKUzGZrj+p7lUt+4oZl3X9jJ8GyZsKbQ3RAhGljINd/QkeAf3rWRk5NFSjWLuqhOeybsi6558c4L2rn1nBYSrwFaFw+p/K+bVvKOrR1kS0IUo8Plhr08lCMaUPjSO9ZzcrJI1bCpjwdoT4cpVEyfA1eoWly2uoHLVzeQCGtctqqe4Vnhu9qRCeMAM2Xhu9fbEOV/v3nNov2qYtqCo207jOerNKeC/NENK3xkiNcAVWRJTAjd+0LVZJa3C7/O61bXLyjAdVUhqIlzR0JwukIBlT+9eSVDrk1FNKDSWRdmtmz4EHVNkYkEFOqjwiZjpbu2PeVXgVoR90LMFY2ruc2+1yL2c9aVPeWa8rbEg0wUagJeZliMupAyj59TF9UZy1fJRHRU9yBPIQ6gUk1Mgso1ocCUiegEVAXbdhjP5tlzeJBjAxOUKwaZVIS1fS2s6mkm5FbM4XmTKsdxGBybYSZboq0pBQGVydkCuw8OcPTUOOVKjUwyytplLazubSYY0PyRvLcs50O4a4bF8YFJ9hwZZHg8iyxLdDSl2bCyjfbmtOCAMIcH98iVqiwxPD7LbE68j1Q8jGFYHD01xu5Dg4xN5QjoKp0tGdb0tdDRnFqyuDBNixNDU+w5Msjg6CyO49DVmqGrJbMAIqEqMl1tdYSDOjO5EoOjM8iyRHdrHWG3E+U4Ak5jukpRtgOO7TA6Pk25apBORGhtSAr/DFV0cUs1i8Fs2ZWzxZ/UJIIqM65Pi42AEsruxMqDF4VdzLEkiSK5f7ZM0DV21RUhcvF6xekHiqpIC8QOwJXzrYqD79U4DN5P/Od0HKFoJ3tCLI6/aWguzNOwHb/o9A7O514+zs79p0gmwnz2YzdzyTl9/nP2ddQzNpXji19/iGy+zLbzllOXWuwP4cXAyAxf/fFTfOgtF/Hxd19BOjEHBzAtm2KpSjwmpsOeqAs4rF3exrf+zwfpaE6TjIV94rgiS9xy+Xoi4QDf/tmzPPXiUYbGZujraFj02qZl0z88xZc+cTu/cdP5qG6yeeO2tWxd382H//w7HOuf4Bt3PsPffuIt6NribWZkIstFm3v5v3/+G/R1zMGfbrpsHclYmH/57mM8u+sYh0+Mct7argX3r65496LYiNNhjXzNJFCWyVVMVru+GqbtMJavkgqpTBVrrG4SyfmRieIiPtsbITRZojURJDavM5h1D7eqaZMOi6ZSvdv4SIV1v2vvbfaW7VAxbGIBmb5M2PVtkulMhRhTZSaKNVY3iuvgi80AXekwDVGdkVyVQtVitiwKpJmywcqGKKdmyiSDqmjYSGJv8WwGjk0JFbLmeICgJhPU9AV7ne6Kr2Tdjr53q3mFkWU7lC2h2iq50D8PDlh1E2QJIcmruVNyw7LBnRKI55JdQR3BU40Gzq4mCQubhfPXQUBTaMsshNhoCpzXV0dAlZnIVRb8LBbUCOoKe0/NcHQkR19zHNXlu9XFzswfDOkKU/kq//tHu3lkzzCfuHUt772sFySJiWLV30uLrrqY7l6zkiFQA7bj+KpTr0ecif/iiUF5nSqJ06dConm4KKRXvx8dx+HQyXE+/sU72b7nFIlokHNXt7O2t4nmujixSJBy1eCL33qU8ZnCr/RZPNib9xeHuYmDgKIueqOEdIW6sBACylUMwadRZNfYWUDlvaTPa1r+dwwbJQkS0aA/xdM1xYdHvpZY2RDhqePTPHdqls1tcWzHYThb4aLuFE2xAN3pEAMzZdY1LT6DYkGVuojOyekSs2WTLheFdHK6zGzZYCQnIMFV0yGgSqRDGsvqIktOjV+vmC0bNMUC1Ed1poo1EkGV9mSQE9Nl6l3hKMO2iYdUn0uTCgmahmk7yPK8fYP5OIj5IQqGjkzYL2SWCkmSSIQ1NnQkF/1sulRjqmgwMFOmMx1iOFtltmKypjmG7cArE0WOT5VIBFU2tMaJ6AK1MVMymCrVGM9X6UyHWdkYxXEcXpko8ejRSVoTQXrrIrQkgrQmgjiI7+/IeIGQprC6KUpIU6iLBlweGSxvitHXGPUHI7KEL1qmKvKSkMSaZbv5qOAzhTSFVESfg0e6MO/TfZy6MmFuWNfE93YOkYro9JyGcDNdVAZAsWq6qAab3sYoEiJPrZrintQVmZgrQHV0rMChkTwfvqzbn8B5oiECrizMgDVZaA9IQXitUj9n50whCgjLhb4Jbo/tQmUkbFvslFPFGhXD9vlD4E6DZGEg6nkUeLyiStXgZ4/s4l++9zgHj49QqRr+RU3Gw1x1wSo++aFrWTXPX0J8YIe/++Yj/OShF/n0b93AuuVt/MVX7uHF/acoVWr+c6QSEW69YgOf+ugNNNXFF23QjuMwMpHln/7fo/z04V2MTmZ9GVRdU+hoTvP+2y7kw7dfTDwa9AUGPIlryYF/+PYj/PiBF/mr37+VW6/cwL989zG+fdd2RidzmG7RpWsqt1y+nn/73LsX+U3kCmX+7YdP8s2fPcvw+OzcVEyWCAf1hfyZeITvfelDrF/exrH+Cd7/Z9+kUK7xpU/czluu3uQnmwFX9QzEQj90YpT3/sk3mJjO8+nfvpGP3H7xad+wgA6Z7osH3QmTIkskXflLHHzlN8XtQHt4Y8WFSpm2O1ELKsyWDd9j4o0clu1wcLTAupbokoaeIDbJIxMlutMhn0jtAIcninSmQiLxlSDu3nK+WSJimjB/1R04Jtb5ss6GRetaVRUu2NBDUFc5NjDB0NjMqxZThmmxeXUHf/CeK0klTkv6VGXBRMu0BV9GFHYyPV1NLnemRkhTqJiiExMNB7j1ig388L4dzOZKTEwXliymADasaOPWKzagnSb9evE5fdy4bR1f+8nTPPbCYUYmcnS2pBf9fjio87vvupy+joV8g3BQ501XbeSOn28nmy9zYnCS89Z2UTGEslu+aqIpwptoDt5mujLYAs4aUGWmSwbZiunCKYREbUhV3K6TwmC2Ql/d62MaeaYQilpzynO2M+f/5Senv0J0pYXjfSokOqFd6bAPOwV8KKokCXUrgO50CAdY0xRdkACva475ieby+siCBsOapsXd69NDlsSh5SWl3n9P/0gioZ1H1D8tbEdMFeerZp3+u56X2NmiWDPn+D6ShJDcERFQZQplg0NDWV4ZzTORq1CqmpwcL2BYDqcLQK5qT/K2C7v47pPHedc/PMkV65q58Zw2NvdkfGL5UmE7Dl/82V7ufqGfT9y2lvdd3ovuQq891TNZEpBtv2B2xJTda5IEXkdFrWzZwHIRE5bjUDPnYOKeAAoIREfsv0GZrGZa/NP3nuSZ3SfoaknzD390Gxdv6iEcnLvGg2Oz/OsPn4aZX+WZBQwVxLozbSFM4OD4SZ+nxFgx5xJp3bU2kRDNmYhrA2NYjr9Gk0EV231sUPuv8zIdx+H40BRf+MYvKZaqNNfFGZ3M8/mvP8JXP/M26lPRsxakDVGdW9c2cmyyxKNHp3j7phbCrsiU7Qi48Xy4l7dpeM3FFQ0Rdg5kMW2Hq5fXCc++kMqWjiSdqRCW4/gKnJ60+hspMhGd/pkyFcMiFpxDrGTCGv2zFRRZ5EJTruqt5Yh7zbBsZlyPVZjLh1RZ5MmqLJGYtzdVLZuqaS1A68xHPXkxx9GRFkwyj4wXefLYNG2JII8dnWJze4LtJ2ZoS4Y4OlHkqWNTbGpLcHyqxCuTRd6+uYVjk0V+8NIwW7tSxIMqP9k9wrvOaaEtGWIkV2G6KJrhU8Wav0aPThS5b/8461vjjOSqHBgt8N4trSRDnvffq68nz/bIsR0iAZWQJmDbtu34atDg5Yn2QtPkirCDCWmyX3AnQxorGyNLmsF71yYZFHDNRFDIyBdrpquLIO7hiK7iAOWayZ7BLLmywXeeOUVjIsAVqxr89xQ4wzRceRUl4qXiNQhQzOGEPfEE71AV0sJCma5sWOiKMBgs1Exqpo1liymVjLRAdtMwLb5x5zP8xVfupVytsW55KxtWtBEK6vQPT/Pcy8f50QM7OTk0xb9/7t0s75r74DhQLFeZmi3ykwdf4j9+/DQjE1ku3txHb0c9larJi/tPse+VYb71s+3omsrn/+A2gqfBlcamcvx/f/Nj7nliL4loiKu2rqKnvQ7DsNh7dIhdBwf4y3+7l8nZAp/57Rv9QshTZDMtm0KpyuRsgUMnRjn6jXH+/UdP0taY4rpL2gnqGuPTeV7pH2dZZyNBfeHrm5bNV3/8FF/4jwfQNYX33LKVS89dhixLPLf7BN+/bwfT2SKtDUmu2LqCld3NNNUlAFjR3UhvRwMPPXOAnzz4IjdcspaQq7KjKQvpck/tOMLhk2M0ZmJcsKFn0U0R1BRaEkG3EBBVeSyAf2M7iBvCUz+Tpbnq3XS5V/EArppaFdMWMM7waxiL/rqibFgcnRCiJL2ZMNGAyiuTJXrrQuQqJoWqRUcqxJGJ0gKBj6ppc2SiSL5q0hQL0J4Mcni8yJPHZ1jVGKUrHaQrFeL4VJmSYQlZZE1hOFshWzHJVkxSIY2+urD/HvJVE12VWd8co1oTh7WuKoumZCAKb1kW3KPaacZ5p4csS9x46bpFMMD5m7J3nwqJTxcGC76ymLf5W25LxrQcYuEAmqZgWTY1Y7GyjxcbVraTiIUW/bumKlxyTh/fvms7IxNZTg5NLllMtTYmOWdN55KbdH0qRjQcJFeokC3MTQA6XcEBkGhLBn2xl0RQFRNBXfGL4mRIo1vC5wuGddmfqAA0xwJvKNNT8Calpu91cmqmTEcy5EvZRwIKhargRYFY50FNoVwTog2qJLGzf5YVjVGeOT7Nqaky7akQt6xvFIRry+bloRzPnZihZtmsa4lzUU/ah0gXqhZPvjLFkfECjgOd6RBXrKjzJ2AThRqPHZlkYEZ0by9fXudzY/cO5ylUTbZ2iwl81bR54ugkq5pitKdC5CsmO/tnWd4Y5Zlj05yaLtOVCXHzuiZXYt/h1HSZp49NMZytEFQVzulIckF3SkAyaxbPHp9m73AOXZHZ2p1iQ2vcl/Qfy1d5/MgUg7NldFVmVVOMS3rTC3xeTg8JSaAU3ITIe6SDw/NHJvi7u/dzcHCWRFinPh4kElTJlw1/GiNgIY7Lr5T55G3r2NST4QdPneDnL/Tz0+0n2dST4aPXrODKdc2+h9/c68N9Lw4K7oDtcHysQNWw0VXBb/USHQkIaSF//c4vNO3XWDj+uiLsQuPEJXFwdAG70RVp3j703+c9OJ0t8dy+UzgOvOXKDVy1dTnKaXC+Yrl2VqnxpcKz9jjTpMGDg89XJ1RkyZUDF5NiCddmBNG4mhNyEL/tden/K3tPvlTlb775KLsPD3HB+i7+5P1X8Kf/dA+P7jjKV370DP/rg1f5nlynh7d2dw/lGMxWsGyhRKsrEue2J3jq+IywjDEdrlqeoVCz2DWUY7xQ5aXBHDXLpjcTpjUR5KnjM8QCKpmIjiLBlo4kOweyHBgrEFRlLuvL+OrPb7RIBlXCDVFmyjV/vx0v1FBkfFhxxRBoAPEZFHoyISHQ4cxx8bwGqqpIBG1xNok1IiYwHloIJNdkXEFWJLIVYZBruErLmku38M4nIRImvI2a4wEu6U0zlK1waW+agZky2YrBcydnuLQvw7ntCfJVi688dZLh2QqOI8RVbljdQEiTGZytMDhbYVl9hIt60uwdyXNOe4Jz2kU+6QDbT8zQkgjSWxemKRbg+y8NM5Kt0vcaBDByFZMfvjTMeKGG4wjo9nvOa8MBfvDiMG/Z2ESTqxi4/cQ0I9kqb9nYTNmwuHvvGAfHCsiS2Evet6X9NRk6O4gcSOgAzDX/DdeMWVOEhYVQV63y+bsPCi5gKsQfX7+Chl+DafRZi6mU62UkIWSHAQazZQIuaXgBvMDdbRxnLqnzfA38hzgOz+85wd9+4yGqhsn/976r+e13bCOTjCDJEtWayZM7jvAHX/gRL+w9yZfveIR/+NO3LSqGAJ7dfYz2pjT/9tnf4MoLVhIKiMU7PD7LJ770U37+6Mv8/NHdfPDNF7F2WYv/e4Zp8W8/eJJ7n9hLR3OaL33idi47bznBoAaOw0yuxL9+73H+/luP8I2fPsMFG3q4+fL1Z6zO73x4F47j8MkPXcs7bziP+nQMWZaoVg0GxmaIR4KLOjODozPc8fPnqNVMfu83LufPfvN6Aq5v0y2Xb6C5PsHn/vUXxCJB/vQj19PdOofPj4YDvOXqTTz+whG27z7O/mPDrF7WRtWHvAhvhFrV4N4n92FZNhdu7KXvNOlXr9vmJdTeqNUGH3IDuMmG40Id5/59/h6pOQ7tydBrHIj+emPHQBbH7eo/fmya61fWM1MyeP5UjdmywabWOLIEdVGNl4ZyrG4UI+3+mTJHJoqsn2fsmggJg96OZNDnqNVFNHYOZOnJCIWyE9NlTs2UObc9wc6BLMmQyuHxopCslyXG8jX0NomulgyqIjM2lWd0KkcyHvavpeM4HDk5RqVm0pCOkUm++iamayo97XU+vNDrZqlu0esVwSA2ds1VSHMcB8OwOD44wZ7DQxw+Mcr4dJ5iuUa1ajA2nadUrp3xMPbCU9o7PSRJoq0xRSigUazUGJ3MLfn7DekYySWKMZgjngPY7gggqCkLEuP5Mu3z8cyqWygqkpAA98Kb+JiucEpzPPiGgfd54QCjuSq6KlMf0TEtcUifmCpTHw0wVTQYyVUIunzUsXwFzbVCUGWZiK7w/ReH6EyHaY4H6GuI+BYHjuPwzPFpfrp7hIt70wRUmbv3jjKer/J215vsrpdHeHkoxxUr6jBth+HZig/Xnikb/PPjxwlqCpvbE7wyUeTLjx3nD6/opS0Z5MX+WYayFc7vSglyt2Hx8z2jhDSF9lSI2bLB93cO0ZUJ05wIsqwhMudR5Di8MlHk7x89RmsiyNqWOPmqSa5igCSENn68a5iDI3ku7k2TrZh89elTvG9rOxd0p6gYNl995hSaInNOe4Js2WRotuxP088Ungzy6ctgfLbCX/zoZU6MF/hfb17HNRtbSIZ1VFVm+6Fx3vtPTwECTmk5Drbt2lXIEpevb2HbmiZOjOb5+Y5+7nq+nz/4xvN8+YPnc+3GloVnIRAKqHz27Rt5+OVh7nzuFB11ET52/UoC2kK5AtHMNP3Ote3ux57K6OslojqnPDm3jwX49UFnqzXTFWWCpkxsEXTecRye33eKydniWZ9LkWUU19C7VDEWnnmvEu7s2P+75QhVW8HTk1zD9YXqeI4zp8yZCGoLpz6/QpiWzXfve5GfPPIyjekYn/7w1Vy6uYc//cCV/N7f3MlX79zOxhWt3HLZ2iWvTbZiENYUGmMBEiHVtYtRsB2h5HvdyjqmSgb1EZ1iTVihNER1blnTIPiQAYWKaxx/69oGNFn2r9vKhgitiSClmiUaWJoMKGzrS7/hGldiyigm0iHX8sFwxaZUeQ52Bsw7W1+9KJyfD124LMOK5hhNieACeKP3nDXXp8txcHNpV6zHFGuHed5HQde6JeD62UmS+P1izSLlcjFDmsjHPa62B++W3ELNnxIvAWs2LZvJYo2a6U6XgJa4gKN6EEdZmlMs9L5J2xF76CuTRQZmKnzs0k6CmjB+j7mICtO2eXEgyw2rA9Qsm2ePz4gGmQSPHZ3i0FiB95/fRjqs+7zZVwsPseFxeBtjAWbKBo1RnbJhc2CsQGtCSLbvHy3QGNXpqAvzN29fj4NDJhIgEhD0FMX9bmX3Q9nuNZIkIdASD6q/kt3Pa5JG955KkcSFj7jGa7Ik+U7D3phfkiQCrvRtqWZRFwksGNXVDMuHwl11wUo+/p4rSM3rrocCGlddsIr33HI+f/Xv9/Pg0/s52j/OumWti96bIsv8zju2ceO2dfOkQCXamlL85lsv4dHnDzExXeDwidEFxdTxgUl++MBOAH73XZdx3cWr58iqkkQmGeW33n4pj2w/yI59p/jB/Tu4+qLVi8j4XgyOzfBH77+aj7/7CnRX+c9xQAvo9HY2AoKI5zhzB/gr/eMMjs0Qiwa5cds6v5ACkShfe/Ea/vm7j3FiaJIDrwzT0zanHCVJEpefv4JlnfUcODbKvU/sZcPKdhRZ8b8vRZbYfWyEXQeFatwtV2wg4Lo4S0C+avLKVMmXFz4yIUjlqZDGZEksTm/hemtpolijLqKj4MkZi393vJYdMF0ySLg+YK9XHJ8sEw0o5Ksm+apQEtvYGuOOncMsqw/TlgwiS2JMPF/wpD6qoysyRydLrG+O+Z48EV2hKT7nFRMPqgvWtCTBsroIy+rCHJ0oUTaEAEChZqLJMo0xoex48Tl99LbXc7R/nH/8zqN84oPX0JSJY9o2ew4P8vWfPoNjO1x5wSpaG5Ov+hkVWSagC48vw3aoGhYBTRj5lmomVdcXR5YkZso1X2jhxNAUX/72I9z75D7Gp3Mokkw4rBMKaOia6pO4zxahgJBEFsm6g2Xjb/ahoI6qKti2Tam82FEdIBTUUNU5xUNxHX+1NeP5fc3nxohOoOWaZy/mzWiKRIO7tquuL5ftCE4dLPTK+Z+OqmkTD6pC+TOioymS788UD6jkEN4o6bDGdMnwjbi9ZABHONuvbIzypg3NC6YBpZrFvfvGuHJ5HdevEXtSWFP48a5hrllVTzKsMTBbpjsT5rJlGd9iwSt2XuzPMl0y+N839pKJaFRMm//z0FEeOTTB+7a2v6bPl6+arG2OcdO6pgXvzXbg/gPjNMQC/OEVvf695b3+SLbCM8em+Nil3axujrmiDgYPHRzn3M4kVdNmLFflprWNXLa8Ds2dNC39NUp+k8/z18Gd4koI7tMrozkOD2fZtqaJd13SQ1CfW6ezpZqr6iUEC85A+6E+FmBzb4Zze+v4g2+8wC92DHDV+mZ/nXlx/rJ6bj63nS3L6hnPVvjKA4dozYS5/YKuBXuo51WkqXP+geAJJb2my/9rCc9HSZM9kQ5B2P51eQ7GI0HqkhFODk/zwr5+3nPTucTCorFiWjbP7zvFP37vSWqGdUb5dC+i4QCN6ShH+yd4dMdR3nzFelJx0eCZj8g4fTc8/e8ykAypooCCBZzH08ND+vxnwnEcnttzkr//zuPYts3vvuNiLt7YjSzL3HzpGnbsH+ArP3qav/raw6zoamDlfESPG2XDdosCh0xYZ6pUo+BC+jRZcMAMy/Zh1XURnWRQmMnnq6YvfmM5Dl2p8CIYVtBN6r3pXsW0fZSKpwKsn0F85H86VFkiE5njd74WkQEvSjWLbEXwrjxVwPnNvnhII+5a6niKzTXTpmoLuK43oJjfiBDfy2tTRdYUocaarZjuWSYEg2KuVc/ZnmL+GpYlMdVpSwa5akW9/7uGa8TswRg9CoOvaIkQJmuIBrAch/v2j3NhT5ruTNgvnrd2pXjo0CSX9WUYy1cp1CzWNMcwLIc9Qzku7k3T4/pXpTi7sIbtwOGJAsWqgGdmK4avlD1WqJKtGPRkQkwVDaZLBh3JIJNFg9maWONVy+bEWJl0SCOsKwzOVtBc+6LJUg1VkuhIhdg/lqcjGaIrHWYJm7wl41dujwhIg4LjWD622HLxYVX3xhGQMCEc4Zy29YxOZtm++ziSJHHNRWuW7E4risz5G7oJBTQmZgocfGWEtX0tizaGhnSMqy9avWjTlCSJzpYMyViYwdIMk/OIqI7j8MLeEwyOzlCfjnH5lhVLqv5kklE2rGxnx75T7Ds6zNRsgbbG1JLXpDET563XnkNAFzj2XMUUSaYkOnfqvMO9ajoENYVcoYxhWsQjIRLR0KLPFosECAU1JmYsprOLu2wt9UluuHQdB46NcP9T+/no2y6luT7h/9y2bR565gDT2SKre1vYsr6HVyZLVE2LtmSIwdmykLCUJAZmK2TLJt1p0dnwFudEocZYoUpjNOD7WGXCGlNlk+FchaguiiZPCrkhGmDXUI7eujAdydDr1i1NhFS60iFfcSyqKxydLFIX0chVhBlvLKD4HAsvuYroClcsy9A/U+bpEzO8aV2jm0yKg9qyZR/m6Ai0hlsISG7HSHQ4HBzqIsLHamVDiI6UeB/dbXX8yUeu41Nfvovv/uJ5nnrxKG2NKWqGxbH+cWbzZa68YCV/+N4rlxRtmB9ehyjlyvLPTRYlX6ZekcSUSpHFVGp8Ks8f/p8f8cizB0nGw7z/1gu46sJVdDSniYaD6JrCy4cH+eCn7mBxyrAwTEt01sou9BcJNEd4Qtm27San0hkVtSTEhlxwu8welvx0Nc9Xi5eGcqyoj/h8RoBc1eSJYzO0JgJE9Cinn481UxwQiiRRcbHsnkKpgKgqZ8RQ/7pjolgloIiusY0o5LMVg0RQo1gz0VxegixJ1Ed1TFtwUsuGRSqk+/fhisboomQlWzYZnK3w6JFJXhrIAi5WvWZRrFpkIjpXr6znm9sH+OsHjnJJX4YtXUmf/3psokhzPEgyLJo+QVWmry7CobGCL3hztghpCsuXeG9Vw+LEVIlLetM+bAzm6pSRXJWxfJXv7RzyIUMjuQoRXcUwbWJBlStX1PEzd7K2bVmGDa0JV3VtLmRJIhZSqdQsRmfLrGhNEFAVn/8rSfj/BQ9d4fh/ni5Uuev5fgzLK/7nGgDZolAAi3rQPEn4ujUmQ2iKfMYpmfccLakQn3v7Rn7nq8/xhTv30pIKc/E8XH/QLVC8536jRNmwkICKI+55r/j4dUG7ErEgN1+6hpePDPOLJ/dj2TYXbugGYO8rwzzy3BEaMzHW9jVz8MTYqz5XLBzghotX8fy+fu576iDvL36PzavakGWZ2XyZZCzIH777MhwXrmc5jp+4zg9ZlhZwbs/kS+M4DkdOTbDjwAD5YoVcscLJ4Rny5SqGafOtX+xgx4EB4pEgsXCA3vY6LljX6dtGDI1n+YuvPsTQRJZbt63l/bds8RtSAV3l4++8hJcODvLsnpN84euP8I+ffNOCRrWD2Lerpk1EF36SXoMw6Cqk1UzP51L24YumWwQFVBnTs3JxoZzzw3Jg70heQOAVmeX1EYZmK9RHdYKqzH4XztWRDC3gFb1eMX9QcHqYtu37U1q2UKOLBVRyFYOgqpCOaGTLBg3RAOOFGjF32jFRqJEOa5QMm5ppEdFVTkyXWF4fcc3Pxf0xUagR0RVfWCYT1phy9QYSQXXePT4nnuad+RJi2nR+Z5Knjk1Rs2wGZsqkwxqtiSAzZWOh2Iv/f6L5Uh/V2TWYRZEkGuMBWuIBLuhKcfe+MVRZcnnUNhd2CbN0L0+av23P65/TmgzyOxd38tTxab7zwiCd6RDvOreVaEBlZWOU+w9McGxScLr66sKkQpqvlBc9AyfqTFE1BVe/PSUoG/GAymiuigTURXRKNYt0WKdiWDRGdeoiOi8MZH3F2IAifGPbk0EOjBWomBa2I6PKFk3RANNlA1mSyIR12pLBXymH/ZWLKc/jI+ISvWCOUOz9WQJXl31x425wdIbx6TyyBC8fGuDLd/xyydcZGJ1xZcJtRiazSz6mqT5BQya2AErodbk1bY6XYlhz/BPHgX1Hh93k2OYnD71ENLw0fvKVU+MAZAtlcoUKNC59TVobkv4kwVN9cRxnTiFu/spzIxkPE9BUytUaU9nCIjjkTLZEsVRFU5VFAgMgNvBbLt/At+7azpETozz90ivcfs1m/zmmZos89OwBAK65cBWxeIRjI3liAYVSzaIhGiCqq0IcxBHj7kRQmAsPZAXudjRfpTsdJjqPOGw7Dv0zZZeMaRBUZRpjAUbzVQKqRCai0ZYI/rdh5P8zsaUjwc6BHP0zFRqiOmubo5ycLnPFsgxD2QqHxousaoywayhHtmKwoz/L5rY4JcNiz7CQjO1ICRlmRYKmWIDHXplmZWOE7nSYXUM5pko1dg3lcIgTdrtxIEj9miwzWagyWzY5MFagf7bMpT0CWnXbFRs4fGKUL9/xS2zbYTpbRFUUtqzv5sqtK7ntyo1LCqYsFaYtVAU9VS8B9xPS7V63S5Ed/7099OwBHnv+MAFd5XMfu4n33XoB2mn+Cf0j0wvu5zPF9GyBgCITDC9OmmbzZaqGiarKCw7z08OwhIyx7BZ+Ae1XS8Cqps3x6TIjuSo9mTCKDLuH88yUDXozYXRFSOD2z1bQZYll9REBTVZ0bBwitviuvINqidv0fzQimmjGRHTFNY0W0udlw8Z05c49U3JvEhB2VTdFx1v8bylIjeUIsZgLe9L0zBPe0BSZ+lgASZI4pyNJazLE9uPTPHBgjEePTPAHl/XSnAi4wg8LlY1kWTpjkeCwWOlNlliyI+14ULkzFN6W7RDVVa5eWU9inq1ENKAScJt3t6xrYl1LnCdfmeJb2wdY0TjDb17cuQBOpcgSF65o4K4XBvjiXfvonygSC2nkygZbl9WxpkM0y3oaY/Q1xXn20AT/eM9BNvWkmS5UuWfnIINTxQX+Jl7cvXOAHz97kvP66uhpjKGrMkPTJe7e0Y+Dw7UbW161Gy9JEmvak/zFOzbx+994ns/+cBf/+pGtrGxN4KnRzofOnx6v1zRVGC+LBNx03O/kVQopSRICT/MNcUFM2jVVWcB/kpDQVAVNm7+fyXzotvMZm87zo4d287PH9nLno3uQJZloWGfbOX185iNXc+ejezg+OPmq10WWJd5783kMjmX50cO7eXTHUR5+/ogoqhWFizZ283HLJhrUmc+iCqgKuqqiqcqvfN0f3H6Iz/7fB+buDWduOvGLJ/Zzz5P73eskccPFqzh3dRuKIlOtmfzLD59m54EBVnY18L8+dBWpeY1oSZJobUjw6Y9czUf+4oc88OwhvnPvi/zO2y7y8yAJaHHhzbKEjzrxxG0kxLQ6FtRQJHAcUfCENFFMeh9VAl90ZEE4glMd01VkWew5nvhYyRA2D5ta428IKsDZourC6DyoYzqsuQ1khZxrQO5BwnRV8HNyhRrRgIquCP7VTNmgJy1yrKgrGFOoWUwVLVeCveoLVWUrwnLmdK55X12YloRQSb1yeR0hTeHKFXWkwhpNsQBhTeHIRJF0WOPqFfUENJmudIh4QPW/rwu6U24hbKMqMlevqOe5kzOcmCoJzQOEoMib1jdxcKzAbNmkJxNGU+apYJ/2pc3/q+M4tCaDvH1zC5f2VvjHJ05yYqrEupY4cVdl8Klj08yWDd60ocm9v2QyUZ0TUyXO70q56+3sCBVdkVAkibF8lVhAZbpsUKhZ5ComqrKw4eRNClviAWbLJhlXDdeLhqiwLUiExHoPqDIhVfbFR4azVTpTr30o8CsXU5Ikud4uNWIB1fcYCbpa7JV5Er5LxXSuRLVmYNkO373nhdf0mh5x//SIhgIUTQetMtfdliShoHImfw7bthmfzgMwPpXn81+9/6yvb1sOpnlmQYBIOOCbDkqS5F78eZ9/iUuxsruJvo4G9hwZ5Af37WR1T7MvJpAvVvjhAzuZzhbp62xgbV/Lot+XJInVfc1ctKmXu365m589sosbt60jHBQQpl0HBzh0fJRkLMyN29YRCQh4UFhTSIZUMe53bxZFknz4SbZiUqwKpbRYQGVwtkyDS1At1oRkcl1EdMzTYZ2qKTpWARf2qcjCYLQ5HnjdNs2WeIDrV9ZhuJ5XZcPinLY4AVX2vaUkYHldhJUNEVRZKE2FNJlz24WJaVhXqJhClWltcxTDEr5dZcOiIxlkVUNE4JgVmabYHDfn/I4khmXz3KlZblhVjypLPHRkkmJNCLQ8sv0g37zzWS7c2MPn/+gtxGJixB0NBQgGxMb2WpP6qmUzXqgSVIWEtOoWBpoaELhr5jYmx3HYfXAAw7TobMlw3SVr0U/jRTmOw9DYLNWa6a/nM8WRU+MYprWIW+U4DoeOj1KpGqTiYWFfcIYI6QpBXX1NheNS4U0IHODFwSwXdqWoC2tkyyZNMR1Jknh5OE9YV0jFAi53Ye61dFn2r7czlyu9bus2HlR948C0S2b3TKLni8BYtoD+eXtsfURfBB9b6rmTIY2gJnNOR3KBQAnMqXQ1xwO8eWMzF/em+Yv7j/DyUJbmRAOd6TBHDo1TrIl9wbQd+qfLrhCI6JRWXR8s2REqb5462tlCV2Wa4gGOThQw7QY0ZeF7a4gJed7GWIC1LTG/sAD8PyuyRF99hN66CFs6U/zdo8cYnC2zsnFOaVCSJG46t51jY3nuer6fv/rJy4IHElRpeNdmv5hqTIb4zFs38MW79vL1Xx5FehTCusqFK+v5o1u28Lc/30fyNCny1nSYimHx/aeOUzEE9FVXZTrro/zlOzdx/aa2Bes8oCq0psOk5j2PJElcsrqBP3vzev7+F/v5+iNH+fO3byQ+T7o3VzF8w3XBbRUSGOnXyYZCyIDPJesejP1M0ddez9f+/B0EAyqxyJxk/O1XbWDDiha6WzIujwGiYZ2//tgN5EtVejrqqZpCMCeVCPMXv309b7tmE/teGSFbqJCIBlnZ1cC6vmZikQDxSJDz1nSwflkLxarJicmSLyPf4zZVANLxMH/1uzfwzus3s//YKDP5MgFNoTEdY0VXgw8hdJjj0KzuaeQbn3uHsCZpSS9Yq6fzwwdmykhItLnohBsvWU3vPMj+6GyZ545O0pYJs7k7veDa5Q34xYvDrGlP0lUX4vqLVnLJph4aM3HQQ3z9sWNM5KrUxQKcvyzDqtYEF23s5jt//W6mZoukE8IQ/uhonueOTjI2WyEV1dnSl2FNW9JPlmUJTk0U2Tcwy0Ur6hmaKfPs4Qkm81UaEkEuXF7H8ub4gve2JPRJklyIn8jDTMthumygSMIrVAIOjxdpSQRIBF//ydRSUaya3P3yCMubYoQDChFNoWQILlFEU8iWTd/jKFsxmC7WmCkJJep4UGUsX6EyD0mgK0IdOV813eJM8IJmy4brNyUEoQxbQGUrbp5ZMSx+sWeU9nSIvoYo2bJBKqxRMS1SIZWa6VAxTLrrwjTEdIKu1+CEa+5eH9MZzwv+bTKkoSmSa3AveFkX9aQoGwLmPl4QNkdN8QCNMR3D5WROlwzqojr7h/McHstz8/qmJVEbe4fzHBor0BgL+NzB5LwJ/bkdCb70y0ka4wG60iLfUXC4fFmGO14YxHKgMRYgXzG5tC9NOqLx8lCOU9NlJgs1nj0xw1i+xub2OLGAysqGiCjm3alhMqj59i6dadFg0BWJHvfPrYkg9RExTTZcdUHLEcgPT0BGdjlylktt6a2LuJ6pr33t/KdYkBOFGgkXblKzbAxb8uWwcxXzVUlktku6U1WZm7atOyN0zprXLdm0umNJDLwsC2+k6VLNh554m8OZwgEsV6ihMRPnlsvX+wnhfKUkr2sjIYqlV5Oplk4rnoRUpBiDS5IgNs73GwJoqkvwu++6jE/+3Z185+7neKV/nPPWdqHIMi8d7OepF4+SiIX4g/dcSUfzYjU0ELyV26/ZzINP7+fZXcc4dHyUzas7sCybe5/cS6FU5cqtK1m3vBUJie50CNNVj4noihjju8VQvXuoRwMK65qjvjdN2bB83snapqgvqhANKK6CilgH7ckgAVVmZX3UVbl6/UKSXB8tZApVk1zFdLtp4rMrkuvTokpUDJtowPXcUWU0RfeniuKfHDfRnuOQCAM4ackiwOMNNcR0XugXE1XhHaRgmBY/uG8nEzN5rrvkatb2NrvQkYUd+9d67UQh5/IFXCiGIkvoZ+rwu4e+IktLNjsKpSq/eHwPhmmdtZh6aX8/xwYmFkm8z+bLPPD0PmzbYVlnI11LGAd7Ie61//xK0RSx7qK6wlMnKr4CWjRQ8/egNU1RDo4VODldIqorqLLlvrZ4Xctx/ELEU3U6k0z+rzvm87s83kWuYuC4akWega73XnGnVjjOWTvksaDKNasauGffGIos0ZIIMlsysB24fLkQnPjl4QmSIY1ESGM0V6Fm2mTcfeHcjiSPHpngRy8Os6UrydHxIqemS/zeZT1Ikjh8Hjo4wWOHJ2mIBXjylSmK1VdXpPRClSWuWlnPV548yfd2DLK2JU7FEPCXC7rTtKeCbG5PcscLA9y0tpFoQGUsX6U5HmRTe4LpksHTx6ZoTYQIajL7R/MEVXkBd8VLeBNhjf/15nW877I+JnMVJAmSEZ2W9Ny0TpYktq1pZF1nisGpIjXTJhXRac2ECWgK//jBLYu4eJetaWJjd5rnjk8TVmXCmkw0qNGUCpGM6Iu+n1VtCX74R9sI6+qC80qRZd68tZOLVzeC4/jd1eGsEBvx+KjevSxLnA2R+2uNaEDxC9qKC8GxHRsJT+HVcb3BhHVBMKSz7bxlPlfNsMTvdLVlaGtOo8gwlCvTngihayrnreskWxGwXE+AQ1wuie6uRro7G0VCpCsLOC8dzSk6mkVucWqqxI9fHOLUVIlyzeLv376O1uTcVKdmQ2dHA71dTb7CqSxLGKbNVNnwIdSegI+i65y3sQfDcqgC44Uauiq7Es1zYTtwx/YBVFniE9cuQ5EletvqFhRTY9kKDx/fycPHS7z58lbWugprk/kqH//WTvonB/nKh84jFNDYdk4fVdPiO0+e4N8f2YssScRDGrPFGv/+yFF+55rlvPuSbrau6xSfy7T5wbMn+dcHj2DZDqmoTr5k8O+PHOUDl/Xy4St6Cbl73Y5jU3zuJ3t4x4WdPLx3FBCF+shMmVRU5/Pv2Mi21XOw04ppYdtiauUtP9t26HBhrSXDQpMletJhJLfrv7Y5Jibrb0B1Py/KhsU9e0f5YDzIhrY4IDEwU6IlEaJiWER0xVcQ7c0IEZ26iO5bGWiK7EMZHSCgCTg0QMTloSqy5KoELoRDzJ+c1Cyb+/ePcV5XipVNMTRFdnNdg7JhEQsIs/JcxWS2bBC2bJIhzS0IhGCQjLgHMxHd58Hpqnh/eTcvqnM9nwBf0t/Gcc9CYdFwdLzAg/vHuW51I0vRAZviAU5Olzg1XSISUPng1nZak3ONkoZYgLqozuqmGJKEL/SxrD7C+85v49BogdFcheZ4UHDwXBpFWFe4bX2T67NoUTMdaqrtF+sSomgygPF8zaVX6KiyC7NWvJ1C8Nk8nlvFEHSWRFBlvFClNRFiolAloClEXc5gLKCi/ndLoy8V0YDCdEkYunrkxURIY7JYI3QWvkEsEkRThfTyb9x0PjduW7fg5yXDwnRxurYz15WtuIT60yMV0nxZcNzukeNAKbd0ciHLks/TakhH+fRv30gyHqFiCjM2Tw1NQiz6qimgNvHX4NxtOwJ2JQFDuQr1EZ14UGW6ZPhQOcNyRFKnyLz1unMolmt85p/v5pmXjrFz3ylxfcMBLtzYy4duv5jrLl6DLEtLTtokSeKizX2s6m1m18EB7n1iLxtXtjE8keWJHUdQFZmbLltPLBJktmy4Ezuwq3PeGZ5PiQdJDGkLD6X5MBkPI12z3AUNPp7Y2wR0Veb1s+pdHKoiNi5PUtsT4PASAFkS0yVP9ca0HZ4/lWV9c4xYUEWVRSJ2eKLI/tEiF3UnF7hxL/massRFXSkqpu3eyGJqZ9iOmD458J27n8MwLZrq5jp+mqrQWBdneVcj9anYGY2EvZBlIZ/qPcorFiWWhgKt6m5CliWGxmd5fMcR3nL1ZnRNKDmNT+X59x89yUPPHHhNBNiBsRk+/9X7+ezv3EhnS0bwDHIl/v1HT/L0S8fQNYW3XruZZOzX5+Vk2g4npssE3CRTlhdi4B0EXKM9GWL/WIGqZZM+A6TXizcQHQUQXhler8aZ1+BxEHtJyP2ZLIl779zO5JJKYbIkcc2qeoKawtPHpijVRGKwbVkdEvjKTc8cmxbrTpa4alUDG9oE5LQhpvOxS7v5+Z5RvrdjiHhQ5SMXdbKyUXjabGxPcMv6Jh4/OommyJzbkaThnBbfby6iq2ztTi+5j0qSxKb2JB+9uItHDk+wdziPrspc2C2SYV2Ree/Wdh44MM4DB8apWTbpiE7HupBIdCWJwZkK24/P4OAQC2p86MIO6mMBH07l+efIbve8oy5CW10ExW2c2S4fxudrSRKZWIDMEvd6Q2Ihz9eD30VDGjVJZkNrgsao7u+Jljv6FFNQUQTrqkxrOoztiG6pKs/BpyQZmpMhX1XVsgVPR5ElXxlMdsT698jhr1d418tyHIayZRQXkhjSZKZKBqZl+4iVpMuVaI4FBa/GkQVkKqBSNhzGClWRhDpzOaamiM66Mu91vPUfchT/fn21ZkJ7OsSf3bCCJw5P8G9PnFwEYbbcgi+kyUiGJ+ohIbmNMa8Z6qknCo6ghKJ5U38PCrc4aqaN9SrfT0M8wP9340p+95s7+fJ9h/jSezYTCah86/HjvHxqhs+8eR1r25P+efXkgXH+6f7DXLexmd+8chnpqM5YtsLf3n2AL993iBUtcS5cLoq1545O8ne/OMg5vWn++KbVNCWDzBZr/Mejx/i/Dx+hJRXizVva/e8wVzL4yXP9/P4NK7luQwuqIvHkwXE++6M9fOPxY2zpyxB295ZSzRIc6ojuejVpAkYmCwTLdEkgl0qGRdxtftRHAz4H840eEvhrrj0Vcnlkqr+3zmdwLPW7Sz/pXAPWV7+c9wy+ibq3ByE40bIkpiiS5DYoXGSCrsgQFDmbrggeW0hXqFo2LXHV59Rq7nQsqIn3rcliIhYNqIRUReRzknieWFByOaTyGSHjp0djLMCt65oW/bsnvnFiqoRpO6xviVGzbCqGl99DUzzImqbYoqbqprYE+arpKtXOmbsXa5bvDZgIasiu5+Rzp2bYNZjj3ee2srJx8eDDy4e86XZUV7Ad/Map5bh+q24xeaZp86vFWSsEz6QW5hZJJqITD4qRY300QHMsABI0OgF/AZ4pWhuTpBJhhsdnOXhshBu2rVuwETqO+MBedWy4XkZnelrdlZU8Pc70eFmSWNnThCxJjE3lGRnPkkpEXBiWIKHX3IPLsOa6/eZrUDjLV03GC0KJq2KIDcWwbMqmjaYInKemyJRqwttparbIo88fIhTU+PPfvtH13YFwOEgyFSMaDlCxoFYR3jOKImHbwkk6HlDRVYmGdJRbLl/P7oMD3P/UPn7zbZfw3MvHOTE4RVtTiivOXwEIlar4ae/XO7C8w8lBjLnDuuL/2/z/GrZDqSY2x3hQ9kf5puMQUmWfJ/FfnTj8d4RX2DqOuF4Rd3Mo1MTotli1SARVEkGVYs2ibAglNVkShPf2ZJCq2+1RJOjNCKW+Uk10271ObL5qEdUFebdYFQW57ir3eNNbL1RV5jduOp8ndhxl39FhPvOPP19IFJUlQgGN5V2N/OF7r+TWKzeivUpzompazJYNP8m2HTGtqrmdH3Evio0rHlS56sJVrOlrYe+RIf707+7k/if30daUYjZfYteBAU4MTnLblRt5dtcxxqaWljQHIRBzxZYV/PK5Q+w62M+avhZCAY3jg5PsPTKEYVrccvkG3nbduWctCP8rsbElTtkQyn2eyWwypLGyQXQCvYZItmKyvjlKUyzwhlCROlMUa6YL25pTRdNkASnx7kHP28y2HR/y5TWAbAfetKH5jLLLAVXhqhV1bO1OucnBXIIoOfDmjc3cvK4Ry4YDYwU0RXbFhsQhFg9p/NYlXeAI+wTv2oddg8arVtZzUW+aRFDzO9be1U5HRIFTM20fuw+iG+p1/c/vSnJOR8I3A/c88yRJ8DnftrmFS/syjOYrSAiO3cHxPFFdZdvyjJiAuBPaVEjj6ESRoJsQZyuC3G1YDvVRncFZwftMhDTyFZOaZbOqIbokXNIrluY3YbyQJLG+njkxiywJxdOKYfPk8Rku6BJwymdOzLC8PsLu4RyqLFM2LLZ2JkkEVZ47NUve5WCc05bguVOzLi9OQIov7U0zWzLYMZBjc1ucxpjY2/aNFjg2WUKVBRG9Ifr6trAkhAiDJIlpad7lcgZV0UgSIg0KuiW5nj5ibxbdc8FPkdyCvupKb+uqgAzOFzpQlkhVHUec2eN5g6phE9QFyVxX50yPA6p0RmGZZFDz33fBhaZmIjrR4ByftGKIvT2sKUi621Q0XTGHoOLDZmumzWShiu2IRPis102SOKcnzceuWc7f/Hw/33v6BL2NMf7f0ye47dx2bj23zd+zKobNj547RSKs8bFrVtBR56qgRXQ+dEUvzxye4P5dw2xdVodlO/zk+X4kCX7/+pWsao37j/3da5fz/NFJfvDsKa5e10w8PAcjvXhlA++8qMufiF63sYWfPt/P8bECs6WaX0x5e1GxZqFIwoZkulSj4l6TgAs995qttsuneiOEZc+VMF7+I0nzihhJIls2+OlLw5yYKtKeCnPVqnqh/Oc2tvNVk2demeLASJ6gpnBBT5r1ru9dxbB45tgUXZkI+4dzHB4rkAipbFtex7KGqJ8TmJbNgZE8z5+cYapQIxZUOacjyXldqbn3ajk8eWSKQ6N5YkGVS5fVsaIpimU7bD8+TSyo8syxKbozEZY3RnjwwDitiRDXrmkgFlCZLRk8dXSKg6N5KoZFazLEtuV1tCaD/l62d6hA0DXMfezwBNmyydqWOFetql9SXr9s2DzzyhTJsMbmjuQZz9SpYk34T+VrXLYsQ6c7pZxvoVQxBfQxoMp+4WY74n4TRc+cGbfjCOiYaTm+nxQIwbGb1zRyarq8KE+3HceFXYtCMhPWfQSbUJYUA5j6iPCdFEghiZrl4JkRx18jJPWsxVShalJ2uSOqCw+SmPOzwYGpkoGDqBT1s5DI25pSbFrZztDYLPc9tY/33LqVxswc4T6kicR0DtY353H03xGSJLF1Qw/16SgTMwXufXIvq/uaaYgG5g5N17TW++IttxL2oCfA0gx9Z045JawrfifOtsUXatoOmjLXzfj5oy9z35P7eNNVm/jIWy8m4Br7egXd/AiobsEji/flLWBJkrjh0nV89cdPc+TkGC/sPclDzxygZphceu4yulozvkJfOiwUaEB8j8WaSTIkZI4VSchDHp4osMLF6EpAOqIzlq/6nDhPfW0kV/E33FzFpDsdZjRfIRHUXveDHcTB84sD49SFdQo1k766MKsbozxyZEpA8SSJ9S0xbMfh+f4sYU3BweHi7hQlQxgVglC+2dqZRHWTVi/yVYsnjk2jK25y1JXk6eMzflFjOw6X9qRpds3hLNvmmZeO8S/fe4xqzWR1bzN1qahPuLYdYQI9MDrDrgP9fOJLP6WxLs7Fm/sWFFyKIhEO6C7xVfHleL3NSVPE6KJq2uiqhCKJAw8kulvr+LtP3M5f/tu9vHRgQPijAQFNoa0pxZ98+Frec+tW/viLP+HR5w8vMsP0wnEcbr58PbddtZF//d7jPPzMAapuUpxJRrj58g188oPXLPLKkhCy/6Gg9qo+VpIkEQxoQmJdOXMx2Xya8Z7tCDy0qrhKd4pMWyLoqzp67904DYYqu3Ajfd6E9vUIw3LIGSKxB7EXZsL6PH+Rucmb361kcXd0/vlXqAp3eU2RcC27yLsNk7CmoHnJkTRnNgliHXlPM1Gs8eJgzlf+OqctwQv9WRQZSobNuW1xdg3lRNfedmiNB1jbFF1wEHtw59F8lbqIjlE1sRxRQJq2Q2M04Esne1j2hZ9Jchs6to/NnymLAqlq2iRCgodQMSwSQQ3DEtzdmbKBbQhOkTdxMCzRYMmEdXJV0/c3EUgEy2+s1UzRsVVl2Z+IIIEqeQbmAk68b6RAKqyyujHKnXvHfLWzgdkKAVWmbIiG3Gi+xpvWNnBiusyh8QKX9KRZ3yKgT48enaY7bTBTNuirCzOSqwohkkKN7kyIkzNl9z6GmZLBvpE8Vy+v8/1lXu+QpTnvNwcH2xbG7iDW9WSxJhQ0bRZJSZddeFFrPEihalEf0Zks1kRCbtpkItoZCyHHcTg6XuQ72/s5NlH0i97r1zbyrvPbz0oel9xD/sBInm8/289oTlg5tCWDvP+iTpY1RJAkiZ/vHuHYRJE/urqPgPu+tx+f5v69Y/zp9ctJupCrbzx9ip2nZtAVhd6GCDOlGnXRV5+GK7LMW85v5+VTM/z7I68Q0hW666P8zrXLCc1D48wUqhwayqEpMs8dneTFE3Pf+9hsGVmWODFRoGZaFKsmBwezdNRF6KqPLCgUGhJBVrUlePbwBKPZsl9MyRKc6woleRFQZVIRnVdGCwtykkhAxQaBRJI8yJWMKouJR9W0yVdN37ohGlDOilr6n4oJt9h1wOf7z5+Y27bD3XtGWNMcJxMJ8MjBcQ6M5PnENcuIBVVKNYt/e+IEJ6dKnNuZYrZU4+8ePsoHL+rkihX1VAyL7z4/iCJLtKVCdGXCvDyYZfvxaf7q1tW0JkPYtsODB8b59vZ+ljVE6EiHmSrWOD5ZZMu8YuqBA2P01kXorouwbzjHM8em+KtbV5OJ6PzoxUEiukpDLMDXnznJisYojfEg398xQHs6xOaOJP3TJX55aJyuTIRYUOXxIxO82D/L525a6XMxHz8ywdBshbCuUB8NEFBlxvKVJa9dxbD57vMD7B6c5fcu733VAjkZ0rh1XRO660fr7+mSaEQ8cWyKfcN5HMT9dtu6Jizb4d4D44zkKpi2w4qGKFevqENTZHacypKrmgzNVpgs1tjSmeSi7pQrBLI4Hzcsm6eOTbNvRGgkrGmKcWlf2vdmnCrW/n/m3jrQlrO+9/6ML5ftrsdd4y4kQAxocShBW9reIqXlpbeUW257aaFCC22RYsWLFEKIEELcc5KTHHfZ7svXGn3/eGZmry3nJIG0ye8PyNl7rbVnZs08z0++Eub8QR5nqEJcb9pXZw2gvc9nOPCcxZSqSMQllarkdxBl2e8kCgicpvjjRp7fSDAW0fmdm87ngV1HeHLvKf76i7fxkXdeQ0dzOuSpeB5UTIuh8Tnm8mV2bOh9UScd6wbbuf7yzXzlhw/ypf+8n76ORq6/fBOJmBFW647jki9WOXxygkw6QUdrFg8v7LosB6MKjMpkSaIzHUHzN+GKJSSYc1WJVEQNR91Ts0Vsx+XIqQnuefwQ3W0NYTInSxLxmEFjOr7AgyoIrw6WsqqvhcvOWcV3fvYYP/rFLnbtO008qnPD5ZvRVIW5QiXE6AZF4mzFDEl/AZ60Ma4JaU5/LN/nc6ZMW3iGDTZpzFW80A+nWHPIRDV0RcA6FEmIPbwcwgNcF87tTVOxXB7wu8Nly2FHd5rOtNjg7jo0zepmIURxx8EphueqaLLMju40CV3h5/un2NLhLpFZPjZdpmQ6DHbE2D1c4MRMBUmCda0JTs5WhEJPxaI9JYr03QeGeP9ffpvJ2QIff/91vO7qrSTjkZC74yHMdA+eGOcP/u932HN4hJ/cvZut6/uIGfMTrg0ru/ja37yTqKaweqCNqu2Q0FV0VRYy16Yj1IP8MXaQVILYSC/avoJvf+bd7D08wvD4nCCrZhOs7m+jqy2LIkv8+e+9mve9/hLWrWhf9tq6fqfxnTedz9UXrGPfkREmZgrEIjqr+lpZ2duy7D2rKDIffsdVvO2Gc8mmYmiasuxC1dqU4nMffwue47Cyzmg6/G79zmDFckMoSUxTmK2YIe/RclyaEwaShM+LE69TJHwlSi/Ebhu+dHVjXEd/Cdl+gtMlhTLEgaDORFE8q0ZdZjgvdLMwZspmKI8P4jo47vwaFKg+5qrW825QHZ+p0JOJhs/IydkKVdvhmlVN7B0vcsLvCG5uF5zKx0/nWNeaWHJ8iiSFZOx8Vahk5WsWSUNlOFcNYZpCiKMOrQAhByehq6H4UXNcyBHbjic4uwkhMlKzXOKGGoohOK5H2RKT6LmKaAalI8KwtOa4lEyJsiW4O44PndN8hUzF5+Wq/rGrfpEp16EVCjWbwaYYKUNMumUJVjXH2TteRFdkBhqjocprJqqRiggPlIlijSdP50lFxL3peh4RVREqq4aDqkgLeJ5BlC0xuWqMay+Zit/isF2P2YqNrogpouorFNRsl6pvUFr0C+eyZYfciUBGO6rJRFSF2bKFqkjCp7LiENVkqpZ7xmJqqmjyd3ceJqorfOCqFTTENWZKFhkfHvV8YqJQ4x/vOspAU4z3XNIHHnz/iWE+e9dR/vLGtTQmdKZLJsNzVeob3/mKxamZcmiifMvuMR46OsMfXjFAT2OMB49Mc8/BSS5eefZiCkRx8o7LBvjV3nEm8lU+etN6OrMLLVNKNZti1SZXtvjbn+5lMaAsoinEfRh5xXQoVm3aMpEl106VJRriOhXToVCxwp/LskQ6ri9Zj4OCsz50RaZxkehJKiJ8lQpVG0US65ntCyC8nEx704uOZ/Ej5Hgea9uS/OEVg+iKxLaeDJ+89QD7RvOc05dl91COp4dyfOK6taxsiWO7Hl+8/wQ/emqEc/oEv912XVpSUT589QriusLJmSb+9Ed7ODhWpDMTZaJY43tPDHH1uhbedm43hiqHTdjgeDxP8I0+dPUKsUbOVfmTH+5h32iBi1c0YjseGztTXL+pjQNjBXobY7zt3B5OTJcZmq2wrSfDuvYkf3HdWiJ+/rKxI8Wn7jjEWL4WFlMeglf4lzesZW27EOwJBI+CkCWo2A4/eXqU3cM5/uCyQVa2JDAdD8dzkVnY4JcQOWx7OhJO/oK93vM8nhnJ8/jJHG/Y1k46ogmKjT8l2tmTIWGIteDbTw6zpTNFRzrCSL7KMyMF3rStg3RUDeuOM8WhiRJPnM7xxm0dKJLE954aoSmhs6kjGfLUY5rInRRJrDmqJKGpMpqfx74QOupzFlMBpjDuKeGGFvjZLCbhwvwI9UwPjyRJXHX+Wn7/zZfxD1//JV/90UM8svs4F2wZoLM1g+N4TMwUOHxyggPHx7hw6yBf+su38RzX7QWFoat86Heu4sjJCe594jAf+NT3+e5tj7NlTTepRIRyxeT02CwHj49xcmSGz37sDazqafKvh7ixnPpV1ROQK81PgoKHoubjPaOakJFPRzQaYnp4bV5x4Tq++/PHeWr/ad78kX8nHplfyGRZIhWPsGl1F+/+rYu4cNsKXP/6ur7iiJjYyUQ1ldddvZWf3r2bOx7YR7lismFVJzs39AFiE58smWSjfkHliS5izD+u4MZSZVEYz1YEHy6AAKmKcD4v1gQEI2n4XA5JQDfGCzZVW/hqBRyFX9eI9cUMWRYJXGA453liE4jr87CMwC8jwAdbvpJUMIWFpRLPQAhdqFoOq5qFos54QfhSiAmHgEIF8V+/fJqjpye5+oK1/M6N5y8vxx+FHRt6OW/zAHsOj3ByZIZdQzm292SE1QAQiRr0DXYx0BDFdDx2DefoSEXozUYpWw5Pj+S5qE9IoRZNm7mKTY9PBrX9c2tMx7lo+0pfkldsyUGnDmBFTwsrepYWMfUhFNRkutuydNcp9gWwSnHJvCWiLoO9razqa8VxPYZzNdpSBpo87/clSWBoKt29bbQlDf95mlezkySRYJ6eq2I5LkomOn/dfaiA538/J2crvsu8mEyUTYfubJSoJhPTCHkoqn8RZMQm8lJNp1RFJuEvdJ6PNy/VHPZPFMOEpOKTiFVpvuhyvMDJHcqmG06QPE8IGHjgE2rF/R34AS72iQne4+Fzd/D8BF8Qyiu+Wl/E/5tly6FsOUQ1xZ8yOWjKmWHZgvMjhUWi7Yok2XRcNFkmYQhC8Jzvk6L7XUHbF96o2oK70hTXqdrCUFRXZWbKJhFN+OIEBrJB4ZY0VExHNEMkSRg2B+un6wnYVlUTG6csLeSMGqoWXhPbFYlA/b4WrHFNCV1w91TBEwIxNX3sdI5J0+S83nQIY6uP4TkB++5viHJkqrzwl3WvLZviOiv+95+KqFQshyNTZeI+AiK+DJ/4fzIs12P/eJGZssUN61vCQno0X6NQs+nORIj432EA/YtqSrg/CmiyR9IvcnW/SStLnBFG5HkeT53OMZav8TevW89qn7/3QsLzPJ4+nWOmZPK/X72a3kbB8XzLud388X8+y9On57hiTfNzfk7FdHjgyDQXDDZw0YpGZFlwde8+MPm8jsN2PO7eM06pZqMpMnc9M8aVG9pI1nkOBcJBOwcb+MRvbUJdZiIZ0xUimoIqy6Iodbwl+5fnEVIZ1LrESkKsgb9OBEJVio/KCZ7x4HPrm88VS3zXL5XQT9Rv4i2O4GeKJLGuPRUKiPU1xUhFVY5PlTmnL8uekTx4cGi8yMlp8dxWTIexXI1cRfDjJSS2dqeJ+755Gd8kNkD2DM1WKFZtLlnRGE5oFWkRjFWCLV1pkoa4B9JRjbihhlBUWZZoShhoilg7W1MRVEUiosnh9FeWJUoVi0MTVfIVi6G5aogAqI/+phgrWuJhc0ZetDdIksQPnhxm16k53ntJP7omM16shc9o1feMshwvpHsEUN3AuLmeL7dvrMimzmRo2Bt+B/6+8PRQibxvEh36unkw2BRjsCn2vJ7zQ5Ml+huidPv5z8rmOPvGCqxpjYfeXqYvjON6fs7nN9+AkDcWDFCe628+77tZdHs9js2UfcUWKeQk2H4BpckShdp85y+Q8Q0SnACGZOgqH3z7VTRlk/zbd+/lwLExnj00vODvKbJEQzpOf2fTi56QS5JEX2cjn//4m/n0V+7gZ796lrsePsAvHtq/4HWGptLX1UhTdn6Rnr/H5h9Gx/MYzdfIehKmv+FH/STGdl1fOljo18t+hZ4rVNhzeBhNU4gaGvHoPJ/DA0zL4eToDIdOTvDI7uP82yfewvnbVoawQVWR/MJKJArnbupn0+ouHnrqqID+XbyedComYC4eNMRE9Z80VL/bKpK1gJcgKn2JvoYo+ZpNXFKYKpt43jycyPUE38BDbPBRXyI0FVExbZeGqAaSxFihhiSJzkTLc0Ac/jujUHXYNZynYjl0pISE8+J9eUVTjH3jJeYqNoWazfZUit0jBZ4ZLQgZ3pjoXAzlqsyULYZyVTJRld5s1Pfbmoc4BH4wojMzD5NyHJdTozOAUHGMngWDa9su+WIFgHjUoGA67B4pCDWktiRDuSpzFYuBhiiG3/ULNksxJQy4a3Bythoew2i+xsm5CroifCj2jRd9TLIwON47VkCVZVa3xBeooL2Q8DwhCDFZFKbP6ajKsWkxsevJRDkyVUKRRTKsKxK7hnKsbkn4f18YOnamI6HHQ3NCx3I89o0XsV2PwcYY2ZiGhLj3UxGVkmn75y8R1xQqtoMmC87ETNnCQ3SfEv50z/DH+cF65DguqqxQMR1URSThywnd/E9H1XZ56MQcmiIxVRKKYsG97LgemzuS7Bkrcm5PhpOzFTwPOtIG+8aLDDRGycaEd8njp3NoikRvNkpjTPe90TxShsqWzsUsShGnZquM5KogCd+0/oYYz44WePjkHP0NUXqyUSqWy8Mn54jpCisaY5yeq3J0poIsCdXP5VbsYHLantTC+zaYxAUE6mSdT1HQDw+K8UBFXAJMR6iJBkTkkAVRT4YIoDyKaBoFjYN6bKQkCWXSsUINJGENEfVVToM1VvJhKbbn0RyfX8+CPWFDW4LdIwWG5qps6UgR14XaZ1tSp+QXt54Hg41RJAkyUZWeTIT2tMHTwwWGczW2dCZJRVTx3UXFGq34xd1Rn8Cdq1qcmKmwuiXOxQMNHJ4sIUkSWzqSL3kxFdMU1rTEefD4XPizmbLFaL5GZ9ogE9UomQ4TBZOq44IHK5tjpCMap3NVJv3pa2faoFhzwmnnQGOMbFRlaE7AfqZKJh0pI4T4npou0xDXQw7IrxMnpytkolqoXAnQmNBJRTVOTJfP8s75KNUcZkomfY2xsIiI6UoowHK28DyPe/dP8LV7jnHjji76WxJ87vaDfOfBE7zr8sGQx5eJ67SkI8yVLJpSBs2pyBk/MxlV6chGGZ2rkCtbIdcJROJ/cqpEQ0Kn6Xkc3/OJWZ/qIRACFpmoRtl0iOkKhZpNxDfHdvFI6qIZ8FIVUyD2x7KPuhH/FguC5UN7I9p88qzJgucX8KXzVTFZv//IvI+Z58G2nkwoEIMkpo0LONF1q2LZdJDls+81Evjy6QunaPVL3Pw0iCV6Ba7nce+hKb73xDCZqEpz0qDic/8Wj1wimnJWvYMT0yXKph1OZlMRdcFAIV4nWqb4uV+wlyqSM39d/BBN7IU/8zzRkPnZnnEuWdFAcyLG7uE67rZEyHd6PhEIaQShyqK5MFE0w7/veh6mI1Sf583bRUEaUQnFZ3T1TFbc8/G87+bpssVIrspc1SIVUZkoCExhbzbKsekyGd9VeLJohnj8Q1MlijWbjlSE8WINTZbpykRoiuvEYwY3v/ZCrrpgLY88fYzdB4eYnCkgSxKN2QSr+1vZuraHlb0tC2WjJYkbrthMf1cTfR2NIUHf9acMwdQsnYjyB2+9gly+zLkb+5ecjyRJ9Hc28vd/8tu8/cYLeOipoxw9PUGpXCNiaHS1Ztm4qpMta7rpassseb8sSdxwxSb6Ohvp7WikKxvD0EUXVMBMFL8rP29eHHj/FMs1Pv7PP+WbtzzKOZv6+eQf3shAdxOKX9h4HlRNi8MnJ/jbf7+DPYdH+MoPH+TCrYMhfGdxZFNxLj9nFQ89dZTmbIJrLlqPpsrEWKTy5n9+vXdNvVJRveqJ4/MCCr6EZqFmk41pDOeq/o0pxDWyUY2yJVSZqn6yJ0sSuZr1khZT6Ygaqmr1ZKOoisS5PZnQdVuSJNpTooit2i5XrGgkHVW5oC8TNgLakoa4BjWHwaaY8IRwPFoSOpcNNjBWMEPM9Y4uYVKXiqgLOFayLIfS+gePjzExXVjWmNeyHO56eD/3PXEYVZHZuUkQgde1Jtg/USRftWlPGUwUawvI/cuFLEF70uDEbBkPODZTZn1rkqF8leGckL3e0pNh11COtqROxXbpzRhE1KUY4TN5ti0O2/UYyVXZ3p1GV2R2j+Qpm2KaMVUyhRxqU5xDUyU2tiVpTRqsbI7j+sImO3vSvk+JEJZxXCjURKd/S2cqLIRNx0WWRYezNSkSNUMRndiyKYcQuaTv41H1Cf1JH/qlyAuXPdcTSfxLyZdaHJNFE92/X3PVKfI1m8N+p22yaFI23dC8cChXZXN7kqSh0pYyQv+tk7MVWhI6G33oxr6xIlMlk9akzqm5KuvaEkRUBdtx+cG9hzg8PMt15w+yaaCZzrQRJq8122Fl87wqY8Vy6EjrrG6JhwWKpkhsbk/SFJ/nJoG4d1xvXv2qISYKH02RCO7gqCyIpKoqha+dylf45i+E6fjbX7GeSETziyfxObIkUfUL56Jpk/a9XQJYnq5IOK7fvEKQoQ0Jvnf3fmbq+ACaqvDbl65Gi+nkKjYl02amLLxSmuKCm1W1HdpTETxbQKuPj+U4eGqG7avaaM5EiWoK5/Vmws90XI+pksVUyWJHdxoPYaQdfA9NcZ3muGhK7ehOLVBPDSC5TXWCVC0JnQ1tifDauB50pg0afZXSl9FtuyCimvDNOTlbpScbJV+1uevwNBf2Zzk9J6bGzQmdp4byrGqO8/CJOS4dzIbNx4plc/+xWa5b18yzYwVqtsuqpviCfCAQPDr7avhc4Z3x7Wdb+uqFDIJ9dXGe91wwTM/zODFZ4u9+to+Ohih/cM1qsgmdfUM5vvTLI2zoznDBKtFQTsd0rljfyhfuOsLPdg3z5gv7QpEN1/XIVyx0VSZmqMQMlas3tvO3t+zjF8+O8uYL+1AVGdf1ePTIFHtOz/HqrZ1nLcheSFi+iEigPFmzhdCT5vtPFmo2VX+qKibfLwRA9eKH5CfmMuI7Kpk2uir7EHZRMAX7YM2nOQSG4Y1xna5shI9eu2qJ2I8qSyHf/GzffNIvRnIVm67nycl5oZGrWHzrsdNs7c7wjvN7iOoKh8aLPHU6t/wbznIITQmDP3/1Gn66e5RvPHyK/+/aVQLCtyhPmG9+za//yxVAvX4D97w+gboJ0AenZ4Wv6Tm9WYbmKlSfB20kGAy4noftuqGJeG9DlIePz1IyBcT9xEyZ9e1JMr7nWYCuAcH9E+gZkbsKSoyHdhbO9uJ43sXUXMWiNWngeB7TJYuS6RDTxYHEdYWaLwOd8GEVAQQqrqtEVKHq0xw3KNZsv2tsCsJ6U4YrL93MVZduDittWZKQZImq5TBnehTtGrIsFDcUWeL6yzZx/WWbFhzfbNni0VM51rTEGWiMkU5Gef8bL13wmoA7EIxeJUlisuKQMxK84ppzWVunAhYkVme6yWVZ4rpLN3HdpQuPI6LKYJwd3vbI7uN897bHaUjH+asP3MRAX1tYQYcFoQwbV3UyOpnj//v7H3P45AT5UpWIMQ89qT8+07I5fHICgHM29YWKhRHtzMRdEMavpZpD0lDDn+mKjKxLoZeSuFkDhUPRaXU9IUns+hDHYHIpIRYb8W932b/9PxESYmHryUbD7tjpOWFOl6sK1+zmuM5knTDHeLFGzXFQZTHlcV2Po9MlVjcnSBkKzT5HwVDFiNtxPaKagHOM5Ko0xXUShsri+lGS4FWXbOC7P3+cXftO8Xt/+W3e+Mod9HY0oqoy1ZrF0Ngc9z1xiJ/fv4fJmQKX7FjJ9Zdt4lDB8SGFhA+7gCgBiIJ4HvrphU0FWPha2ccEB92XAEojSRIxXWVDa4IDEyUcz6M9afhjb98YVwIZaUk3a3HIPiRU4LHV0Ny1IaaRMFQfCiKJDUwW9/p0ySQdEVPRYOMNzA0LNZuoJiZJ44UaWd901vLV2gQUTKwXAUw1YUjhMwTz0BgJCU8K4IziRAJrgJim/LdsZr9JyP6z5fjcSFkSne6+hiiDTTEyPj9h/4Tg5WSiWsij9Lx52X/Ln2QjSSH0aFVznLUtUtgZdFyPH9x3kNsePU5PS5KtK1pQkDAdMfWr2q5vFime60CyNhPRQyx8d1p4hCyGZBVrDlMlIaE8V7EwVIWhYpVUuE/4suRA1IcT9mSiTOcq/POPdyEh8cpzBzBsD8ed5+hKiLWrJWFQqAkVxOF8laivdIgkFKF0RQ7RE7bncvvjxzl4epZyzSJXrBHRVTavbGFlf3MIRU3oKlXboWo7eAgeU5AgVkybv/jag9zy0FH++A07+dhbzluSg1iOy6HJEiuaYrQldU7OlMNHJ+hyBpLFuapFc8JgvFAjE1HJ+6R90++I2q4b+vmU/f004KxOFmv0ZmMv+VTqTBHVFBpi+gLz5qAw1Px1omI5TJctTueqFE2b2YpNQ0wlXxWmqPmqJRIcJNY0x1ndEl+QqHVmosyWx5nI10LPqxcaPQ0xfrFvktmyScLnPc+WTfJVi27f+FNTZCzbDYsA1/MYzVXDYiumK2RiGqdnK2FCWbNdposm7ZkzFyylms0/3XaQkdkKf/e2bfQ0iabF/3rlavYN5fj0T/fxuXftpDMreHdvvqifp0/M8ne37Ofxo9Os78rgeh6npkocHS/ykevXcf6qJiQkbtzZxUOHJ/mHWw9wZKzAmo4UQzMV/uvx03Q1xLj58kG/qfGbR1NcJxsVa05Md4hpqn/dxJrj+lDkYMq8HEXkfzJkSUJW5r3DIpqYSpq2yF0fPT7DZauaSEZUdg/lKJsOq30D8G09GW7fO87jJ+a4aEUjqiyFU67m5ym+1dMQozlpcOuzY7SnIyQjKpYj1pjnowL5fMJ2hPBZS9IgoinULJdHjs1QPoP/n+17xAm1Vs9XfPWLDU2hPRXhHRf08pk7D/PF+0/wh5cPEtHlkCbieYJXldBVPE/wkeuRaUFRJUkSO3oynJgp88WHTvlCSxo3bWpjVUuc3cN5vvHYaUD4IQqTcjfMZYOiDcRz9sxIgSdPzTFXsbnn8DRHp8q8Yk0zG9qTHJ0q89VHToMkaDbbutJnVLs9GzWlXqPgTPG8i6lMVEwkHNejI6WHmFfVx8fXbJea4zFbMTEdj0xUpeZ4aIo48biuoqkSLoLsXbVdDEXGRVT9gWJVQhcQC9HtlFFlUQBpkkxQ91qO6ILUwo6zQkNMoyWpU/YrWcf1Qm+lhqiGpsicmK1weKrMxrYEzQmdiuWwe7RAY0yjMy0KtUJt3qVaV0RHxfXEWDYbU0NVvmDqkI6oFGoi8UsaKsnnsaDvPzZKsVxj7UA7/Z1NCySAZYmQiC1JAhIZtDk8jxBzG3DXFD+RPHRinAd2HUHXVG68YguxyNkf6kC3/+ETc0RUmTUtCdJRlVOzFbozUaLawnMQGHYhaRwUfgHWFOoKUG8+ke1Ivzhdr18ndFXmvL75sXvVNxHM+8T7hphOTFcwqnJIhLYcz/ffUbEcj7iukI1pJAxBVA+kNE/PCX7EZNEkrivEdfG7xTjkICRJ4sKtK/j4+6/j7776C+58cB+/fHg/UUNDlmUsx6Fm2riuSyYZ4/XX7uCj776WzpYMc26BkzMV0hGVuK5wZKqM5bgMzVWI6wqn56qkIypNcV34urgep+aEYMBwrhr6gaxqjnPAT7y7G2NosujGNcY1TNvl1JxIRBt8+JVIcgVHI6IpPB//OgHxSjJVMsGDvoYosaLAp6cMFaMhRkSVGWiMoUgSq1sSFE2bhKGwsjm+YPIUCIQkDZWVTXGKprjvPU/c+0F3yfK7w0EHOFcRhXJUU5go1kj7HcBURGOyWAvJ1KosoykCltuTjT2n6tf/dDQndI7NlHn8dA5DlUlHNPp9OGRcV9jamaIlofPsqMdgY0RI+hdqDOdqvtKfRl9DlCdO57j32Cz9DVF6s1GmSiZ7Rou0JvXn3LSjmkJz3ECWfTlaVwjzaLKEoai+qIVoWqxdxtsDfBi451H0YS26IvgDVUus33F/mq1I+MWzsqSb77iikFL8JkDZF1kpWQ6WM//seZ7gPxqGeI2ryMT9It4DmtJRvvjhaylWTSZmSrz/s3cxMlUkoir0ZYXnU8JQBW7en3hENb9A9JExluVgWg6O6xepy4yII5rChb5HluW41HwTSMsRtgmeJxQS+7IxTNvF8nlEuipDTcgFBwVj1RGQ7kLNEY06CJtZcV0Vghgvs0ZAEPXDhyBRUYO9DXHpYppCe8pga0eSzR1iunrHwSlWNsVoiGlMl8RkWpKEkulCyJPE1p4MqYjGvz9wgjef2x2q6uF5rGlPiuK/alMyHSaLNSzHZTRXRVWEGFRMV9nakyYT0/jPJ0f47e0deMB/PjFMOqqxpTstaAGNMX7y9CiPHptlQ2eS41NlHjgyEx5LXBfy2HfsG+e8gQa6s1EeOzHL8enSGYspz/PYdXyWk1Ml3nPlCi5Z2xqe34q2JB+6bi1f/uURfrV3nDdf2IciS7RnIvztW7fyzftPcPeeMR47Mo0kQUPcYGt/lq7GaHi9mpIGf/WGLXz1nqP8cs8Ytz01QtRQOX9VE+++YgWr2+f9fbJxnQ09GTLxhXmDJEl0N8bIV9LoZ1Hjq4fsLU5WlyuclgcYvzSx+PlJRzVUReavfn4QQ5M5PlXmqjUtrGwVhfy69iSv29rBfzxyilufHUPz88Rz+rLcfH4v4NM6FsHzAkEcEOvzOy/s5Qv3HedPfrRHCIJYDqtaErz/0v4w/12Iylr4s8AgWELwbYPLrPlcn0xM4/yBBn789AgHxwtUTGHRIyZK8+cboGiKpljPgylPKqKG56H7KsENMY3fvaSfv7njED94aphL/YIzsDDSFZlcxQopLkEzq2q7tCWNcKlMGgpv2dHFdEnYB6WjYsre3xjjPRf0iKFLTPcFzTxyVZv1bQk8fM9A5pfdxpjGDRtbw7xUlsS6Ikvwmk2tTBZNbEfwMWP6fLMNCOHfAXohpguF5OBnwe9t12OyaJ41p33OYmrah+fIkugqBSTDloSOJsuiW5qNhUXAYGMcEB4/cW2+89mdEaoeniESn7ak4SdGotsY98moiiyFcLjgBvK8edw8/sX8xeFp+huiTBRNLurPCnGFul2tZrscm6mITdXzOL83w1TJZKZskqvaNMQ0SjWHoumExLmJosmu4TzpiMb+iSIX9mV5/HQO2xHJmyJHeORkLoTtyZLEeb1pHjwxR0tCJ2morGiKgeeFxw3iutQTlw1dRUIiV6xQKFXoSQUL4MKR6dRskTse2Ifregx0NZGMG+ILRuBjgw6/aVr8xy2PMjaZZ9PqLi4/ZzWOBwfHC8xVbDrTEbozEU7MVBgv1mhJGPRmIxyYKHF0usy61gSqLHFkqsxDJ4TqXV82GhK+Hc8T6jyGyqnZIhXbZWVTjGxU49BkKSwu17bGGc7XGMlVaYhpofP3SxGqLIXEQ/xrNlOxxBTET1xsx/OhQXLovK0o87y/lL9IzFUF/KdquXSkI9iuR3tMx/U7MhFNrjN49paFdhi6yjtfewEXbh3kl48cYPeBISZnCziOS8TQaMomGOxt5bzNA2xf2xUWwxvbkwvytfVtCdZ7iVD+vC2p05I00BSJqCqzvTOFi0hMV7fEmavYxDRhWNwYEyTY4VyV9pTBcE5I2Uc0ma11/Jn6o49pSljIG7rGeZv76e9qpLNlPlmcKpkLRvlNcSFHX6gJl/F81cZyRSFaMkUCfHiyRH9jDMsRnjIRTWbM7y5XLPFMNidEg6MpodPkW0F7nhdOpZYLz//egntSlWUc1wnhUUlDwNpEo8bntr0Mc1FdkbigLxsKS6iyxMb2ZOivofnrydWrmsLNtTmuc/kKoSYVbJAXDzSE5ytLcGFfFsv/93OdtizNY/pt2aVWEZuYDKEHh+IvhmfaSDRF8CajmuJ7h8jEdDWconoeyDEN/O/B9I9twbVQZfqygnTs4YUqYqmIWEd7MwpFUxRiEVXxveEsIqowfU/5vAPbBSOikUoYZOPGAs8cSZIo1ayQmB+cf6Do53niXo9oCh9/+wW89uJVXLKp6znvHbEORcPurUh+JFQZyqaNGnD4PKE6qSsyUVWIYGhKUNTNXxvdn94C2MZLN/lfHGOFGk8N5Zkumzx6KseWDsHvPDRZwvQnaS1Jnbgh1hNdEYIhq1riTBRNHj6ZI6LKnN+XoTWhc2y6LJoIPrQqpivoy1g1tKcNPnj1Cr720Ek+eevBeXGndS2saUvieB7fe2KYZ4fy5KsWmirzhftOENMVrlnfwrXrW2lM6PzB5QN87aFT/Nl/Cd50Q0zjf10xGHKezunPctGKRr78wAnihmhsXbmmmYPjBcGFliVu3NLOSK7KZ+48QlxX6G2Mcc361rOqju0cbOSrv3ceUV+RNQhZknjllnYuWdsi9nr/PpMkifZMlA9ft5Z3XzFIoWKDBFNli5V1fFfb9RjOVelKR/iTG9bx7itXUKraRHWFrC/cAvNF7kVrmtkx2EBUXyjOIEvwjssH8TyIGYo/zXfDaX+A9DlbuJ5QGW1aRinw5RapiMaHr15BazLCsakSw3MVXrOlgw0dqfB71BSZ127tYFtPhiOTpVA5dmVrQnA7DYUPXjW4gC8X1xX+6MpBmn3YiiRJnNOXpScb4+B4gXzFJhFRWdWaCJtGf3TFII0JQa+I+8Iif3DZQOgJdfMFvRiasPN414W9ZH17h7ef30PCEPn0O87vYWt3molCjdZUhHXtSSYKNdrrioLXbu3AcrwlhsrBV3X+YAOrWhPhZKg1ZfCn166iajl0pKMil3Jdn1c/v04Gt5EkEQpozX+28H7rSEfIVS2OTpVZ25rwVUp1GuN6CBEEkecG0MigSHXxfPqMuJ8X512W43J8pkzah4ifmC2jqwlmyyZlS4hKVPzGXNV2yVct2lMRTlUqpKOaz6MWXOzJkknNdn+zYkooNYlkOuaLKuAxL90LCxYBw5dEDSTUg88IkqjwYgKm44WKKbmqhe5XhFXLpSVR9+Atev6CDuKOrjSPnppjomguuRHsAPqE6AIqskR3OkLJdFjrQwWiaYX2pMFgY5TWpMHjp3N0ZyKsa01w58Ep5iqC+L26JU6Pb+KqK0L2POATeP6xVC2X7oyK7Rv9SpKvDCYJc0m1rrW/bV0PzQ0Jjp6e5K++cBu/+4ZL6G7LoqqKL8leYd+xMb7+Xw9x18P7SSejvOlVO4kaIoksV0zGp/NoqkK+VOUnd+/mGz95GENXefdvXUR7c5qy5XB0usz6tiTZmMpsxeLodJltvidMOqLSk41wYsZgbUtCkGUTOo0xnfWtCWRZ4shw3oeNieRuQ1uSbEzDLJjsGytyXm+Gg5Mlzu1Jk45oFGvCn2mgIcqesSINMf15j73/uyPwHIrpCuOFGp7nMVux6MlGMW0PTZ3vPldtl6rf9e5MRyibDq1Jg5mS5RcwhuimRARRPGWoJHSV6bLJRLFGRBWdY10RpFVDk0MYZHNbI2977UW82e/ye57oVluu6Gjbrkc8On/NKqbDk6fmODZVQpEktvdmQtUqCUKFt4rlgCeERPaNCXEJx/V8I2nR+Q6eWVkKOok1PDxmy2IRMR1hAhzVlLBQhMAXxkOPR/j7j73RxzcrPjfEZGiuSlSXyUQ0RvJVOtMRhnNVIqpICFuTBqbtUnTEFDruiwwESXPVdimWRDJ8crbiWzBIxA01TA5OzZSZKpps6kqDDzuVZQnHdcOOlPCZUsKuvuFDwsqW+H1rUsjUq4Ya8npq/oRElsBxBfH45SA3LUkSqrRQFVVifn0NQq/7t6ZILEb1is9YSA5Wns+YcVGoskxjXA9lxk1b3Lu25xGVzzzh0hSZtP89P5eULbCAPxRE0Hmd/1eQBIq9Q5ElsopGKqKFE8aUL0pRT/qWCDZgicoiGxVFEkbo+PmPKNwWimBYjoskSazva2J9X1N4HPWSv8F7w78pSUuI9oG6pOuJLrjnzSNog69b8WGZZ7s2xq+tvfbiR0NU44K+DBAkSmK9bfXXf9F0Uri4P4sE9GYjdGUi6IrE1asaqVhC8COiypzXm6HsQzRBPAM7u9PLqvpJksTmrhR/ddM6Jgu1cNrZlBAQVDy4cm0zV6xtxvLFBjRFxkVwNHJVUUD3NMX4yxvXMlGoUbMddE2hNWkwVqj5XmEO77iwh8lCDdMRNgqpiEq+2sxc1UaWJWqOy3sv6WP3cI6WhEHSl28O5PIBH+ki8gLXFWv/bNXG9KBR0ZguW5RqNq1JQ6yLNVuo0GpyCMkL1q2KI7DYLQmd4aLJcK5GMuLQnjSYKZshSkeSJIqWg6zKqJrCSL5GNiaoFgFs1nRcYrrCUK4a5muaD4ObKZkh8sFQZY5Ol4UNgO/tJkkwUTAxNLHfCclpJTTKDrzcAvj/yyECiHnZcmiM6SQMJfx5b0NMWC2kDNZ3zKv6uZ7HbMkkX7VJRzUGm+MMNsep+kiqfNXm1GyFxrjO2rbkgnVAVWTWtS+cx8mSREcmQkcmguN6An3hEX5eWzpCXFfYO16gMx0hE9UYaI4zUawhSxKrWxM8O1YQQi1NcfI10fAdqFO7i2gKa9uTDPiFtiKLvxmoGUuSRFcmymTJZDQvhMOafEh2YHAOEI+ozFUsYprCruEcTXGdvoYYluMxVqjRENXCa+j5moRF02G6ZJKKaMQ0mVNzVSK+59RM2fSVoefpAKYj0GoTJTFJak3qC2qLcsXk6OlJbGchTDEW0RnsbkZeNDmVJDGYKZtC+bUxpvv2PcFzpdAU1xkv1nzeu0bBF6LI+Yqy3b6MfSqikqvYnC2es5haTm2kajnMVoTgQL5kIvmvy1dtwZmyBRQuMOoS+H0FfDEGz/OnNtJ8nRR0XF1PJICZqMpoXtw0uiIciaOa+CJAwO7y/vi+IyULTLzrITvigTg2XaZmu/RkIkyXTHHz+tODiuXLsy5anGO6Qq5i+510L6x2NXkeXhCQ02TfJEyRBfF6omjy+Kkcr1zTTFQ7+2XdtKqLP3zrFXzmq7/gW7c8ym3376G1MUVEVzEth7lCmanZIlXTpr05zQfefiXXXLQ+PIY9R4Z57198E9NyqFRNpmaLSJLEW284l9++ZluoErO5I8WRqTL5qk1TXCOqyWI6oSm+xK4/0fAnK7oqFuxA2jSQt5QksFyYKpkM56vENAXLx/fFdYWW0OitFspYrmiKLfFmeikj7WPhy6aQcA18maZLlpigRMUEpTMVCd3uZ8qWL/jhMVU0KdZsujNRtDpll1BK1J8WBNC4wNMm5wu2mLaL5U9LNEXcxyXTplRzsG1xz7eqcsiRCRbvn+4e5YdPjbClOy04YI1RVvuQqmCttp15lcaIqpCKqL6Up+DcGIooXGq2S1xXMTTF518oJAzRAABCrlLJh8kF8IWYpvrwKgF5rdouJcslaqihIWNDTMd0XNIRLRR/yEaF9GihahPXVZ9r49GUUChUbUyfhwKiIVPypwv1jZogHj42w/2Hp/nb120IMeoB1yai+vw/W/hJBUlXwhATENWRwg1KliWftC5h2gJ6VrEcbEdIohuq/Jtx2V/E8DyPXKnGgdMznBzLU6paRHSVjsY4/e1p2hsS4l48A8a7UDE5MjTHsbE5CmUTXVVozcbpa0vR1ZzEWIYrJkkSlZrNgVPTHBqapVKzaUpH2dDfRHdLkkCTSlfksNKQEI2jkekie09MMTZTQlNl+tszrOttJBVbviPteR6W7XJoaIZ9J6ep1Gy6mpNsHmzx/87S90zOldl/appkzKC/I4MiyyH/TkIo4O05Pollu2zsbyIVX0hgPNM8LrCAWC4c12PfiakFwhUAXS0p2hrjgmNQh+MP9oxnj00iyxIb+5upmjZ7jk9ybDSH7bh0NCbYONBMSza2bPHueR75Uo19J6c5Ppqjatlk4hGySWPBtVzd3UBbw0uHACibNoWaj+5w3ZBfVjS9sHhVZVGMSBI+5FKlWBO5gkjQxXs9BOzWQ6zX9ee5uIlQH5IkGi/xOt5v8HNZJuRdBJCdYMLpefPTRxBFWzIiklUJwn0gV6wR0xRsPPqb4uSqItEsmjYOHqblUjJlpssmzXGdweY4jXGdU7MVtKi8QJHN8+DZUWFUurYlwcHRAhFV5thMhYHGGMNzVZoTOnvGCmFnP0CT9maj4blNlEyOT5dpiuvM+nQG0+/E64qYyI/kqqxsjAl1YEfYEOSrVtigmquI/y6bDl2ZCDP+dzFdNkNYasm0wjU1EGeI62KP0fx8qlhz0FWJubLl50wwmhe+cXNVOzyel0s4rsevDk/x5OlcKH5w08ZW+hpj3H5gktGceM7zVZvOTITf3tKOoco8eTrHPYenQ6uIV69vZX1bgnsOT3N4shTKaMuSxO+c00VEV5ARxXs9Uqk+ApRTyXQ4MF7E8Qj561FNYbIkhgszZeFN15uNMl4waU2I3C2wtxiaq4bCVFs7U2HhXajZzPpeYsWaI3L2mhDq6c5EQgPyw5MlLMfD0GQfeuf5Ob3FWKFGTzbKyfEKmztS2I4XNlyfHhFm7qdmK5zfl0GV5bDx9OxogY6UEcLkqpbDkckSO7rTPDtaoL8xJigt0nweNen7uUV1UQStbJ4vDI+cnuBNH/4yM7nSgmu4eU033/n0u8imF66Dno9+kCThDxh43XkI2lJCV4j6+WvNdn09ABVZEutZ2KiLaSFq5mzxvDhTnueRKwscZDqmMVYQi4vpuBSq4uByVRtVlojrgrSvKQI6FYyAJR/eIEmERVQ9iSzoUlcsIWaQq9poikSuYoeJU1NcD4spx/XYPVogFVHpSBmcnqswVTIFVjSq0ZWJ8ORQnuPTZXp82dRsVCNpqDw5nGdLR5KErpDxfS0ABhtjPDNSYNdwnlVNcdIRlZaEXucDINGS1ElFFBxXeAk4nsf+8RI122VlczzEsAdkwkDsoj50TeH333wZG1Z08P07nuTZQ8PM5EpYtoumyiRiBuf2DHDOpn6uv2wTm1Z1otVV6LqmEjV0CqU8iiyzeXUXN165hXe+9gKScTGGDBRoMlGVXMViRVOMml3i2dECZcsJ+RJy8DRDSBQ8NFmiryEmFNJkkaR4CN8smBeaCK5JEKmIGpJNDVV+Xp3o/66o2Q6m7SHL8w/qQiENwQER01YFQ5HDDonteuFiFPj9RHwuh+HDUevDclxyFZtUVKVmiQ6frsikIr7vh18kBZLeqiIkuj1t3ngu2LDkOidv03Z55PgMl65q4ncv6Q9xvMH9pCsyK5tFYRUqB0rCi8FyvNBYUfF5CuK85PA7Eh3T+XNJGmoIsVUVaZ6XIQdTMN8IUxJ8JU0WBp0RLYbM/KLoIWAyEmIxCqBbAUE8gCSqskSbL3GsK3IIPwu4kfWXORAqADGByca0sMMbrCUJw19X6hMqxOYfNIWCj3S85RtFL5M6CtfzeGTvCH/97Ud44uA4paoZbsaGptDWEOd3b9jC79+4dQnUzHZc7ntmiM/+8EmeODhGvlwTxaIkoWsybQ1x/uH9V3DNzr4F75MkyJVqfOzL9/HD+w4x54usqIpMX1uKP37DTt54+ZolnIhKzea7d+/n8z95iqMjc+EEIBHVOH99J3/2lvPYtqp1SdGQL5n84w+f5Ot37GFiTkhQR3SV7ataufmVG9FUOfysIB7cO8x7/+5Ozl3bzhc/ci1RQ8NzA5EVj+l8lT/8p18yPlviB5+4kR2r237DbwIs2+FvvvsYdz5xAscXV5KQ+LO3n897rtssrrkbrBNC4r1SMfngv9yN7Xh85ncv419+8hS/3HWKUtUSEwlNYUNfI3/xOxdyxdaeBY09z/PYe2Ka//ONh3jg2aFQHbVmzXdGFVkmHtH4h/dfzmsvWfUbn+OvGwXfC6bs8+d0Ragr2r7fTHvKYGiuioeH6+k+Z1VmrmJh+obSQjmNMKE3HdeHZj733/c8L/QGBDFdnvOluVV5ngAvhji+OI3EguReWfTUpwzRhY/7BUWL7+Vju14oQBHXRf4j/MfEupH1hXZUnxvT6vvk1UeQkFUtl6ShMFEyQ1XGYs0maSj0ZqM8clJMiLoyESr1XjvzJ05TXKcrE2HvWIGIItOTiTKUq1KzXTIJwfsJVkLL8UgaMkljvlEaWGnIklAFFeJMNgld7AOq7IbHpSmigTVdMknoovGoKqIRlTRUKpaAcoLYAxrjOlXLoTWhi0lORH3ZrK2j+SoPHpvlHed20Z6OcP/RGX62d4L3XtDDXFkUyu+5oIeSafP5+09yfLpMezrCLw5McdOmVlY2x3n4+Cy375tgRVOMnC+V/oeX9CFLEp+7/wS7R/IMNAmOsK4If7Vgf4tqClVbNPBiuvBfCjQIPOaVqRvjGqfnBL+vIaYxmq/5VJhAXEoK98WiaaMoAiVTf50VP6cz/HuhYgvEja4oC5pVEU0hrosJWrEmaDDZqBZyqTvTEaZKgm8eNxS/2SGKwExUoyWx8PNsVzSF231LmsNTAu7reJ7vVajQlY6EAiBBNVC1XBKGgGqP5msLvrembJI3vmonw+OzzObLPH1giFOjMxRKC820g5AlieaEkIOv2W6ohN0S9/ny/rOZWCYPqI+YpjDQGDvra+B5FlM1y+Uvf7QX03b51Js2E1Hn5WiDjlzcJ24FEsRxXXTjq5bo/ir+A1zytfpFVS37Xfx508FizQ6T/VxFdMgDjfd6uERDTOOi/iyKJKYNigQ7u1OhGmDJtLmgL0OuYoV+NHjQl41gqGJ0LUs67SkDQ5EZzVdRJInOtE5jPIHhK52t9z1ThGSuRU8mIqr2iIIqgypJDDRGSegKFculYjnhYp73VYzmKkIiPBhZSpJERNd4xYXruPzc1YzNFJkpVCjVbBrjOpqukYxHUFRFTBQcoUQl+RX+yr42vvHpd1OriQK3MR0jk4qFRWGA81cViQZNY2VTHEMVvJh8zaYnGw2N6/oaImEirskS5/VmyFWEg/m6tkRY8VqumAymDFEAGJqYdmzrmu+CRFSZC/oyTBZNDHWpstf/ZNiuR9UWkpiBMIblev5CIhNVZeK+O7ftChERXZGJaCLxLlsOLXGxYAQTyoaYRtVymbOEYEpcF1C3o9Nl9owWuXgg6xckwrjZdoPkX0ZDNAqCRCzvC5ZEJZmKJQQwFEkK/RuG5yqMF2pMFk3a0za7h3IossSK5jhxf+JyYqpMJiYEJPaOFjBtl5UtAnqgqBJVy+XEdJnTs2Usx6MjHWFNWzJM+E7OVIjqCvtH83RnYzTENZ4+naMjE2F1azI0TZ0tW+wbLZCrWHRkxGcYqsxEoUbFcultiGI5HocnimRjOm0pA9OF0zMl+pviRHyxjv2jBUo1m+6GKKtaE0LMRBEJ0Sn/WBRJYs9InpJp09cYY3Vrcsl9JElC3efEdJmYrtCcFJ0lQ5FDo+xc1SId0chVLRqiegjRNR0xqSuZNjFdpWY7oSFsRFWWJD8vVQxPFvjIF+5h38lprtnZzyWbukjGdKZyFXYfneSZY5M0paNLEk7X87jj8eP80efuZny2xLreJi7asIaO5gTFssW+k9NM58r0t6eXNHk84Cu3PUuuWOOGC1awbVUrNcvhjseOc/fTp/iLrz3Iqq4GzlnTFr7Xdly+evuz/J+vP0Q6YfDe6zaztreRUsXiF0+e4FdPnWJkqshX/uRa1vU2Lnjfv93yNP/wgyfIJAx+74YtbOhvYipX4ZaHjvKJrz3ITL5KMrYQJuw6HlXTxvYhIolF8O5isUbNsqn6XNkXGpbjMulzAEumWBNUGd5zwxZee/EqcqUqX/n5szxxaBxVkkhF5tVV3brJx5RpUTMdTozl+MDn76ZUsbj52g2s6WlgtlDlxw8c4YmDY3zs3+/j+x+/gb62dHgMM4UqH/vyfdy7+zS/fdlq3nzlOhIRjScPjfN3//k447Ml3vWqTVx//iAb+pte8Dm+mCGI5iLxCzh2QgBGfM9C0EcJjZOnSqIY1RQZQ1VCzk1gdh6YdJ8pxqcL/Ot/PkipanLzDeeysreZ07MVGmJaKAIlIG42+JweAfV1wj26IabR7kuCe57HI8+c5LYH93PJ9kGu2LkihCSC4L/Yjtg3XM8jbwo5fs0/Vl1xw0530BgLfMXimm+LEk6lhBKy7ifUUyWL7nQExxPeS41xjf0TJQ5MFElHNCG64e9f3jLZ4nCuStV2aYgJlIMsEYoQTJYEkmKqZNKcMOjJRkPuoOm45PycJFCNDLhSLQk99AMFsY/FfBGWoPCK68Lw2/GEL6AQKBAoBMeHt2uyEBNL6Gr4jLxcYjRXI6YrtKcj6IrMquY49x2ZDnPTAR9VY6g6jXGR1OuqHBZhT5zKkatYTJctqpYoclc2x4Xsuz9ZMv39JFhihceljKoIZeua7aIqgg7j+oV+wA8MVuXRfI2utGgwTBbF1DOA340XTZKGEGubKpl0piOM5IW6pOV6OJ4Tfm5LQkyHXJdwItsQE8bnMf8eDYpsRZbIRFWmiqZvth31hxSiUFNkaIjqHJkqs6YlzoqmGDNli7gu1ung2dV99M3ukTztSUNYWDiO3+QQXMgAGj1RFDoGQ3NVujNRjk4JKGX/ogKmvSnF//7dV/kKxi5/+vc/4t++e9+C1wQ83ICfmtAV4gE9Kbi2/gUO/n5gyK7UPau/TjyvYsr1PEbmKtT8ZLDFT140RQpHxvOkXVjRFA87/BXTCTvHjt/xFzfQPExOkSWOjBfZfXKO67d1CDEJWSId0UQl63eeXP9GAehKG9i+kUjBtMNkaLokRtSB+aLreWGRA8KorVnVhXqgJFGznXBiUfbHl7bjEVHnYX0gRqRlUygqzZRNiOnka7boOvifrSsSFdMJ/7btuuSqFmXLWdZXQZIkJFlGjUToScYo+p9XNG00fd4Urea4zBTMBY7wcjRCKh6l5rjIuhjdRn343ayPbU4ZKlFNFlMax5kn4Lsuk8UaEU32O0ZSeDzZqOhIFGo2+YodKsgEXcRMVEjzZnwYRjApDN4f11XiDS+dGV8QMU14nS0Owf+bP1/X83joxByj+RqKLKAXA40x7jwwxVWrmkhHVO49OsPKpjjZqMadh6aI+HDIy1c0UrYET+z0XJWoJrOuNUFvNsrjp+Y4NVfF9Ty6MhFWNce548AUIBa4muNyfm+GprjOnQenMPxJzeUrGrFdlx/sGmYkV2WyUOOp0znGC2IDeO9FfcR9aN6/P3iC9nSE4blqKN28ozfDQFMcSYLHTszyrcdOC+U7CY5NlblyTTPvurCXUs3hn391lExUY7pkUqjarGpNMFGoMVuy+Msb1tLTEOXkTIV/uvsoNdslHVUZnquyvSfDuy/q46nTOe4/PM3HX72a0XyNT9xygPMGGvjAFYMcGi/w1YdO8X+uX8tIrsLnfnVMwP8iKqO5KhcMNvD283oEURX4/pPDeJ5QU8xVhCrhiuY4K1sSSzrHluNy+95xfr5nnDfs7EJTRXEoGSqjeSG7XbVdUobodOVlm/FCNYQgRhI6Rd//qlgTGP+SadOVjr5siqm9J6bZd3KaHavb+Jc/uopscp74ajsuk7kK6bixZPEfnS7y/779KGMzJd5y1Tr+/G3n0944Dws1LYdcqUZDMrrAdBEEVG90usjfv/8KfvvSVSFP6XWXrOLmv7mNu586xc8fPcY5a8S0x/M89p2c5h9/+CTxqMa/fuBqLtvcHU5Z3njFGj74+V/xg/sO8oVbdvOZ37ssVAQ7PDzLV2/fg6rIfPKdF/GmK9aGe8jrLlnFO//2dk6O55cUU//dUbWESp/iJ52BnH9Pe4bz1rSjSHD/M8M8cWh8wfuCzXhxFCpCgv1Lf3wNF23sDPeTV547wBs/eQv7T87w4J5helvnfed2HR7nwb0jrOtr4pM3X0Rbg+D4bl/dSrFi8olvPESpanHB+o7QZ/GligDOG6w/haonDDz9QiCuC/J20RQQ34aY7vMlBYRY90U2mv3vOdh/zhSz+TJfv+VxZvJlrjxnFav7WtD8wtf1BIw34fvJCYiyEprUu36RUM89q5o2n/mPX/HzB/bzwNPH2bGum2Q8ElouuB6hYm7Q0K2fgkWj80gF07JRFbEHC4NXMW2o5zXGdYVNvoqe7Qpu+GzF8pNYjc3tSdFM9iHSmiKR9lSKNYfjM/MGwoWaTXNCpycjTJ6rtiD992VjyLIwEd5aJ5qQMlSf7y7u7cCgOM78tahPOIPGgOfViYD5pxEgTzxPTG0D0/SIj2bQFPklvy/PFiHkzj/hxZnZgmK+7ryjmsL69nmDbEOVifmTxsUS8zFdoJqAUNwABNQ0V7V9VU8xUSqatk9nmVejk4BEWjT+HV99znJETr2mJY7jiuNa0RTH8cTQoicjYKCWbzkRoHACGL84LpEXBZOjqI+0WdkUny8ygM5UBMv1yFct2pIGVduhKyM8DFuTgmNmOqIx0RjTiBsqx6bLIU8vE9GEh2QdesTxoiLPNh26M5GQNiBJsKo57h+XaM5KiKJuMf8UhEiYLEuoy3hAzVUsijWHnmw0fP3Z6iPh31imNxtZkMv+OvFrZb2yVLcgLZN7BERoz/PCEVr9DRucWz3B9+694zx0aIpXb+3A8G8qDw/T7wqFUDNbdF+6M0JMwlAFlCmuqUQ0AS0MFsxgomD45HtNkUJfmZrvdJ2KaERUOYQiBcXK4miIaT65fZ5QHJD6I5rosgUFZqfPyRE+TzIpwwvPaXEosthwFFkscLYPA1NlGTyfMCtLNCd0VF/ysuwLDiQNjaQkcLPBFCSAMqiyRMl18RCYbc8TcvQBn83xF73gvxcnrEDIYZMI5CPFZ9gvoX/UCw2PeXlLCMw+3dCc1vNgolijI2WwoT1B0hCwtkxM4/BUiZVNcSaLJhf3NzDtkybP78v4CmVyKFOtKzKvXCO8amYrNruG85zXm8FxPR45NSdkQSXY1plmz1iBjS1JxgomUZ+/dm5vhtak7j9XCr9/2QBl0+GjP97LhYONvH57J0gsuI+qtsvDx2b58NUrWNeeDE0kg8VjW48Qq8j6i8RPdo/wX0+P8hofA56v2JzX38DFKxv54x/soSVp8J6L+vizn+zj5EyZjkyE7z4+RNxQ+N+vWk0yovLMUI5P3XGY7T0ZOtKCj1isOZyaKZPyC6WK5XBqRijiSBJ845HTdGai/MHlA8R0hWeH83zmF4dZ257kosFGQCz8T56c4wNXDrK9Nwvgi0vUL6biZ788MMVPd4/ytvN6GGiOi4aG64TGfwHnT5ZEUR3IcQey14T3hGgelEyhpra4uHgpQ/F5msWKRa5UI5ucN0jUVIWOxqVS5J7n8cCzwzx7fIoVnVn+5I3n0NmUIO+Tah1X3O+qrlGxnVBSXq+7xuev7+SGCwYXJEPN6Siv2NHH3U+d4vDQrJjuqqII/vkjxxiaLPCOazZwyaYulLr7syEZ4Y2Xr+FnDx/l3t2nGZ8t092cxPM8Ht47wtBkgXPWtPPq8wbrBCagtzXFG69Yw2MHRs96jSqWgytZYrOWYDmO1QuNqC4gOJYvfd6SMMS184KG3gu/R264cAUXbugMDSIBVnRmOHdtOwdOzXBoaDb8ued5nBjLU6larOrK0pSZ5wwossyWFS0YmsLhoVmqpvOSJ61xXQ27u6FUs9+kCtYhCdGBD3gJZdMJzbwTumhKBhP7OtT5vJ+Mnygs9+1KEjTF9NCmw/U8Wn0J5saYjuUEPjeB75ooUAJeqixJZJMxdE2hKRP3JaaF995i/tWZfGhc1+NHdz3FD+54kqvOX8vv3Hh+yNGtf6kkSQt4xLqfDKYjWtjs1RU5nORF1MCQWSLvCZRL1H/uFEkgTwKBgEQg1uHnWwFcW6AbaiiyxGzZCid4DTGdnG8TEogJCV6V+JuBONh0af497amIsArwz+nU6DR//k8/ZTY/X+QB9Hc28pd/eAOZ1HNDo16K6ExHfDPpCl2ZCPvGCrQkjRC+fGiiRKFm+x55Qg67Ka6TiaookphCBR6F2jK5YhDBfWKoMg2LmkIB1FKTXT/f8/el4AV+kSFLUtgM9WvWEOU1b9ET5J5yyKGqj6BgCX6zWH1RkpYq2koSKHghNzbYTwV3Tgg1wTxFR5MlBhpjC54RiYVwWlUCzxMwf12VhYel54VCURLzdCA1eJ5dN6wTJGmhKnZ9OJ7HkamS4If5xX6A/pElmCyaJAyV5oQewo47UhEOT5Yp1Gw0RWaiaDJZMmlPGmGz4YXECy6mPM9jqlBjplhDkWVaUgaJRWTR4HVl02EiV8W0XTJxncakvpCI6N8QcyWTRw5PU7Ucpos1DH8hiGgyiYgayiOCuNlyZYtxv+vflDSI6QrJSGASF0h+CiW0lG9mOVu1KVQsorqCnoqEXCZDFeNtRZKYLNTIVyyhbOd3BcIExifx159XzXZJRlR0VaFmuigyxHU9LDQjquCB5EomwzM2cUOlJWWEruXg3+Ceh+SJAnCmZC68tsbSa2soMrgwUzCxnflrK/lPXFtKbCYRX44yV7aYLtbwPGhOGTQnROdPFEvCnHa6UCNqKMT8QjEYj+YrwjSxIWGEDwiSr4ZTrDFXNpGQSEZVGnzJ1ZeD/GnNFlNBTZHFyN2fUtZsl6otlPgMVcjzXrmykV1DeX62b5JtnSnWtyVY15rgvmMzuJ5QgUsYClE9yrk9GZ44nUORJF6xukl8P/7fDCAdVcuh4pNGFVlia0cqhIUE8EBdkXE9m450hPP7suwayiH5n5k01PB4ZcnnGJ0B17uuI8mmrvSyi0zCEI2FubJJxXKJ+f5ZNdsNfd26slHSEY1MTKOvMUbCEF4MFdNhpmTy7HCOq9e2MF0ymS6ZKLI4h72jeW7c3A4I+4TD40W29WQ4PFlkqmhyfKpMf1OMmZLJ0YkiH7xqhZCyliQ2dKToaYjx6LFZLhxoDFf5/qYYO/uydUbTC89ZlWXuOjDJrc+M8d6L+9jRl12wQXjMC40kDIHnDvw72lORBclYvWx+RFOIaPKySnIvVWzob2LzYDOPHxjjHX9zO297xTqu3NpLV3PyjN5CngdPHBzDtBzOW9dOT6tQjwpUWIPccEEzS2IBhGjn6jbiy8ByGlNCAapSs8PX10yHxw6KgqclG2P/qZkl7yvXLHRNYTJXYWK2RHdzEteDZ49N4rgeGweaSC/jbbOhv2nZ46gPx8X3N5lv9tRH0J0NP5f5pNhyvPB6eAiTVg9CgRjP55Q4PidGQWK6bBJ7gcWLqsict7Z9SYNOliQafUuMctVa9B6R+Vi2K6513Z80bUfsV/LLR9I/QCS4/t4YXPOq44VS86LJKYdd80DFKxBLKtacECoZwNR1RXTlLcfF8RPCxQiPevn+5SJ4pC3HDf1zaraH7U+rZEniw++4kldcuJbtazoXKKkC4eRanKe4h4RB+PwzWK7W+NJ/3s99TxzmyKkJrr98E62NyzspWa7H0FwFSRKFkeEXJ2Kvkjg5W6GvIcZ0ySQTFYp7Af84aQj4YKFm05mOLps4e4uuj+0Kg/Npfy9SZZGkBvYf4vuaT8xThspUSfgnCm+4eS511XIWrJG27TIyMcfpsVkqNZNCsUrVtNmwsgPTOrvy2UsZrUmDK1c18V/PjPnwO4mbNrWK6ZIkxDq+/tgQxZrD2rYk/Q0xNEXiho1t3LZvgnuOTCNJEps7Uly9polMVEUL8lpJqOEFUM+gIJIVIeAxmy9xfGiaqdkCSBKtjSn6uxqJJKJnWNM98uUqtu2QTkbRFIVSxeToqQlGp/LIkkRXW5b+rqZQdXBx1N8mrusyOVPk+PAUM7kyqiLT3pymr7ORRGwh0kHA8WQsW4iiKbJMJhkDGUpzZY6dnmI6V0RVFNqb0/R3NRGPnl3+PrAkKVdMRsZnGZ3MUaqYKIpMNhWjvTlNS0MSQ1WYrVjMli0hDOU3GdJnmFrnKhYlhBDWZLHGqdkKFdslp1m0pQSU9th0mYSuMFO22NQuqArC0khQk8YLpdAv69eJF1RMeR788LEhfvzEEJN5IS+9qj3JH127mu392fAiuq7HY0en+cLdRzk0WsB2XFJRjVdt6eAdl/aTiQmJ72MTJT7/i8McHitwaKSAJMPv/OsjIRTiFZva+PCr1oSwkZrl8LOnRvjWAycZnRNO423pCG+5qJcbtnVi1D3o9+6b4JsPnuDPblrPrU+NcOtTI+QrFoam8K7LBrj50n7/nDyGZip86e6j3H9wknJNjGC39Tfwu1euYE3HvMSl53k8fXKOz915mBOTRXGu/gOjycIM9f++fiNtmSie53F8ssQXfnmER45MUzUdDE3h3MFGfu/qFfQ3C+hGzXL55I/20pQy6GuK862HTj7ntX3i2MxZr21w/SzL4cePD/G9R04x4SvUdDZEedtFfbxyS0eovLNvNM//991neNMFvbzx/B6AUETjM7ceYCJf49Nv3kw6pvvFtMmX7j7K3fvGKVZtPM8jZqhs6c3wp9evpS0zrzr0UoUk4RPCRXJUtRwBifQnlbmqTWvCwPXAtD22dqaI6SUOTJRY15agNaGjKzJPnM7x6nXNSJJExTe5vbi/gVv3TzBTtnxIiYCZCOywUDoSRtCioxUYgC4XVZ8fePFAA7funwxhqs83slFtWXiR63k8dTrHj3aNUDZtIppQ0LMdd4EMc7CBhG7n0vy0uGw6FKo2d+yb4KFj84my54GhKqQiGqmIyumZMidnyrxiXSuj+SrHp0qM5qps7WmlZDo4Hv6UShyo6gtITJfMBbDLlG+ufaY4MV3mO48NkY1p9DTGfOiA4CFIkjDnbPKLp4Shkq9aGIpMvmqhSDBbEXyFQNWwZNoYPn5dKIuZIQzppY62hjifft9l/PW3HuG+Z4b40L/8it6WFJdv7eH1l61mx+q2JWp8jusyMi3Wpf62dJjwLYagLI6aG0goQ2t2qTKc6FyKG8OrK1kqps3kXBnPg8/9+Cm+9LNnlrzXcT3y5RqJiE7VDAzVBUwRxN9bTs0uHTeIPsdzkDAUEtF5/zGAUnGetFzz+aueR2iWG0yWyuZ8sucxL3iUMjTyVdPn7hAiATQ/oXyh7UddlWlML58o1Re14c8kIb3emIry9NEJ9p6cYvNAC5IExYrF7Y8dx7Rctq9qJaq/9HDq+pAgVOMM6nMxqSI8yaDZ4XqEyZ/neVQlvwCz3JBPrcgCAhjR5FA+furXrCBNx6VquWFhEBR1sgQtTSmubk6RXKYp7HgeNcsJxXQAn0dXl3QqCm1NKTExbskQ0c/cBHD9iYbnQc22MGwhthGgSYJJuusJ9TPb8XBcB8XwrS5MG0USkzZJEutUuWrywzt30d6c5srz1ghagRtw+KQ6CWrR4I1qDqmIRr5qkU4YFGt2qP46U7ZoTuhULTf8/4gq0yAJv50gPM+jt6OBb3/m3ZQqNcoVk8/+xy/5j58++mt9P/+TIcsS5/dnWdcmIJXpiBo24/CEGt45vVkhlqIICLimyPQ2RHnT9g4hEa6rJA0h2LGlMwWSgJgBXLaqwbdZ8cW7PI9Cqcr3b3+S//jpIxw+OUG5KhSmEzGDDSs7ed/rL+aVF28gYiy8d6o1i4/+/Y94ev9pPvWh15JKRPjbf7+Th58+Sr5UFdSMVIwrz1vDh2++mtV9rWcsymZyZf7jp4/w3Z8/zonhaSo1Uaik4hG2revh9998GZfuXLVk2n345ATv/8tv05RJ8I8fez33PXGYf/3uvRw+OUGlaiFLkEpEOWdTHx955yvYsb5viVJ2cAzVmsUdD+7jGz95mN0Hh5grVLBth0BHoDEb58KtK/i/f3Qj0XhUeGdJ8+JWwfq9+NMVWcK2PGq2KPhnKxYNUY2C6TDh2xuIhptovEY10fRXFQnVFb9rTugM5aoM+f6bL3SpeUGr8ZHxAt9/5BSv2dnFitYEh0YL/Ps9x/jUT/fxhXftpNH3cXn65Cwf/e5uuhpifOhVq0lGNR49PMXX7jtOqWbzkevWYGgKyajKZWtb2N6f5V/vOkJMV3nXZQOhUENPU6wOp+vxkyeH+dtb9nPZulbec8UAjge3PjXCX/3XPhRZ4qYdXeHGnK9YPHMqx2dvP0TNcrj50n4SEY2jE0VWtSfDc5opmXzih3vYN5TjLRf2srYzzchsmW8+eJI//c7TfPbt2+jzC5/JQo1P/ngvtuPy8dduoCVlcN+BSf7p9kNcuaGV91w+SINvyjaeq/Ln33+WiXyVmy/pp7sxxpHxIt+4/wRjuQp//9ZtNKcMXM9jaLbCXXvHac9EuWlH54tybR3X47sPn+Sztx3isnUtvO9KYbz386dH+Msf7cVxPW7aKa5X1XI5Nl5kzpeQD8LDY2S2wuhcJYRAuR584/7jfP/RU7ztoj4292awbJeDowWmi+aCgvalDE2RaUkYqIoUHnuQtLiuR9F0iGgyrutxeKrEeMFEUyTO7U2H3cf+hqgQgPAV54o1m0dO5nA9j1XNcVp9U76OlEFb0uCeozNs60rRl41yxcpGdg3n2TNWoC8bZUVTnI6U8LlqSRrC0wYhv/roqTlcT6hJBup2zzeCadjimCmZ/Ms9x9jYmeINOwZIRVR2D+X4h18efd6frasyUV3hjTu7uHCwYcHvopqCocl0ZaPsGytQqjn0NcboaYjxzHCesmXT6TcVZImQVxhcf+E3pSxIpCXOrqYX1WT+4PJBfvjUCF958CT/6/JBZFlwD6KaMDWcq86Tgl1PJEOuJ6ZU+apNTFdQZZlCzaJsOkiSkGw3VFFwm/7U7qUOSZLYvqqVr/7pK7nvmSF+cO9BHnh2mH+/7Vl+eP8h3nDZGv70TefQUgcD8zxCCG6wIQZQKQnCBDeYLi8uYgJ4xfOdLLuuF6oEbl/VSk/L8t14gIiu0Bw0WTzxXggg1Uv/nux3jJ9vhNeA+YlTYAAZJM0wzwVxLHvBZpn0vc9iuoKh+QbzHqG1R0ixeIEwv0Be94XExv5m3nzlWr74s928+9N38IodfSRjOk8dmeBXT51i26pWfueaDcsmLC9lCOSCqHp0RfLVXxfKYnueJ+5Rz8PzFED8e3auyFyhiqbKtDQkMAwBa11clix+Mj3Po1y1mJwtUqqYGLpKUyZOKh5ZcH3qObQeYNvOkq/Scz08yVtw/wfF35nCclwsJD7y3ldx3eWb2bqmi1Rifurt+rxMzxOel647b0TqeeI+11WZuC4KuXRUEypvvjCAhzDj9jxwZI+OSATTducnIcDJkWk+8fmf8epLNnDleWuEcJAsngVFEp8v/OUkf1obTKLEpLBYs32LCfF9WI4KkhAekyUhMCIh+CW6LSwLgglhczZBS4OA7rY1pc96rV4uUajaQrJfkUjJaiiMFkw4hRqh4OsXajb5mlCqDgr6lqSB5+8pjmuH62tZcsImQP0zny9W+cTnb+Fr//UwjuPS19lIT3sDrutxYniKB548wtMHTvORd76C33/TZQsKKtf1OD06y7OHh/n2rY/xzMEhhifmWNnbQioeYWKmwMHj43zrZ49y9PQkX/w/b2Wwu3nBPex5HlOzRf7073/ED+/chaoorOhtprUxRbVmc/T0BHc8uI+n9p/mUx96Db99zfYFcO1qzeLQyXGOnJrgH7/+S75962Ooqsz6wXbiMYPx6QKHTozzs3ue5eTIDN/4fzezZmCpimqpYvLpr9zJv373XgqlKvGoTmdLhnQiimk7TM4UGBqbZXKmQNTQFjSVq5aD6QixDU2WlkyoUoZKLK5h+Uqg7UlhFF9zXDRZIlcTjdakoaDUoVIyEY2k4eeHnvicXwfiBy+wmDJtl/dduYIbt3ciyxKXrmthtmTx7YdOcHyyRKNvzvmN+0+gyjKffP1G+prigMTFq5uZKZn85MlhXntOF+s607SkItywvZNc2eS7D58iE9O4YXvnspCmyXyNr957nO39DfzFa9eT8Be57f1Z3vWFx/j2gye5Yl0rmboLka8IA7xPv3kLLSkjxHLDPNzj7j3jPHx4io/duI43XdAbbp4DLQn+8OtP8r1HTvGR69aiSHBkrMih0Tx/cv1aLlkjbtjOhhh3PjvGTNFksC0REgt//vQoe4dz/P1bt3L5uhYkSeKydR6GpvCpn+zjgYOT3LSjMzzWcs3mvVcMvmjXdnimzDfuP8G2/iyfeN0G0r4U+nkrGvmjb+ziy/cc48LVzbSexdF5ubAdl71DObobYtx8aT9Z39X82s1eiEd/qaPmdzrmvUXm5bMBJJlQeUeSJM7vy4hjl+eNMk3HY6pksakjGfKU2pIGN6xvAeZVu0DAxK5a1Rhys4TZmzClrFiCH6CrEuva4ngeDDZGUWSJpoSG5Xhcs7oZ0xEy+mebzLyQKFRt5soWO3qztKUMHM/j6GRpidT02aIhptPXGGPfaIGr1zaHEI+a7YbwiMHmOLc8M0ZjXKchrrOyOc53Hh8ipotEVpahPR3hyVO5EI44mq9xYqrMa7d1hN2i53U8cZ1tPWlakwZ/c8ch/nPXMG/e2eXz3AJ1RULsf9UXzAkS5QBiIEtC5atqiaSkMx1Br+M/vlxCkiTScYPrzhvg6u29HBme5Uf3H+brd+zlS7fuJmqo/J93XBj6I8myeD0QToyQYKZsCvJ9CFcS09nIbwjJFQ0xYY765ivX8par1p319aFIkSyFwhK5ksk8e3Y+aqZf2L7A5kzNcsIJWD3WP4jgv+tPW0ZwYm2fVxb8yvE8cOdf63kLrSD+uyKiK3zot3dwcjzPHY8f58cPHPa5PRHe+cqNvPOVG1nVlf2NvrsXO6qWw1zVQpEEJzUb1UJvt/rkxHE9Pvvt+3h0z0n++G2X05iJ8/nvPcCvnjjCbL6MpioMdDXy9lfv4LVXbgqN6hdHYHp7+0MH+PKPHmHvsTHKVRNdU+ltz/L6V2zhTdduI+lDl+o/Y2Qix8f/5TamF3F9ztvYyx+/7TJUH/p/tqhvYHieR097A73tjaH9w8LwRbT8JDsd0URB5wiD4UABGUCPivUn4jdEE3V2FUHU53qe57Hn0AiTM4XwZ/V7yOLhroQXKvm6Pm9MGEj73Glpngsj+/unuN4C7qf419J1PdSz3H+OJ+6JYA8OEQ91vJ+XSu03oKMH33GgmCgBO3szIaeoIaYJ1TmkBc0YDw8ZIb4mVCoVP7+YF1vwNSNwHJdv/PQRvvbjh1BVhQ+94yrefsN5NGeTeHiMTub4wvfv58v/eT+f+cqd9Hc28ZqrtixDm4Hv3fYEm1d38a2/fRdb1nRj6Cr5UpUf3rmLT/7rrTy6+zif//Y9/M2HX4te53Vq2y7/8p17+cEdu2htTPGJ37+Oqy9cRzIewXEcjp6a4pP/dis/v28Pn/y3W1m/soONKztZHDO5El/+wQNcsG2Qj//eq1k32I6uqeSKFb79s8f46y/ext7DI3z3tsf5+O+9Grmu4Hdcl2/f+hif+9avqJoWl52zij98y+VsWt1FImpguy5Ts0WeOTBEa1OKRGxhU1n39++IKuxuFt85kiTRllzaiE54wtInK2tEVVn4xyrinjQdl4jmc7cQ69SvW0jBCyymOrJRzl3RGCaciiSxsi2B5Xjk/RHnZKHGruOzDLYmKNccDo7OP+Rt6QizJZNj40XWdb6wLsah0QInJ0tcsb6F4dlK+HPH9WhOGewdyjGRry0opmQJXrm5PSykxM+kBe998NAUmZjGRaub67DREpt6MqxsS/LQoSkKFYtMXMe0HVwX4nUrlCBwCon3UH3Pdnng4CSZmEZMVxZcg5Svz//MqTlurCumXuxru38kz8hshXdfPkA6Nr8hNSR0rljfymd+doCDo/kXXEypisy6zjRfO3qMf73rCK/d2cVAiygi9ZdBRx8E6TYgHgdSrUBIVNeU+U0iMIAN7otAnveeozOYtssFfZl5fpskISPUIV3PC4UOgs/G7+I5vgy3LAkp7pmyJXy/LCENqskSJd+Vu1AT3mhTpRoRLbqkE/vrRmNcp7shyo+eGmGiUGM0V+XweJHIc3gq1EdEk3nTzi4+e/dRPnnrQVY0xwVfsFDj5gt6GWiO09MQZWi2woaOFBFNprshxmShxqauNAlDCKu8cUcXX3rgBMWaRUvS4IkTc3RmI1y8onEBsfv5hcSKljjvvbiff/7VUVqTBtesb12wMcd8kokqS0yVTGK+hL2wcRDwVdNxifpiNbbrYdWcsOB6uYWAQKis72tiTU8jK7uy/P5n7+IXT57kA6/bTnNGEL0VWWJdbyOyBE8dGSdfrpGOG6QMLYSayuG9/JsfV9RQWdvbwP3PDrH76CRvuYoFQhJnCkWWWNGRQQIOD81QNZ0FkD7P8xiaLFCqmhjaQsiw4ltW1OrW2/oYmSoyV6q+YDEK2/WY8ifzAfQT8LmN80pwqRcAwf1N4ldPneLR/aP8r9du5+ZrN6AqMrGIRirwjXsZFVIgoJBTJRPFb1RE/GcpUA2rh8rvPjTCrffvo7M5zZ6jY+w5MkpnS5qulgzj0wUefPo4u/YPMTSR44NvuRRjGTijLEvc9uB+fnrPHizbobM1TUM6xuhknoefOcmu/UOMTxf46M1XLkgsQSR2E7NFTo7OUK5aTM+VqJo2hs9TFccJ48Uamm/fIiDRcrg/BI0lIbYlPn+5VSwwMIelCAIv/Fui2CpXapiWEBWJRXVfRvvs67Xrejz41FEs2znr64KQIFSZqw/bcSlXTCzbxrE84hE9fNaWj7MfV8m00fyJl+yv8UEbT0Jcy8xZVBv/OyN+FnjshvYkNdtlKFelJWEQUefvieA88jUhKR7V5BAudqYYGp/hqz96kJpp84ZX7eTm119KLKJjIRHRVAa7m/nf73sVp0dn+Mndu/nX797LpTtX0ZhZCrc2dJWPvudaLtmxcr6Ra2i887UXcOjEOF/43n3ceu+zvO/1lyyYDB08Mc43f/YokgQfesdVvPFVO+smTxqbVnfy8fe/mt0Hhzg+NMUP7niS9YMdSybfngftzWn+3wdfw6ZVnQuO4V2/dRH3PHaIOx/ax8NPH6NUMUPPUxANjC/95/2UqyYXbh3kXz/+Fno7GhZcu8Z0nNV9rcDCZ6Ve7jzY559vzlA0HQ5OFElFNLJRlUOTJeK6KvxXqzarmuMcniyxvi25LF3ihcQL2hnSUW1BIVEPYQjOba5kkqtYPHJkind+YSF+tmYJMmrFOvODbzkusj0PSfE8kdSNzVWoWA7/cf8JfvDo6QXvKdVsor6v1YKTU2Ra05Ez3uym7TKeq5KO6aQWPdhRXaE5FeHpE7MUqzaZuE5fc4LWdIQ7nx1jx0AD6ajGk8dnOTJe5PqtHaF4Q8V0mMjXOD1d4X99fdeCxCXoftashTCDF/vajueE50B7ZiFeX5IkOrJRbNdlfK667HU5W8iSxNsu7iNXsfjx40P89Mlhdg42ctOOTi5Y2UR0GZPi/+kQXQxCsm0Adwgk3jVFDjH7ougShaDjuug+1OeKFY1oylL1GMf1eHa0wP6JEjeubwnNj4M4PVfl9GyFiweygBDy0P2xcsoVXUbH84j63ipxTUFVZDpS0SWdPlmSeOWGVla1LFVuU2SJ6ze2kYktvyElIyofuHKQX+yb5PB4kd7GGNddtYLDE8VQy6KsWwAAhutJREFU1ORVG9to8CEkr9rYSmcmguN6vGJdK72NMcqWw8qWBB95xSruPzLFSK6Krsp0NEQp+gaOniTx6k1tDDTHOTZdRlclrljXwqqWBNN+EbmyNcH7Lunn/iPTDM1WuXhlI5euagqvnQRcsbp5gRLh4tjSnaYpIVS7JElie2+GP7h8gFzFxnJcPCTuPzLD2rYEbak6GXFXmILKUlBMS6GiZSBRjycgLM2/oTTqixWez9MIlMXqi3lFhp6WFLqqCKWjujVEkiQu2dxNSzbOk4fG+cmDR3jzlWtFEijJ4Wd7AZ7/N3xOFVniVecO8N27D/DzR4/xhstXs3NN+4KGVZAo2o5LRJ9PKs9d1046bvDkoXGePT7JztVt8/wZy+H2x47PT5jqojkTJaqrnJ7Ic3oiT6qvKXyfaTnc8vBRCmWTVOyFwWUDPxYg5NQEnfj6bfuFFf6/XtQshx/df5hKzeayLd10NSeXQB7rC5SXQwSquiDMayVJNBUd18VDW1Laeh5842dPsLqvha/+nzexbU0XuqYwMpnns9+5j+/ctovPffd+zlnfw+U7Vyw510rN5ls/f5LzNvXy0XdcydqBVhRZ5vT4LH/973dxy317+fotj3PT5RvZtLJjwXs7W9J845NvplKzKFZM/uJfbuO/7tmz4DW2J5RrUxGV2YqJKkmUTSc0PR8eneYbP3lkSRGzsqeFt9143gLeyeJjf2T3MX76q2fYsb6X6y7byK59p/juz5/gmYNDFMtVohGdNf1t/NY127hkx6olxWShVOXwyQmOD02x58gIP7//WQAefeY4H/vH/1rwWgm44YrNnLd5YMmxCIikyX2PH+Ynd+/mwPExyhWTeExn3WA7N125lYu2ryCiL+WSPVckdJXsGWwN6qG4L0V4nlCJDpoxgRKk5ucDsgQjuRoRVaExJoxzkaDdV+SdKVnoqefXeHtiz0mOnZ4iEY/w+mt30JSMhjx7RRbfRyoR4Q2v3MHtD+xl98Eh9hwe5tKdS424B7qa2LGhd8l3oWsqN1y+mW/e8ihjUzl2HzzN6v7WcF2874lDjEzM0dfRyDUXrV8A4QNxDCt7Wlg/2M7Q2KxfDNUWFENBXHbOKtYNti85hkTMYPOaLu58aB9Ts0XK1YXF1K59pzh8cgJDV3nPb18cFlKBKJgii+fLdj3SEXWBcups2cLxhLJqIE7zfO/GfNUmFdFY6ZsrR3WFzkyE4VxVCNu44jl/MeIFFVPy81AQEthyj4tXN/OmC3uX/F5CYnUdZ2nJ+z1C2cm6vyzkQGWJt17Ux85F/A0QnY7epoVSnKITe/bjPdt5LI7uxhh/eM1K/von+3jHvz1KOqaRK1ucO9jIzZcOLPhbAioY50OvWkNEX/rQtWeiC+EnL/K1fT6n/ZzrmbdUCliSoCVl8L9vWsdvndPF7c+McdezY3zoPya4aUcXH7luDcmXqOMURGvizImU5YqHN6bJFGqO7+QdGDo6lEwHVRYStkL1yEGShBhDNqqhKRJbO1McnS6H92ggO1/wndADpSQglOM1VJmoIVSrZMnveLsC9um6HrbnUbY8ErJI9oMHfKAlTkc2EkrXWo7wU/OArb0Z4roaKmgFmO+yj/9uS0V454W91GwxKSuaDhcMNoafc8FgQ/i5l65swnREkbGtNyOk9U1hJNyWNrhuUxuZqIBCnZwRalTHZspIwPmDDch+spF3XV63tYNcxWK2YtKWFKbQmbjGa7d10N8QWwCRBPHf5w00LOjU1ockSaxtS7K2bX7dUGSJc/vn14Ga7fLYyTmaE3pYTKmyRGtCbIAB3l2SfGnYEPMpnhVVeXlNpb579wGeOjLOpZu7GezIkIjqOI7LibE8//KTpyhUTM5Z005m0b2+oa+J33nFev7hB0/w5195gIOnZ7lqey8NyQhV02ZoqsCuQ+PceOFKzl3b/hsdoyRJXLSxizdesYav3raH3/vHu3j3qzaybWUrEV2lVLU4MZbjob0j7Fjdys3Xbgzfu3VlK1du7+XH9x/iY1++n4+8YSeDHRmKFYtbHjrCzx87tizEb2VnlrU9DTx2YIy//MbD/NHrttOWjZErmdzy8FH+896DYdFWH67nkS+ZlGsWNcthfKZExbRxXY9TE3mOjeYwNKGulo4b4eQh4OQUK+J95aqQqgcYny1zeGgWQxfvS8Z0or9G4rk4VEWmvz3N7Y8d58P/eg8b+prQfSiRpsr0taW5fEs3W1a0vOTS6MHaEvU5ScFjlasKMR5DrSviF71XUWQ+9s6ruPaCNeE1yySjfOJ913Dg+DiP7z3Nt2/fxUVb+5dMlzzPo7Mlzac/cAPrBuZJ99lUlI/efCWP7TnF+HSRXfuH2LhiYfKnyEI5LItQN8sklwomabLkez2JZks6poVCRhFNYXQyxzdveZRcoYJlO9iOaI5eed4a3vTqnWf9Xp45NMxnv/FLrjhvNblihb/6t58zPp0n5iuhlSo1Hnv2BD+79xk+9t5X8t7XX7Lg8+56eD8f+NT3yRcqWH7BCvDs4WH2HBlZsPdLkkR/V1NYTNVfv6m5In/1hdv49s8eo1SuEY3o6JpC1bR49Jnj/OgXT/Hu37qIP37nK0gnXpioVNBEAcKpuPgKhJWL9BLz/faNFZirCn+nprhQ7VzRFOfgZInNHUmimoyHyENPz1WEqW5E+JcN56s0xnWeK83xPI9nDg1Ts2y627Os6GmuU6qdD0mSWDPQRjYVY3y6wLOHhxdMn4LoasuSjEdC/rHsN3pkCXo7G2nMxDk5MsOhExPhexzX46n9p3FdD11XeWrfKQ4eH1tyDK4rzNBBGGMXy0uLKVmS2LK2e1n0gQQhNM9xXJw6FVXP83jm4BA106a7Lcv29T3huZVMhxMzZTrTEdEYdV1s10WRpNDSI7BGEv8tfDvPJJG+OHfIRFVGCzUOTJTIRjVmy0I6vTVpMFO2ODJVDvPuAL0SCF0EDaznC0d90TELGX/Ko8gSF65qft7Qr+Bw9WV4C5Ik0ZqOoCnC/+eytS0vaMMKEsZA5tbzhHmZrsp0ZKOcnCqRr5g01I2/q778eUNCD/lZsgQxQ6UpafC2i/voyERpTBoMtiaI1U1kIpqYap2aKrGlN0N79sVRt3sh1zYo1kZmK0tgFsMzFRRZDiF+MoQQtfrX1iyXubK15LMlScLQFDb3ZtnQneGtF/byuTsP88PHTnPF+lYuW9fyopzvrxtnuzfyVYtdQ3lWNce569A0161v5qmhPOvbEjx6MkdMF54NV6xsQJUlfrp3gmxUGB7u6EoL2Xlp4QNbtlxuPzCJochMl60F06qa7TKar1E0bQYbYxyZKtORiqCrEhVL+H7JslBR0mSZ9pTBaL5GNqYR1xXmKjZQoTGuM5avkYqoNMd1Ts1VfNiJxWRJuKEL/4n5BoLjeXRnopycrZCNCif33mwkxAUvvkoBPC5gsNTVG6FHU9V2SNXJj1s+1yvAHXsI2d2oLo4n8GKzXY+GmLqkkKoP03Ep1sRG4Xpe6JTuuh4ThVoIjax3T5+r2EyXTOLGfCIX+N6M5WtYrvC6C0wxZUl8X+N54b3SljLQFOk3Nux7sWO2WOVrt+/ha7fvCZN0x/XIlWo4rsdV23r5wG9tR1u0BmiqzB+9bju24/L1O/fy2R8+yRdueRpDV3Ecl4oPZ7pkUzfwwiYty31rMUPlz956Pqoi8527D/CnX7yXmKGhKEJSN1AxXdOzsAGWiGj82VvOY2KuzMN7R3jLX91KOm5gWg66pvAHN23jh/cdYmymtOB9jekoH379Tv743+7h1keOcd8zQySiGpWajSxL/O71m3l43yhPHJxPGDzPo1Sx+ODn72bX4XGqpk3FtJnJV3Fcj49+6T7iEQ1DU0jFDT79vku5cIOAYLse/NOPdvH9ew5SM22qlsNsQUz0v/iz3XzvV/sxNBVDV/j9m7byrldu5DcJzxNJzaquLOmEwdHhWU6O5cTv8BuNtsO//jTOX7z9At529bolneb/yRjJV0lHhJx2TFN87qeKIgvOzEzZpGq7JHQVy3VprMtABzobOWdDz5LGSltTimsvWMvje0/zxL7TTM6W6GxZSgu4+jxh2rv4/X0dDXS3ZRibLjA0kfu1zkuSxHrheR4RVQn5hQFkb+vabn7wj+8jV6wwly/zz9/8FQ/vPvaC/sZjz5zg6f1DdLSk+ZN3X8OW1V3Issyzh4b452/fw/6jo/zDN37JRdtWsGl1V3iem1Z18Vd/dBOe51GpWfzzN+/myKlJLtm+kjdff+6S5/ScjX1LVNAqNYu/+fId/PsPH6Axk+D333wZl5+zimQ8ytRsgR/f9TTfu+0JPvetX5FKRPng269EfQGFe9V2fXikgFUrvhCUsPpQn/dk4b8zGv19umK5IYestgg1pasyTQmdpKGG90OsDg56tnBdj7Epcf+lE9ElPKD6SMWjJOMRxqbyjE7klmGRCsU8Dyls1gY2AroiE4vq4edPzhZCWXbLchifygNw8PgYN//Z15dt2nuA4zdwLdtZFjaqKDLN2cQZ9+/gx4uvjOfB6KS4Dg3puJBX90NXBHc3V7GJGwo1X+CkWHMo+Y3nuO8VJdSTlWULKdsVzWzVp3AE0EBJgoGGKLoPOW5O6KxqFgqyiuyrisoScxUrNDlWfESCLEvh9EqRBR2g5SyN+he9mGpOGWzvb+CRw1PsPjnL9oGGsMIL5D4j2kIVL1mW0FSZYtXGtJ1lBShWtyfpa05w+zNjvHprBx2+w3HQAREy2MvjV13PC30mxN8VSkKKLHHxmmZuf2aU+w9M0d0YDwUonjk1x+GxAr91bnc4abEcjx89PkRLKsKrtnSEJm/yor0soslcsqaZz9w6zd17x3nD+T0osuwXch41yzdqe4Gb4Au5tms7U3Q3xfjlnnGu29oRClDMlEzu3jdOb1MsVDWMR4Sv0bGJYkj69jyPfSN5TkyWaK9TP3H9yU5wrRVZwAYvXdvCj58YYq5sLj3wl1HEfJPckVyViCZzeraKLEvsHy8x2BRjS2eS+4/NcmC8xPq2BBXL4do1TTTElkJVghjJCY7GtWubeWo4z2h+Xp55pmwKWKftYqgKjXGN6bLJquY4Q3NFJEkIW0gxMZks1gQkrT1pULEd4TDuy30rskSXXwA7HnTEdYbzVXRFojMV4eRsBcfz6G+IccKfHtVs4Y6eykbJV21myhaZqEa+aoebQ3gP+VKuEuAgYLABJjzwNIlpCt2+KpskifsheA4F0Zu67g7gCY5ZRFXIxrTQiC+Q7K3HnAsRifnrKvmf8cuDUzwzkiemK5RqDq/b0sZAY4zTc1W+9cQwCUNBRmKiUAuvza17Jxieq5KMqOwdK7CuLcHrNrdTs12+t2vEb7AIN/fXbWl/WXlM2a7Hq89fQVM6xq7D44zNlChUhFJmZ2OC89d3cumWbtqzsQXrXdAMySQM/vxt53PdBYPcvesUB07NUKyYRA2VruYk56xp57x17UIeXJIoVCyu3tnPQHuGld0NYYdOkecToBVdWd59w1Y29jagyPKCIqw5HeX/vvNibrpoJb988iSHh2ep1GySMZ3BDmFOe86ahVMw03EZ7Mzy1Y9cy389eIQH945gWjb9bWluumgl21a20piKMDRZWDB9kyWJV57TT0dTglseOsqBU9PYjktPa4pXnjPAhRs6ue2xY2xf1UpLJuZLYHtMlkx2rm2npSWFa9o4/j0oblFfwhgPWZYxIpqvAGkT1xUGOjJctb3XN+6VwCcvCxjx/P3f0ZT0vYxcZEXmtZeuZrZQpSEdw/SPAwSCoGY77Fzbzh++ZhsXbZznzhYrFp/4+oN8/56DvPrcAV593gCp+Px0tVgxuXf3EP9+2zP804+e5IptPWdVUfzvjmLNxgh5ZWL6VLEcopqMg/BpimoytitUtuoToe7WDOnEUiiRBKwfbBP+ZLNFxmcKS4opWZbYsqpz2a6xqipEfUW039TvSJKkZdeGREzISYPgG/30V8+84GIqX6qyqq+Vf/vEW9myZr5Y2ra+h/aWDDd/7GuMTOS494nDbFrdFb5vsKeZwZ5m8RnFCt/9+eMcOTXJqr5W3nb9uQsap7mqOP+cbxEgy0J+/YEnj/CtWx4lauj89R/dxOuv3R5ypDzP4/wtg6iqwpd/cD///sMHuf6yTazsaw3vw2CND7RCF38NMd8iRMTLZ20NQq2Tt1dkj7mKxbHpMrYn1BfnqkIOPRvViKgyo/kaSUPFQ1zTqZIwgT3ThAQEiihQV1UU+azqpLIshU0Ry3aW0+RBlvARLmrwB8LXTJu1UPDBtt3wl67nYvqFUVMmwabVXcseR/2fa2tOnVHeX1Ve+HcpINjiPtRUZUHzJ2jUxnWFiO8tlTSEwmLcMNAVmbLpkDRUqpbrGxgv5Vm7wZqsKNj+2g4+bUjyBZcQiskRVRFWObYrOJCaQrFmh4Vd0XRAESIlotktCtjnagC86MWUocq887IB9p7O8dHv7uamHV30NsWpmDaHx4pULYc/vWEtyTpDxqimsKk7w/cfOcUX7z7K9v4GTNulNR1hS68QAGhJR3jvFYN88sd7+dA3n+JVWzrIxnXmyiZ7h/L0N8d57xWDy1bdgYqXn9uFX4TrwSVrWrhkTQv/8ovDzJVN1nWmGZmr8M0HTtCejfKG83vChUKRJQZa4nzzgRO878uPh74UqZjGBSubuGZzW8hHuW5bB/cfmOQfbjvI0YkiG7szuJ7H6ekyxyaKfODa1Qy0LuXCvFjXtj0T5V2XDvC3PzvAX/xwD9dsasPz4LanR9g3lOOjN6yj1YdDdWSibO7JcNezY3Q1RNnck2VsrsJ/PTm8ZLHIVyw+dct+WlIGa9pTRA2F8VyV7z98itZUhLUdL93G/nwiIEaP5Gv0N0Q5NlNmoCHGWKEmEnuEBHfZFItgVFOI68pZF0LT8dBVCUUSxUb9JTNUBVkSspyiqPdC096AyBzXg26Lz9GSLI7NlGlNGGSiQoVGkaRQAUmRJRpiGmOFGu3JCAW/K5+JaqiyxOm5Cq1JwYUaK4hNwHJE9y1mqMiSkBOv2oI0HtXmBRqAULCjYjt0pqIokliUyjUHXROEbNXHLdd8CGOuYpGOaFRtJyziErqQ2PU8IbxSqtmYjvCCaIzrQqLWUylbDo0+sV6RFy7WQ3MVHjs1x83ndtGSNLh93yR3HZziXed1c9+RaXqzUX5rSzuj+Rr/eI9IZoo1m2dH8vzOOd20pQz+5YETrGtNEtcVfnFwimRE5be3tFM2HT5//wmOTJbY+DK6bw+OFvjUrYf4wCtW8srzB7Fdcc0MRSamq9h+1222YoUEeV2RKdZsFFki4fvWrOlrZmVPE67rkopovoO9HK6Rp+cqqP77rjpvkOs1RZioVyzGizWyUY2a7SJJ0Nqa5n2v2caKpjiW4zFTsUL+mucJ/tm6gRY2DLbgOB6WKzY+VZGZKZvImsJ0yQS/ANcVAd2OxAzedu0GXnfFWiK+a31nWqhd/s41GwCRrBaqtg+rFapoK7sb+aPXN+C5Hrbrho0dT5J4zcWreM1FK8lVbY5Nl+nKRFBUmd+7fjOn5ypkYzrTJTMshpIRFdvxmK1YpAxxP1qOMN0GOHdzD+dv6cFyREMkZaiMFoQXSdDkCLqZowXBVdUUiddduQ7VNw0/PVdZYPjqefCKnf3ccP6KBXvWo/tH+Y9f7OO8te186r2XkFmm2DhvbQcP7R3myPAsI1PFl7SYGmyMgSSFIi+Fmk1zQsd2hJxZlxHBdj2MYA+uS4KScQN1GXSFJElkU1E0VaFm2hRKS7m9qiLTkIkv2zxdbqWuR6ZYjlD00pdpZgb5QX1BEhzT/Gvmf+aJN5z9Ip0hZEniTa/ayebVnQs+X5YkztnQx2BPM0/uPcXB4+O/Nkcu5kOa69/quS4/vHMXc4UKV563husu27hg6iRJEvGozhuu3c73b3+CobEZHnjqCC1tDf75i8+zfYl1seYsXLcXQw1fbrGiKTZ/jP65WI4Xem+uaYmHyoVdmSipiIquSriuxPq2RLj/nS1kSSblQ+UqNQvzLFoBpmVTrYn1JpmILJvHVmqWQGwEv6x7jWU51HyYnphQ+Q1Kf2oFsH5lB//xqZtxZTFBhoXfpeaLZqWi2otqcSPLEvGoaIiVq+aCBoeuyrTXcZwDu5l6I+50RKVqu6SjKukzGLnrPpfRg7Oq1AYDDFWRaI7rfn4GUVUOBTcCxJcEYe5XtZ0QfXOmeF7FlCxJdGajokpbdJDJqMZgS0LAbPzO1MbuNH/31i18+VfH+P4jp6iYYsNpShpcs7l9CTdBkSXecWk/k4UaP358iB88ehpdlXnTBb1s6c34XAeJV2/tQNdkvv3gSf7triOhBHJzKsIFq5oW3IDJqCbgd4YaHle+KjDyjufNmzIqEh9+9Rq+8+AJfvz4EN984AS6KrO5N8v7rhxksCURLpoH/ElNX3OCZES4t7uux+HRAr94ZozRuQrvv3oligTNSYP/+/qNfPXe49yzb4KfPjksCq+oyo6Bhjro4NJrazkuVdMhZqi0pCNMFWuMzFVoShhLrm3ZFMZ+kgRXbmijYjpiLCpL3Liji6rl8p+PnuLRI9OAMEb9wCtXc+MOIcFes4V89AdftZp/vO0g33/kNF+55ziSBK87p5tzVzRyaDQfdgA1VWyK33noFJJ/rMWaQ0c2ygdftZrBF1gg/k+HJEHSUJgsmvRko+wayrOzO01Mlzk4UUKWJE7MVNjRvRRWAuJ8J4omJdNhoiiU4poTOk8O5dg/XuLQZGmBfHJTXKMpPr8ArG4WKj3Fmrju7SmDiCpTr+qZiarL/je+1p8kSXSnI5SjDhXbJR1RsR2XmC6Krs50JJwKrW6OhwVx1p+w2j4nsZ54KUFY0Jk+LyuqzkPn9o8UuG3PGDdf3BcqIAaKiZ4nPDtsT3C9bNf1BT7E/yuy+OxczQ6nAFXLDX08qrZDQ1RjuTRoLF9jLF/j5/smUCShzheQRkfzNS5Z0YCuyrQm9RCqpykSEU3hxGwZ03GpWIJI7rgeR6dKlE2Hbz0xHBYkM8tAWV/KqJgORyeKVEybbEz34QeCTyEhusISMF02iWgK+aolCmLPw3E8ZsuiaEkZGvmaRUQVkObh2QoPHp7mNds7faEVNYStaIqYFKYjmg+xlPyiWNgMaD6nLCgIopovjkGgmCkh+/BXQxUTLU0VhUS+JrgJeb/7FySGruf5PD1RWKmKEIJZvA8GhZIkUTdNAkMR97tdh3VX6ySZCjUbx/MwbQGnNR03LOYlSfAn8cVpZmsWtiuSKccLkm6Xmi28dkQTRMV2PTRFiC2IIZVQ9Qrk9g1VFKdRTSMZEQm7Uze91VV5IYR20bkeH52jVLEY7MiE8vGLw/XRGIosL4F5/k9HILoU8xsyyYi6bJESxAL4kBT+z5IIxGJc1ws9yRbHC0F21CzXV20V65+hyqEMeX1MlkySEY2oLpKsYk1I9GdjgleDRMgF0hWZmbJFVP31ioV4VOeCrQMLJKSDiEa0EA5VqtRwXW8JAua5oh5RUB/jc0We2i9EvNYOtmNaDtNzpSWvi0UNkvEIuUKF/UdHSehquDawaDqwOC8sW67fzZd8i4Jgci72gvhLKFS17LRxUSa8+PcNdc9i0DgQ53/mc5AkWNHbgixJTM0WmZor0tK4VC/A8zzGp/LM5cuoisxAV9Oynzc+XaBSs5bwBwGm50rM5QX/p7stG64rmqrS39ko3j+Vp1KzyGYjSGFDVPIbnp5vHC0vMYN/MaK/S+TnkzMFRidytDaevQHk+YiWoDFt+fDhQGBtuWmxhzBODvIvSRKvU2XJRwYtRMGodVoG9fuGvOiZsV0Xx2WB79Vy8ZzFVIB3/f9uXCeqPk0Wo0t/Y1vTleaf37mduKGSrwqDs0xUY6AtyZ+9dj1ThRp5v4Pa0xAj48t0B/jE4CHsaYzx6TdvZnSuSr5ihWp6NX8TjGoKFdthY2+GT3alyZXNEC7XlDTIxHSmfT8Vz4O13Wk+/batpKIa02UL23VpjOkLpIGDtSDVovLRG9fxrssHyVcsYayajiy4+PmKzf/7iTAH/tJ7dtKYMMJNMVc2+eB/PMXde8d5+8X9oRR5RzbKR29Yy3uuGGSubCIjpljZuB76MRmazMdfu17wuPzuzr7hPP/2q2Ncua6F1oYYX77vBN946BSXrG7iPZcNsKknw2fesoWJfI1Hj07zjQdPMl002TNa4EPf2c0bzunmmo1tuJ7HgfEir7+glwtWNJKvWHz+l0d5eijPa/yb67Znxnji+Cwfu34Nf/fWrXzn4VN848GT2K7HI8dn6cxGedtFfST8jkBMV7hhRxeHJ0v81s4ufvj4EAfHitgS3L53gotWN9O0jN7/yyFcz2M0Xwuhcy0JnQv6MrQmdAxNmLlOFk22d6XpzUaxXY8tHUlUWaJYs8N75tRsld5slJmyiQT0N0a5uD/LSL7G6ub4As7fmRalqC6zuiWBVqfWtlzUm64GyUXNFqpSEW3el8ojGGkTmmRK/safq1hIiEJe9TvjbUnR/YprClXbJRrxR9+WS1JXBYRVrLPYjsuTJ2c5PVNB8481pimohowsz2+kjuNRwUGRZRIRNWxYAH7yJyATgXJSxJHxPEJO03IhSRLZqMq5vdnwmYn55x18HwtMVf3fb+tO88DRGXobYly+spGBpli4Zq1sjrO5UyzmFwxkF3TGXlYRTiIXbhwKIpFpiOmoskSXP8mxXFEYOL5Soet5dKSi4Xb/5Ik5frF3nOu3tqMjk4mqmI5HOiKF1zIoWnRVRpNlkoYaesUEv1d92MTiWG6vkTWJ7nRUeGBF5ou7ensCWZbCzqimLO08KrK0oFO5OJYrOTygJWHQENNQZZlWP3FoTejoqhBLUGUZ11cWa09FcEN+jEgmWpMGEU0JjZ5l/xppikRMX7rGBYVoTBOT5+XI5s8VTekYmirzzLFJhiYKdLemwu/P82C2UOXrd+zl4OkZNvY3vaRTKXFM9Qn1vHz04lhujStXTBzHXbYoKlVNbNvB0FWikd+cz5gwFBJ1vMozrbgVy6HmeGhV2Z9YuH7jSTSPWpMGNX/KP1u2KFsO2hkUVZ8r4jGD5oblxbgkad7zcDnxjrNFvbx7oEoZQLBlSWI2V2ZyVtiq/OCOJ7n3sUPLXhDLcpiYFnybuUIFRQJ9AW9q6bQu/LffpAjWfwlJWMt4oLwAe47/rvA8T8C5EKq+AoouU/WbJ7LfpInrijCBlwgtcAxFpmw5PoduHsoqhNMI+dARVWbnhj4a0nGmZos8svsYawfaljwLngf37zpCvlSltTHF5jp+XH2cGJri9OgM6UUeUJ7nsWvfKWbzZeJRg/Ur5yedsixx0bYVfOVHD3FyZIZHdh/nNVdtCY2jzzRxfTFDkiS2r+8hFY8ykytx+wN72bCq86zNEA+YqwqxiMC/K+A9VSyH9tTS9VdCGE9XfGSB8KUSCLSj02VWNMWRfVNu03b9XMTD8qHs9RM6RRYNX12RcIGj0yVWNsVDas9y8ZzF1EzZDB9EVRbdRddPYASMQ0KRRcUoSSJRC1y1FVmivznOZNEUm7AqbsJA7tdQZHRVbKoPH59hVUuCjmyUZEzDcj0qtkPFFq/XfbiE43f32jPRsEOpKYECmpBWDDq48YhIBFw/uagv3jxPmHnNVSya4gJi1JDUaUjoYaLmemIkLkkS08UaR8eL3LSjk7ZFcutxQ0VTZSRzoSKf5HdKW9MRmpKG6NYqkq8YJxzOJUki7Xc9XFccU8l0eOL4LBP5Gm88r5vB5jjPDuX4yn0niOoK779iEF2VcYHvPT5EWybKh1+5mrihcN/BKf7xzsOoisRV61pxPY8TU2XedkEvh8eLDM9VGZ6tMJ6rkjAS7Doxh4fosj15fJofPjnMTds7uWxNMxXL4VsPneJzdx1loDlBT2MsLIRHclXu2DPOjoEG3n/VCmzHI1+1wonbyyWCyVlEE7C6gFC4sT2B7XoMNMYwHQ9Dg860QUfaIK4rvuKdR19DFFkSBMW4rpKOqnRlDEqmSk8myuGpEhNFk6aE7pv0isW4YrtE/S53rmIT8eFxiiwUoYQUuzBQrNkOmiy8baK6KGo0/36PaDKzFYvmuEHFcqiYDp/75VGu39zOBSsaUPxFsVC1+IdfHGFjZ5qbtgp+yt6RAt965BQnp8tISKztSPL2C3rozvrJt+PyxXuPs6otSdVy+NnuUXIVm450hI++ejVtKYN7D01x174JnjwxR8Vy+OgP9iBJEk1JnQ9evZLGhI7neQzNVvjmw6fZO5LHdT26GqK87fweNvhFy2PHZ/n+40P8zoW9bPR/dnqmxhfuOcbV61u5cm3z/9/ee4dbdt313Z/dT6+3t7kzd3qVRtKojbqLLDcZ3I3tGAimOTiB5IUACS8QQkISioEEXhPAYGM7JO5dsqxm9TrS9Hbn9nbu6WXX94+19r5lRs1gpDzP/T0PWHPb2Weftdf6lW+55OcXGuoqwKZ8nI7no0pFqJF8nOdnauzpSzNTbbNQF3y9AMFjG8nH2dWbImaIe5s0NXb1pji72BQeIoYaKR++FsP1fJ6dqHBytoaC4I3u6E/L/UkRkr5+wHy1w5HJCrWWw0A+zv7hLPG4gaKIKdBS3Wa63OLuo3Ms1W0eOl3CCuEs/ZlIeEfIkvscna5ydr6Opqrs7E+zrS+1ZgJSbtqcW2iwsz/DfLXNMxMVWrbHSDHB5ZtyURHh+wETyy2em6xQa7kM5GPsG8pe1JXuOMIz7/R8HVVO9VVZSO4aSJNLiDXmeAEnZ2ucnK3h+TDWm2T3QCZqejmuz/PTVQZycdqOxzMTZRodj+FCnAPDOQxNwdQN+V4Vyk2HZycqzJRbZOIG+4azDObj0XoIp0qTlQ7PT1VodDyG5P0NId4A5xcaLDdt9gxmMXWVTMzA9wOen6qgKkJhNSwyGh2Po9NVxpea+H5Ad9pia2+KobwoOK/dM8B1ewZ44MgU7/8PX+OG/UP05hM4rs/UYp2nT89x5OwihUyMf/nOKylm/3HEjX7QOLPUpJAwKEsvREtXqbbFBDJuiALGD7ikp9DsUo1m275I+jsIAs5Pl7Adj55Ciq5LeO6sj9XJ/KUKj8he4EV+D0QnW3TmhV9hd8oS1gqqQlwTthmthhf5kIXw6x8kDF3DusSU4R8SQQDzjQ6eT9Tw8INA5lriM1kNOavW2xG87FKRiJkkYhC3jFdU0CUNbY3VCyAV8lYag69mNGyPmarwkrpQbaOrKnXbxfaEkpwXBGRjBpW2yE+Xmw5dKZOO6zOQiWG7fpQHT1Xa9GdiEXQ4lPpWFNg91s+t1+zkf33zcT759w9w7YEt7FxVUPl+wNPHJ/ibLz1MEAS8/rpdbB25tIDX7FKVv/3KI/z6z7yZRMyMpt0Ts8t86stCpv/g7hH2rbMCuP7gVq7au4n7nzjNf/ur77BlqIt92wfXcJdCXtP0QoVCNvmK1RtfKvZvH+K6y7fwjfuf55N//wC7x/p54+E9QqV0VU7uuj7VRotsOh4hacLmgKGK4icT0y+pvCsmjsL7K4QvKrK52HZ9zpWadKdM5qodmo5PISGaX6I4E3LpoTBF0hSiOoamsKc3jaWpL4nmfcknuStpRSpC4TTJ0ESXT1WgK2kKN28/wFhFyI3pakTyG8gI3LTA7CtrdOJFh8Dly8/O8ZFrTQpJk4Shya64EhGhQXgXZGNG1GEJb3RoqphVDDqu4A/oEk6yGjpnu6ILFk7xGlLXvtR0UBWih0BVlOjfMSlYsNx26MnGuO/4Atfv6GZUwrVKdZtvPTvDk+eW+chNm9E0hblaR+rkC/xmx/UxpDR1IWFQlVOOsKPRlkS4UHwAeb9v29PDj14h4Hj7hrOcW2zy7efmePehYXozFt95bo5S3eY337GHnf1pFEVh92CGiVKTzz48wXXbutjel+ah00u0XQEdEpBCj/OLTQbycSZKTW7d1YPjBXz+0UnGelL87G1jJCU8Mh0z+Pm/eYoHTi7yvmuGo4Xf6Hhs7k7ysddtjfC1/xQeLK806h2PyUqbSsvh0EiOhKlRk4pxJxca2K5Pue2yozvJVKWNoigMZi1ma+JA6k2bmLrKfN2mmBT+TYt1m7rt0Z00sV1RWE6UWxTiBvMNmyAQWNsrhrK0HD86eBsdj47nrHqOVKFAoyrYvoOlaVQl7C1pCvW8UBQCBJdF8Fg8vvHcLFdtzstmRMCJ2ToPnS7xxj3C9O5CqcXvfv0E23pT/MLrttJ2PD798AT/7Vun+M07d5OJi43k1Fydx84tM9qV5N1XDREzNMpNm7QsigdycV63q4eluvA4e/dVQ+gSRpeUk9RKy+W/fusUfgAfvWkzhqby5aen+d2vn+B337mXoXyc3QNpTF3lz753jt+8czeWrvLJ+87RsD0uH1mBVK7vjvWkTd60u4dvHV+IDuIbxwoc2pTj5q1F/u6Jaf7s++Pk4gY7e1PETY1y06HREd2pJycqlNuCz/WhQ0PcMFZguenwyYcuoKlCnevdl/dj6a8tNT+ALz81w4Wlxpr39C9ev5W3HxwQAh9+wD3H5vnju88AYmq8UOuwrTfFr7xlp3jWPZ9PP3SBx88tc3q+juP5/OndZ1BVcTj94u3bo2Kq1nb5xF2nue/EIoWkERmGv//aEd5/zUiEJT8+U+N3vnKcD1w7wleenqZlC6n9fNLgv773ADEp93/X0Xn+5O7TwMpzs6Uryb958w42ycaM7fr8z/vP85Wnptnam8YPAp6+UIYADo7m+NjrtpJLiCTmrx8Y5wtPTJGNG6DAUt3m9n29/MytYr+qd1x+5yvHGetJMlFq4vmiIJ0pt3njvl5+8fbtEez77EKD//z1E0yUWuQTBtWWUIL6xdu3c/22YnQIf+2ZGf78e2cxZCK9WLfZPZDml960g4GcaKp94ckpHji5xJ9/5AqK8l46vs+f3H0GU1f5vffsR9UUqi2X3/vGCR47tyybEEIQaPdAmt/+0b0kLZ3efII//Pnb+MQXnuSepy/wV98UprSKohAzNbpzCd518w4+/MY9HFrn6fVqhOP5tB2h3JaJGczLxqkfiLO13HYYfoGC7+zkEqcuLHLVnuE1yXWr43Dv42fwg4BtI930XgIaBeKMDIu48LwNgoBglSzzK42upIkhu9v5uEkxYZKLGVEOoiA8IcMpre8HrHYiC5DwUWkqHTZxw+nQDz0UMSENoYiKQuSVFhZ9mqZEViw/+76b+JHXX75y/eEkad2l5jPJly0R/YKXprxSK+0fXgRBWNSJf4eT+aShgaJQaYt11XJ86WMoJti5mE7cUCm3BKc4KxP7SmtVQaoQNRgScZN/9c9ex3Onpnj6+CQ/8euf4kNvu4bdWwcIgoBnTkzyV198iJPjc+zdOsDHPnDrJU2qAfKZBH/9xYcoVZq89eb9FHNJJueW+esvPsQjz5wllbD45+86TDG/lmrRnU/xK//8TYxPf5onj17gx/6f/8nbbj3AZTuHSMRMGi2b8eklnjo2wanxOT7xq+/j2su2XPIaftDIpGL84kfewPGzs5ybWuLnfuvvuP2GPVx/cIyuXIqO4zI5u8wzxydp2y6f+NX3UMytvA/bcZldKNNs2bQ7Ds22zeTsMiB81x559iy9xQwxyyBmGRSzSbKrLA8a0j5mOBdjsWFTkAMUVxbHhYTBVKXNSD7GuVKLRr2Drl6aV/lC8bLaIk9eKHP38QUqbRdLV7liJMftu3uoOx5feHqGm7YVGS0m5YIMuPfUEtW2y5v3isnIY+NlvndykVpHdOivHs3z+p2iE/3wuWUeOb/M0Zkan350klzCIBs3eNfBAbJxwXN4erLCd44tUG45DGZjvHV/H5sKcaYrbR45t0zL8Tk1X+fNe3t5cqLCQq3DBw4NM1qM43gB959e4sGzJZq2R9LUuGFrkRu2FkXBpwqse9P2ohGe7Qksv6WpZCwxdevLxPhXklf0S59+GkuKFdiy4PrA9Zv48A2bRWeoLmSXk6umDClLZ6rSJhMTh3nL9ui4noAVuCuSjNYqgtyu/nT0sOuqwoHhLN8+Mst8tUMhafLsRJmhQiKaGIHorF0xmuf/u/cc89U223pTfO2ZGcpNh+enquzsT9PouBybqbJrIEO56TDWm2K5aXNyrs5QPs4Xn5yOPvty08aXycfqMDWVa8aKa+TZX+1u0/oIAnGYe74Y6a/1LlvxM+tJmdQ6Lj1pC1NTWGo4+AFsLsQpSAhHVirf6apCIWmSsnyKSZOJcptNBSviURUTJq7n4wWi0I8bKo634mSflwaBLUdcT0jyN6XIRMgjMaX6jyKL+lCqN2Xp3Lyjm//5wDjT5RajXUn8AO47uchALsZOqdB419F5fD/gZ2/ZQpdM8DRV4Te+dIzjMzUObVmRqm67Pj9zy2b6s2vhboqisL03xdbuJPeeXERXFQ5v71oD8QqCgCfGlzk93+D33rU3ev3utMnPf/oZHj5T4p1XDpKydH7qxs382heO8nePTJCJ65ycq/Mbb99FISm6bMK0T3T8Qpia5wds607Sn7Fo2MJ5Pnw/3SmTn7puhFrHjZSVNFXh/jMlTF3hJ67dhKYqXFhu8bePTdFyxPP/jgN9VFqugHUZasT3+IcmC/+YYbs+E6Um/+7tuxnrEc/nb3zhKJ97ZIKbd3aTT5pcWGryh985zbVbi/z4DaMkLZ3jM1X+3f95nr9+cJx/c8cOTE3lIzeM8v5rRvitLx9lqW7zn9+zX2DOFaI9zw8CvvTkNPceX+BX3rKTK0bzuF7AZx+Z4C/vP8+ewQxXjuZlNxTmqm2+/NQ0H71lC3uHsvh+QL3jkpe8tfOLDf7oO6c4uCnPz9y6hXTM4Nxig9/60jH++3fP8Bt37iFuaowvNvjfj03y/mtH+MC1IwTAJ+89x1efmeHjb9jGaHeSIAi4/8Qin390gp+9bYzbdvegoPDt5+b4w++cYmd/hjcf6CNAcLzuO7HIv75jO7fs7MEPAv7m++N87pFJ3nJZP5dvytN2fP77d8/QtD1+/30HGMzHWW7a/KevneATd51me1+anozFidkaf3LXaW7e1RPd35OzNX7zS8f45L3n+JW37MTUlajRuGYmEgjIiLrKRuH4TJV7jy/w/7x5JzftFLyIpbpN2xET6bCRsHUwx3/56ZuZKzeFH5YUmEnHTbpzcYqZuEBCvAb2WwEvFbxEXfUoShK4gjiLlprCb+pSsVRp8Mefu5/f/Rdvoa9LwBltx+ML9xzhnsdOYRoab795L6n4C5m/ilhRZQMFFdv/wYupsOGbkPDOcEK6OtbwkFQlUmwLo2F7aD6RP07SEqIl/xQR3vcXi2wqTiYZY3G5jqap7Ns+RF16Crq+L72LVpreIVesLXOdV3/V/cMjaWn0IKgaQ7k4LcejN21FUxB/WVhq5BMGLceP0CShWJOlq4In7Ad0JcS5HHKRLV2V+Z+QgN+3bZA//Lfv4df/6Es8/tw4v/R7f09Mqk22Og6aqnLtgS389i/ceUlD3DDuuHEfuqbyuW88zue/+TiGrmE7Lrbjkcsk+NgHbuEdt11+UYNFURRuvHIbf/xr7+W3/sfXefrYBL//13eha0J0wfMDfM8HRWGoN4f5Q1C2VRSFaw5s5hO/9l5+80+/xlPHJvjbrzzCZ772KLr03PSkCf2hfaMX/f7J8/P8+K/9NQulGh3bFbYbcqJ65sICH/zlv8TQNUxDwzR0PvruG/mlj7w+2lMHMsI7sNJyGcnHqXZcKS5BJIYUCoGlLZ2UqTFf75A0NRq2R932JJ/yHwDzm1hu8ecPjHPbji7GupMs1u1IFSdmaJxfauJ4Pj9xnUjoG7bHl56Z5fDWAqoCpxea/MWD47xpby+bCnHmax05ghMddcvQ6JceUlt7UvRnrQhzHgQBz01X+bP7z3Pbjm5GCnEeOFPij+45y6++aTulhsPfPzXDOy7rQ1MV/vjec7z9QB+T5RbfPjbPPz+8iednavzto5P8yGX99GYspitt/CCgYbt05KhWQUD1dLmwNAUy0ldAVWAgE8MLAvqzMfYOZTk7X6fUEHyZbMJkqBCnNxtDl5jOTfl4RIw2NAGn0TWVgWwMJyT9KyukbksX+M6O60V8G1UR3f8InqCITdkLhBeC5wsJz+Q63X1FUUjHDBzPp2V7DBXiUkWwxam5Om+7fIBGx+X+k4tMlJoADOXjtB0hejFRavLtI7Nr8BDb+1IMrvPKCovFAKLDRMxP1spsvtpGqOWmE41/XT9goW6z3HQiUnytI4roXNzgwnILgKFcjMWGE8FRW47HUsNGUYTaTNxQma60ycUNTE10HQ1VxdVCRRzxWgqCvxSSV1fDyUIyo1BCevH3EB6OcUPD9Xz2D2fRVYXHz5fZVEywVLd59Owyb9rXSyam43hC1r5pe3z20cloErvUsGlKeMPq2NqTpCdt/cDJ2fGZGi3b4+tH5rjn+AIATcej7XqMyzWmKAqjXQl+8sZR/tM3TopC79Yt7O7PRK8bEj3DaLsCcqEgCh1LV9G0lecBIG5qF1kpdKdMHjhb4tvHF9AUhZMLDbZ2JaIpcNvx0DUgUKLXURQu4ia9mqEocMf+PvYPZ6Nn//ptRf72+xeErH3C4KEzS9TaDm+7vD+yPtg9kOGyTTkePlNiuWHTk4mRiRu4pijYDU0lnzQi4YAw6m2Xbz03y+Wbcly1uYCuKZg63Lq7m88/OsFDp5e4cjQf/bznB7xuTy+Ht3dFh3fIlQyCgIfOlKi1Xd57zTD9Ukp/72CGO68Y4M/vOcv5xQa7BjIs1IQP0Z7BTDTh3jOY4XOPTFCTppq26/PN54TS6C07eyIY4fXbi3z6oXHuP7nA7ft6o2vbO5ThDXt7o/d4045uPvvIBDPlNpdvEoXe4+eW+elbxyKj9+60xev39PI7XznGqbka3WmT+08s4gUB77l6OPLku3xTjjsO9PH5Ryf50HKLzd0vDUELw9QFD2ei1KTj+BRS5hpV2yAIpGecEHHoyScZ7EpFk+xae6Vp8FoopADGikmRgAYiKVWVtf50xaT5gsn39k093PPYad77y5/ixoNj5NJxjp2b41vfP06l0eb263Zx5y37XvC9hkaq67/vuy8sh95s2zz49DkWluvUGh0qjTZPnZgC4Pj5ef7r33yPXDpOOmGRS8e59sAoxezL/4wVhPpYzDKiZl0QiAmHonBJruE/LFamPS/H+wigK59i26Yezk4u8tiR89QabVTDICCIiiXb89d8btpraKr0jxGqoqxRhltdgAZBwEguTtzQIopJKEZT73gSmYXkzgm/qkvxf1aOpYCrD2zhb/7Tj/O1e4/wvUdPMrNQQVFgqDfPzYd2cMeNe0VDQTZULwWF1DSV3/n4ndx8aDtfvfcIF6ZLaKrCttFefuR1l3PjlduiIm19aJrK667dxZ6tA3zn+8f43mMnee7cPI2WTSZpsX24yMFdw9xwxTb2ruNk5TMJ3nbLAdodh4He3Ave0x2b+/jRNxxkoDtLzDKod9wVMStDRVNVbr16J7vHBrjroWPc9/gpxqeXaLUdDEOjK5diz7YBbr1mJ8lkDNf3CbNKyzI4sHOYerMTod9UiEyL19+rod58ZG9hez65mC5sWQhI63rEBU5bOrbn02l65OMGvo/M38WUOvyzB4cyvNQT8JLFVNMWk5NtPSkODGUuksq+aVsXn3tiindcZlNMmpxdbFJpO1w5kouKK9cP2N6TZE9/ek2XR1FVrtqUoztl8s3n57l6NMfOvpWRvuv5fOP5eXb3pbnzsn7hs5OP86tfOsbz0zXyCYOEqXHj1iJdSVEo3bajGxWFZ6eqwvW+7aAosLMvxZauJFfJzd6X3CshCU0kBKAqRN4q4X8/P1fHD+CygTTFtEU2YeD6QXSoB0HA+VKL3rQl/RUuXtBBEPJj/OgeqJILkpAJsCqVR5BTjUaofiYLz1rbFUao8iHPxHSWGzaOH2Ctep1Q8CNu6nSlLDIxg6PTVWpth7GeJE3b4wtPTvH8VJV8wqCQNKm2HGKGyuv29PKzt41dtGwuSRZURAc95MuFXQDPF4RZQ1XJJf7pi6kQ4gCwqzdF0/HQ1QSWrtKXtuiTnIxax2VrV4IL5RZD2Ri7+9IEgSCd5uMGHU/w8BSEBHBYeBcSBkZvCktTSRYSmLpKUiqjrcb/vtikIwAWZOej2najtZGydKptIYJiy4lVKDPecERy2fF8tvWluPfEAnfs6+XIVIWG7XLtVqHa48vJp+sHLEjIaRhv2NPD0LrCeL3v24uGXJdABOdt2kKZsCQxxmHctL2L3f1rCfKbiglB+PV9xrqTa+Ak69VyVne0/YBIWW11QhIW8qvX587eFO+7YoCJ5TYBAbdt72KsK4GpqZiagHKsTjsU5cU0mV6d0FWV0a610s9xU5hFhupmp+cbVJoOv/OV42smxBeWmgSB2LtfblRaDrPlNrOVDh/726eir9uuT7Xlsliz1zRJTE1lrCf5gp4l5xYa5BIGPavEaBRFYUtXko7rM11us2tA8LVMXeXUXJ3LN4li7eRsnYSlRwViy/aYWGoyXW7zr/7umWjNeH7ATLlNd8ZaM3UeLiTWiD8IfpgS7QvTZQH7/dwjE3zryIq5b6Xp0HZ9lhsOXhBwbqFBMWVFk9DwPYz1pGh0XGYr7VdUTO3sz/CeQ8P8/WOTfPfoPDfv7OZ1e3sZ605G67fcciK+cRCIa2/YHn1pAT0e0VX011DRr6kK6qpCaj2U68Weq8OXbebA9gH+8DP38YefuQ9PTpRSCYt33LKP3/jp2y/mSynCn1HXVjjHl74u9ZLePgvLDf71H3yFc1NLa8RrNE3lzOQSv/MXd0Uc8Wwqxmd/90Ncd2DzK7onCiJZVzWFAB/HldMefmAV9RcMXVcjgY6wa/9CCXUYiZjJ2245wD2PnuSxI+f5+n3P8Z43XblmD12d2ziuh66/gjPi/9LwgyBSfVstNKAoK3YTgpIhckXd9fB94Wu4+uTyfKEYHeaUXhAwV+uQyqT4sbdfx9vfeBWtjqCWmKZOzNBBUai2Bf0jRDutn+g6jks6GeNdb7yCO2+7jLaki8QsUcy9VINFURQGenJ86O3X8KO3X8nfPTrBkekqhaTJv379NhLWxY0JgNHBIn/8a+8D6cMH4tx1JOc7jLfctJ87bhR2Fo+MV/jWsUkUBbZ3J3n3wYHISqO/O8uPvfVq3nfHVbRtF88TXk6moWMYGrW2S7klcp24qdGyPVK5NP/+4z9CTPKh1FUonrSlX8R7DlE9CVPD9MQ121KUQkEIc4hncUWsJawLNLmvrB1Av/Taf8liarSY4Lotef7k3nNs701y645uDgxmsHSxme0fyvC/npzi2akqN2/v4pHzy4x1JSPI0NbuJFeMZPmD755ld1+aW3d0sXcw87KwiG3XZ7zUxPEC/uO3TgICOlFuOSzWO+QTQh3M1DUMXYxVTTl+9eTd2TeQYWt3kv/4rVMcGMxw645udval5MQooOYI/xJXVTBCvpQqDolaxyNtafRnLJ6eqhKQxvN9Ti42WW46bO9OUkwa1DueMHSUb8n3A5bbDrYbUEwIvPVyy0EBYVzqBzQllyb0GvIDj5Yt5B9RBETguakqt+zqQVPE+37mQoWutEVPxsLQFC7flOOvHxxnfLHJ7gHBmWrZHo+fX2ZTMUFPRogpDBXiPHl+GUvX6MsKhUQFhSfOL7OpK0lcqqlt70/z7ESFtuNF0Kvw/fACB5epq+KzXPWtcEL1am29iw2bAKGq1XZ8fETB3LTdiFiaMDWGczGqHY9N+bgY+a6qOmzPl2p9SgT9UFAoNYWQwbKUpe64grwY019ZghMaXIp1JgwCHd+n2naEpKwi4CKmq0YTGbcdkDQFwf2asQJ/cd95Ts03uP/kIrv602wqxCMRmELKBAV++Y7tF6mKXepzCTeS8B9Rd3lVpzn8X1VVpAeH+H5XyiSfNPnYbWP0rFPZWf1aTdvjrx8cpzcTI25q/OUD4/y7t+0kJyd34fpqOZ7Am5sarvT+CA2pK22XhKHRdATkr9RyKMQNslLmWPAkYUsxwVjXpRPdEI68+jVfa6EovKjsdQA4rk8qZnB4e9dFh0nC0iPI3cuJMAHY0ZuKivIw3rC3l229qbVJsvLipuMrDam19zd8xsLEeXN3krddNsBfPTDOU+NCDOfUbI33XTMcTcP9QHT4B3Nxbt7VveY6btvdw0AuvqbJFx6YLxSuNHI8uCnHSDGx9voUhd0DaQhW3sP6JRIWOi8k2Q3rnicZcVPjo7ds4aad3Xz7yBzfem6OLz41zUcOj/LuQ0PRtD8kw4e+coo8DxKmhsJrZyoVxvrEA1ZU8IA1POrV0XFcPvzWq7jlyq08+vwFJucqxGMG+7b2c3DXEOnExdPyge4Mf/hv3oHteBxYR7QPQ9M1Pv7BW/jJd1zDjtG1ZP6uXJLf/Rdvodl6aXN5XVfZPnKxME4QBJGUtOf7EewIwHU9Gi0h2iUKOgXjhygDbpk6e7b2c/fDx3nombN89XvPcts1OzFNHdf1aXUc0gmLZGJtU+Nttx7gq/ce4ZsPPMev/9GXmFuq8qbDeyjmxXPeajvMLFZ44vlxpubL/PJP3k46uQIDF/dAPMe+7+N6fuRz5PsBjZYtIWziPqivoWnqC0Wp4fC/n5nhvQcHIlh/3fbw/RU1xZhswAcEWJqGrwaR72LYPH1+psaxuTo/elk/uiJmhyE8UFWgZntomoYTBAQetFwnOrdDi4sQkr4+xNRKQdc1UqtyjgAI/ABfqii+2L0WSAedD103yoNnS9x9YjEybH6hn9fXPeAn5hucXWzyVokIiNQiEcXPN4/Oc/Vonms354VlxbrGsqJc/B7CSJhaJFK0epqrrmrUrM4vFeWFix1dUQi3nZhE9lQ7bqQoW+sIfrqqirxDRdAwqm0HSxNiFi933b5kMRU3VH78uk0c3lrk3pOL/Pd7z3HN5gIfuW4YSxeY0is35bn/dIm9AxmenazyroP9UYc6aWp89IZRTszVuefkIn/0vbPctK2LD1499JIQMNE5gu09Sa7atAIxuW1nN1u7k5SbTiTfrHAxaTJAFC8fv3WM52eq3HNikd/7zmneur+PH7msH88P+P54OfJOiOnCtTsb0+lKCu+gG7cUMFctNM+HxbpNteNS77gUEga253N0rk4hYWJpKicXG0yW2+QThoCEVTsiwQ+gP2NRTBjcd7bEcC5OV9LADwyenKySMDVOuHUUTzwQdz0/R0/aYntfmmcnK3zv+ALvuXqIouz2vn5vL3c9P89/++ZJPnDtCKmYzn0nFjgyUeEX37Q9ciDf3pfmk/ee46YdXaRjOnE/oJgyeXJ8mZt2bkNVhOT9+68Z4d9/4Xl++8vHuH2fMCBerNucmqvzzqsGGb1Ecqq+QFv/1dw2s3EdlVCBUo3G5m0goakYmuhS96YtelJSQjwIcF3hlxR6nIRyyKoiFHpiuoKpq1iGKNgNVcFT1TVywOsfvKlyG1XlIvltXVUoJoRE/nAujq4pJDwxmQxNpl1fSDVrsltlaCodKXV72XCOrpTJt56b49hMjX92/aZoOqGpCteNFfnj757h8fNlrtlSECqbvjA/DVU4V4frCyJ5KPjieEE0vU2ZovNTa7s0HY9cfIUXoSgKV2zK8/ePT3HviQXedvkAliZUDKstl6SlEZMHyZefnuHIVJV//7ZdJC2NX/s/R/n8Y1N85PCmNXtBreMKvwhV+EoV4gaqKuTpyy2HluNFvkGB7E51XB9NEROsUtOW0EpRIIQE7PAd+7JarLTdSDEIhZeUqX8thQIM5uMYmsLt+/pe9oRkVTNuTaRiOrmESV82xgeu23TR4feDXNt9JxaotJw1aoFzVaGY1CWxraamsK0vRdcZk31DWbIJg4/cMMqOvnS0JmKGFv38ew4NXwTrvNTrv1h0pYWS42UjOd5y2aU5Cn4QMJCP8dxUhVrbjeB4QRAwW25j6mr0vkJozmqqTtsRE731jQxDU9k7mGH3QIb3XjPMf//uGf7qgfNct60oGmDScqMg0Q+GqpAyhc1AwtTXNALCCDkur6XoeCs+Q6EZ6PoGqvBOUtk60s3WSxQtsFYWXAEyyRh3HN4dfS9q9LFCHTiz1CJWLPCGq4sX/a14zOAN1+64CEYV3lNBQXjxJsuJ83P88afvoVRpUG92aLRsTpwTE86njk/wrn/5Z6QSFsm4RSoZ4wNvPsQtV+94+TfvFYSqKLzzjVfwpe8+y/j0Ej//259l60g38bhJp+PQaNn85sfexptv2rfm94q5JL/z8TuxHZd7HzvJv//El/nE336XQlagBRotm+Vqk1qjzRW7R/jXH3nDmt+fXqjw+391F7OLlegenJkQEO9zU4t86Ff+kkwyRjJhkUpY3H54D+964xWv6f3V8YR34Wpki6YoKKqcKMrmYdhMDL3t1jcS+jJWRO8AAUNbrWY5nF+ZmEbrjRXrCfH1SzdqKm0XFKHEG16mqojrNKVacTEp1E8nllvEDY1zS01qHZcdPSkGc7Eov7F0RSqhrn0NPwiYq3Y4s9ikYbt0pywh7iSpEjPVDvedWaLSchnOx9BVlbHuBDFdZbbaYaLcYrEhfPsmllsMSPXrIBBib8dm67Qdjy1dSTYV4rI5JVQRE4bwAB0vtSgkDfYPZKjbLo2Ox8Ryi0LSJKarnC+12D+QJi85mheWW5xeaOD6AX1pi+09yYv23iAIOFdqEQDdKYULZaFtMFPtkInpLDUdhrIxSmWb+bpAYlw2mLmkV9ul4mWxIk1NYd9Aht19aR44s8RfPHiBt+7vZTAnZKMPjxX4L3ed5t5Ti0DAnoHMmofG0lUODGXZO5Dh7hML/N1jU7x5by+9sosdJTnr1k/MUBnIxTA0lRu2FqJOaLjQyi/TbDNuqFw5kuOyoSxfemaWu48v8MZd3ViSm1VMGsJYrWEL6exAJJKXcjy2dJX+jEXa1tksu5rFhCH4Q7Jbc6Hc5uBghq6kKaR1yxWuHM7i+QHPzFTJxXWSps7lgxk0VeH4fJ25eof+tEW145JQFCxD422XD/DdY/P85QPn8fyAN+3v4wPXjkhMc0AuYfJLd+zg098f579+8yQN26MrbfLxN27j9Xt6CRCH+mh3ksF8nENbCpHa0MFNOUoNm139aWm0GnBwNM9v3LmbT33/Av/hq8fxfOFls28ogy7VBi1dJWnpjPUmMTQh9x0EK7KnLcePII2vFqE/nBLZri+J4WKjErL5PpqnrlGBDIsrPxB+JKqmkDI1klIi1w8E/EZVhBCFAgxl49EGqChwdqlFNq5HxrFhLDWFXOr6YkqVmxmsiADEdLG2lZguneVXfJmCIMCK6bQdD0vXyMZ1Dm/r4tMPT9CbsbhcwmpBEk53dHFkqsJ/+eZJdvSlIzU1XVX4tbfsjBLBMHRVJW2pq6ZQoYqg2Kyv3lzgrqPz/PZXjjOYjxMzNH7smmEycYNdA2nec2iIv314ggdPl+hKmVRaDrW2y79503bGupM8PVHms49O8r6rh9g7mEFR4MPXj/Cn95xlR1+aG7cXo+vPx41ISWcwE0NThUlwSnJJLGmxkDJ12q4nzFll9zAIRDFme6JzrKqiM5iL67SkkWQ4xhcmrr689+pFn91rPa4ZK/DZRy7w1adn+MgNoySlDHWj4+J4/prpctiNPDPfoNZx1xQkobjJdVuL3HV0nmfGyxwYyUZFdaUpLA9eqohZ/feu3lLg7x6+wN1H5/ng9SPC4LTh8K0jc4z1JKPiz/YCvv7MDJu6Erxhby+GlGwPTTEVRSFmqNy0s5s/v+csD5xa5KYd3RiS/F1tOVi69oosGcZ6kmztSfHlp6Y5OJoXKApFGLtW2w7FlImuqly/rYsvPTnN944v8M4rhzA0hYVah+88P8eugTRDBbH/96Qtyk2H84sNutImfgBPnl9mfKmxZlJbaToECIVUVYG+bIzdAxnuP7lIS5KcQ2uRsAkUNoIathuZZDdZgVKDaMxcSnr81YyEoa2BAK00MtZGte3w/GyDq0ayxAxhSfHYeJmdvSlycYOjszWemqyiKHDVSI7tPUkUoG57fP/sMheWW0IYZ6zA5mKc56ZrfOfEYqTSO5CNceVIFj+AZ6aqHJmuoqsK14zmGZN8uaOzdRQFTs43WKjbXLc5z57+SysIAiwu1/nuw8dptlfyD13TIiPSc5NLK+9bgesu28ItrBRTiZhJb1eG7kJ6jTz16lAUwVXpLWbIpuMv2CBQFIWDu0b4xK++lz/41F0cOTnF0bMzEIipVXchfUlBAUVR2LG5l0/+1gf5zFcf5Qt3P835ySXOTS1CIOBnhWySwwe38s43HiSxTgSkVm9zz6MnWCrXWd2+CO/BxMzymp8f6s3zzjde8ZqDUzdtjycmKpRbTiQ2BZK/WLd5eqpKx/XZ05dmtBin0fGYLLfY1pNEVwXs+vRCg66kSS5hcHK+Qanp0JU0Vk1OBO93stzm+ZkaLcdjOB/nssEMhiZQS09NVml0XLb3pNi2Cva7PmK6Ckqo77vyNVVRMHUFxxNTedcP+MzjU7QcoWDXcn2+dWyBnzm8iS0vgNgIw/MDvntykeWWQ8rU+c7xRS4fyvDeKwZpdDy+f7bE0Zk6QRDw/XPLxA2N/qyFqakcma5xfL5Ote3w3HSV6Uqbazfn6ZEw5T9/8AKZmOAs3X1ykbfu7eXazXmCAL763By1jtgDE6bGZEVhV2+Kpyer3HV8gcFcnONzdbZ1J1luOYyXmnzw0BBnF5t88vsXGOtKoKkKx2ZrkUfg+mg5HsO5OElJqxjJxTm/3MTzA7qTJsWEEQnIZWI6r4Sk8pIn0KmFBqfmGowU4qgqHJ+tk4npazbKTcU4Q7k4X3pmlhu3FcmvWpTHZ+ucW2oyUhCQjRNzdXIJY42xaVoe1A+eWYpGdpuLCQxN4U17evjTe8/zuSem2SMT/9lqmxvXQVFeKJ6cqLDUsBnMxfB8xMJPmRGERowmlaiLoKlCVayiuYJgiFiYIZnUkCalbanCZ8pD3fOlwzei+Cy3HOKGhiGJ87WOgBNamrqqWydeM6ZrdCdN9kn1vmOS77VvKMuhrV3cc2qRbFyoHGqqyly9w6MXKlgysfzVt+3i+2eXOb3YJJcw2C6LtKemqpwrtVCB//dH99CdsvjOySU8P6CnmOQPPnAZtY7HN48LpbYtxQTXjBWxFYVjs+JhuXGswEAuxiPjFVxfTG6uHcnxb9+2m+dn68y1SsQMletH85xaaHB6sYmmKuzrTzNaeHU8UJq2x6nFBi3HZ0sxTnfSpNbx6HR8pioC3rGjWxiweZLvNlez6UtbkdriYkMclOPLLVQF9vSlURAH7lLTJhMz2N6dQFdFN+a7pxbZUkwwnIsznIsRkxNJQ1PpXcUb8fzw9Tr0pi1GpUDIfF2IQyzUbQazMYbzoviarXbkNSiMdSUoymdLURTu2NdHNq7Tl43Rvc4oOWlq/PytY1y7pcjdxxdoOT4HhrNcPpLFCQKatoelq7zryiFipnoJEuda881rxgr8u7fu4tFzJbEJFRLR5MDQVN591RDdmRin5+rU2g7DhQQD+TgDuZicCin89M2buXF7V1Rk37KzG12uYT+AsJTTpYpU2/UjlT1DVWhKGInd8aPJifCPEkWmgEOJaZqmiu+Zqhop9lXawnrA9gRcMmEaUUG8XunxtR6KorB7IMOHrx/lb74/ztMXygwVhJDMZKnJjTu6+ec3b44OdFWB67YWufvoPL/xhaNs7RHCBu+8aoitvSk0VeH9145wZr7Or/7v59g7lCFp6ZTqNstNm1972+5IqfHlxM6BNB+4doS/e2SCY9NVerMxjk1Xma92+JW37CQn17GqCKjfZx+Z4JmJioDLKMLw/EPXb+LqsQKqonDH/j6en6rwn752nK8+PUM+YVBpOcyU23zs9Vu5flvXy762bNzgZ24b4z9+9Ti/8Omn2dEvnu3ZSpuUpfObP7KHTFzlwEiWdx0a4i/vP8/T42WKKZPnpqpUWw6//rZdpKQ1wDVbC3z+0Ul++yvHuHpLgZbtcX6pSd+6Bsq9Jxb4zEMX2NqbIp8wKTVsHjtX4rqtRboyFk3bjRoHqqKQsXQW6jamptKdNDE0IoGHELURwgBfa/FyZbA1ReGR8WV60ybbe1LMVDo8cLbEnr4055aafOfEIrdt76LteHzh2Vk+fGiInpTJl4/MUWu7HB4r4EreBIiGQcwQ0PPRQpycbH4dn6tz98lF3rizm6b8Wz925SB9EsJ/YbnFrduKbJXQ/ReLg7tG+PKf/BxeEPDsdI3hXGxNIr4+ugvpiCutqwpvuXkfh/aNousa/d3Z6OdcP+CpqSoz1TbXbcrzOx+/k0bLJp2MvWDRBaG4wE4O7RvlwkyJUqVBAKSlKXBY4KwPRVHo68ry8Q/dxofvvJapuTLL1SZBEJCSv9tTSBOzjIsmSpuHuvj87/8U5aYtG5Filw8IUBGwMFvCaf0gIJtORNOd10p4fsA3js5zvtTisqEMT0xUqEs+cKnp8DePTTFaiBMzVD7zxBTvu2KATEzn/zwzy4evHmIoF6fcdPhfT8/wY1cOkpMopWenqtiez1hXEk1Okk8vNPj041Ps6k2RSxiUGg5BIKxbPv34FF1Jk0LC5O+fnuHt+3rZK61u1kfc0NA0laS5cl6t/rkVJK3gdw3nYnzkmmH8AP70/vPcd6bEaDHxopNsXVUERFHCpb9/tsQ3ji3QcX2ycZ13Xz5AwxZN9B+/Zlheg/jd1+3s4tCmHBOlFm/f3yfyJnkPvndqibSl8TOHBYrmgTMlvvb8PPsGMsLb0xV5yb+8ZUvkT6fJxlombvCBKwf53e+c5sqRLJau8u3ji7hewEy1jaoq3Hmgj2LSxPVEnroanhnGQFb4SXWlTPozFtPVNn1pC0vXonx8JBdnstIWXNtXMBB4yWJKAR4bX+Y7x+dRFIWulMlHbxhdUzCZmsq1Wwo8OVHhui2Ftc+LIuTPv31sHlVR6ElbfPTwpgiCBpBLGHzo6mG+8uwsR2fqDBfi/OR1I5i6wcHhHD91eBOffmyKbxydpydlslMe/oqqsF9W94Wkyd6BDJqi0JcRYgICfgXfO7lE0xaEtsFcjB+/flPkdp0wNKkIRATDe262RsP2GMgIo9RTiw0cP+DUQoMdPSl60yaTlTbH5uvs7k1xZrGJ7fmcXmySMDT296d5brbOdLXD7t4Ue/pSHJ2roykKe/uECMfqLvhg1qLccnh2pkbPuomBoats7k7y5l3d3Hd2mbOlJvm44Gm9YV8XpqbQdn0qtscHDw1iez73nlmmkDA4Md/gjl3dUgJS4bGJCp4fsKcvxYPnytQ6oquvqQpXDGfoSgjPsLrtsX8ww86eJLm4wbMzNeKGxuHNOR4ar3Cm1KQradJ2fd60qxtTOkYvNh1Sli7Gr/FXz7z3m1JRLh83+PJz89y5r5cLpRbfObnI1ZtyokAptXjr3l6OTNd4dqbG1mKC755a5NrRPLv7UnzvtJD33yIFE3w/wPF9pipt4obGQ+eWhXfVphxTlTZzNTtSiOlJm1iGmOTde6bErp4kN20tEgQBz05XeWqqyvbuJPedWaLWyTKSj/Gpx6bY3p2kkDD44pFZ3ntwAFNT+fJz8+zuS+H5wmA6LKaCIKA3a/EjVwxG07HVKkDhJOKG7UU6QCamc0j6Od17psRIPs6WYoIbd7xwElq3PRbrNqOFOKauct3WAtdtLVzyZxVFwVMUPnjdCNmYzky1w10nlyTcQfBT1kfM0Hj9bsFpsF2fM6UWY10JVIWLRFzC5zMICV2KKDTvOV3iPZf1ryQz8ntBAMtNGxSFvFTlHMzGIoWftKWvmYi/lhLS/lycj9wwyvC6ZsSewSwfvH5TVIjomsr7rx1h10Cae08sMltuEzNUbtvdwy27ei7iON28sxtFgftPLjK13KI3a2EZavT9gVyM3/7RvdxzfIGnx8vUWi59uRh3HOhbcy2D+TgfvH6EbMJYI7qyOgxN5QPXjbC1N8X3ji8wW2lzYCTHG/b0Rp54vi+mUs9cqPBTN29hMC868E3b4xvPzvLfvnmSP/3wQbpSouv7y2/eyf0nF3n0bIlKyyGXMDm8vYvdA5lI5v7dh4YjHtSZpSb9aYti2uLDhzexrS8VvddDWwr8/vsO8JlHJzkyXaMvZbB3MMu124okrBXT3p+4cTM7+zPcf2KB+WqHq7cUeOPeXsZ6U9H7HutJ8ctv3cnfPz7FQs2mJ2Pxi7dvp9ZyqEgiNcDBTXnmqm3OzjeYKDVJxXQ+essWbt3VQyZu0LAFd9KUKq+mpq4Y3L9GpNDXR63jstwU/nfVjivh8irVjks2pktxGqGCeimkQtLU2NmT4pmpKlu7kxyZqbK5mCAT17n71KIwQJfqtU3b43yphaWrnFls8JGrhxnKrRSsiqKwtStBn+xKXzYk9js/CHhqssK+/jT7B9IEARydFbyWvoxFEAj7hUObci/rHifiJmMj3bh+gJlJ0500SUn/Mj/ai4ngX34AD55bZktXgr6USTYVJ5dOCN6VnD6GcLFtXQmen61Rt11Ge/OXfH3xe2v/vqJANh1nb2pA8LeVFb5iIDmHqsJFe564ToViLrXG12f1a4QQrbAWCgDT0Ngy1EXbXVHy9QJh+m1oYr26knP4QtzDVzvqHZcjMzXef8VAZL/xqUcnAXh2WkxDb9paRFVgqtLm8QsV3nlZPwO5GM9N1xjMxjgx3yBt6fRnBHxuX3+aRsfj0Qvl6HUC4P4zJfb2Z/jRA31r7sORmQa1tsu7LhvA0lXKLYeHzi1HRQgKGIaGZeoY+lo0wUuFqiiMFhOCu0fAWFeSZ6ar4vN4EeiaH8B4qcXTU1WqbZe5WkcqXwcRj0lBXNv6YkPkH/J7ihJ93/F8zi422T+4YrK+pStBveOy3FqxT9jWnSRtCb7U6j+dtnSJitLISD5byDvf1ZvmkfNlfv+ec1w+lOHwlgJdKZOW49GS1IWYvqKwPJC1onXcnRQCSFlZjyiK4K3ueAXCQmG8ZMa7tTvJv719u4DDBAi+yCW4BbWOw47eJJtXeR6BUNb6tTdtx3Z9UARMTlelzV3IMwGu3ZLn4HBWyokL/KcvyeSHRvMkYzqnFpu8cUcXcUNA6gxN5UNXD2PpKjt6U2yT6lIHR7JcPpxFUeDgSJZ9gxk6rtiINxcTpOQHZ3s+vWmT4XxMQLfkNd+4ZW3CeGg4F/23It/DlmJcSCciFkBv2sTShZ+QH4hJTalps9gQk4belMnmYkLwN4KAXb0pAWuUfK0DA2nRnVfgofpacmxSqvwlDC3avHJx0YFTFQXXFopzMflznh9I3w+xMAwpM9+UUJKpSoeRfIxMTGdYwigfGa8wlI1x5XCGG7cUODZX5+5TS1yzKUfbEaILIUG6YXuQFDjg8BoC4NBwlhPzDe49U2JvX4qdPclXJQGYqXb40FWDJE2NStvhxHwdS06IbtxSYKnp8Nknp6m0HJ6YrIrOYtIknzA4MlNjV6/o2m/rTnLDlpUDzULl4FBWCKA0bGaqHQxV4fKhLEema1w5kmXrqhH6jp4U50utCL7qBfD0VJVrR/Ps7EnSlTR56HyZgazwt7ppa4G8lGgvNR360hZeEGBqCrsH06IAUAR/q9Zx8f0gOrRAdJTSMVEkeH7AbK2D6wW0XY9UIBTspisdelLmmmLe8XzmajYtyYcqJg0aEv5wYblFx8vRkzLJxw2WW2K6U2kJkYyBbCzCO2/tSpCQcv4BKxh0Pwjoy1hYmjA/DtV3lptCaTOmqxyfb/Dw+WVcv0A+YdCXtvADWGjYNDoCt522NECh0nFZaji0XS+yaYh4a3K5KYqQZV4dCkS2B+LzEHyqcNO2vbB7/OrK+Q8V4vzEjZvXHLqKorB/OMv+YZEghomYoYnC4KotBWEgKt/PpZ47y9B4/Z5ebtvdK4Q6VOWigqsrbfHOKwdlkb7yM5OVNoYUmxkpJvhnh0eZKLdfVGjG0jVu2N7F4W1dYi+Xfyu8tlrb5bOPTHDVlgI/cePmNXyBpKXxn79+knLDJhs3cHwfQ1e5dXcPN+/qjhI0EEVPVXogvuMKIevr+gGnF5skTY1CwuAnb9wMEHENDE1hc3eSf/mGbdx9aomrhrP0paXhrhdg+yIpNDSVm3Z0cd22IpqiRFxg1w9w5P0H2D2Y4d/2rW0ieYF4JlXZ6OjOWPzYdZtQEF/3JIHNDwRnMUR7GKp4hkKvmtdyzNU6FJMmHU9Aqpu2TxVImkKKeHy5RcxQBX/4UiqEimiIfu7JaeZqHU7NN3jzHtEIqLWFfclcrQPAFcNZBrOxCLqdeLnCDoEo0JOF8OeFOFFDql0KtTZh1Luauxmex2v+1CpO1eMTFU4tNnnDji6pwupy/7llNEWYvu7uS7OrJ8kTk1XuP7fMuVKLgazFDZuFbPPD42WWmjb5uMF1o3kSphYljS8WfgAPn1+mN20xkLW4/+wyh0ZyxA2VR8bLLDRscjGD6zbnMDWVJyarTJQFf+baTTlMXeW+MyVUVaHSctneneCywcyaaYXjBRydqzOci1GUjdOGLUxqz5WabO0SudZ6SfGE/LeiKLyE48erHiHyIRsXk7ds3Iju/XzNZrzU5G8eE8VVrePSlTRRFbEOv318geu2FHh6qsLlQ9loH7jUevQk5HRPf/qi4mOpYTNZbvOZJ6aiRtJwPr4C4TMNfv1n3szPvf9m+rqzBKxVK14dYdG8Gt4mJobi532CSF/gxeLsUpM/e3CcW7Z3cdlghnNLTb57cvElfuvFQ0FO1VehXcL/XH09oeLf+lBXXXhYCIVRTBr87A2jnJyvc+/pEn/wvXP83A2jDOZixHQxoYtLX9hL3bkwf/Vk7RFC/61XKCr20pMpicU0L/GAO57PYt1mttrh7uOL3Hmg/yJVqUv9/nS1zZnFJoamcmAgzdmlJrWOMOzc25dmsWZHieC2LlGojOTjzNVtmazBqaUWs7UOm2XHdL5uc3KhgaEq7B/IUG07nJavsX8gzXLT5cmpKktNh90Sj318riEVksTm8fxcnXpHmHrl4wbPzdYEH8jU2N+XYrLS5nyphev7EX9jvt6hJ2UxU21TSJjk4gEXyi2KCVPybBTikuTn+QETlVZU4duemIz1Z2JCsU0ulqSpsa03RVJ2SMeX2xyfbzBRbnP1pizrI2lqJC2dIzM1wZVIGHRLh+cnJqtkY3oEKau0XbqSgrSXsjTmG4JH05s2ma/buL6Q8SwkDObqNsstl6FcjMcmKqQtjfHlFpcPXgwbCALxe0lLyIovNmzglVf3/xihKSLBUhCHer3jYSWEamJYDAcgfSNcFhsCqhDTNbYULfngC8zsaqnzkwsNHji7zOZCXCjwvcKk2/cDCUvTog5IR8qrxgxNdGwQ0B0/CMjFdd66p4dHxss8NVXl1m1Ftncn0VXB6RLE6xA/HUReIEEQ8PRUlWemq/SmLU7MN+jabEIAddvlntMlbt5aYI+Ugn9yssrJhQbFpIGlqdwwVqDadpmqtCm3XGarnUgu/vELZaarYn1YkmcUCkU8dH6ZD1wxSJcuktK5WoenpqrSEFvj9p3d3Hu6xMHhDFtll0xXFfb0pZkst1luuczWbFRFoTdt8ex0ledn62TjOqVzy7x1dw8B8MUjc/SkTEpNh467wsIIEIeTJeXa1Yh/okSJUQiNihkapaZNLm5QlQqB1Y5Lb8pCf5WoU8stB8fzycUMzpZEIdCbtqi1XQLEdLEsbQ9CoZuRXIyUqUfdvVA51JRCK2EDJiXX3ELDptxyqXZchrMCgqkpCvmEwblSk96UxWSlLSHMKtu6EkxV29x7dpltxQTbuhPk4wanl5rRdZdbDhOVtrR0EJP2hKFxeklg0bcWE6SsixPfQBYSlaZD0/ZISN5pqeHw0OkS+aQR2VA0bC9Sc1IU8ZpAJGygKuI8qrYFH6wnaWJ7Pk9NVQHY05eiO2ny5FSVWsejK2FwcChD3JBqmao4qxbqNs/O1Oh4Pnt6U6iKwpGZmmjwaSrXjuaYLLc5sdBAVxUuH8wQ01WenBRc2K5khpma4FqYmoqqwvWjec4sNZmtdZiv2xzoT7OjJ8my3Hd8iN5DWCSauhpZBXh+QKUt1GAFyTwUifHJxPRXtfgPlU2z0ttQUcSaS5qCM5WLG1FDD8TndcWuITqOy8GdQyiKIOynLZ0Hzi6jawrDUsWxL2Ph+QF37O6JnmFFEdAoXVWYlfsQrBXhUKV4Tzg1DV9jptKJ4PqLDZstXStKjkEg4L9e4EfqbOHfC5UuQSRycfn+Dg5lObvUouWIosz2Ak7MN3j7XjFtv+9MiW1dCfb2pTg+X+fw5rxonOkqD4+XqXZcDo3keOh8mSMzNa6+xPT+UqEqQq30u6eXSFtCMCsb03l8okKp5XBoJMcj42Wema7RnTQ5uySa0GdLTe47W+KGLQWOzzd48+5uYrrKXSeX2NmTWpO7GZooMG1PdPYX6raATgUwK20SelIWqgJLDQddIjKmKx0hQJOLMVvt4Hg++YQwpu9Omsw3bHpTl55S/lOHSNyhLT+/jruiQJm2dLb3pPjgVYPROggLpi3FBL4f8PRkhXLTZdeqKfWlQlUEB6jcci6a5CdNjdFCgo9cPRz9fU1dNZVRFEZH+9iMQsN2GS8L2oYlBwrh/tewXVHAampUTPmBQFPdsq2LgIBT8401gg8BSD52+H/ivU+V25iayq3bisQMjaOztYtg8IZsYIUKheJSX/geaKrC9p4Ux+fqvG6HWHcn5xukY/oalNsPEh1XnPEHBjNs6UrwH799molyixH5XkNhjtlaJ5qA1W3hK1VpuxgSebTQsBkrJihJhFWt41HvCMGutuPRcDzGii+c0/6D2l6VlsOfPzDOQq3DlZtyHB4rvGSnKBQn6EtbHJeEz+lqh+FcjCCAY/P1aCMbLcQ4MlujO3UxP2o4F+P0YgMvCFB80fHf0yeKpJiu4oSvsSBeoydt0p0y2T+QJicJwP1Zi/MlYdQ6UW7Tcjz29KV49EKFXb0pZmsdbh4r8uiFMtV8jPNSCaQnbaEikp/QmyAT08nFdSptF98n6vKHSoCeTKQ9OXJcbNj4gZA3Hs6thfPsHszwiR+7nISlcXKhSXfKoOl4HBzKMJSN0bQ99kip4rBDfXhzjnOlFr4vRs1xQ+W2bUXOLrWodzy6kgGZmM7BwQyztQ4pCUkzVIVKW0hFXjOalCINIjnOxXS2dSWktn+GuZrN5YMZRnIx6rbH7r4VueSwCJiv23SnDLZ2vTpTKRAH63LTIS/JhLt703h+wHy9Q9sVkuehYVtf2mIkH+fQSBYvhHu9wGUfn6uzuRDnprEC3zm5SLUt/ZaQggauL6cD4ue9QMrnKgGuL6YehaTJdKXNQDbGdLUjlPXkbrT+Zb0AetImd+7r5aHzZZ6arLKtOxn5XYAo0MJDTlWI/DCOzNS4YUuBsWIiwoGrqsKO7iTPzdTW+J2Em9Hu3jT9GQtDVRjMxtjZm2Ky3OamVc+17QX0pk3euHNFolqR8IZnpqprWj+ZmMHrthfx/IDPPDFDpe3iSpEWEJu9F4hEfv9AmsWGzY1b8uia8NZ69EKFnb0pelMm950tcXqxSYDoRL15Tw8n5hs8cLa08rlL7pOJ5EAFQWS4aMgDx9RUfB9SqiKnyAGO5+No4UTnZS+zf/SYLLdImBq5mBEZfrtewHi5xZaCOMDrHY+lZotdPSlcXxQ8E5UW5ZaA62YsnWrHjabvoUx4+O+pSoepSpsDAxnisuAxNdE4OD7fIKZrPDFZ5fDmHMfmGmRiGhlLJ2FojOTjEZQ1GzN4errKrp4US02HmUqHaselL21xasGL1r6iwCMTFW7dWrhofadjBu84OMhf3HeOXyg9RW9G2DZMLDVpuz4/fcsWulJiOps0tUgNLpTZDo2349JoVFFEomtoajQF2y33yeNzDXrHLLqTJpbmcrbUZH9/eo2qZRCISW9fxmKm2uF8qUV/RiR+hzfnufvUEuWWw/Nzda4azlKIG1HiM1qIM1MVE5SO6+ED12/Occ/pEuWWw4VloT7l+gHZuC4V+1b5V8n/F3VrV92sMBEQ6AOVescjpqsRpyGfePWEU3rTViSMEU7FQ0iXAox1JdZA3lRV4effewM/957Dcooq7t+BwQz/59lZ3rRLJFqKonDlSI6T81N86tFJ0jEd1wu4fXe3EEvZXOBLR+Z4drqKH8C+gTT7B0STbzQf5xvHFlAVYcB++VCWa0bzfPaJaT7/1DQdqYy6q1dwAEMkTEg9iKYrXLqTHX40hqawnsqUTxgM5+KiyaMoEcRIV4WQSoiqmSy3KTUdHvMqkSnzyw1FUejLWBQTJs/O1PjotcOoipgez9c6PHahItVNxXncm7YoJAyCIMGR6TqOJxp1I7l4NH1enyyvPrvDIn6pYVNMCDRO2tQ5uyQoBw3bY3Mhju+Ls2Sm1iYd07lQbrGzJ0XS1JistHG8gGrHpT/92phZpS1xD753aolrN/vRfQOxnp6crPD4hQoD2RiVlsOmQpy+TExAU3tTfPPYArv7UlEx0HY8JsptLiy3KDcdASNNWxSTBlcOZ/n60XlykvvecT1296bZ3pPkvjMlHj6/zOZiglrbpTdtRRoDIepCkQ2WmCyqBHdS7IMxQ4sgb9aqBakqChdKLf7Hg+N0HJH3vPvgAIqiMF5qcteJRS5I/vZfPHyB0UKCN+zsZrQQx/ED/uqRSXRNodx0Iu5hGLv703zqkQn+xwPjZGI6b9nbE+1D4f68ekkrisLN24qcWWzwiXvPkTQ1pipt7tzfJ8XbxBrTZSM5vH4gUjgGZONLAX9FMv2R8TIPn1smnzCodcQZv3md5YUXBNLHS6HWdsjEDWZrHcFtKyZo2EKK3tI1NNXFdn0qbYeYoTEnf+6lntEfqJgKx4nZuMHHbhbwiUxcjyBs4WbleMJ0dPX42AvgmemqPIiICOaZmA4BzNU7GKZOxtLIyqRivUxkCIEIH3g/EDermDCJG4LM/sx0jZy8Js8XErO6Kir38KYYq2AuLVeohWVihiSy+2Lhx3QJOYSDQ1mOzdc5Od9gX3+aTEyn7aqRaEG948mEVnTkDFV0PCttJ+rwZCwdxw8YySciw9H1n5GhqWRXmd1mYjp7+lLMVDvMSaPXALF5FpMmz05XKSRM9sgCUODMfZaaNtmYRiEhurQdx2ckL8QRllsO9Y6HqakUEjo9KcHbOjkveGH9GYvJcgtDE4Icrh+wuSg4DedKTWKGxqZ8LPoMFEVhJB9nJP/qiE6sjiuGsnz92DyGqpIwNXb0JDk6W6fe8fjikTmqbZcrh7OkLI0bxwp86/gipxcbAFwnVZ7CorzecYkZKpqisLUryf1nS9FEpE8qdakKbOtOcN+ZEicWGtw0JuT07z9bEgIgikjubxjLc3hznm+fWOTMUhPbDXj9jiKGptAlFSUDJIRTVyk1bO46uYiiKDQ6HleNZAVESFNIKGIDCpdOIK9DQTwPkS+NwhoDwkvF1ZuyHJ3TefBciZSpc/uu7khpcH0oikgCX44Uc8xQ0VUVTRFJtSvVMQW6NZCKhZf+XQFV9Vhq2HRcj5FcnL6MxdmlZjRNTqxTjFSVFdfyuDQiDqd2CgoFKekeRlHKqiYMPZJVXy8Z/08Z3SlBiO1N+XIfEwdkUvI6FxrCkiG0chCKb3I6qRDx6Vzfp5iIExBwXO5V0XOKaEQNZdd6+IRTIhB/ZyQXZ7Zq03EDelM6cUOlmDAiWE/a0tBW/X4xKeT2u1Mmc7UOC3WblCzCiolLrz9NVfiRKwfZOZDmmQtlSg0bS9e4aWc3ewczwopBEV4hsBZerhlalEQoKBcddOH0P2zM+YGQxZ2stNmUjyHI8hfHk1NVqTal0ZTw6UxMoBAEhFqsE0v6GcKlxBYUspa25meKSZOnp2t0JUyRkCoXSypHH9C6UFWp1hcIyfGkqeH6gYT5vroGvgpivbWcIOI1mppCQpqYh1yg1bB+TVUirdC2nIDu7ktRTA4zKAVrCAIKCYMPHxri9GKDjuvTm7bISK7j9VvyjBTizFSETP1wLh5xRvcOZEhYOksNYZHQcX26kibvPtjPuaUmMV1jrFtMSwPglm1d6OpKU+zliCQEgsAp/7HS1Vcv9etyfdieH3XyCwmDQsLg+s15fNk4ifKcYGWPvFRDMggClhoCar4pH+P4fINDI1kKCYOUpXHD5gJBEKBrKqcWGswtNHC8gFLLkXuyEhW8LwTTDZu/4UTQ9wM6673D5PvNxnRSls74cou266Gr4r3EJBdFVxV6UhbPz9bW7EWvduiqwtv39/Lt44vcc2qJnb0pBrKCb5dLGLzn4AAPni1xdLZOPmEwKhN0RVG4ejSP7QVcNZKL8reW40fCXVu7kxybrQFQSBrsHRCF+1NTVVxP5FK7etN0JU0+cMUg951Z4sxig3TMiPKKcD1E9h0yXc/7Kw3YMGKXgFMowC3bu+jPWDRsjzGJ8gJxhl+/pcD1m1f9DSl9PlKI8ws3b2a81CRp6mzpStDoeNE0zAtE8+Pnb9zMdKVNwlyr3JkwNX7yuhG6U1b087qqUEgY/PThTZycb9ByPN66r5ehnIA0BsCd+3vRVZXlpkPH8+mXUP+Dw1l296WxNJUPXDkYFW3vu2IQQxMTqbSE2cYNlbGui0VkVEQzo2m7xA2Nekfwpk1PQNc9HRzPpu160aTZ0lVSphblIgnjxffalyymHM+PoCXhA9pxPCHeIOFlwvclIG6oQMByy5H8ClHRCo8eOX4MhOS44wfYXhBBcY7NNcR4OGtRbbucXmyy1HToTpq4fsBkpU255TBVbdObtpiqtKm2XSbKbTbl43QlhC9UNqYzWkhge754Hakoo6qCFHlMSiuamspUpUOp6URKbqEMZtzQSFl6tGB1RQhZzNY6xKQ0+EA2FsEwXOmpkYsbTFfb9GcsdFXIN+uKyBYzMYNcTJB0M5pCw/awPaGJH40aZRKctvSoEu9Lm2RiOrPVDqqiUGo4EXyw6QiMckzXKCZEMqNrCnVbKJstN51olNudMlloCC5WytKYrXXQVdHlqLSF0mAhYZCWiYSiQFMSfy8st8gnDCbLbTRVJOchFNB2fZKWRqPjRZ1JeHkEyR9WXDmSZVt3UhTECQNDfo5jXQlu21aMuDJt16eQNHjDzi58Cf8IIQmXDWXIyvueSxgkDWHe/I59fTRsl0xMJ2ZoEbxqMCsUnTIxMRnSDYWDQ1n29adJmGFiptCfsXjXgT5KUnY0YYrP+fad3eiqQrXtcM1oXsI+FV63o4uWhEBlYkYknyzgaqy0sANRMjjysCsmTU7ON1AV4cFQSBj4gdgUOq6AsgiZdZXlpstgRiQq3z6xQFN+3dJUqi3BT0paazfM1RHCsBw/oOF4ZGSTYLFhc2G5JVWdRAKeMFQmyy3Sls7ZpRa7esTY3JBCKgsNwamKy0lIIWGwuzclEiJJKn3w3DKztU5UkIahKEo0sncDXyZ6csLjC7lpV3aYwiRuttamO2lhB0Ekl/pC7/OHHaamMJKLEzc0BjIxYdqsKZFwRkxX6UtbUTfZ0hRajieUUdsi6Z+pdjA1lemaUCnKxvQ15o9hpzOMpKlFvL6VCebKpARWEsSzpSYjuTgxXWVOeu3N1+0VYjIhL000VlqOR0/KjCYxIF6j6XikLZ2G7RE3VIa7Eoz1pqiECqhyL6x1XGodl56UgEznEybVtlC3Cw3Pw4Pa9Xy8QFg01Dou2ZhohhydE534rV0J4oYwf56pdkjIYvXkguAnHp9vYParJE0t8gTMxQXM11BF4RUzNGK6ylgxzkPny8QNjb1S1OLUovByObvUwtCVCGoTFvVt18dxfdquR6XtCAEfx5dKlivCMSsJtxJ1XnVVoS+9QpoOAii3xf5hait+N69WhFNBTVGESa0m3tNkuRVxONqOaNwlTKHSVWk7ZGMCOTCUjdFyPXoz4iwsNZ3ItiJlahSSJoOZWEQVCCd1pq4wkLPQFJWm47LY6Miuv89QLoalK6RjGudKTYayMaHK2p+mYXtU28Kzzg8CUqZOuS3MO80XaCKtj7rt8fhEhfm6zWMTFZqOR1/akrxWcT/SljBZ1hQBDbv/7DKD2RaHN+c5OJTlu6cW+eJzc+iqwg2bCyRNjccmKiw0bB67UKFl++zqvRjh4QUiKd8/kGZTPs5dJ5cYKwre090nl/jS83NoipimjnUluFBu88Xn5vD8gGs25TA1RV6baMSk5HkfcnFUZQWt4MnmuO35xHUNx/PZlI/T8XwBd5NN5CAI6EoauJJmkLR0hnPxqOESwj5XCoNXPxRFoZg0ec/l/RFvMWxO+IGYar778gFURTS4w4a4qggBsTfv6UFTBIe55frEDJXX7Shie0FkLG9K+5ha2+XKkZyUVBcT5Ybtolo6A1mLt+/ri9YNiOm2K5EIaUuYygYB8nxS6XjBKmieEjUMNXWF6xMgzoxQiCUMx/NxfJ8R+TkCxKXi9GSlxbauJN0pk5RsmHlBQMJUWax3yMTEVE1RFHIJnb6ssPxBEed90hTcw0xMp9ZxAR3bE6rXHVfAgEcKcRYbNi3Xp2l7TFba+EHAUC7GTLVDpe1SiBuctZvUbY+hbIyulBBH68/Gos+gNyOm4k3HY/9gGgWFuhSXqnXcyJ4nbJL2poX/V8v2Iqg/smFp6gqb8nFUVYnERELUgS4/w5BL9YLrKXghdzAZ9Y4bvVnfD6KusCZHb3FDY6HeIW5oDGbjgCC+Z2OGGJPpKnXbozctdOiDQCRe1Y5LXNdImBoPnV+mPxOTmHOTZ6arYpSdtiJ+z0LdxvHEh5qPGyzJ6YCpKXQnTbwgYE5iebuSRuQpE9NVkqaOpSu0HJ9yy6U7ZUgD0hWPmULCoNwSB31INBSLwqDeEclzw/bE4pbQl3CTW27aTFbaDGVjnCs1o47sXK1D3NQYzsZZatqkLI3xUkuqhwgZzWxMwHJcTyS6KUnOH1gnqzspYYgtx8PUVdqOj6IIeMl0pUM6ptObMpmqtKl3PIpJg5L04TJ1lYylM1Fusbc/zXiphaIoDGVjHJ2roauCNzAgYY/buoRx3zPTQnVuseFgaEpE8u5OmkxXO2ztSlBq2nSnLBbqHfJxk0pbFNKX0vh/NeOJiQrjyy3esa+Xtuszviy4b5YmPgtNVSi1HHpSJpPlNm3XYzATw5Ow1IW6Td12KcRN6rbLsIRIXCi3yMUNmrYXFWJBICcrrkdfOhapAY3k4pGz+kLDptoWnkchzMLU1IjbEnYl67ZIDJu2S9P20TUlUo4SG7IXYfrDJCZhiITlgbPLBASkJJyhL2OKQqTakZPFONeM5nh+psbJhSaKAlu7EuyXRNmG7XHv6RKVtsNVwzk2F+M8NSU4eNu6k1ECOFlu89hEmcW64CDt6UvRm7Z4fKKCHwgvmf0DGbZ2JVho2Nx/poSqKGRjoimxuy+F4wXcf7bEfM1ma1eCK0eyVFouD40vU2mJDfLGsTwxQ+Ph82Wmq+3oOb1prBjBihRFodZxKTVtDFWYHCuIQyhlCQhY2tJZbjpkYjqLDQGDWW6JvcrxfHrTsRdfTD+kiLq+/oo/FojkptJ2WWqKQnO+3qEnKeBvGTmxsjTBXyu3HJqOT8YS0wtL7rEhHLgi97gwOXe8gNNLjUg9rjdtUmo4DOVizNaE30ZvymK+viKmY2gK48sCPpxPGHLiJw7+XFxwFHtSJhfKbRzPZ0Du7YqiMFURxbWCWF+CpxEwmI0zVxPmiQqikRPTNRq24LFNVFpkLKF415ReawqisRMQUGsLmKPvB7RcmfCFz2IQkJJJfMP2BFcCweX1/bWy+LoqxAPihhZNe11fPFOhIpqpqZTbLkEgUBWmJs44BYF20DQh7x4exrYX8PB4mQMDaWarNk3HY09vknLLwdSFVUbMUGVHVCFuqJHvnej0i85+6OvnyMIxhBR7fkB36rUBnQrD9X1OLzZImjqOtBgJCd6ehIMV5H7Zl7YoS8+mpkx0bFfwkhVFFNV96VikSttyPObrgo8T7psd14+K3bAZMl1tk4uLhl9v2qIavoYjmjvrX6M/HYum+JGPVyA4beHeokTvL5CmxCIs+br1jhtBrduyiRxyYJdbgluUtnRCI/i2TEwz0Tr2IpiTgNY5MildiWxMJxc3JKoHmraPporC3fZ8aTKtR9Aszw+o217EowxtWhKy0G9ISf7wXiZM0VRSkNBpOQlPmRoLDdE8MWSzuJgwmKt36E5aOH6A6/lREdGXFtNv1/M5vdQkG9Ojr70WIjSRrclpf3hPwmR9tbR7TNdwfZ/+TEzCr33OS4+z1VxNFSHMFTcEv3wgG8OSTbti0mS55VyU66VNndlae0VQRzZYwml40wkn5AYtx0NTFIGkMnXZGFxRuywkTLJxA8/3+YN7znHt5jzXS0E1AWMXDdvxZUFZcT2xh+iqgEu3HY89fekIAtd2BLoshO2lLYPllo3tBnQ8j2LCxPEC0jGdattBVwWFJRS4SlmapL6I88d2fSlWE7C/P8Nyy6HUFA3p5ZaQiw9tL+bqNhlLp5AwoiZZxhJ+kfmEQakp0A8z1TYJU+S/4oyKc2y+xlBWcNvbjjinmrbI7c8vt+hNWTi+aBC0ZXO5kBBcfwXYUkyuEURqy+fhxfLalyFAAbmYHm2GMUONOmogNpmshLTVbRcVUWi1HFFZhwdQy/bwdAHZ0xQhV6wgxsWZmC7UwiRMJWnp6AokTVV8EIGYeiUM0Ztr2B4JQ3zAmqLgQwQZ0lVxEIWmj8K41SYuOwVJU0xyljwbXf6864sNACXA0hUWGkKlTVMVOZUThWMurl7SHDEmzX8rbRddUwkC0dmIGSrFhElHjg7jUmSgmDQxNRW3vbbSNXWVXFyn415c3/ZlLFm4mNQ7Lm3HpydloqsCItaU08KQ7GjpQr3O88VG2HF9ebCI6YvrBQRSLtOWoggJQ2MgY4lOaSCkpBVExb7cElNCRQFDVdmUVzFUJSL0isPDiwj+r7UY60owkBUJR02amgYBoK3DxQchdMEgYWrM1+0IRpW2dDF5CoJI1Sj8naQpYKph9xgEfjkX14X3kaZSbjuimEIkE2GilZCbc0xHTpaC6NnQ5GHUcX1UVXT4kHwUwZNSQIW47EY1bU8oAWYsrt+cw/UD0pZO0/Fo2h4HBtIcGMgQM1Y+v8sGMxHfQFHEBDaQ8KkrRzL4voCBlVsOo4U4tuszXRGCKwlTYyBr8dZMT3QLVXm/Xi9l15caIoGcq4tp6K3bitJQVzxXM9U2MV3jwICwM/DkIWe7PpcNZijEDUxdpdERHeXdfcJuwNCEIlooRpCPG9HBQCBgNUEQYEXCI+JA9Hwhcx/BixHdupiu8hLNpx9qLDY66OqK51eYzKQsTTaiwuvUsAwBh3A8USjYbhBNrLOWDor4vbbj0eiItbLcsiPVw5lqGxAd196URdLUcHyfRkckc5W2Sy5msNjsMFtrS6iUOKRbjihWbDkdKrcd0qaOrfmShyaT04wVNQfCEI0GyMZEsZKSePlQoa3eEbj2liymOq5Ppe3SsD1yMaG6lY+bkYql6/v4PpEQw3LTjiaSCgooAYaiRibOq2F/thuIhFMRCdGFciuC7DgdsZeGCIWwgysKVYV6xyFtiWmvKKhE8tV0fFR3pZPdk7JIGKKAPz7fIAgEj0tTw8mTEhW7qiJEaXR5lmqKfK6VtfyBlrMyQRCQw9dW4wrElEpA78R/LzQ68vMj4jHGTY2241OSxPxQWAOICiJX8rHaUhQipovGXzjhWKiLxC2834aqCsiqL/aDpKlhr+qKE6zAYXVVCIT4vvB6jK0SyQqTsNDaQUAYRYPLlesoCAIyMSOamImiRRQqlbYjBYaUCH1jyb+11LSJ61rUHLE9j7QlPveUtTIVCuS0uCr98cKwdBVTU3AQZ202rkb3XJd0hpgslEB05XPyZyotgWxJyOeu0nGiBoOpqTQ9F9vzWW7axGRnX1OUNTwyIQbjoyniefB9eW5U26QtnXrHXcMH1FSF7auab6+lCEV6AKEYGo3lpYcbUgpeU9H8FVGS8JmvtF2KkkZRTJiRYIHYO4Q4S3fKWiNuAWtzvbihMpCNiSaabMI4co1pirICWVekeFYgRNHEeRVIz1IFsOm4Pgt1wa+8Y08P6ZjOQr0j81cDTVnh+gcB0XAknLqEaoOZmChaQDTQszGDcsuRzRwxVImjRhM9gT4T66U7ZZK2hPdjIJEDMVPD8QKMuDCCP7/cYlwinjquj+36FJMG83WbpYYYPAhvPXFGl5p25I2ZTxjRQCdhCAVMUxP3wpbFYdoUqpjTFVc2qvzISDxtCuRLtSa4USDOypguEESZmGhshAtBUdaqVr5QvORkqtp2oo0o7PyFieVqDHuIsVVVkUSu7phryoqiRphEheNDTcIZNHWtek6YoK8mMuuKgFuILrQS8TBCA+CW40VY9FBIIcRr+6sSXV/+TUNVpSeDOKw8CQkKv+YHoMqbuV6lcHXYnlCFS8ruZwh7aDkCShRW5GkJidQ1QX6vdVwScixqqGqUCIaY/BeKSlt0U5KGhu2t+FSIQifsZisRsVWVB0CYvPxjTY18eXhYegi7ETAAS1fXSMy+1sLxhMyroQpYZNP2I2lcVULFQnWxRjgS1jWatkvC1CNSsYDL+cRN0V1uu6JgbtgeSUOLxEbCLmZIcAz9SMJufsrSqHc82Z1ci2MXh/jKtYfrMgyFVT+MWIsq4kANO4Uht2R1hM+awlqvCD8IKDVsYVgdICcWodR5EBFEHS+gmDRfUsY3CIQhcbgWw05+2NUPAsSUWjYagkDI+quy425JWK0hGzSh8IYpE5NAdo5VhUiWPTwoRIdUvJ4frNy7sFBd877lviT4SK/O2rVlgb3683cDYfTtBQJOHHJRw05ymOzAWtEC0dBZ5e8iCxxFQUpyQ8cRa3ylA7fy++GUs+0IOHIodmHLYi4bF9O9EMaSlIdn3NCo20Lp0tCUSM4/jFrbwdK1SLkKxHWFe6/olvqoYaNGGjCCaHC8VJ9GTOZEx/Sl1mYYYYJcazvi3JE3QldFw241ITrkq4Uwd8cTZ5gjrxkJhQ8CkZwlpF1FEIgzSZx9L+uyLnmdQRBE8OvwjAxh6a/lCOH26xttrh/QccUkI0w2PT+IoMbhvYOVvWi1wqqAEK14cNmy8dR2vAgaGz5P0RkoE6cXixUj2vC5WrsRh/YPoQ8TEKneabL4S1p6lPA2HS+ayvmB2Neq7RXES7csCNsSfaLLolBwxommqaoiLiVscIWCK2EE665xfSw3bdEYTVmiwSyN0INAIiQ8eY7LwiL8E4GE0DZsL+LCtx3xDIRolKYtoJKhX1rSfJnS9a9ivET6e8mI1por4HJhLifWIRF0t9Z2o7O35Yj8r+2+slzvlbyPMKdwZVMizHfD5asp4tnpuKKxGjYKxHuS/EVVWWM5YLsCDRMERMJdCuIMUeXfDBDv5eXuQeK5FRSchKHhyGctpq80vcKcI4RzV6TYV9wQuaWmCNXasJAMz/Zq26UozZPDsGXDsSp5UuG+ifz7CVPs0aHPV4iaeaVr9yWLqRf79ou92EW/F3VaL/57L0cB8FI/91Ibxwv9rSCQBdlr/EF/sXixz2V1Mnapf//f/L434ocba3wgYM2GHH5n9ddezrO7fqWu2eQv8XdX/1z03zKRZN3XNuIHj9VcnUvFi62F8GthrPns5P76StbImn9f4rWi1/khf+aeL6fCEDXZXmvxg5yh/zfFD3KuX+p313ydH/4ZuN7Ydv0rXOp5Wb+XvtLk/pW+D9fzcWST6rW4tjfitRmX2qNXx2tx6vhPHS9ZTG3ERmzERmzERmzERmzERmzERmzExfHaxWJtxEZsxEZsxEZsxEZsxEZsxEa8hmOjmNqIjdiIjdiIjdiIjdiIjdiIjfgBYqOY2oiN2IiN2IiN2IiN2IiN2IiN+AFio5jaiI3YiI3YiI3YiI3YiI3YiI34AWKjmNqIjdiIjdiIjdiIjdiIjdiIjfgBYqOY2oiN2IiN2IiN2IiN2IiN2IiN+AHi/wdcCOV5RDzYGAAAAABJRU5ErkJggg==\\n\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 15 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(15, 5))\\n\",\n    \"litstudy.plot_topic_clouds(topic_model, ncols=5);\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"These 15 topics look promising. For example, there is one topic on graphs, one on OpenACC (the open accelerators programming standard), one on OpenCL (the open compute language), one on FPGAs (field-programmable gate array), etc. \\n\",\n    \"\\n\",\n    \"We can visualize the results as a \\\"landscape\\\" plot. This is a visual appealing way to place documents on 2D plane. The documents are placed such that similar documents are located closed to each other. However, this is a non-linear embedding so the distances between the documents are not linear.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 23,\n   \"metadata\": {\n    \"scrolled\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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5jOf4iMf+RgdHR389Kc/YfPmzbzyyjZKSkrYuLGO733v+3zsYx9l5cq3xGVizJs3l5Ur38Lq1f9Jf38/BQWJowh/9KMf84MffJ9IJMqePXt48smnAFix4joA1q79G+9+97v53OdupaWlhby82Fjrm29+N0899RTPPLOBadOmceedd/C+932Aj3/849x772959tln+djHPprx/V117TU0NO/nC9+7k/y8PB797f+j8eXtlLg8zJ05i+s+cAtnnXoqd3z28zz5XB03r3oruTk5XHrDKsrcHkoKiyisrGDZRUu5+uZ3YVkW9//wLs45/Uya6+sJRKPk2B30Duud0x0OcfMXP4fP7yc/L4+H77s/LmiT73AyEI3gPfz49v/6HN/9+d088+xGvvuZWBZTxDLpM8MsqKzgrR98P6cvOIXbP3srdZs24TLsnDZnLh/84IeYW13NPffczSc/+Wl+/OO7+PWvf8ns2bPx+/28/e1v42Mf+wShUIhPf/pTXHbZpbz22r+oqanmttu+xoEDB/j1r3/JrFmz+MUvfsXy5ct573vfl/EznTdvHnfccSe7d+/mW9+6ncsuu5Qnn3yKkpISnnnmGX7wgx9y5ZVXMG3aNN797vcwd+5cvvnNr/POd97Er371a6qrq7nnnp8DcNttX+Hee+/j9ddf57TTTuOjH/0ot976+bjXKy0t5cknn+Kuu37Cd77zbc4991w2b96c8TxFRERETjYK2oiITDFVVVU0NDTS2toKwOOPP85ZZ53FK69sY2BggGeffRaAxx5bz003vSsuaHPOOeewfv3j9Pf3A9DT05Nw/Le+dRUf+9gn2Lt3L5/73H+xYsV1rF37t7iyrG3btnHrrZ/ln/98jCeeeBKA888/jwsvvIBbbnkvAIWFRdjtdhYsmB93TqecsiDt+7twyRLmz5nDO94cCxLl5eZRWT4NmwGPP/sMpmnyymuvUTVjBgCXnL+En/72PiCWMWMEgryp9iIWnnkm63//x8PHyGVO1Wx69u0nZAboT9Lb58PvvIlrLrscgNkzZlJRVja0zxcOxgV5Fp5yCo8+8zTFDjePPfY4c09ZQEOgl4AZ5eFnnmYgEmbra68ye8Z0opaFy2bjpS0vYoYj7NlTTygUYvv27QDs3buXiooKqqpmM2/ePH7+87sBcLvdHDx4kNde+xeNjY3s378fgD179lBZWTn0OBtNTfvYvXs3AOvXr+fss8/mySefoq+vj02bXoi9p4ULeeyxxwCor68nEAhSXFyccKxzzz2XmpqaocfJMmh6enp4+eWXAXj99V1Mn16Z9bmKiIiInEwUtBEROUnF+pOMrkmv11tEVVUVe/fuBeDpp5/hiisuT+ij8/3v/4CFCxeydOnF/OIXP+fmm98DGHzmM59NKKca3idl+J+j0Si2w2O+nU7n0HYD+MTXb+OFV2IX/WVuDw7DxqXhMA7TGjqOLcn0pcHmv23BAL/+85/48W9+ldX7Xnre+Zy7cCFvuulGQuEwzzywBpfTlXK9YRhDzYS7o0EiljnUIycUCsWdYywDJ4L/8AQpy7IIh48EgEzTwm63AQYbNmzgu9/9ftxrVVZWplg/GvF/B4N/D4FA4lSrjEey4JZb3p+0/82gwc9g8PVsGca5i4iIiJys9FuSiMgU09TURHV1NaWlpdjtdq644nK2bdsGQE5ODhddVAvE+s688sq2uOdu2fIiV111Jbm5sd4uI8ujenp6KS4uprw8NoJ78eLF7NuXmNExY8Z0tm/fzs9//gscDju5uTls3ryZVaveMrRm/vx5AOzevSfunAYdOnSIBQvmA7B06cVD2zds2sR73/Z2DMOIHWfefIqcLvIcTgLRI41/Bz31/PPcvOqtQ48L8wt45oVNvOXqayjMj72/6eUVFBcVAVD34NqEYxTk5eHr9hMKhznnzIWcMmdOwprhdrz+Om++9DIArrjiirRrIRa4CFrRuObHCcfcsYPFixczbdq02PsoLBz6c7rjDn5OAL///f1J11VVVTFv3lwArrzyioSvC4Dt27dzxRWXAzBnTg1ut5uuri76+weGvl4AXnnlZd785n8HYsGruXPnpj1HEREREUlNmTYiIlNMKBTihz/8ET/4wfew2Ww8+eRTQxfhnZ2dXHzxxaxe/WH27dvHr37167jn7t27lwcfXMM99/wPppnYiDgajXLXXT/hBz/4HqZpsX///qH9w3vafPSjH2HmzFkYBvzjHw/T09PLfff9lk9+8hPcd9+92O12tmzZwo9/fBc/+clPuO22r/LBD34gbgLRU089zfLl13Lffffy9NNPD23/y1//yowZM3jqj3/BZjPY3djAe/7r03SEAvQNK1EadP+av3Dq3Lls+PMaItEo3/rvn/DPDc/ws9/9lr/96jcYhkFffz8f+EKs98zwIMegx+s2csvb38GGP6/h1V272PH669gwMJNkKjkMG9+/68f86BvfwlptUPfSVnr6+ob2u+12FuR7wYhNihpkWhZt4QA2DKKWRUOgBwODgBklaln4fD5++MMfceedd2C3O4hGI3znO9/D7/en/Fp45JFH+d3v7mPTphf47W9/l/S9Qayk6r3vfS9z5tTw8ssvx33eg5544kkWLVrE7353H+FwhG9/+9sAvPjii7zrXTfym9/8ip/+9Gf86Ed38dnPfoaVK9+C3e7gkUceob6+PuU5ioiIiEhqhpUufxloa0vsZyAiIifO9ddfm/LiO5PBCUwTVVVVFZ/97Gf42Mc+kXJNxDJpCPSmzUoZ5DBs5NkddEdGjug+st9ls9EfjfWwueqipcytquKXf/xD2vHgAB6bnRybg4AZxcLCwMBjs1PqdJPnySEYDNIY6GX1e9+Lw+Hgu4d70eQ5nFTl5gNwYKAvbky4QfKCtcFx4WWOHI7yr54LL7yAWbNm8Ze/PBi3vbKykq9//TY+9KHVR3fgcWJZFn/9699P9GmIiIiIjItp0xIHfiSjTBsREZlUBgMYXZEQZpr7DjbDoMjhxEyyxG4YFDpdlLlyaA32w+GqqvUbN7B+Y+zPFuCwxSIkITOx7AqgwpWTdPsZZ5zBxz/+UaIGNDQ3859f+dLQvhy7na5QkEA0SonLExe0SfVuIpZJ1+HA0zRn8tfM5LnnngeeP6rnioiIiMiJoUwbEZFJ5lgybaYKy4L2yADdkXDSjJvhmSlNwV4GzPhpUIPNiwPRKMUuN3v7EkuMnDYbTsOGw2aj1OVJWJNjc1DtyU97no2BxNcucrqo9ORiAR3BAB2h7Jv9OgwbNZ58HMbUb0mnTBsRERGZypRpIyIiU5ZhxDJOih1uOsLBpCVKg4ENK0n+Stg0KfV4KHTGAifJhE2TMCYO00bY7E/Y70kynSrZmpFBm8EJVqmkK8uKWCYd4WDKDB8RERERmVoUtBERkUnLYdgyBjAMErOSMgVOhotYJpFofDbP4DjvTEqdbnqiybOBUslUlhVIUaolIiIiIlPP1M+vFhGRk1o2GTGjMdgrJ5sSpcEyLdsoytkGe960DPRT4vIk7E+WOSQiIiIiU5MybUREJplZs6rYv7/pRJ/GpFHicNMTCWWV7ZLvcFKZkwfESpPaR0yMMgwDr91FmcNDhpZwQ2JrwZ/iHAyMuEBMKBqlxOOhwGHRGQzEGvgMZ5H1a09ms2ZVnehTEBERETnh1IhYRESmvL+01fOIrzljjsqZhSV89pRzAPjF3h1s7DgYt7/anc9Xqs45qnPojoRY19lEQ7CXiGnisNmocecTMKNs7GnN+jhXFk3nxvL5R3UOIiIiIjIxqBGxiIjIkFhnm0xBm3l5hTzWuo99/b1cU1GVELQ5lgyXIocrabDFFwnxar8PXzRzjx2v3cXyEmWgiIiIiJws1NNGRESmNF8kxHM9rWTTCrg9FGBp2XRumD2fTZ2HEvY7bGP/z6bX4aK2sBxXhh45LsNGbWE5RQ7XmJ+DiIiIiExMyrQREZEpbV1nU0IWy6KiUm6pOYM/79/Nho6Woe0bOw4mZNcMV+POH5dzXFlaA0CdvzVpxo3XHgvsDK4TERERkZODgjYiIjKlNQZ6E7ZFLIsip4u3zpzH852HCGfRpHg8S5MMw2BV2RyWeWcm7XuzvKRKGTYiIiIiJyEFbUREZEpLFpAZ3rvmwpIKnhmWbZPM8SpNStX3RkREREROTgraiIjIlOZM0iumPRTg2unVmJbFugMNaZ+v0iQREREROVEUtBERkSmt2pNPfbAnblu63jWFNideh0ulSSIiIiJywiloIyIiU9rykiq29nZkPVL7K1XnKEgjIiIiIhOCRn6LiMiUppHaIiIiIjJZKdNGRESmPI3UFhEREZHJyLAsy0q3oK2tJ91uERGRSaM7EtJIbRERERE54aZNK8hqnYI2IiIiIiIiIiLHUbZBG5VHiYiIDOM7nI3TGOglbJk4DRvVnlg2jlfZOCIiIiJyHCloIyIiAliWxZqOhqR9b+qDPWzt7Rjqe2MYxgk6SxERERE5mShoIyIiAqzpaGC97wAhy0y63xcNsd53AIBVZXOO56mJiIiIyElKI79FROSk54uEqPO3pgzYDApZJnX+VrojiROoRERERETGmjJtRETkpLeusymuJGpRUSm31JyBYcCTbc2saa4f2ueLxnre3Fg+/0ScqoiIiIicRBS0ERGRk15joDfuccSyKHLGmg4fDPQnrG8I9iZsExEREREZawraiIjISS88oixqXl4hj7XuY19/L9dUVLGx42Dc/oiZvoxKRERERGQsKGgjIiInPacR3+KtPRTg2unVmJbF31saE9Y7bGoJJyIiIiLjT0EbERE56VV78qkP9gw93thxMCG7Zrgad/7xOC0REREROcnpVqGIiJz0lpdU4bW7slpbaHOyvKRqnM9IRERERERBGxEREbwOF7WF5biMzP8sBq0oj/masSzrOJyZiIiIiJzMFLQREREBVpbWcJV3Bu4MgZugZbLed4A1HQ3H58RERERE5KSloI2IiAhgGAZXeWfisdkzrg1ZJnX+VrojoeNwZiIiIiJyslIjYhERkcPWdTbRHQ0PPV5UVMotNWdgGPBkWzNrmuuH9vmiIdZ1NnFj+fwTcaoiIiIichJQ0EZEROSwxkBv3OOIZVHkjDUoPhjoT1jfEOxN2CYiIiIiMlYUtBERETksbJlxj+flFfJY6z729fdyTUVVwhjwiBm/XkRERERkLCloIyIiJz1fJFbq1BoeiNt+INDHtdOrMS2Lv7c0JjzPYVNrOBEREREZPwraiMiUEfKFaVnXSl/jAGbYwuY0yKvOYfryclxe54k+PZmALMtiTUcDdf5WfNHEpsKbu9rY3PVUyufXuPPH8/RERERE5CSnoI2ITHqWZbF/zSE66roI+yJx+/rqB+ja6qe0tpjyK0s4+Pc2BXVkyJqOBtb7DhCyRl/m5LW7WF5SNZSl0xjoJWyZOA0b1Z58lpdU4XW4xuGsRURERORkYViWZaVb0NbWc7zORUTkqOx78CCt69sxQ2l+nNnA5rRhBhMvzp1eB6W1xcxaWYFhGON4pjKR+CIhbm/amjTDJhOXYePKohkYBimzdLx2F7WF5awsrdHXlYiIiIjEmTatIKt1yrQRkUkt5AvTUdeVPmADYJI0YAMQ9kVoXd8OwOxVlWN9ijJBretsOqqAzWAwxrIs1vtaUmbp+KIh1vsOALCqbM4xnauIiIiInJwUtBGRSa1lXetQSVRBTS4LV8/DmW+n7vPbOfvj87G7bbx457+I9EfTHscMWXTUdVG5rBRnkUqlTgYjx3sDLCoq5ZaaMzAMeLKtmTXN9UP73IaNiwsrWF5ShQXc3rQ1Y1lVyDKp87eyzDuTIpVKiYiIiMgoaeyFiExqfY1Hpv30NPTzr/tjE37CPRHat/o48HQ7kf4oBTW51H7nLC792RtwFjhY/KXTWHrXIs780Nyh54d9EQ6saz3u70FOjJHjvQEilkWR00Whw8XBQH/cvgpnDjeWz6fI4UqapbOoqJS7Fl3CT95wCStnHvm68kVjPW9EREREREZLQRsRmdTMcIqyKBs0/v0gLc/Gyp6SBXQ8JS4sM/75fQ0DCYeSqclpJP4TOC+vkMda93Fvw06uqaiK2zd8vHeyLJ10AZ+GYOJ6EREREZFMVB4lIpOazXmkwWtBdS6n3lSNp9TNpT95A6HeCNt+toe+fSMCMYcDOr37B1j44blxu8xIht44MmVUe/KpD8Y3228PBbh2ejWmZfH3lsa4fcPHeyfL0hkM+Ozr7+Waiio2dhwc2hcxRz+dSkREREREQRsRmbQivgDuQDsGfsDCajR46dZ9BCjCGvHjLVlAx+110rHNH7fO5tCUn5PF8pIqtvZ2xJU5bew4GBdsGTQ43ntQsiyddAEff1cUq8rSFCkRERERGRUFbURkwov4AnSu20WgsRsrbILDgKhFtDuI2R2M+0HmIISDAULkEcQLxC6Sexr7qbt1W8bXyqvJSfqahtOGp7qIkuULcHg9Y/8m5bgrsjspcbozTpByYlBbWB7XSDhZlk6qgA9A3+sWa/cc4npNJxMRERGRUVDQRkQmLMuy6FjzGv66ZqK+QNbPsxPFQyyDJkhx1s9zeh1Mv3Ya7Q/uTPqawXofvVsPUVg7k9KVpylrYpJb09HA/mBfxnWzPfmsLK2J25YsSyclv4HxrJsXnF1csayUIk0nExEREZEsqRGxiExYHWtew7d+76gCNoMMwEUfBlFsbiPjTzuby6C0thj/+j1pXzPqC+Bbv5eONa+N+pxk4vBFQtT5WzOO7AboDAfxR8Nx27wOF7WF5dii6QN3HpuN3D0ejD4bPl+EhzWdTERERERGQUEbEZmQIr4A/rpmrFDqi+rcGi9nfeeNvOFny2OPq4o4777rmbv6PCCWcVM8M8BZ3zqFyqun4fQmTy50eh2UX1VG5ZVFGV8TwAqZ+OuaiXSPPpgkE0Oykd2ppBrZvbK0Bu/rueBPEbjxGyyvrCFvU97Qpn2aTiYiIiIio6CgjYhMSJ3rdg1lu4wMzgzqb/DReP/LADiLPcy6YSFtj++NW+NyR3B5XcxeVcmZX5lP+ZUl5M3NIafKQ97cHMqvLOHUj8/GHWij6RvPEPUFMgaDIJZx07lu13h+BDKOko3sXlRUyl2LLuEnb7iElTPjp4olG9ltGAbFWwtw/a4A2xYXRrOdnG4nc1yF2La4cP2ugHfXnIbBkaBOWNPJRERERGQU1NNGRMbcWDTxDTR2D/15MDgz58Pnxeqeklz3es+ZjqvYQ968YmwOGzkzCxho7sGMmHHnQ9gk32nDM6+I4mvn0/14Ay0/2RlXDjX4enNXnx8XDLLnxfciCTZ0jzwNmSSSjeyOWBZFzliz4YOB/vh9KUZ2O5wGRp8N52O5zK7O5UP/OY+q6lyebmuj9MLYsT72qQX88Lv/or8vilPTyURERERkFBS0EZExk65x8Gib+Ibb+hO2tax9LS5gk1tdRPVNi3CX5lBwSinbv7ie2e9YiLPYw0BzbLJP1B+k6fYNSc/Hv3E/VjgKaaqhUgWDAAL7/TR+/WlNlpqEko3snpdXyGOt+9jX38s1FVVxk6ActuSJqVXVOTTUx0qe9jX28+UME8pmH55OJiIiIiKSDQVtRGTMDDYOTtUTZrCJL0DZqtNTHifiC2D2H2n8mltdxIwVp7HnfzbFretv7Gbbrf+M27bvj9vjX9MfTBmUsYLRpNuzCQYBEDIJ7Ts8pUqTpSaVZCO720MBrp1ejWlZ/L2lMW5fjTs/6XGuWV7Oy1v9dPsiGV/T63VwzfLyoz9pERERETnpGJZlpS2wb2vrSbdbRASIBVqSZbQkY/d6qPrKUhxFybNSWn+/je4nGpPuy5lVSNgfJOIPZj6pFKVUIzkK3Zz6+aXs+OL6zIszvaTLhveqOWmDUnLi+SIhbm/amlUzYq/dxVeqzqHI4Uq6/68PHuSp9e2EQqm/2Fwug8uuKuP6VZX4In2s63yBxkArYSuK07BT7Slnecn5eB15KY8hIiIiIlPHtGkFWa1TI2IRGRPpGgePbOSbqYnvUD8be2K2ysB+PzaXHcOVxY+vw9fQmc4n4g9y6OHdOIrc2POdqY6WFU2WmhwGR3a7kpRJDecybNQWlqcM2ACsWFnBZVeV4U0xnczrdXDZVWVc95ZyHmzfyO1Nf+KJ7m3UBw+xL9ROffAQT3Rv4/amP/Fg+0Yy3EsRERERkZOIgjYiMiaSNQ6G1FOd0jXxtcKH65miFiSpMnJX5DHtshpsLnvqExr20y2b8+nf103x4hkUL56BLYuA0LTLa446KCUTw8rSGq7yzsBrTx6Q8dpdXOWdwcrSmrTHMQyD61dV8rmvzOfSK0uYMzeHWVUe5szN4dIrS/jcV+Zz/apKHup8jvW+l/FF+5IexxftY73vZdZ01B3rWxMRERGRKUI9bURkTAwFWkZIN9UpFcN5JGjiKs0dmgAFsX4zNe9+A7nVRXimF9D0u5dxleaAAaH2gSPHcNiS9tYZeT7uaTkE2wbo3+ujv6kbohaGy4Ytx4E5kLpPSaAtduGdarqUJktNfIZhsKpsDsu8M1nX2URDsJeIaeKw2ahx57O8pCpths1IRUVObrhxZtJ9vkgfdf7XCFnpe9+ErAh1/tdY5l1EkUqlRERERE56CtqIyJgYHmjJppGvzZE6m8VTXUSw3kdudRHz/nMJjiI327/wGOGuQNLmw6GOgYRjGE77UNAm2fnMfPsZtD/ZQLBt2HOjsbIUK2RipRspBUONho8mKCUTS5HDxY3l88f1NdZ1vhCXYXNNxbksLTudcncRTf1t3P7an4f2+aJ9rOvczI3ll43rOYmIiIjIxKegjYiMicFAC2Q31cldU5TyWCXLF9C79VDS42TDcNvjpk8lO07zA6+O+riDcqoKjykoJSefxkBr3OOHD73Iw4de5Idn38I/Dr6YsL4h2JqwTWS4fl+YF9e10tE4QDRsYXcalFbncO7ycnK9x9abS0RERCYOBW1EZEwMBlqynR5VsnxByv0Or4fC2plpx4enZDOwwtGspkYdrYEm/zEFpeTkE7YSx8svKV5A1DLZ4tuTsC9iZh4hLidWMNLF3s619AQaiFph7IaTAk8Nc0pW4HYUj9vrWpbFC2sOsauui/4Ro+Zb6wdo3OpnQW0x56+sGMoIFBERkclLQRsRGRPZBloMl43C2pkpx31DbHx4dCCMkevEioTAzC4CYy9yYwYiWMHEC+RUcmu8zFt9PmbUHJOR35A5KCUnH6eR2DT7htlL+cO+p5Oud9j0z/NEZVkWezoeoMW/gWC0K25fd3A3bb1bmF64lHmlbx+XoMkLaw6xY307kRQj5vt9EXasbwdgyarKMX99EREROb70W6GIjJnSlacB4K9rTppxYz8c2BlcN5JlWXSseS3l87EZ2Atd5J4xDQwIt/RiRsxYQ+GaIsxAlJ6N+wEwXHasUBRHYayRbMQfSvqag5OlnCU5Q9sGAzn2fBcvfWQduVVFnPGNK+h8fj/1d29O+xlkE5SSk0+1p5z64KG4bZ955d6U62vc5eN9SnKU9nQ8QJPvUUwrmHR/MNpFQ9c6Dvg34LIXjmkGTr8vzK66rpQBm0GRkMWuui4WLislt0ilUiIiIpOZgjYiMmYMw6Bs1el4l82hc90ugg3dcUGVkuUL0gYzOta8lj5Tx7Qw+8M4ityUrTo9YXfTHRuG/myFYtk2qYI1Iw00JY4sn7v6/JTToZLJFJSSk9fykvPZ2lufctz3cF57HstLzjsOZyWjFYx00eLfkDJgc4RJKNpF6HAmzlhl4Ly4rpV+X4TymlyuWT2PnHw7a777Otd8aC75pS5efaadp/5fExDLuNm6rpWLU0w0ExERkclBQRsRGXOOIg/lN541qudEfAH8dc0Ze9hYIRN/XTPeZXMSAkAjx44bDhtWhilOg5Ol9ty9Ken+VNOhbPlOXOV5owpKycnL68ijtvA01vteTjv222U4qC08TeO+J6i9nWsTSqJqpl3B+XNX8/DLn6YnsD/lc4PRLpp8jwIwv+yGo3r9jsbYtLvWhn6evL+Rf1s9l479A9z/xe0svHwai5bFZ2i1NyRO1hMREZHJRUEbEZkQOtftIuoLZFWaFPUF6Fy3KyEwNHLseN6cYjrq9mGm6XGTbLJUNiPLXeV5zP7i0rF6+3KC+CIh1nU20RjoJWyZOA0b1Z58lpdU4XW4xvS1VpbWAlDnfy1pxo3XHgvsDK6Tiacn0BD3uLzwLLy51Rzo2kJfFhO/TCtIi38Ds71X43Z4R/360XBiWZQZtTh9aSnnXF3BX3/wevz6yDh2ZBcREZHjQkEbEZkQAo2x8qRsS5N6X2gh0NCNFTYxnDY81UW4KvPixo73N3aPfJmsZDOy3Dk9/6iOLRODZVms6Wigzt+KLxpfQlcf7GFrbwe1heWsLK0Zs2ayhmGwquwilnkXsa5zMw3BViJmBIfNQY27nOUl5ynDZoKLWuG4x1VlF5PvqaSpfQOmlViKOZiF8/zun9LU8QwQy7jZ27mW08pvHvXr252xr8Vp1blcflM1BaVubvjq6cxbXMyB13t40/vn8OCd/zqy3qHpUSIiIpOdgjYiMiGMLG2CxNIkz4x8Agd6AYj2hIj2HLlICtb7sBe5Mdz2UU2POlp929pof3AnpStP01jdE8jXG2bdc600tg4Qjlg4HQbV5Tksv7Acb37qHkRrOhpY7ztAyEpePueLhljvOwDAqrI5Y3rORY48biy/bEyPKceH3Yj/mtpcfw8AhTmzE9YOZuF09L6esK87sOuoXr+0OofW+gHaGvv53a3bMq4vq8nJuEZEREQmNgVtRGRCGCxtSleaNBiwSSXaHQTb8QmgmP4gvvV7AZI2RZbxZVkWa545RN3OLny98T1i6lsG2LrHT+3pxay8pCIhqOaLhKjzt6YM2AwKWSZ1/laWeWdSNMalUjI5FXhq6A7uTtjuH9iXsG0wC8ebW8NpM1cMZdoA9ASb2N3+p1E3JT53eTmNW/30+1L3RRqU63VwznJNIRspGIllOvUEGoha4TGd7iUiIjIeDMuy0hY8t7X1HK9zEZGTWOvvt9H9ROPYHMwAjraVg+3wAczsDmD3eqj6ylI1ID7OHnz6IOtfaieUpMfHIJfT4Ko3lLHq0sq47b9v3c0T3S1x2xYVlXJLzRkYBjzZ1sya5vqhfVcWTefG8vlj+wZkUgpGutjU9NWEZsTpXHnm7ew++Ehc0AbAZrip8r5p1E2JNz14kB3r29OO/Xa4DM68qowlqypTrjnZWJbFno4HaPFvSPr357YXH/N0LxERkdGYNq0gq3W2zEtERMZfyfIF2L2ZAx+5NV7O+s4becPPlsceVxVx3n3XM3f1sBHJ1ijXD1N4Rjln3n4lhtuOZ3oBzmIP7oojfUby5hXHPTfqC9C+5rXRvFU5Rr7eMHWvdqUN2ACEwhZ1O7vo7ovvQ9IYSMzYilgWRU4XhQ4XBwP9cfsagukzvOTk4XbELuxthjvr5zy+48sJARs40pQ4GPGN6hzOX1nBmVeVketNniyd63Vw5lVlnL+yYlTHPREivh5af/8wTXfcR+PXf0XTHffR+vuHifjG/obhno4HaPI9mjLgNjjda0/HA2P+2iIiIsdC5VEiMiE4vB4Ka2fiW7837djvbBsVH+16AGeRh7KLq6hYNhdnSQ42h41Xb3uCgeYeQp2JI3R7nmvGUehWf5vjZN1zrfj6MpeHAPh6I6x7rpUbr5o5tC2cpCxqXl4hj7XuY19/L9dUVLGx4+DQvoiZvoxKTi7zSt8OwAH/BkKjyLgZZDdcRA83LT6apsSGYbBkVSULl5WydV0r7Q0DRCMWdodBWU0O5ywvJ7co9c+3icCyLDrWPIG/bjvREQGaYH0zvVtfp7B2IaUrrxiTn6k9gQaafI9iWsG06451upeIiMh4UNBGRCaM0pWnAeCvaybqC2RcP7JRcc7MgqGR3EezPptR306vh+LFM+KfG7XU3+Y4amyNBc5qpuey+vp55OfY+fw92/nCTafhctjYtLOTBx7fP7S+4VB8oM1pJCaZtocCXDu9GtOy+HtLfJmew6akVDnCMAzml93AbO/Vsd4owb1EzTChaDehqB9IHeSzGU5y3eX0BI58ffYE9x7VeeQWObn4xpmZF05AHWuewLd+M1YonHR/1NeDb/1mAMpWXXnUrzNYEtXkeyRhuleyyV5wbNO9RERExoOCNiIyYRiGQdmq0/Eum0Pnul0EG7oxIyY2h41Qez+mP5RVYCV2MMDKLhAzKJtR34bDRteWAwnPtUIm/rpmvMvmqL/NOAtHYmVRDS393P9II6uvn8sli8po9wW5+6E9/P62C3jo6eahdZFofBlVtSef+mD839/GjoNx2TXD1bg13l0SuR3euAv7wQBBY9ffsUicYOdyFFBTdjnV0y7ln9s+O7TdH2jkhaavkeuaDkB/qGVKN8iN+Hrw121PGbAZZIXC+Ou24122BEfR0X0PDpZEjQzYpJvsBUcfSBMRERkPCtqIyITjKPJQfuNZcdsGGxVnE1gBcM3IJ9Tcm936UTQu7tvVSf2uzqT7or4Anet2JZy7jC2nI7FcYrCCIlkphcMev215SRVbezvwRUMJa0fy2l0sL6k6uhOVSW80k4YGM3A6+rbRE2pIOFYo0sPMkiU8t+uuuO0WYbqDu5NOpeoO7qatd8uUapDbue7ZhJKoVKK+HjrXPUv5jVeP+nWCkS5a/BuSlkSlm+wFEDXTB5RERESOJwVtRGRSKFm+gN6th7Iqm7J7Pcz41AUc/J8tBOp9adcaLhvuWYUE9/vT9tJJ+XyHgRU5EvHpfaGFkmsX4MiiqbIcneryHOpbBqiuyOWmq6spLXIzuzyX8mI33/zAmfzp8X1DWTYANRU5cc/3OlzUFpaz3ncg7dhvl2GjtrBc475PQukmDWUKpBTlzE8atAF44tWvjPpcgtEuGrrWcaD7GVyOokmfgRNojGW05dZMZ97q67Hn57Dz6/ey6K5P0LfnAP6dDez7/aND64MNLakOldbezrUpmw5vrr8HODLZayS7bWL3BBIRkZOLgjYiMilk26jYcNkorJ2J05vDrC9cTNv/7sC/YR9WKLFcwX74mCVvOZXOh/6VdS+d4YYHbACiPSGabt9AYe1MNSYeJ8svLGfrbj+Nh/q59e5tadd68x0sv7A8YfvK0hoA6vytSTNuvPZYYGdwnZxcjpTVJG9cOzhpCEgY2T2nZAVtvVtGNRY8M5OQ6SMU8gGTOwPHCseaiPc3tNB4/yPMXX09AGYghCPPQ6S7L269Gcmu6fhIPYGGjGse3/HlpNsL3HOO6jVFRETGg4I2IjJpZGpUPBiEGVxnGAblNy6kZPn8hB457poiSpYvGOo/k6yXTtQfJNodzLp0alDUF1Bj4nHkzXdSe0Yx619qTzv22+U0qD29mKIkk8IMw2BV2RyWeWeyrrOJhmAvEdPEYbNR485neUmVMmxOUunKaoZLNWlocCx4Q9c60jUlhtTNcAHy3dPpDabOMkkXOJrIDGfir56hTj+bb/k2+QtmceY33k/L/z07tM/mOLpfVaNWfImT055LONqf8XluezFzSlYkbPf1hln3XCuNrQOEIxZOh0F1eQ7LLyzHm6/MHBERGT8K2ojIpJGuUfHIIMxwyXrkJJNs3cHfvETPxv0pnpGaGhOPr5WXVABQt7MLX2/inXhvvoPa04uH1qVS5HBxY/n8cTlHmZxSldUkC7CkmjQ0q+hN7PP9k6iVOnMvUzPcUKQ347kODxyBlXX/neFG07dnLHiqKwnWN5NbXUH1TVfjLi3ijK/dgmG34/Tm0/L3urj17prpR/U6diM+kJJNwMZmuJleuDQuCGdZFmueOZT0Z019ywBb9/iHftZMpownERGZPBS0EZFJJ9sgzFgoW3ka/a+2J8/syXex4BMX4plRwEsfWUduVRFnfOMKOp/fT/3dm9WYeBwZhsGqSytZtriUdc+10nBogEjUwmE3qKmI3f1OlmGTju6kCyQvq0kXYEk2aaiha23agA1kbobrdhYSisY37HXa87n+vN8kBI5eav4+oWj3qPrvHEvfnmNRsvxiere+Tn/jIbbdenfatXZvASXLLz6q1ynw1CRt7pyKzXBT5X0Tpe638PvHmod+DvT0R/D3RzBTJPX5eiOsf6kdgFWXVh7VuYqIiKSjoI2ISBr2IjfOEk/SoE20N8S/vrOBaVfU4PC6mXXDQtoe34t9WLAg2NB9PE/3pFOU5+TGq2Ye0zF0J12GG1lWA+kDLMkmDSUL/LgchYQi/qHHmZrh9gVbE7Y57TnJA0ehRlLVcaYqozqWvj3ZSJfBU1i7EN/6zWnHfhsuJ4W1C8GyaP39wwQaD2KFIxhOB57qSkqWX4zDW5Dy+aPpLWQz3Jw386v88wU3dTv3JM3eSycUtqjb2cWyxaWjDhaLiIhkoqCNiExJkcNZLoHGbqywieG04ak+XEI1islOHWteI7jfn3K/FTFpe6oBT2UBrmIPefOKsTls5MwsYKC5BzMy+olUcnyteeZQ2v44upN+chlZVgPpAyzJJg2NDPyUF55F1AzR0Zv4syRVM1wzSfCoOG8O3twa5pRfMSIzJ33jrZH9d461b0862WTwVF56MV4W01O3nagvsQzM7i2g4MKFWJZF0+33JowID9Y307v1dQprF1K68oqkwdTB3kLpAlNwJMPmny+4M/bJcjoMLj9nGs/t6OQLN52Gy2Fj085OHnh8P77eCOueaz3mILKIiMhICtqIyJRiWRYda15L2qw4WO+jd+uhrCc7RXwB/HXNGUeBWyGTUEc/27+4ntnvWIiz2MNAc+wiw+awHdsbknHl6w1T92pX8gs1twmnBKAoSshm8Sg9+Jv9vKWiBq+aFE9Z6cpqkgVYkk0aGhn4qSq7GKc9j60NrQTCRz9VqrlrE5v3/pzmjudH/dzh/XeS9e1J1RQ5Vd+eVLLJ4NnX/U+My95EzbL30bnuWYINLZiRCDaHA3fNdEqWX4zvsU341m9JmY0T9fXgW78ZgLJVVyZdM6/07QAc8G8glCTjxm2PBXZK3W+h7tU9aQM2AOGIxQs7O1lyejHtviB3P7SH3992AQ893Uw4YtFwaCDt80VERI6GgjYiMqV0rHkt7Vjw0Ux26ly3i6gvQG6Nl3mrz8ee70rauwYg2he7sNj3x+1xx3DXFB3rW5JxtO65Vnx9EWqm57L6+nnk59i59Z5tLF6Rw0sDrXSbR8aBRzF5tv8QO5q6hsaBq1xq6hlNWU2qSUMjAz+DmTpVZZfQ1P4smaZKpdPU/kza/ekmUg323xlZvpWpKXKyvj3JjDqDp+pqym+8OmF/xNeDv2572vIpACsUxl+3He+yJTiK8hP2G4bB/LIbmO29OlaqFdxL1AxjtzkpcM853GzZy+8fa8bXFyuJGv6z4PP3bE+aUbO7uZdF870J3/+R6ChHDYqIiGRBt4BFZMoYTWaMv66ZSHf6RqGBxlg/mv4GH433vwyAs9gz1LsmE7vXQ8nyBVmevZwIja2xO+MNLf3c/0gjAOW1Fhv7DsQFbIbzRUOs9x1gTUfD8TpNOY4Gy2pshjvtumSThgbNKVmBy54YsI0FXFL/fLIbx5bBlSn4Mth/Z2T5VlXZxXjzaoZ69qR6XiapMnjedsEDVJVeErd9MIMnmc51zw6VROXWTOes76zmDT/7NO7yYs763SewvlxC5ye7OHBzPfv//RVe2fZDgpHUQTa3w8tp5Tdz/uyvcWH1tzh/9tc4rfzmob+7wZ8DEP+z4JJFZbT7gnzll9t5x1WzcTpiQZqBoEl5sZtvfuBM/vT4PsKRWLDGYVcQV0RExp4ybUROYmPV92WiGMyMyUY2k52scOLFlfec6Ul714xkuGwU1s7UuO8JbvBia1B3JEizp5twhkyIkGVS529lmXcmRSqVmnKyLasZXJew31GM215MKJp9I/LCnNmcU/Nentr5jaM7aTJPpBrsvzOyfCtTU+RkfXuSGasMnkDjwaE/9ze00Hj/I8z58AraFjfQ9K8vEIh0gRs43GKqk9fZ1PTVo552NfLnwKDBw4w8XmtXkM/fsz1hfU1FzqheV0REJBsK2oicZCK+AJ3/t4velw4S9YcYOcd0tH1fJpLBzBggq5KmTJOdDGcsGTG3uojqmxbhLs2h4JTSpL1rhrN7PUOfn0xsg3fOqytyuenqatb3NhC0R+PWLCoq5ZaaMzAMeLKtmTXN9UAs42ZdZxM3ls8/7uct4yvbspq0x8A+6tfd2/rEqNbnOEsYCHcOPc4UfBnsv5Oqb0+qpsjJ+vYkkyyDJ10QaXgGz/BpUwNXtcBFUVwHcyiqKwVgp28NXae1QIoAy7FMuxr8OQBHfhaUFrmZXZ6bNKMmGW++g+UXlo/qdUVERLKhoI3ISSJdg96RRtP3ZSIZnhkzWNI0d/X5cSVNw8dxZ5rs5KkuIljvo7+xm223/jNu38jeNQD2Qhf5502PZSopw2ZSqC7Pob5lgMZD/dx69zZY2gMl8WsilkWRM5ZNczDQH7evIZg4+UamjsGymqNhEj82Os9djoENlyOfPE8F+zqejdvvH9iHf2DfqF5jwfTlvHbgr4Qi8cHjZMGX4f13xqJvTzJHk8GTdNrU4e/B0MwAgdP7cBRP59DAdnCNbkpWtgZ/DgBHfhaMgstpUHt6scZ9i4jIuFDQRmQKG17+FG7rx+xJ3qMjmcG+L95lcyZNAGIwM2akVCVNmSY7lSxfQO/WQ1mVXNm9Hqq+snTSfFYSs/zCcrbu9g81IcWWeFE4L6+Qx1r3sa+/l2sqqtjYcaR0I2JqpLskNzKA0RdsBeDK+ckDGEfjlab7AbAZzqQjwgeN7L8zmnHYqfr2JHM0GTyZpk1FckM09j/DyMSldNOuXtx/Jw6bh6gVxm44KfDUHM6OKk76Ggk/B0bBm++g9vRiVl5SMernioiIZENBG5EpaDRZNSPZ85xDk5Cy6fsykQxmxkB2JU2ZJjs5Dpc5pZtGBepfM5l5853UnlHM+pfaY+N+zcRywPZQgGunV2NaFn9vaYzb57Cpn/+xGl4Wk+1F9mQw2gDGsUgXsEnVf+dY+/YkM9oMnpmFl/PSge9nnDY1MmCTqVdOX3h/3OPu4G7aerek7HmT8HMgBZsBhbkOCvMcOOwGNRU5LL+wXBk2IiIyrgzLstLmmra1JfZrEJGJrf3BnVkFGqyQmbTXy3CeuV5mf3HpeJ7umIn4AjTdvmFMM2MyBcCG96+ZTP1/5AjLsljzzCHqdnbhm+OHOdlnpM105vKpWWfhVTPiUUtaFjPM8KDBZPzeCka62NT01awCGGPPRoG7miLP/Iz9d4IR31H37Ulmd/ufssrgqfK+iYg5wP7ux+L2pRtZPui8uR8m31NJSd58eoMHefSV/4rbPxDIY8frtXR1VxKN2rHboxQXHeSsU7dwauXSpD1v4n4O9CZm3AzPqJmMX48iIjLxTJtWkNU6BW1EppjRBC4wYO6HzyfaF8Ke5xwK2hhO21B/GFdVIdVfvXQ8T3lMZRuw8l41Z1T9eiLdsayjYEM3ZsTE5rDhrilS/5oppLsvzJpNB3iufD9RV/ZlT167i9rCclaW1pyUF3NHmykzmov70TaWnSiyeY8wmK115Gsux1WK3XCm7H+Tzon+zAaDcdlk8Gze9/W4bKTywrOYUbyYkvz57D74SMqgzaDBXjmD6ywLXtl5KQ37z2QgUJiwPsfjZ97sPXz4396Mx5n8a7O7L8y651ppODRAJGopo0ZERMaNgjYiJ6nW32+j+4nGrKYnAZRcOIvq97wBm8PGq7c9kTANaTJl2oAyY+TYPdi+l/W+A4Ss7AM3LsPGVd4ZrCrLbsrOVHAsmTKjyUJx24tZUvXNo8r6ONGyCWBMyz+Pg/7niVj+hP0jgxKDDOxYRBPWT6TspGwyeJ5r/BK9oSMlh8MzaHoCLfxz22dH9Zovv3opr9cvJmqmznyz20IsPr2DD17zpqN6XyIiImMl26CNetqITAKRUBedLWsJ9DVgmWEMmxNPXg0l01fgcMXfLRwce53N9CSAzuf2k1fjTTm+OlPfl4nGMAzKVp2Od9kcZcZI1ny9sbvrja0DhCImudU5UB4g5Ei8ME4mZJnU+VtZ5p1J0UlSKpWpgWy6Ecx7O9cmBGzSNZbd27n2qKc4nUjpR4fXAAZtvZuTBmwgdf+byoKLsdvcY1bSNB6ymbyVbtrUC3vuGdXrDQTyaNh/ZtqADUDUdLG9voim1gGeeaWTxtYBwhELp8OgujyWUePNd8b9TEi2X0RE5HhRpo3IBGZZFh37H8DfsYFoOPEurd1ZTGHpUkpnHbmr2vj1pwnti10AFC4sZ+7q82l+8FUqls3FWZKTMqMmGU1EkqkubR8Lt4nt9AHM6eHYLY4sEheuLJrOjeXzj/p8fJE+1nW+QGOglbAVxWnYqfaUs7zkfLyOvKM+7lgLRrq46f1XcuiAL+Naw3BQ6JmDzThyn8gfaCBqDgw9djrycDsKcNhzGAh1Egx3xx3Dbsuh0FMzVqc/IQyEWwlEumAUGV2Q/POcSCJWlI5wDwEzhEXs28Zjc1HqLMBhxHcU7g8dJBg5up4/ZdNzWP3lc4ceb35lGbsbFgNQMz2X1dfPIz/Hzufv2c4XbjoNl8PGpp2dPPB4rEmxy2EQiiT+ClyUZ6e0wEVnb1i9bUREZFwp00ZkCujY/wC+1kexzOR3sqPhLnytsTvZZbNjd7IHx15nMz0pHU1EkpPBmmcOpZ4YE7RhBmyxq84sr82e9R9i14Afp2Gj2pPP8pKqrJoUW5bFmo466vyv4Yv2xe2rDx5ia289tYWnsbK0dkJcKO7tXMuhAz5GnorHVUyBZwb+gWaCYd/hrRGCkQ5yXZVD6wzDintujsuL3ebCYc/BZptGKBIftImtP/Hve6yYVphQ1I+BmfXXFgCGDY/Di9028TI9LAvaI910R/qJWPEZaoFomF4zQJEjlzJH0dDffY6rjLDZi5Vm+lUq7S0DcY+7uo98fTW09HP/I42svn4ulywqo90X5O6H9vD72y7goaebCUespAEbgO6+KN19A0n3Afh6I6x/qR2AVZdWplwnIiIyVhS0ETlORlPiNLje37EhZcBmkGUG8XdswFt5NfTZMQOHy6Mau9l26z/j1u774/asznV43xeRqcrXG6bu1a7UI37dJswOjepfyqBlsi8UC7rUB3t41n+IiwsruHHavLRBhzUddaz3vUzISryzD+CL9rHe9zIAq8ouyv6ExklPoCFhm9ORj8PmIRxNvOANRnxEzAEcNg8eZxkjIxU9A80AePPmMhDqTPKKUydgAxAItycEKpIHvI4wDCduRxEeR/lxOsvRaY900xXpxUyRwB2xonRFegGY5oyV3doOv6dApDNjxlG6z8eGk2jUnvR5g992Yxn0C4Ut6nZ2sWxxqZoTi4jIuFPQRmScpStxCvbtprdrS0KJE0Bny9q49fneU3C6iggOtBMcaCN6+JdfiGXcHHj6Z0T+UUDUNwAsAEbZV8NuYC9wkXdOBaX/fooybGTKW/dcK76+WJAkWTnF//n3sLEvvtfIoqJSbqk5A8OAJ9uaWdNcn/Y1QpbJE90tNAZ7+cKsRUkvHH2RPur8r6UM2Bw5VoQ6/2ss8y6i6DiVSqWaDBUxE5t8e5xFh7NlPOS6y0ZcWJtEzQGi5gChaC82I/kFtq8v+edpWiH8gb1DQR+bMbkvlEd+fukCXhAriXLa8whH+whH6wFjQn0WEStKd6Q/ZcBmkGlZdEf6KXbkD5VKDQahgpHulBk3mT6fHGcFDvuR763qilxuurqa0iI3s8tzKS92880PnMmfHt9HOEWGzXDZlFf5eiOse66VG6+amfF4IiIix0JBG5FxNtoSp8GMHH97/LSQXt/raV8nGGgAX83hR11AGZD8wggAA2z5LlzTctWgV05Kja1HLgCTlVPUHWiFEUlwEcuiyBkLiB4M9Gf9WvWBHv63bU/SfjfrOl+IK4m6puJclpadTrm7iKb+Nm5/7c9D+3zRPtZ1bubG8suyfu2jkW4yVHdwN0aSny2/+uVvcdjtTCubQTgSwudrp8vXyftXrxpx7DBRomDYErIr7v7J//LxT7+bcCQ84jlRotaRoM9gxolhwDe/+Q3Ky6fxoQ+tTjinW255Lx0dHaxd+7ej/Sgy+t73vssXvvBFIpH0Qbd48YGD9AGv2PsPReK3Df8sVl73bjZurKO7O76s7Ficc84bWLFiBV/72tczru0I98SVRLldLp5/aD0r3/5WnDYHQTNMQ18rcKTnTYXLC8QyYXKc5bgdJQTC7UTMAaJmkOEj0DN9Pjabg8ULnydqdWOzRTBNB3/aUMGrr19EIJif9JwLcu18+eYz4gIz9/x1D02HBrIqrwJoOJS6jEpERGSsKGgjMo5GW+JkRgP0+jYnbTqcUd7w1zh4+P/FJMu40dhrEVLecTcMIODjquanqdzbij0aJWq3czB/GoVLruOx1n3s6+/lmooqNnYcTHqMZJ71H2J5SVXCdKnGQGvc44cPvcjDh17kh2ffwj8OvphwnIZga8K2sZZpMlSycdM3vGsZAP/5oc/R3t7KAw/el/oFLDMWtMHG8Ivz1R//j4znZlnhWDkNcEnttZjm6Br5Hg2bzZbydT772c8dxRFHWx6W/Gt18LO4+ppl7Njx6pgFbWw226jWB8xQwjbTsqjvO8T8/Ol0BHsyrrcZjqG+R/2hlrgGxZk+n75QC8XF8V+rZSUHmFW5m4Z9Z/LKa5eS8Jn3RxMCM/uSBGHSlVdFopmzdkRERI6VgjYi42hkiVNhyZnMnPc2PDnl7N/zZ9qanxjaFw130d22nuEXMKPisfBeMo+Z/3YVu3/8Zxbd9WF8LzXQ/NBr9L3eTuwXVgvnzHxmfVoToUScjsRyipJCF/P9j+Da8zyLB+KDpzP9rQQebqLirMupvfgG/nGwaVSvF7RM1nU2JWTbhK3EAMiS4gVELZMtvj0J+/a193HHM7vHbfxwMNJFi39DyoDNaFxy8TI+9fGv4rR7+Of6/+Mnd38DgKf++SqPP/kPFp9Ty96G3dz65Q8RCAzw6P+9yL+vrCUUCvLWt9zEO9/xASzLZP2T/+Bn93znyIEtkyh93PTud3LXj3/Krbd+NuO5zJo1i8985lMUFhbi8/m4/fY76Orq4pZb3ktt7YW43W42bHiWX/zilwD8+c9/4rHH1nPhhRfwox/9mG9+8xs8/vgTnHfeYvbvb+ZLX/oypmny5z//iXe+8yZKSkr41rdup7GxkVNPPYUXX9zKD37wQwCuv34FN9zwdrq6uujo6OTJp//BX9b+OuEcB8vD7v3FWrZt38KFF1yGzTD46KfexcFDBygtmcbXvvxDysunEwwO8JWvf5L5807ljNPP5I47bqe7u5u//vVvzJ49i9/85l4+8YmPU1lZyRe+8EWuvfbfKC0t5f77/x833/xurrrqSkzT4pe//CXPPruRc855Azff/G6i0ShOp5N7771v6LwuuGAJ73rXu/j8579AX19fwnlbWEwrKeOX376LEm8Jjz7zOACFzlxsdhuf/+R/sWTRYhwOB3fe/UOe2vAMOTk5fOYzn6a6ugqAH//4LnbseJUvfvELBAL9nH7GKTidTr789Y+zbfuLcZ/PSKm+VnNzelgwdwsAr7yWOjttKB4T+2cy6/Kq4SVZIiIi40VBG5FxFOhriHvs79xB+axlFBafhmkmq91PH7BJF/TBbuEzn6X3u4cwQxGiA0FyKgspPMVO3+u7jyxzayKUCEB1eQ71hyfQNB7q59a7t3Gp+ykWu7ZgGcl7a3gCPbRt+QcPH9zH0/MuSNifqedNQ7A34TnOJP1dbpi9lD/sezrpOYRDBvUtA9S3DLB1j3/Mxw/v7VybUBJVM+0Kzp+7mud3/5SmjmdSPDOe2+3hK1/4Lrd88AYGeuEnd/0359ZdwIsvPU9ZaTlPP/NPbv/2l/niZ7/Hu274CPfe/7Oh556y4Az+4+238K5briUadjJj2qm4nd64sph33/h+/vb/PUB/f3yZ2ooV1wEklER9+tOf4s47v8uhQ4e44orLec97buZHP/oxf/7zX/jNb+7FMAzuvPPbzJ8/j927Y8GygwcP8t73vg+A0tJSnnzyKe666yd85zvf5txzz2Xz5s3xn1NNNbfd9jUOHDjAr3/9S2bNmkUgEODtb38bt9zyfgzD4L77fsOzG5/BMJxppyb19/fx9ndexc3v+k/e/tb38JOf3cGtn7md//nF99j52issPOMcPveZb/KRT9zI9ldf4s7vfJPWln4qKyu59tprAJg3by4ORyyod9ZZZ/HII49w+umnc/HFF/O+932AwsJC7rnnf3jxxa0AnHrqqbzznTfR2dnJOee8AYgFbN797pu49dbkARsAA4PPfvDjrHviUX75x9/ywf94DwDl7iKuuHoZTQf286Xvf5P8vHwevu8vbKx7jptvfjdPPfUUzzyzgWnTpnHnnXfwvvd9AICSkjLedfPbqJk3gzu+/lNW3nD05YBOR5hT521iesUuTNNNhy9WNlXhLU8IzFy0sIRnt3UO/TzIpKYi56jPS0REJFsK2oiMIyshMGNj9yt3ERxoo6j0bDpaNozqeBmDPmUDRHyxi8Itt3yb/FNmc+Y33k/L/z07tMQcVd8Fkalr+YXlbN3tH2pGnGf0cqZzO64UAZtBLjPCmYdeZ8uss+hz58btG97zpqm/J+G5raEBfJFQ3Bjwak859cFDces+88q9qU/AV3Dkj+MwfnjkZKjywrPw5lbT0Zuqr9bh9IQR5lTPZ+/ePfR0h3Hac3nyyac4Z9ESXnzpefoH+nji6Yex2zysf+wJbrrpXTz4578zWMJy/uKL+ccjDxEKgtvhodMXXxJWPq2Si2qv4IP/+U5OqamN25esf01OTg5nnbWQO++8AwCbzU5zc6zk5rzzFnPjjf+B0+mipKSYmpqaoaDN448fCYz39PTw8suxCV6vv76L6dMTP+/Gxkb27481qt2zZw+VlZXk5HjYvHkLAwOxAOFzzz2PgT3j1KQnnnoYgNf+tY2VK94JwAVLLuXUBWcTNcOxPj/DSrYGmxsfPHiQ8vJycnNzCQZDNDcfYPbsWZx++un8+Md3cd111/Hkk08SDofp6Ojg9dd3MWdODQAvv/wKnZ1Hyo9OPfUUZs+ezSc/+Ul6exMDjoM8NhfnLzqX7/78LgDWPPz/8eF33sLu3ha+dP4FnDp3Pu94c6y3UX5uPqVlJbxh8TlccMESbrnlvQAUFhZht9sPf+6P43GU07DnAA67k4L8Qnp645uCJ8ybJ3Vw0W43KS7qAKC0+EjZ1K13J5ZNZcub72D5hRNzkpeIiEwtCtqIjCPDFl+2MGPOdZRUXIDLU8r+PX9O8ax0MgR97MPStgvzqLnl32n5e138ERz6thcB8OY7qT2jmPUvtRMKW9S6N1JoS31hOlxhqJ/aphd5bMHSuO3z8gr556Emnm5voTucWLLRa0a4vWkrtYXlrCytwTAMlpecz9be+rhmxCkNuGBXVdymsR4/HB2R/VFVdjH5nkq8uTWcNnNFQqaNzebCacsb1kD2CNOK0N3XgN3uYSDUgds1sseWgWVZDA/6RLERwImFizbTgS0cJMc0KHEVD2XanHbqWcybcyr/+NtGnA43Xq+XO+/8Np///BeSviebzUZ7e/tQ1swgl8vFRz/6Ud73vvfj8/n41Kc+idN55DMMBo+8n1DoSB8Wy7KS9n0Jh498dqZpYbfbUmZAZZqaFAqHDh/HxGa343TkgwXvueVd9Ac7kowFP/IZ1tfXs2LFdbz66qscPHiQpUuXEgoF495PMoFA/FSr1tY2iooKqa6uYfv27SmfV+oswBj6u2To/xDrBfOJr3+eF16J789kYvLWj76HgK+XMkdRXAzGsqyhBsWG4cBl92K3hQ+/RwOHLYdwND7DKnNw8YjcnB5OmRvLkkpXNpWKy2lQe3qxxn2LiMhxMbpOcyKSUcTXQ+vvH6bpjvsI74j/pfLA3r+y/bkv8OKTH6R13z9HfeyK2W9i4YXfZtrMy+nt3pWwP2dmJbPf+abYefj72P75u2n63cNxa9w100f9uiJT1cpLKrjqDWV48x1U2uKzXcrPvooz3/UtFn/klxQvWJLw3MqetoSKxvZQgPZQgEPBfvyR5Bk7vmiI9b4DrOloAMDryKPENxsiGf5JjthgXwUE3YnHPDx+eCzYR4yQ3lx/D0+++jV8/Q281rw2Yb2BjVxXJYWeObgdRUPb9zbuZu6cU5hWVgmEedOyf2fry5sAyM3J47JL3oTd5uGqq67klVe2YVlgYeAjl8df2MR1V1+HMyeXgWgE02Nnb38HvbixgKc3/JPLrz6Tq9+8hNWrP8quXbtSBmwA+vr66Onp4fzzz4+9R7ud6upqXC4XlmXS09NDQUEBF1980bF/gCPs3PkaixefS05ODjk5OVxwQexryTDgkx/9Mv/+pptxO0qw23Kw2zzYbTnYDAc2Iz7A5XEW8fIrL3H9dW8l112GYRgsmH86AP39veTlHcnAeuWV7bztbW9l27ZtbNs2+OdY0GX79u1ceukl2O12SkpKWLBgAXv3NiQ9966uLr7whS/xuc/911A2zqWXXsKHPvTBuHUOw84r217hLVf/OwDXX718aN9Tzz/Le9/2zqHg1cJTYuf81KZnufntN9IV6aU90s38+fOGnnPllVcAMH/+PMyoiRnOp9Azh0LPXAo9c4YaFg9XVXYx3ryaoeBiJg5HhAVztuBxx2fE5Xj6mVbSRm5O8ulw3nwHV72hjJWXVGR8DRERkbGgW+4iY8SyLDrWPIG/bjtR3+FfAg/mQpkD8jOXJKXtV3PYoX0Pc2jfw0meHZObW0Nkb+q79XZvASXLL878ZkROEoZhsOrSSpYtLmXvX4BhQ23atj9J6yvrmXftR8mvnEvXrk1xzy3GzinbnLx+VnjoFki206RClkmdv5Vl3plYAYOOTTNhdh/MPgQ5iZN1Cm15LC4+jbIZp/Hn12JlPdUVuVxwZgkPPB4rxxmr8cMFnhq6g7sTtj++48tDf7b3gcMHtjDYCBGw7cXm8eAuLsY4/GEEgwFuv/NWfv7ff8Rms/Po+v+PF196HoD2jlYuv/RqPvOJr9O8v4Vf/erXtIW7MYEoBq/teZ1f/+l3/OPePxM1Tf7+xKN89+d30X94Gl4+sYwRy4oQjHbEnWeqnjZf//o3+a//+jQf+chq7HY7f/jD//KPfzzMY4+t5/e/v5+2tja2b98xJp/hcG1tbfzlwb/wq1/fQ0dnG7v27KDdt5f+UAtz5tSwYcOzCUEIu82Fwxbfe6xnoJmv3/FxvvnVu7luxb9jt9v42//9iV27d/LXv/0vd3zjJ/i7e/jIRz7Gtm3b+MhHVrNjx6sMDAzgcDiGMmV27txJXd1z3HvvrzFNi7vuumuodCuZlpYWvv71b/C1r32Nz33uc8yYMSNpb5s/3PcHvvL1L3Pzqv/g4afXD23/7YN/oGbmbJ7649+x2Qx2N+7lPf+1mu//4qd8+9av8cQf1+G0O3j5xZe468c/AcDn8/HrX/8Kl8vJt799Z4ozi89g2lx/DwBXnnk7uw8+krC6NP8U8twVcZliTmeYZRc/xAsvvY0ofoqL9nPGgjpyPH0MBPJ4dVctXd2zsFNInruEmopY829l2IiIyPFkWMNzWJNoa0usyReRRO0PPo5v/Was0Ii760sOwZld4Mo8GnT+2Z+gtLKW3dv+e9T9buh1kPvyxZz15Y/w/DtuA6DH7gYD6kpP4VCuF6sgn5yywnGbOiMymTWt/RrB1mHBCsNG1WXvwl1Yyu51P8WKxgdf8ypPYe6yr/HVlhepjyb/tzJTY+Iri6ZjvZLDEy8f7iPiDsKCJvD24MmB6d5czK4CrilZwu/+2sLvb7uAG257jnDEwgAe/Fbt0OOqcg9fvWnBMX8OwUgXm5q+mtCMGAALvM9C3k74xLpnE7qBGA4nZr6dUH4g8bnDPPXoDi5705kYhpNCzxxMDOoDBzHT/0oCgB2TYvqxH05zGjyGzZh496EsCwKRVmyOEP0DfnI8udz/m//jk599L/ubG7n7J3/iU5/5CB5HeUKLFtMK4w80pG1WPOh4fgZf+tIX+dnPfobPl3y8eMSK0hHuoSfaT2RYv54SVwFeZy5Om4OgGaahLz4zrNiRT4XLyxe/+AXWr1/P889vGnnoOH3BFj531xlZn/fM4guw21xJGmkbGDixSAyWDrIZbqq8b2J+2Q1Zv56IiEgm06YVZF6EMm1ExkTE14O/bntiwAZg0+FGhQv8GTJujr5JsYGT0hmXMXvpf8T1sPE7c/hTVS1h++HgTBgYx6kzIpOZp7QmLmgzY8kKZiy5jp7m15hZu4r9G/4Ut77jpXya177MMmw8e5WLf50dIjKiZcvwxsQHA4nlFg3BXhh+7Rp0w/ZY4GX+3EJWXz+XvzcfJK80N/H7dMTDsRo/7HYUM71wKU2+RxNGKXufhYKXwJbiR5kVCRM1End6XMUUeGbgH2iO68ViWWEC4Xa6cSUEbFJd5Eex0YeLQgJxx0hWMnOiBSKtBCKd3Prxb7DkvItxuTz8ec1v2d/cCMDqj98ARiwzKccZ39TWZjgzNisGwLDhdhQdt6DVt751R9r9DsNOhctLIBAiYh0JhHSGeugM9TA/fzodwcQgZ8BMHTQZzjLDhEPtGJEB7KadqC2a8TkuRwGLqm8iYgaSBG2stAEbiI0Ub/FvYLb3atwOb1bnKSIiMlYUtBEZA53rniXq6yG3ZjrzVl+PPT+HnV+/l0V3fYK+PQfw72xg35q/w7ntUDaAzZuDlduPNaxp51E3KQ4bWNsLaN+0n3a+H7frYE7xkYDNCOMxdUZkMis5dwW9jVuI9scyTA48/xAHnn8o6dposIDggdjUIgODpetzOfc5D3++xU9g2ECpeXmFPNa6j339vVxTUZVQPhUxTaxIYnZJdUVuwjjib37gTP70+D7Ch9dftLA07vFYjh+eV/p2AA74NxA6nHFj74tl2KQK2AwynfHvx+nIx2HzEI4eKcG57E1nDv05Yg7QlyQoke4iPzzi15eIOTalYWPJtMIEI91gmXznB19OvdAyCUa6cTtKEgIvmZoVG4cDO4PrJhIryUSxQmcuFhY9kcS/r8H1d9zx7eTHsyASbCUS6cYyw1gW5AWj+D1kHAAVivQQCPuSlk2NlGoCVTDaxd7OtZxWfnPGY4iIiIwlBW1ExkCgMXYh1t/QQuP9jzB39fUAmIEQjjwPke4+GHDAs7HgiGvuTNzvhO7Wx4aOcWDvXzmw96+jf/EuF2xKbIjod3ioK0tfKjHWU2dEJjNHbjGFC5bi2/EoViT1lB0r6iTUfiZWOD9ue5HTxSwzQk3/c1RG27BbUXIHPMwsO4Ml1St4tPNQwrEcNhs4jlxx2m0QNaHxUD+33r0t7fk+u+1IL5exHj9sGAbzy26gIv9CXtj/DUwrSOHz4BjRysTu8ZAzfSaG3U7P7sNTe0ZcQHucRbEeLXYPue6ypFOPUpVFpbrIjyZcpWcuqxov5uFMn9jI7cHpRh4srKxKmyB1ttDgBCW3o+TwawwwfIKSx1k2IcvCIBbMHKncXcShoC/r9cNFgq1Ewp1YwwJ83sPfpn0uiNrTn8/wnkypZJpA1RPcm/EYIiIiY21i/ksvMslY4cRbz6FOP5tv+Tb5C2Zx5jfeT8v/PTu0z4xEKJm+it6uLUTDSfpGjGB35BGNpGgwnOT33KjdwY7CWfQ5PNRMz2X19fPIz7Hz+Xu284WbTsPlsLFpZycPPL5/aOrMjVfNzPr9ikxVpefHMkz8uzYMZdwMZ88tJq+qFlfBpfS7ApgRC5vDILfGQ86Sp3mz/xlcoWFZIUHoaW6m+cCz+F2ngGcJw5uX1LjzscpzqG+JBSWiaapgUhnP8cPN/ieGSqRcSYZTRQMBAq0HyZk+7OfHiPhJz0CscbI3by4Doc4kr5L6Yj3dRX62xxgvg/1qkmXBRM2BlOeUqlQsXbaQzXBMyPKvdDw2FwMjSp5297akXZ+KZYZjGTYjMrIMoDgIhSHodkPQAZbNRth2FN9IZB5vHzWzC8KJiIiMJQVtRMaA4Yx9K+VWV1B909W4S4s442u3YNjtOL35cX1mAGwOBw5XMYWlS/G1PhpXJjWSzebCnTON/p4UQRtvCK7fC205sLWUnlABB2bN5WlPbHxqQ0s/9z/SyOrr53LJojLafUHufmgPv7/tAh56uplwxBqzqTMik51hGJQtuQHvwqvp3LqWYPtezGgYm92Ju2wOJeeswJHrTXhe+74/4WtdjyvF93Kh1c/iYGx6z9M5FwDgtbtYXlKFdaHB1t1+fH2Zp8yN5M13DPWmGg89gYahPxuZW4cAYAtBNMn1t6+vPnEj4LDlYLPMpNk2qS7yR4ZDHLaxKw3L1mC/mtT9ZhLfT7JSsXTrJ7NSZwE90QEiVuYvHIdhp9SZuhljONSONSxg4nDm4fJM45xL/2do2mLJUO9rk0PeAgKMfpBGpglUdpsyUkVE5PhT0EZkDHiqKwnWN9PfeIhtt96dcb27ZjoAJTPfxoB/J4H+PaT6hd00Q/T3NKQ+mNOCikDsv1MDTCu9jD88eSr0Jv6iPHiDf2RD00h0al0siBwrR66X8ouz610RCXXh79iQNvgK4CLCmaHX2eI+i7A9n9rCcoocLsiH2jOKWf9SO6Fw+u/Fwhw73gInDrtxXMYPR4dlkFgjyk+m5+bQGrVwl1dgOBx4ps9goOUAdj9EPYnrkzEMB25HKbmWH3+SPiepuAhjAVHTzsCAl24zH8vqwzAMPC4bpYWuMWvMnIxpRQiEfQmZH5m4HYXYbS7sNje5rlICId/QPssyyDDQc1KxY6PQnkNXpC/t+zIMg0J7DnZsKddFIwGG7wqH+pgz9zRcnhLMJNkvM8IlNLjCmFb6KWappCqlKnDPOarjDdcb6eK5zrW0BhqIWGEchpNyTw0Xlqwg31F8zMcXEZGpR0EbkTFQsvxiere+TtSX+c6e3VtAyfKLAehs/jPBwD7G7A6rcwB/13rOLvPxdO9lQHYNTcfz4kZkqutsWZtVmSPEMm4uD76MOeNtrCytGdq+8pIKLCw2bm/BP5AYhClw+Vk4fQ/XLXFTNvvtx23im904ci6hcvAM66P85SXnxi+uLIZTYxe1XRdBz2Iblj11UGP4GGVfpI8vNdxPMIseMA4iXGu9wq6dtTTsX8hAIDFDY3gG0nh8Vq+13sf+7scStqdqYjvSYCbH8DWzit445ZrcWpbFmo466vyv4YsmZot67XnUFp7GytLatH9Pjdu/RGigcdgWG2ByYO/fkk5btJtQ5X0jjV2PZBjl7QJsWQV33PZi5pSsyLguFcuyeKbjAXb6N9Abjf950RLczZ7eLZxeuJRLSo/f9/d4CPnCtKxrpa9xADNsYXMa5FXnMH15OS6vMpVERI6GgjYiY8DhLaCwdiG+9ZuTj/0+zHA5KaxdiKMoP+u786Plsoc5s3wHW5oX0xfOz6qh6VhOnRE52QT6GuIeF5acycx5b8OTUz5UujHcG+x9zCmLv2NvGAaXz3ma+Y4NbGxczMGeSiKmHYctSmXBQWqr6sh39dHd5sYwoGz2DeP9tgAo8NTQHYyNQfdfALl7EpsRJ1P6qpeiy8/nUHDz0PSp4dz22FjxwSlVXkceVxSdxaO+rZhpgtgGJvM5xK6dtby+dzHRZHVYjP90vOFlY4MyNbEdFAZ+t+PLDAAmsfBDvuHi3MLLx/w8TzTDMFhVdhHLvItY17mZhmArETOCw+agxl3O8pLzKHLkZT7OiLKkTNMWbTZn0gloww1+DVqWxb7ufyaMt487nuFmeuHSYxr3/UzHA7zke5RwitfpjXbxku9RAC4tOz7f32PJsiz2rzlER10XYV98qWdf/QBdW/2U1hYza+X4BFJFRKYyBW1ExkjpyisA8NdtI+rrTdhvPxzYGVw38u58YcmZzJj7VjoP1dHe/CSmmXh3MGJAtwdCdrA53Ljd0yjJm0vBQITulo1HjuXpobaqjsf2vDHjeY/11BmRk401ojzD37mD8lnLKCw+LWnphs1K7F0zGMTNc3bxxvmJGRxHXiuIv2MD3sqrcTi9x3zumcwpWUGjfyN2q59oHvSdDgUvpR/7HXU6KD7/Espm3kBNZAV7O9fSE9xL1AxjtzkpcM9hTsmKhAvgVWUXYRgGz3a/ij9JU94copxiG2Bh1Mva5tQBm0HjOR0vmiQjKFMTWwtoAbqAkR9fvxXizwe+PyUyLZIpcuRxY/llWa+PhLrobFlLoK8h1oR4xMSxTNMW3XlzhiagzfZenfZr0LIsDMPIGNwZDAIdjd5IF6/6N6QM2AwKW0F2+jew2Hs1eccQIDoR9q85ROv6dsxQ8qBr2BehdX0skDp71eRqqi0icqIpaCMyRgzDoGzVlXiXLaFz3bMEG1owIxFCeGiIzqPPUYq53cD+rz2UVucw66z40aGDF3pzTr+FcNBHV+umoX0W4HOPHGsaJBDcT3dwP05c5Lhj408Hf9WfXnAQmw3MNC0XxnPqjMjJYmQWANjY/cpdBAfakpZu2JI0M00WxE2VrRMNd9F5YC3l1eNfSuN2FHPImME0qx4nJr5YZSd5O5Nn3PjznDSfVcOpK95++PnerEt+ss3K+P1jzfQOxKZQnajpeMPLxgalb2Jrp4Uo7aQuhp3smRZjwbIsOvY/gL9jQ9YlhyPZncWUzDhSxpTpazDb4M6xeK5zLX3DAkKLp13JG6tupDNwkI0H/872jiM3XXqjsZ43V02iUrmQL0xHXVfKgM0gM2TRUddF5bJSnEX6vUNEJFsK2oiMMUdRPuU3Xo1lWbyw5hC76rro90WAI3fYWusHyJ/WS15cz8EjF3rF5efFBW18bvB7SDnVNkyIsCf25+LDLzN7moOrF0+jbmcXvt7E2+LjPXVG5GThyash2Ld76HGm0g13XmIz05ElVpmydYJ9exO2jQdfpI8t1gxM8nESxWlEKV7ax9nnNFOxKYLrEFhRCNid1FcUU7dkJqXFM7juGDJFMmVlNLYeycI5UdPxhpeNjZSsiW1x3nm81v8S1hTOtBgLHfsfyDhRMR3D5qawdOlRZaGNJsA4Wq1JyunCZgiXPYf+cGIvvEPB4/P9PVZa1rUmlESlEvZFOLCuleobxzaQKiIylSloIzJOXlhziB3r24mkuPMUCcWPVkl1oRcxYhk2qQI2Qw6vKwyB3QKnw8WqSytZtriUdc+10nBogEjUOm5TZ0ROFiXTV9DbtWUoMyBd6cbILIBBI0usMmXrJAvkjKXhDWT7rCDgZjD00UEBB/LKmHmln3zLz05mEOBIqVKFbXx/tRhsoD6SYUDU8nH26Y+yfseDXHmxj2jUQTg0k2Dk3bjHcDLPnJIVtPVuIZiknGYkt72YDpuL4LCAzVTLtBgLx9rnze4sprB0KaWzjr6MabxERpTTvdKxgS1tj3PZzFVcMuM66v3xfeei4/z9Pdb6GmM/HQpqclm4eh7OfDt1n9/O2R+fT065m65Xe9jx8/oj6xvGPpAqIjKVKWgjMg76fWF21XWlDNgA9LZVUFRxYOhxqgu9bs/wkqgjkk0pidqh2w0lgSN384vynGNeGiAiRzhcsYvFTBkC6bIAjqbR6nha01HHet/LhJL03wHox8EuqwQoSdhX4x7fHllOx5EI9uB0vJJCF2Vlj9ARep451V109EJx0eCqA2xq2j3Ul2Qs+sW4HbE+J02+R7NqYLupf2fCvqmUaTEWRlMiCGBzFOFwerHZnLjz5lAyY8Vx6fN0NBwjyunOL38jZ5VdTKGrhH80/i5hvX2cv7/HmhmO/a7T09DPv+5vZOHquYR7IrRv9bHgP2ZjmfG/C5kpAq8iIpKcgjYi4+DFda30+yKU1+Ryzep55OTbWfPd17nmQ3PJL3Xx6jPt1K25iNKaXXjyE5sWDxdKErBJN6Uk6Eh9N19Exsfg3f1UvTgyZQGMLLHKptHqePFF+qjzv5YyYJOO157H8pLzxuGsjqguz6G+JXanfnA63tmnPcWCuVtwOpJnKASjXTQd7hczf4z6xWQ7nWhe6dvZ2BdfMjXVMi3GwmhLBF3uacw+42vH5+SOUbmnhpZh5XQbD65j48F1KddXuMfv+3s82JxJAqE2aPz7QXr3D7Dww3Pjdx0OvGo8uIhIdhS0ERkHHYdThVsb+nny/kb+bfVcOvYPcP8Xt7Pw8mksWlZOqD+fQ7sWMuvMLdhdqX9BT3Y/Kt2UEsvgqGv6RaaKSH8XnS+uJdDRgBUNY9ideEprKDl3BY7csSuTGWQYBmWzb8BbeTWdB9YS7NuLaYazzgIYWWKVzngHZdd1voAvGt9l+JqKc1ladjrl7iKa+tu4/bXE7B+X4aC28LSsRjhnIxjpijWGDTQQtcLYDScFnhreeP6/s3W3A19fLKjkcfdSM3t7yoDNINMK0uLfwGzv1aNqLJvqPOaUrMi6ge1Uz7QYCxOtRHAsXViygt29W+KaEaeSby/mwpLJddMlrzqHvvoBCqpzOfWmajylbi79yRsI9UZwe510bPPHrc+t9rDvwYMaDy4ikiUFbUTGQTScGGoxoxanLy3lnKsr+OsPYhkyezddCsD0U1/Blduf9FjJfl1JN6XEhp1e38v09+zEk1dDyfQVOFxjf5EqMhFZlkXHCw/g37WBaH/8BVKwdTe9jVsoXLCU0vPHZ6yyw+k9qqlOY1FiNVYaA60J2x4+9CIPH3qRH559C/84+GLCfq89j9rC01hZWnvMr29ZFns6HqDFvyGhZ0x3cDdt9i2cNuctvPivckJhizNO2UhuTnzGYrLyUYhl3OztXJtVw9mM59G7ZSiTJtPxpnqmxViYaCWCYynfUcwZhUt5yfdo2rHfTsPN6YVLJ10T6unLy+na6qensZ+6W7elXev0OjAMQ+PBRURGQUEbkXFgP5wqPK06l8tvqqag1M0NXz2deYuLOfB6D296/xwevPNfgMHeTZfR3TKTs6998PCzDYbn17iiEErxnZpsSokrHCUcaAIg2Leb3q4tQ2UZumMlU13HCw/g2/EoViT5hVG0vwvfjliZTNmSiTVW+VhLrMZK2Iom3b6keAFRy2SLb0/c9nybh69U3TBmGTZ7Oh5I2ysmGO1iztzfA+/ktYbplBQditufrnwUoCdNv5jhWTX94VbCZg+phnSPpuRqqmdajIVjKRGMhLrobFlLoK8Bywxj2JwT7qbFJYfL6Xb6N9Cb5Osg317M6YVLh9ZNFCFfmP1rDtK9rYdo0ATA7rFRtLCAWSsrcXmduLxOSmuL0wZiAGwuA+85hXS96Nd4cBGRUVDQRmQclFbn0Fo/QFtjP7/LcNcJIKewe+jPNkched5FhAcOYJphKmwGAVqIkHmihj0KRSOWRcNd+FoPX6TOnlgXqSJjKdLfhX/XhpQBm0FWJIh/1wa8C6/Gkes9PieXhWMtsRorTiNJIy3ghtlL+cO+pxO2l7u8Y1oS1eLfkLa5L4BFkFMXPMR1F36NLfvj96UrH4Xk/WLSZdWkk23J1VTPtBgLR1MiaFkWHfsfSBronGg3LQzD4NKyG1jsvZrnOtdyaFg5XYV7DheWrJhQf++WZbHvwYO0PdGBGYwPsERCUTo2+uja4qf8ihJmrapk1soKgKQlTxDLsCmtLSY6ENV4cBGRUVLQRmQcnLu8nMatfvqz+MXEleun6ty6ocdmpJs+38s4nF4Mm5O8vBqmexbQ3PN0+gsZC/IOj/tO2GUG8XdswFt5tXrdyJTV+eLauJKo8rOvYtrZV+IpKqf+0V/StWvT0L5ofxedW9dSfvHEG6t8tCVWY6XaU0598FDC9s+8cm/S9WM5LWpv59qsgybBaBedwf+jrCCX7mE/GtOVj0LyfjGZsnsynUc2JVeTNdPieDmaEsH2fX9Ku34i3rTIc3gnxTj3/WsOcejRdjBTrzGDJgcfbQfDYPaqSmavqqRyWSkH1rXS1zCAGbGwOQzyanKYsbwcZ5GTV+84kk2VzYhwjQcXEVHQRmRc5HqdLKgtZsf69rRjv51umLu4F3dufNNPM9JNKBLLvgn27cbh9FJWOBsfHUmnlNijsYBNVe4ZzDr77UlHpEbDXXQeWHtCLwZFxlOgoyHucdv2J2l9ZT3zrv0o+ZVz44I2AMH2k2+scjaWl5zP1t76hGbEyYz1tKieQEPCtlT9aSBW6lTgqaF7WL+YQcnKRwEKRvSLCUa6OND9TFYBG4+jmNKCU2juej7hPDKZbJkWJ8JoSgQjoS78HRvSBnhANy2ORsgXpv3ZzrQBmyEmtG88UsbkLHKmzYwxh/X8yzQivB94oTXEujt2EwlbOJwGVdU5XLO8nCJNlxKRk4iCNiLj5PzDqcK76rqSZtzkek3OvqKSGWc/S+fB9Mcywz5yuwaYNu1SuvMZmlISCRzEGQpSFIxl2PQEXyUc7Eo5IjXYp4tUmbqsaPzXvGVZVF3+bmwOJ/s3/iVhvRmdPNNnjievI9ZUeL3v5bRjv8d6WhRA1Ir/O8nUnyZqhplTsoK23i1ZZei47cXMGdEvZm/nWkKmL6vzC0S66O5vSnoe2RqZadETaGD7wXt43v80lmViGDZyHNNYWPlhCjw1WR93KhhNiWBny9qsSqlANy1Gq2VdKxF/8t5WyUS6sy9jSjoeHOJGhJ/5oTlsAfYA/b1R6D2SbdNQP8ArW/2cX1vMisPTpSZDTyMRkWOhoI3IODEMgyWrKlm4rJSn7/8/ug/kYEbt2OxRCqYdourcjcxftAKn+2w6D27IeDzLDDLQuZn5Z35z6JfWxu1fIhRoHLZq6oxIFRktwz5i+sySFcxYch09za8xs3YV+zf8KW6/za47takMToGq87+WNONmLKdFDWcfMRo7U38au82J21HM9MKlGcubbIab6YVLE3rPdA8kZumkY9gSe/4czYhu0zTZ3PwN/IE9DG92bFnQF97P8/u+QqFnHufN/Co2m23Ux5/MsikRDPQ1xD0uLDmTmfPeljTTFHTTYjT6Go8ESbIpYYLsy5jMyJGv9VQjwn/3i728CqQKG/l8EZ5a3w6WxdILnp4UPY1ERI6FgjYi4yy3yMm5b+6mu/XBoW0z5lxPScWXU44yLS5fQs1p78lY4jSVR6SKjJantIZg67DpM88/xIHnH0q53l128o1VzpZhGKwqu4hl3kWs69xMQ7CViBnBYXNQ4y5necl5Y5phM2hkqVOm/jSDpU7zDveBOeDfkLSE1G0vHhrPPdJApD1hW7qSrN5AYmrkyJKrbMQCNukCRhb+wG42N3+DJbO/Nurjj5XhE7WiVhi74aTAU8OckhW4HScui8EacRPC37mD8lnLUmaa6qZF9kZTwjT0nEjqUvBBIV+YsO/I30OyEeH9wPOkDtgMHStk8fyzLcyp2ECuJ3nG1UTsaSQicjQUtBE5DkZOxcg0yrSo9GxcnpKMJU7HMiJVZKopOXcFvY1b4poRp2LPLabknJNvrPJoFTnyuLH8suP2eqlKnZL1pxle6mQYBvPLbmC29+pYgGFYv5gC95zDAQZv0tc0R1mSZY0oGUtWcpVJT6DhcIZNZv7AHnoCTRR4qkb1Gscq3USt7uBu2nq3DAXCTkQWw8ibFpkyTYfftAj5wrSsa6WvcQAzbGFzGuRV5zB9eTku9UrJqoRp4Yfnxu9yZP4ayKbs6mVigZvqmlw+sHoeefl2Pv3Rl/jcl05j8fklfODmF+g+HPjx9zh5/m/XcMXyhyAvkPR46mkkIlOBgjYix0G2UzEGNez8FdFIf8YSp6MZkSoyVTlyiylcsBTfjkfTjv02HG4KFyydUOO+JeZYS53cDm/GKU6Jx3LGvVamkqxsziOT7QfvYXhJFKTL7rHYfvBuamu+ParXOFaZJmoFo100+WJZDPPLjn8Ww8ibFpkyTd15c7Asi/1rDiUdS91XP0DXVj+ltcXMOtwr5WSVV51DX32s3ClVCVPHNn/8c2pyMh53eNkVgOEwsEZk6HQc/n9jQz9/uL+RD6yei2XBd25/jQfWXpRwzENd5bDmTXBKAwXXRJk1P7FETj2NRGSyU9BG5DjJNBVj0PSaFZRWXphVidPRjEgVmcpKzz/8fbZrQ9KMG/vhwM7gOpl4jqXU6WjkOMvoCfYOPc5UkjUW5zEQaYt7nCm7ZyDSOurXOBbBSBct/g0ZJ2qZVpAW/wZme68edeDqWI0mg3XwpsX+NYdoXd+OmWKqY9gXoXV9rFxu9qrKcTnvyWD68nI6t3QT8UeTljCN5ChyMGN5ecbjDi+7Aiial0duhYcDT8c+c3uuDbthQF/2TZCjGNCfC9sX0MMuwh9IPoxBPY1EZDJT0EbkOEk1FSMS9mEeHu8N0NKwlpaGtSmPM7LEaTQjUkWmOsMwKFtyA96FV9O5dS3B9r2Y0TA2uxN32RxKzlmhDJsJ7lhKnY5GkWc+PcGGhO2pRoY77UVU5C85pvOwrPhZypmye0auH297O9dmNY0LYhk3ezvXjjrD6ViN9qaF2ZdHR11LyoDNIDNk0VF3ZIT1ycjldVJ2cQkHH2nLPPbbBmUXFWf1WQ0vuyqozuX0W+ZQUJ3L/LfPGsrg+edtr0JflNnVudx4UzWlpW7e/+G5lJa5APjYpxbww+/+i/7DgR37YMZaxAmv17D7uZ8TXJRYIqeeRiIymSloI3KcjZyKEQl10fTqV4+6xGk0I1JFThaOXC/lFysVfjI7mlKnozHakeFLqr55zEEjw7BhDYsdZMruMYzjOz2qJ9CQsC1dc+ae4InJYhjNTYumPxwg7ItkNQ0p7Mt+hPVUNWtlBZZl0fZEB2YweaDL5rZRfkUJs1ZWZHXM4WVXqTJ4Bous9jX28+UMGT4ACxZ6Yfuh2IP+XEoOvI9p1y5KyFTWIAYRmcwUtBE5wcaqxCmbEakiU12kv4vOF9cS6GjAioYx7E48pTWUnLsCR+6Jm3QjE9ex9tE5GjmOafSF9ydsT5Xdk+PIXHoylqKjbM4cPUFZDJluWhSWXY6//Qn27fw67TsvBaZlPQ0p2xHWU5VhGFS9dTrT31jGvjUH6d7WQzQQS7uxe2x4zypg1srKUWUjTV9eTtdWf0I/oeEWAfuINSPOpCjX4OrFebRvP7Ktc9u/6HzyZwlrNYhBRCYzBW1EJgCVOIkcG8uy6HjhgaS9bIKtu+lt3DLUy+ZkbjAqyR3vPjoLKz/M8/u+wshmxMkZLKxcPSavmy27EX8hnql8y36CsxhG3rSwLIuO/Q9wYNf3iYS72OmGIvNiEobUp5mGlM0I65OBs8jJ3PfOHpNjubxOSmuL0/YVygXmYbITgwipf1a7nAZLLymj+pIZ9D22i4HmntiOaGJWmgYxiMhkp6CNyASgEieRY9PxwgNpp0ZF+7vw7YhNuilbcvwn3cjEdrz76BR4aij0zMMf2J1xbaFn3nEf913gqaE7eOTcMpVvFbgnVhZDx/4HhrJXd7qh3gNnOWI9ULKdhpTNCGsZvcFSqmQTvAAMItTShxv4l6OAnkhiEKYoz8aCvi6u8ObRteXAkYANwIAnFgs9/NenQQySiTJ0ZTIwLMtKeyuhra0n3W4REZETKtLfRdNDX006LWoke24xVW/5ppoRywkRjMSa9vYEGghHgwQirZikKskyKPTM47yZX8VmO749bYKRLjY1ffW49vkZK8P7xAUMeDofAnaY9+gyZm5dnPVxyq8sOal72oy3cHeYPT98jf7mABYGdpcdpyuCo7cNGya51UWU3XQuD/x2Lw37BohiYMeighBL6CYvVYdkIwqL/gUXvBKXpawMSxkpXYYuxE+b1NePjJdp0wqyWqdMGxERmdQ6X1ybVcAGYhk3nVvXqkmxHFeWZbGn4wFa/BtSBEJsgIGBDcOwkeMoZ2Hl6uOeYTPoRPT5GSudLWuHyoxf98QCNgD7LqqjdNcCPL2FGY/h9GY3wlqOnrPISa67Gzu+2IYQ2Gx2zMPBmP7Gbppuf4ILgQtHc2DLDv+aS8EVlZSdcp0ybCQlZejKZKKgjYiITGqBjoa4x+VnX8W0s6/EU1RO/aO/pGvXprj9wfYTM+lGTl57Oh7IEAAxsRluqrxvYn7ZxLg4ON59fsZKoK9h6M/d9iPbQ/l92M7vxbaxKOU0JACby6C0NrsR1nJsrHB8towZiB71sWwuG4VnluPbehAGPNhePhXHmd5jPEOZqiL9Xfh3bUgZsBlkRYL4d23Au/BqZejKCXV8821FRETGmBWNn1zTtv1Jdvy/L+Hb+zL5lXMT1pvREzPpRk5OwUgXLf4NaTNWAEwrGMvEifiOz4llMNjn54KqbzKr6I0UeeaT76qmyDOfWUVvZEnVN5lfdsOEKxuwhk2yGhkCGFjaSmi6g4idpMIF/ZRfVZb1CGs5NoZz2GWI/ei/juz5TvJPKaX4giPlbP6tO2jdcB+RLLMw5eSSLEO3/OyrOPNd32LxR35J8YIlQ9sHM3RFTiRl2oiIyKRm2OPviFuWRdXl78bmcLJ/418S1tvsuoMux8/ezrUJJVE1067g/LmreX73T+MmMQWjsZ43p5VPnPI9t8M7oc4nE2PYJKuh2IwF7qcvZc+Oedh6wjiACiCH2N1L0xahd1obfe/cwkVnfOG4n/PJylNdRLDeF3sQtcit8TL3w+fRur6e1n/Wp32uzWPHM70AMxSl+t2LyK32YnPYODjzdQaae7CCIbp3PqbJgZLUyAxdiN3waX1lPfOu/Sj5lXPjsnSVoSsnmjJtRERkUvOU1sQ9nrFkBTOWXIeroJSZtasS1rvLJtakG5naegINcY/LC8/Cm1tNR+/rydcHdXFwLDx5NUN/LjqcauN++lJcWxZj64k1fIwAzcBu4HVgt+mgpbMU+5bsGxXLsStZvgC71zP0uL/BR9P/e4UZ15+Oo8hN0TmVuMpycZXlxD0vt7qIM79+JWd9exkz3nwq//r2BtqfbIifJGWLlV5F+7voevn/Y+8fPq7MGxkyMkMX0t/wUYaunGjKtBERkUmt5NwV9DZuGUp1PvD8Qxx4/qGka+25xZScs+J4nt6k0NHWxqvrH8DRtw+bGcG0OYjkzeaMq95O6bRpJ/r0JoXhk6GiVhi74aTAU0PYHIhbV1V2MfmeSry5NZw2c0Vcpg1A1NTFwbEomb6C3q4tRMNdnBKAg4E8HNvPxAi70j7PCLsIvjyT/uvC5KqfzXHh8HoorJ1J1z/2JOwrXjyDimVzcZbkYHPYeOkT/yDaF/ve6G/sZtut/4xbv++P2+MPkNcZ9zDa36XMGxkyMkMXjtzw6Wl+jZm1q9i/4U9D+5ShKyeagjYiIjKpOQ6P5Uw3BQLAcLgpXLBUzQSHMU2TuofuJbdjM5VGz7AdQM9+mh7azmul51H7lvce97HTk0W6yVDdwd0YxDdQ2Vx/DwBXnnk7uw8+knA8u00XB8fC4YqNefa1PorHDFK0sZaBwxOjymtyuWb1PHLy7az57utc86G55Je6ePWZdp76f00M+Ey2rmvlYo36Pm5KV56Gv24/UV+Q3Ooiqm9ahLs0h4JTStn+xfXMfsdCnMWeoYBNVpz9MOPVpLs0EUgglqEbbN0dty3dDR9l6MqJpqCNiIhMeqXnxybY+HdtSDr+2344sDO4TmLqHroXb8cGXEbyC6J8owdXxwbqHoKLV73vOJ/d5LCn4wEaux7BIpR0v5XQDjfm8R1fTrq9wK2Lg2NVOuvwz4OODTgOVQ5tb23o58n7G/m31XPp2D/A/V/czsLLp7Fo2ZHx3u0NAwnHk/Fln9FL1OfMLoMmE1sYyhrAFUi5RBOBZGSGbjrK0JWJQEEbERGZ9AzDoGzJDXgXXk3n1rUE2/diRsPY7E7cZXMoOWeFfjkfoaOtjdyOzSkDNoNcRpjcjs10tq+gpKzsOJ3d5BAId9Lk+2fKgM1oue3FzCnRxcGxMgyDstk34K28mheMfyVdY0YtTl9ayjlXV/DXHxzpLxSNpB4HLmOv44UHCOU9Bc7LIZx7bAdz9scCNrNfybh0cCLQ/8/emYc3cd/5/zXS6LAsy7JlZHMYGxwaCOQghAQHQi4SaNnWBJrS0tK0adiGpt1uj216pEeO7fZK99fNdpPu9tqmSTekIXFap0kaSDiCuSEEQhLA+AAfsmXJsizrGGl+fwjZlnXaGGPM9/U8eYJnvjMaSaM53vP5vN/2hReOyfb5QPG56Nxfjd9ZjxoOIWl1GG3lFF5dhWwqON+bN2xEha7gQkOINgKBQCAYN8gm65Auwt3eEDU7HTQ4egkpKjpZosyew/IFdqzm8d2m8s6mDXEtUfYrbmXCFbdgzLdT9+r/xCVnmKVu3tn0DItW33c+NnXM8lbzz4moqZ/oDwWNZGCiZREG2Toi6xOArLNizLXhIVo9M6HMxE1ry8izGVj9vVlUzCug+f1ubr9nGs/9KCruaGXhczJaKD4XnmPbQeOJii1tMyCS7rirAtHvR9JrUfWdEAlHTYdzO5FnnEYJtfWNTndMA5EIlA5VVXHu2ZC0ejXgOD4uvIFEha7gQkKINgKBQCC46FBVlY3b2qg96sLtVeLm1bX0cuCEh8pZBay8ofiCvSDNhNzTFPd3urhTAK03fvx4xa30UNO5hwa/g5AaRidpKTPaWV44H6uc2zcuoLjwBof6mWghSbuUQVvARMsiKmzi5mCksZXl4KiLijbtDT7+cP/baccXleeknS8YOTr3V/ffLJcewmQvI1ifg9KlJA7W+SDfiyFvBsZpVgqXz6Dz7f+j6+hrfUOUQUWDmY5pIhEoNc49G9JWoYwHbyBRoSu4kBCijUAgEAguOjZua2PTwQ6CoeStEG6vwqaDHQCsWlySdMyFjiYSf2OULu4UQKMmuZEaR6iqykZnLbWed3GHe+Lm1QXaOOCto9Iyk5W2SiRJ4mRndVK/mvIJNzN/+np2HX8sIRkqVzeRAtMsugMnCUdCaDU68gzTmFZYJSpszhFXL7fTcMCDz515/zVZZeYut2ccJxgZ/M76/j8k6DW9hDpdh0X3cfxNfoJdnX1VNEx6B+OUKZRW3d23SCZfkozHNJEIlJRYBVS6tiE4e2+gbAXyc81QK3QFgvOBEG0EAoFAcFHh9oaofceVUrCJEQyp1B51sWSejfzc8XdxH9HI0ZSoM6SLOwWISOP7kmGjs5ZN7rcIphCn3OEeNrnfAmBV0fV0++sTxtgtl2M1leH0vp8wD0DWGplpFzcHZ0OXO8TLNQ4aG3pRQiqyTmJqWQ7LltvJtyb+Tk1WHTMqCziyqQMlmPo3L+slZlQWiLjvUUQdVOmiqipTb/8YBksBx2seg3D8b3FwZUwmX5JMxzSRCJScuAoo0reZDccbaKgCuUAgEKKNQCAQCC4yanY6cPdEbwbKJ5pYv6ICc46Wbz5xmG+tnYle1rD7aCcbNp/C7VWo2elgza3jLwJYyS2F7lN9f6eLOwUIm0tHY7POC26lh1rPuykFmxhBVaHW8y5LrFcSVhNbK6YWLcRsLMFqKmfm5KqESpuRToYaqoBxIaOqKtUb29hT68I9qGqmvq6XQwc8zK8soGplYkvj/JXFAByrdSWtuDFZZWZUFvSNE4wO0qBKl0wiS7LKmHS+JOmOaSIRKDVxFVCA4+3XcRzahMFaTCSUKI4N1RtoqAK5QCAQoo1AIBAILjIaHP2RvvUtPp58pYH1K6Zzw5VFdLgDPP78CZ76/nU8v/U0IUWlvm18RgBfduvHaHz+MOYBZsSp8Kp5XHbrhelbkA01nXsSnvimwh3uoaZzLzOkxBvIvXVPAHDL7Ec43vpK3DwJ7YglQ52NgHGhUr2xjS2bOgimqJZxuxW2bIq2NK5YFd/SKEkS164qYc4SGwdqHHTU9xJWVLSyRFF5DnOX20WFzVkyHAHRaCsn4Dje93cm4ThZZcxgXxJv/R7CPnfabRWJQOkZXAGFGi3JDLjbkoyGsJJ9et5wBPL8UWyVGq9pWYILHyHaCAQCgeCiIpQi0jd2bzv4JlcJn9sIYF9HOy37N6BITSApoMrIaikTr/4YpqIJ5+x1bRMm8K7tGvTO7Wljv4OqDp/tmnEd993gd8T9vaz4ahYVzcJuyKfR184j7z4bN78+4OBqYzldgeMkY/ORBxKmmQ2lI+ZbczYCxoVIlzvE7lpXyvcbIxhU2VPr4uYlNvKTiDCmfB0L14y/qrnzydkIiJk8aQaSqTIm5ksy4fpPp0w9iq1HJAKlZ3AFVCYifk/WY5MJ5KmOtzGBfI39xiFtz3C4GNKyBBc2QrQRCAQCwUWFbkCkb1mxibVLy7DlGyi1m7AXGHh43Wye2dzUJ+7I2nNzgRaJRKjf/DtCur1oCrrRDJzHKZqOHEYXuobyWz6LRqNJuZ6zofKOz1L7PJicezBL3oT5XjUPn+0aKu/47Dl5/bFCSI03FH65bT8vt+3n51fczd9a9yeMVyIK0wqraPfuIxDO4oZTMnLlxK+NyLaOlIBxIfFyjYOuLIyEISpYvVzjYLUQZ0aFbATETa+0s7vWRV6ePKgCJ70nTYyhVMaIRKCzZ3AFVCYiwV4Unzurz3WwQA7pj7f1gcTx54KLIS1LcGEjRBuBQCAQXFSU2XOoa4m2PDW0+bj/8fQRwOXF5yYCuH7z71BytqPRJ69y0Zi6UYLbqd8M05d87pxsg0ajYeGqz9HZUcU7m55B621CoypEJJmwuZTLbl09ritsYugkbcK0awtmEFYj7HOfSJgna2QMcjSmu9H9KhE19Q2nRtJTar0No+7sS+vd3hCPPXGyT8AoKzexbn0FuWYtX/3iQb7xnZnMm1/Iurv20OUOjRsBo7Ghv0Ux03sGaKofny2NYwm3N8TzW1vZ9b4bZTJIEZD8IDujBYMDiUSgy6307bcDK3A+csedQHJPGhh+ZYxIBBo+hVdX4Xl/K2o4vu0plSGxqgSyNiMeLJDHSHW8VSLnPrVwtNKyBIKzQYg2AoFAILioWL7AzoHjnj4z4nRYzTLLF4x8BLCvoz1aYZNCsIkh6UOElL30OqvIsZ078aSwqIhFq+87Z+sf65QZ7dQF4v0aVpcu4ummrUnHlxui+0SFLXoj2ezZTjBJxY1BGxV2YuOGi6qqbNzWRu1RFz2nlL6qrIZ6H08/2cC69dNRVfjxI++yoTreuHM8CBjKgKS3bN5zqhZIwdkzcF90exXQn5kOqCYwlcp0NyosrCjk4AE3AX8k6XriW/hEZcz5IpWHi6TPQe2NF23aD7+B49AmKj70Rcwl0+NSpLI1I04mkEPq462sGblb1VTvNRIKZNWiB8NLyxIIRgIh2ggEAoHgosJq1lF5WQGbDnakjf3W6yQqZxWck7jvlv0b0BT0GwBbCmczueJOjDl2Tp14lvbTr/fN05i6ad73DBW3X7yiyrlmeeF8Dnjr4rwWvnbod0nHWrW5LC+8Boi2YlxStJpS61JOdlbTHThJOBJCq9GRZ5jGtMKqEfGx2bitrW9/1Q1RjxgPAoasG1qL4sAWSMHIMnBfTIa7RwEz7NzViZRcr+kjvoVPVMaMJpk8XJASW3JVVWXqTZ9GI+s4tePPcfMGx7GnIplADqmPtzGBPB2ZzIMzvldNvJCULuIchp6WJRCMBEK0EQgEAsFFx8obotG+fU+LB2E1y1TOKugbN9IoUlOch42n8wj2KUuwFMwkEkm8+FWkpnOyHYIoVjmXSsvMtDG0AHpJptIyMyHNxCBbmWmP3nAGFFdUwPGf5MDpn6KVdOQZy88IOENvkXJ7Q9S+4+q/SR6gR5SWmViztgybzcA9907HVhQte/jSV2bw85+8h68nPC4EjKllOdTXRSuGsnnPpeXnpqXxYidhX0yB1kWfYHOxtPBdaGTycIklRg0kXSR7sjj2ZCQTyFMxUCBPuolZmgerqHQd+Xvq9xqJb9lKV1EUHZ6dQCUQjCRCtBEIBALBRYckSaxaXMKSeTZqdjqob+tFCavIWony4hyWL7Cfkwqb/g0YLAxoOH7oFwR628m3XYGzZXuG8YKRZqWtEoBaz7tJbyis2qiwExs3GFVVOeHcQItne4I5cVfgOO3efX2tUkNJH6nZ6ehr5SufaKLUZmT39k4Amhp8PHB/ek+m8SBgLFtu560DHrrcSsb3bLXKLFs+8i2Ngv59sXyiifUrKjDnaPnmE4f51tqZ6GUNu492smHzKTQDOvLGcgvfcGLKxwPZergMJl0kuxpWUFU147HtbAXygWRjHuw6/AqSpBnSe01XUQQQ7vVk9V4FgpFEiDYCgUAguGjJz9Wx5tbz8IRXjT/9Tpr2EQqLr0NvtHHqxLMZxwtGHkmSWFV0PUusV1LTuZf6gAMloiBrZMoNdpYXXpP2BuKEc0NaU+JA2EWjO5o+cklR9ukjDY7+G9r6Fh/GSRryrXJWaUrjRcDIt+q4trIgbUoRgF4vMb+y4IJPyxqrxPbF+hYfT77SwPoV07nhyiI63AEef/4ET33/Op7fehrUobXkjXYL39nElI8HOvdXx1WmZGoHyoaAuxnnng1ZJSudrUAOQxCewkEG712Z3m+6iiKAcG9X1u9VIBgpxFWgQCAQCASjjKyWEuFU39/NJ1+g+eQLaccLRod8OZc19huHtExAcdHi2Z42RQogogZo8Wyn1Lo0a6+bwTe0slHDvAWFvPGag3TBKuNNwKhaGW1VTHajDVGBKnajLTg3JBNXYppGnLgxxlv4sokp7zdJLhnNTRsV/M76uL8ztQNlRTiYdbLS2QrkkCg8QfbiU6b3m66iCAA1IlKkBKOOEG0EAoFAIBhlJl79MZqOHEZj6s44NuLLY8o88URvLHOyszqhJap8ws3Mn76eXccfo9G5rW96IBz1vIl54GRi4A1tWbGJtUvLmFqcQ7s7SP1RL91dF4eAIUkSK1aVcPMSGy/XOGiq7yWkqOhkidLyMy0t40SgGqvE9sXYfmjLN1BqN2EvMPDwutk8s7mJkKKizQGNP7rMWGvh63KH2F3rSluxBYNNksfXfqUO8mTJ1A6ULWGfi47dG9DI+pSmwAMZjkAeY7DwBOA4tAnHoU1Ypl6OeeJ0UuVBDfv9Spo+rx+RIiUYbYRoIxAIBALBKGMqmoAudA1KcDtSmthvNahDF7rmnMZ9C86ebn993N92y+VYTWU4ve8nHx/IPn2kzJ5DXUu0LaWhzcf9jw+4AbaDVkPUQ0QFJJhUauCf7p027m40Y+Tn64Rp7Xkiti8m7IeDCNtA0w2aLKy4RruF7+UaR1athcC4NUmWBpkGZ2oHGoxsspBXehmllR+l6c0NcZUq3SfeTDD2HWgKbJs/NE+vVESUYMp5nsa38TSm3j+H+n4BtIZcTBOm0n3qaN80kSIlGE2EaCMQCAQCwXmg/JbPUr8ZQsoeNCZvwvyILw9d6BrKb/nsedg6wVAIq/HC29SihZiNJVhN5cycXBVXaQMQTpIQlorlC+wcOO7pMyOOQ4ZwCcRukaxmmX/61LRza6ItuGhJuy8ORAdYQOOGSJrY7/PRwtfYEBVAM6VaxThfJsnnEqOtPBp1fYaM7UCDCPt7cL23k8KKaxLbiwYJNn3L+Fy4j0Q9vUbCCybs9wx72aG+39ziCjQ6A92n3onfhtD42zcEYxch2ggEAoHgosDtDVGz00GDo7+tosweTYqymkf/Jlej0TB9yefodVbRvO+ZaKy3pIAqI6ulTJm3WlTYXCBopfj9Z2/dEwDcMvsRjre+kjhek/3+ZjXrqLysgE0HO9BJ3VSW7qDE3IZWoxCOyLR6i6ltup6QmkflrAIh2AjOGQP3xXSx33qdxC3Lbcgd0pjzIFLObHc2qVYw+ibJo0Hh1VV4G/YleMIkRaNNEGKG216kKoER8YJRfC7U4OgIJuaJMwh0Owl5O+Ome/UmdhRNw3l0E6qpAJ2kocxoZnnhVKyyflS2TXBxIUQbgUAgEIxrXN1BHnu+gdNOP+FBT33rWno5cMJD5awCVt5wfpJCcmxFVNx+36i/rmDkyDOW0xU4njB985EHko83TBvS+u9YZKdErsGk7sWsj/dBmpzfzKUTjuOTrqFygajKEpxbVt4QFVlqj7pwe5OIMWY57ng61jyIZN3QjvGjbZI8GsimAiwzFqWNywZQNXocoQKKtW1x07NpL0plCjwSXjCd+6uHHFc+XLwtx+L+VoGt067lSPEMuo3m6MRgNAGrLtDNAa+TSoudlbbycZk8Jjh/CNFGIBAIBOMSVVXZuK2NzQc7CKR5Kuz2Kmw6GE0KWbV4/CWFCM490wqraPfuSzAjToZBW8C0wqohrb/z9LMUG3agRpLfqJj13eRpdtB52kxRqTCtFpw7JEli1eISlsyzUbPTQX1bL0pYRdZKlBdHKxcHVnuNNQ+iqWU51Nf1ZpVqBaNrkjya2OZ/DIDTh97ApCYa4ofkfDRTr+evRy/h3vyn4ipNsmkvSpfQdLZeMINNiAcKRMdf+iVdJw+e1frTsXXateybMpuQNnk1jTscZJO7GYBVRUMT5wWCdAjRRiAQCATjko3b2njtQDuhLDwngyGV2qMulsyzifYSwZAxyAVMtCyi0f1q2thvjWRgomVR1nHfAErQhce5PaVgE0ONBPA4t2MtWYqsy379gvHJ2bSDdrlDvFzjoLGhFyWkIuskppadqY6xRpfNz9Wx5taxI8Zky7Lldt464Mkq1Wq0TZJHE0mSKLp2NZs7ryRy4iVKNK3k6CJMKDRTUDqDutybKSubyDeu7qK5xoRO7UQzhMKRdC1UkXD2nl5J1z1o+ZhAZJ1+Nd2n38t6PQZrMXKOhZ5B1TSpMF55O+/ZKgilM2oCgmqEWo+DJdbJ5ItWKcEIIUQbgUAgEIw73N4Qte+4shJs+pdRqNnpuCBvRATnnwpb9Ml1s2c7wSQVNwZtVNiJjcuWzpZqwqH+9VkKZzO54k6MOXZOnXiW9tOv980Lh1x0NldjLxMxtBcrsQrDZO1LmdpBVVWlemNbUh+a+rpeDh3w9PnQXKitH/lWHddWFrBlU0fa2O/zYZJ8Prh9UQWPnFyK23dGiOgCTgJ0sNiwkdm6I1g03TDErztdC5VGe3af6eD0K1VVySudQ1f926hZmrzrcgtAkuhpTWxrTcVffD5cBfGCzZX5Nu4uvwxJgjfaT7PxdB0Qrbip6Wxkjf2SrNcvEKRDiDYCgUAguKBQgi7q62p47W0zLV35hCNadDod0ycX8+HrS7GaddTsdODuUdBoUqeX5OfKTLTl8G5jf2l4fZtIgxAMD0mSuKRoNaXWpZzsrKY7cJJwJIRWoyPPMI1phVVDqrCJ4e+pj/vb03kE+5QlWApmEklygxLoETG0FzMbt7WlNQpO1w5avbEtrZjhdits2RRddsWqC7eVNGZ+PNZMks8HVrOOK/NPs8NnI0R/Vchiw1bm6fehl4ZXFZOuhcqQZduQ4nPRub8av7MeNRxC0uow2srRWybGpV8VX7WUzmO7shZsAEI9LujJejgArebEYABFVcnXRT+3Vr8vbl59IDEVUiAYLkK0EQgEAsGYIdVFWuHVVWhzrHQ0beDF3QEOt1TQHbTELdvU2cOB429z/ZyJ1LdFL57SVTF39Sj4gz1oJIicuUdRwuMvKUQwuhhkKzPtI1fpkngjouH4oV8Q6G0n33YFzpbtcXOTCTmCi4NYhWG6ZCc40w56xMlVp15Dd/o4qhKihzx2nrqNYDB9O0cwqLKn1sXNS2wXbBWKJEmsWFUy5kySzxeLTTsI6CdxODQbr2ohV/IyW3c4a8GmaM7NdNW/lZCwlAytqYDCuek9vVRVxblnA55j2xMSrgKO42hz8pFkI6riB6DtwN8S1hHzuWk7+Hc6Dr+R1fvIhJRXmDCtItfCa44mmnxelhVPZYeztW+ekqGNSiAYCkK0EQgEAsF5J9NFmrdhH7piG690lrLv9FWEIslvLDy9Ojbtb8Ogy+6COxCKv6iStRdmyb9g/CINigefNO0jFBZfh95o49SJZxPGa4YQJy4YX8QqDAHKJ5pYv6ICc46Wbz5xmG+tnYle1rD7aCcbNp/C7YvwSovCbc5oxcK20BK6I3rKyk2sW19BrlnLV794kG98Zybz5hey7q49dLmjN/Fut8LLNY4xZTA8HMaaSfJ5IxLiRmO0sqY2UEmpthGLpr9KJFUSVIyOw68PXmNSJNmAZcaijHHfzj0b0iZbhXu7QNJE/1OTCyMxnxtTyci1J6ndnZAfX33VEfTzoYllRFSVl1oa4ubJGs2IvbZAIEQbgUAgEJx3Ml6k+Vx0nQxyuOe2lIJNjFBYSziiANELpkw3LwMpLx6fSSGCCxdjbjmBnv5WgOaTL9B88oWU4w25IrHkYqXB0d/eWd/i48lXGli/Yjo3XFlEhzvA48+f4KnvX8fzW08TUlRaDSV4tbnssFbynnMOBKCh3sfTTzawbv10VBV+/Mi7bKi+PuG1mupHvpX0i1+8l1OnGkd8vYL0+DvqiYRi3+eraLQykXB/25jEDlQeIqdwMmo4hL/LMeTXkDQyck4+OksL8L8px6lhBX/HSdRIZkM66Yxwk2rspMI8vrMyflomAapv3TojasgfN63Y207zINFmh7M1rrpmIOUGc8b3IBBki5AABQKBQHBeUXwuPMe2pxRsYuzorcQbjrZElU808eP1l/PLr15Fnknmh5+fw8/uu4KP3TIFgIjaf3qL3bwAfTcv3/2fw3z81lJ0cn9ljdUss3zB+EwKEVy4FE6sQqsryGqsVldA4aShxYkLxg8hJXlbVMwzeLB5sFvO5w+TP82B/HmEMIzIa50Np041IkmS+G+U/9PqjUjQ958aVuL+BsixlqDRaAh62uPmZfpPo9Whyy0kZ8J09PnFGbdF6emAiJLVulEjyEYzGo2cOF+SaO5MjDJvP/wGR/74Hdwn38JcMj1xJ9TI5E+7MiGhCuD6hgOY/dn51Fi1epYXTs1qrECQDaLSRiAQCATnlHQ+NbKpgM791QktUcmehrWF+40vs3mKnIxUNy8AlbMKRNy3YMwh6wuw2BbhdryaNvZb0hiw2BaJuO+LmIEidFmxibVLy7DlGyi1m7AXGHh43Wye2dzUd3wMaAzc7HydkmAbm0NLcWKntMzEmrVl2GwG7rl3OraiaGXjl74yg5//5D18PeGE1xJc2OjMRYT93qRCBYDBUoTBUoQS8KG3TCCQRaWNJGnQ5hagyysmyek2JZFB1S16cwG63AI0sg6/q4WQzxM/XgmgzclD6RmU2KcmvwZIF0UOYCoqZcr1d5I3eWZc4hWAOehjTtsx9k2ZTUibuuJXL2motNhF3LdgRBGijUAgEAhGHCUYjR72OvYRDnRBOAI6oBNQ+n1qLDMW0duRmHYT60ev+NAXMZdMx3VsNwrapK+VToiB7G5erLkyt8wt5KnXTtPg6DelLLPnsHyBHatZiDmC84dtSjQm3OPcHhf/HUOriwo7sXGCi5Myew51LdE2l4Y2H/c//nbfvFzFS6VrByXBNu5SFcKSTEiSKfdH25Em04QTO00NPh64/+2k6x9IabloJR0vSFodck4+Sk8nahKPmICnnYCnfejrRRqSYAMkiC2hHjdBr4sc2xS0+pwE0QZVTSs6yTkWlN7+ZdJFkQP4HCc58tQDSTdNk5PPEk8b2k4rbxeW4tEm3kZbtXoqLXZW2sqzfMMCQXZIqppCijxDe3tiaZlAIBAIBMlQVRXnqQ0pby4JAi6gJfqnJBuQZAMR/6ALMUnD1Bs/hcFi43jNY6hhhSe9n6I5EjWNLCs28YWVFZSVmHjjQDvlJSZ0Z3xqntkU71OTDVPtRjw+Bbc3SfyrWaZyVgErbyhOKQwJBKOBEnLT2VxNoOckkUgIjUaHIXcahZOqRIWNAGdLB//6fw14Bvp+qSqLXVuZ3X0ESzj1NX2PmsvTwU/TgyXlmBhWq8w3vnvJiCcsrVjxIXGMPU+oKoS62wj3uJIKN8NB0uowFk1DSiJupMLfcZJIcKBfkoTRWoxG1tHrPMXg21aNPgdj0TRCHkeC6KQCv7xn0Zl/nR1aUwFT73i4z0S5SwlS09lIfcCLEokgazSUG8wsL5wqKmwEQ2LChLysxolKG4FAIBCMGM5TG9K3ceiBojP/bgFVCSQ1EUz2NKxY29on2gx+ipz0pWSJYBa+CwadREtnIGVLldursOlgBwCrFpckHSMQjAayzoq9bOTixAXjA1VVcVZvwLNnO5dJl7PPMq+vfWOxayvzuvahV9PHN+dKPczSHOFgZB4KaVo/9BLzKwtGJRL717/+b7RaLYWFhShKGI+ni66uLv75n7+a9Tp++tOf8K1vfRtFSW9sK0kSP/rRD5kyZQqRSIQXXqjmuec2Dnmb1XCIkLcj2uajqiBJaHRGdOYiJO3IfWZ6vZ6nnnqSO+9cPSLrk6RoZUwyXt11hNuvm50w/T9++yf+5Yv/iJw3IWn7Uuyz0OenP29WVX0Em83Gb3/7OzQ6Y5xoE2vNuu3Wm9m6+RUcDe/HLavRRSu+5LyoH13I62SwSKPR5wwSgoZGstSrfFnPGvvIJVMJBJkQoo1AIBAIRgQl6MLj3J7WdwMALUgTdKjtIVCASDhhSPOu52ne9XzctOsNtRxTZuBVs3gSnKvh6hkFbD/SSTCUWrjRyQASISX9k8VgSKX2qIsl82zC90YgEIwpnNUbcG95FTUYYDFbATicNxsVDbO7D2cUbGIslLeCAkcjs5NW3OTna7j2ehtVK4uTLD3y3HPPPwJw992fxel0Ul394pDX8S//8o2sxz777HPs3bsXo9HIr3/9P+zYUUtLS0tWy6oqKN0OlN6uhDadSLCXsN+LnJOPnGdP2zKk0WiIREam0mUoqOFQdNuHUGXzT3d/ApAI+LpTti/1p1Jlx+BWp1hr1u23/St7t/wtbqyk1aEzR58CSRLoLHbCAW+cL86k61YAKi17a1J69gBRnSfZ96JIWGYuxjZftJ4Kzi9CtBEIBALBWaMEXZx6/8cJLVGWwtlMrrgTY46dUyeepf306wComhAUA6fPDJS0oCaKNwMxa3qYYzjCvuC8tLHfOm2YyssmsPKGYgw6DbVHXSnbniwmmUaHP8laEnF7FWp2Olhz6+SsxgsEAsG5Ruly4dm9HTUYFcsl4EbXVuZ59tEpF2AJ96fdmMrKqVi3Hm2umYNfuS9hXUWLbmDRm1uZq+5jt1JJm1pCWNWilcIUS61U6t5honYecP5uYBcsWMC9934ejUbijTe28Nvf/g6AF198gW3btnPFFVfQ2NjIQw89TCAQ4Nlnn+GTn1xLMBjkwx/+Bz760Y+iqhG2bt3WtyxEq5X27t0LgN/vp6mpCZvNliDafPvb36K3t5fLLptFTo6JRx75Vz772buYWjqF//3Vf7DxT/9LrtnMz594ErMlH0mCnzz4LQ7u3cWVc2byuS/9CxpZT3FxMa+9tonf/vZ3FE+w8W//9kMaTh7nAzMv42P/cCtf+daDXHn1fGSdjl//+je8+eYOCgoKePDB75Ofb2XHjh192/TBDy6jrKyMJ574FUDce/7sZz/DzTffRCSi8vzzz1Nd/SKVlQv4zGfuQq/Xc+TIOzz66M8JejviRI2YAbAkaZAkDd955FHmzl9Afd0xHvjKevz+Xv66dT8rl1yPxmTlH9ffx4033Uxrc7Q9+Te//Hf27XozpSHwokWLuO++9XR3ezl5so62tqi58YqVq1j+waXoZC1HDx/kwfu/zE23fZDLLr+SR5/4A26Xk8+t/jAP/PDnzLr8aoymXJ5//gU2bow+5NHoc+JEm8EPf5IhhbUUfOA6JFmLc9+2aLZyBOgF2lQoTO2ZJxCMFkK0EQgEAsGwyeRh4+k8gn3KEiwFM4lEBj3lGuBjqTHkRlul0sR+S7KB28ubkbqMvN1SgTeY+CTYkhPi+jkT+/xnVi0uYck8GzU7HdS39aKEVWStRHlx1GD4l9XRKPDyiSbWr6jAnKPlm08c5ltrZ6I/45GzYXO/R0592/BLrAUCgWCk6Xy5mnBX4rHXHO7BHO6Jm+ZrqKfh6SeZvm590nV1vX0IiLZK3ax7LXFAN7i3OAEoWjEybTlDQa/X87WvfYX77vsSTqeTxx77D/bu3cuhQ29TWFjIjh21/PSnP+NLX/oiK1fewZ/+9H99y1ZUTGflyjtYv/4L+Hw+8vJS+0gUFRVRUVHB8ePHAfjc5+7m3Xff48033wRAp5NZt+7z3HnnR3nooQe5+zN3EXKf5o/Pv8zGP/0vAb+fr3x+Lb4eL/aSifz0v37PXSuXoqoqcy6/kjVr1tDl8fLLXz7GlldrcLY2MK3iEr795XuoO/Yeq9Z8hlMn3+enD36T/KJJ/ObpP7Nz5y7uvvszbN26jT//+TnuvPOjGT+v66+v5PLLL+fuu+9BURTy8vLIz8/nYx+7ky996csEg0G++tWvcOONi3n5z7+PW3agAbCtaALbXv87//rA1/jaA49w56fu5slf/xIAg8XGZVdXcvX86/jU6pWYtBE2/r22f0VJxA69Xs+Xv/wl1q+/D7fbzX/913/2iTabN7/OCy+8iNLt4Ov3f5PFty7j9Vdf4p233+KHD3yN+rrjSFodj//nL/GpBmRZyxNP/BebNm2mq6srYxJWHBHABWpLGCXsYfq69Tif2ZYwLNCUGJYgEIw2QrQRCAQCwbDJ6GGDhuOHfkGgt5182xU4W7YPnNWHLs+OadIsPMe2J8R/Q9QE0DJjEbb5H+MupYuGuhpeO2SiuctKOKJFp9NRMaWYD19fmtC+lJ+rS1kdE/OxyTZCXAmfvaGhQCAQjBT+xvqEabGKmmOPP4b/dPbG7Io3c/iIGgzg2bMd681LkfOtQ9jSs2fq1KnU1zfgcMRu8Ddz+eWXc+jQ2/T29vaJKq+9tom1az8VJ9rMnTuXTZs24/P5AOjuTv5eZVnmwQe/z+OPP47fH63Y+M1vfhs35s03o6LEiRN1HDt2jM6Wk9HIaUlClmX05kK+/sDDXHHlVSihAFNKp/Yte2BvLS0n30WfX8LmV1/i8tkzef30CepPvE/dsfcAWLDoRqZfcikfXvVxQCLHaKCoqIg5c+bwm99Eq4P+/vfX+NjH7kz7eV199dXU1NT0+fl0d3ezcOH1VFRU8KtfPQ6AwWCgtbU1oSJGVcFoLUGSJHp9PWzd9DIAL7/4HHd/4St9ok3A00HFZBub/roRn7MZH3Bg786+9cQ8ZwYS+x47OqJecW+8sQWj0QjAJZdcwrp195Cbm4vZnIuj3cm2rW9EK350RuTcQnTmIj648mP8wz98CI1GS3GxnSlTptDV1ZUxCauPMNBBXyhCOiKh7NoLBYJziRBtBAKBQDAssvGwmTTtIxQWX4feaOPUiWfjZw64njJOmEbRtauxzllK54FqAh0niYRDaLQ6DEXTKJxb1WcCKOusVFz6SSouPfv3oJMTnwKmixCXtaJEejzg9oao2ekQ8e6CCw634qam8680+BsIqQof9DVRMGhMrKJGI8df5ptKyyhbsxaDzcb0e+6l7tdPxC84yEslVTtV2O2i8+Vq7Kvvossd4uUaB40NvSghFVknMbUsh2XL7eRbz89vKZowNDyB/Zvf/Ab79x/g9dffSDlGUUJnXidCKBTqa8dRIxE0Gi1LliwBpZe71txJOBTgtW27Bmxb1OdFDYcIB3v7hAV/b38VpyRJPPjNL3No/57o32dSmM6sYdD/IRKJxJ2vdLp06UUS27dv5yc/+dmgyfHntpgBsBLwxc1TISHBKVXr0EDPmcEMXMfAf99//7/w9a9/g1OnTvGJT3ycHEshxqJpaPRGDAVT0HdHmDRpIlVVH+Hee9fT29vLj3/8I/T6/n2tz5TY507+EYS10BHuE2wy/S40OnFOEJx/NJmHCAQCgUCQSGdLdfJY7wE0n3yBwzu/xf43/hFH09/jZ565RtWaCiicWwWAbLJiX3gXpVU/oGzlv1Ja9QPsC++KS20YScrs0aeAZcUm1i4tw5ZvoNRuwl5g4OF1s3lmc1NcqlR5ceJTQ8GFg6qqPLe1lUeeOs7rb3VS19JLU7ufupZeXn+rk0eeOs5zW1sTbkoEgvONqqo81/FnHml8mNe7XqcuUEdTsBGfJphymZwpU+P+9jU18PYD97Pr0x9PFGySEBN/kuFvOskLz7Xyk0eOs/X1TurrejnV5Ke+rpetr3fyk0eO88JzI/tbamxspKysDJvNhlar5eabb+Ltt6Mpgjk5OVx/fSUAt956C4cOxacL7tu3n1tvvQWTyQSQtD3qrrs+jSzrEiprMjLoPeaa8/B4/aiqyqLK6zDlmvvmzb1mAUUT7ET8bm657YMc3LcbAEkrk1s8nbzJl7J3927u/ORn+8SQGR+4lJC3g8OHD3PLLbcC9P0foLW1jUsuiSYZzZo1i8LCqIy3d+8+li9fjnxGvMvLy+PIkSPMmzePCRMmAGCxWJgwYQIanZEn/riRCcXRpKeAp52uxsP0tNWRk2PihltuB+D25Ss4uHcXA11739q3m5tu+yBarZaiCcVcdc11SJKEnJPPd7//PWbNmhX3+TQ2NlJeXt73Pd544+K+eUZjDm63G71ezy233Nw33efz9X13JpMJn89Hb28vJSUlzJ17Vdz6Y6bExqJp5F92G0b7JehtZRjtl5B/2W3k5V8fV2GT6XdhKJ2WME0gGG1EpY1AIBAIhoW/p374CweBtuRRmqPJ8gV2Dhz3ZBUhbjXLLF9gH6Utu/AZi9UsG7e1selgR8pEMRHvLhirbHQ+xyb3JoJqvEjTapeY3Bq/P8cqB2SLBfeBvYTPtASNJO72XrbUdRAMpvgtuRW2bIr+llasGpnfUjAY5Oc//3ceffSnaDQa3nhjS58409nZycKFC1m//l6ampr49a9/E7fsyZMnee65jTzxxH8RiSQaEefk5PC5z91NY2MTv/tddNlf/vK/2Lt3X4KnTQKDKk02v/46P//lJ1m4+Eb27dlFR3tb37zDb+3jBz98lJLJU3j1r89z9O2DTJxcihpWogKJbQovVj9PSUkx//fSFjSShoaTx/nGl9fz29/+noce+gFVVR+J25ZDhw7R29vLk0/+gUOHDvW1j+3cuZOZMy/ld7/7DeFwmOee28hf/vJXfv7zf+dHP/ohWq1MOKzw4x//FIe5iNKy6Xjc7oS35+xwsPiWpfzTN75Hw8kT/OoXP0POLSAm3Bx+az/7d+/g2VfepOV0E8fefQd/WIOcZ2f69Ol9bVADv8fHHnuMxx77BV6vl5Mn+z1j/vCHJ/ntb39NZ2cnx44d65v+0ksv893vfge32819932J06dP8/TTf+T06eY+4S7ha9HK2BfelTBdmePC9/bhpF5Qg9FaCyhcVpVxnEBwrpHUDBJ4e3vm/laBQCAQXHw0HP4Owd6GoS94ppdc29XvU3M+kxme29qa9kYeQK+TuPWqInEjn4LBAk23T8EXCBNUEj9Tq1mmclZBn1n0aG7jI388jrsnMUlsMFazzHc/dYmIdxeMCdyKm0caH8YddifMy+1R+fTTQSw9icudLabSMio+/wVMU8to3/pGXBWCQ5rM0/5PZVyH1Srzje9eQn5+5t/SihUfGvYxobr6eaqq7hjWsmdLsKsl6mmTgXnXLeSjaz7Dt768LslcCaO1GI2so9d5KqFCSaMzYigsJeTtiLZjqSpIEhqdEZ25CEl7dseqsrIyli+9lUcf/EZaLxhJ0kR9ZSx21LByZnt6MRqN+P1+CiZM4rdP/5m7774HVVX59re/yfe+94Oz2rbhoqoqL7zwUtJ5HS88g3vLq32pa8mQ9AasN95+Xky3BRcPEyakNkUfiKi0EQgEAsGwkDSJF4kTy6sIBd10dbxFKOhOXEjRou3NI7fgGmy3rDhvFTYDWXlDMUDaaPCYyCCIR1VVNm5rS/nZJeN8VbPU7HTg7lGySgoT8e6CsURN51/jBJtCXQFf/cA/oZW0vN6+hSOzXmbewQj6dD9BlYEdLQOmS6BqogM08TfrsbaRZDSHiikrN7FufQW5Zi1f/eJBvvGdmcybX8i6u/bQ5Y76vrjdCi/XOFi9Zvz+loaUWJSCgR4yessEAl2OuPlqJIy/oz7hNSLBXsJ+L3JOPnKePVlYU1Y0NDTwy1/9Fjm3EKW3K+l7iZn8xjxjJK2MPj96DH/wwR8wdWopsizz61//ht4zHj3nS7DJhK0qGlvv2bOdsDtJ+IG1AMv8RX3jBILzjRBtBAKBQDAsjLnlBHqOx01rqa9OOV6XU8qUS+9H1lnP8ZYNjWyiwUXFRXIytRulIhhSqT3qYsk826h9tg2O6E1EtklhIt5dMBZQVZUD7cdhgLfs8onLmJwzCWfQiT/sZ+tCGVCYfTSStOJG0uWg9hqif2j89Ck4kRwIFxG9HQiBrh40mcVXnyaP3eFKfPU+nn6ygXXrp6Oq8ONH3mVD9fUJ45vqz/1v6XxV2QBZJxbt2/Um+3Ylb7EKeNoJeNpTLquGFVKZK6vhEEpPJxD1chkuMS8YObewr4Kmv6In50xFj9z3mgOrfu6/764Rq/oZDSRJomjFaqw3L6Xz5WoCTSeJhEJodDoMpdMoXFY16uloAkE6hGgjEAgEgmFROLEKr2tfRjNiAK2uYEwKNgNJFw0+VlG6oiku/sZ6VCWEJOswTi0/c8E5OFNmZHF7Q9S+48pKsLGYZP75YzN4t7H7vFWzhJK0aqVLChPx7oKxwMZtbbhN/jjRRqfRcdx7gk2ON/jolBVs7XiTrYt07JurUrlbofSUSkkwD32RHUPpNHrf9xNs6MBUPpGK9SvQmnM4+uDvuPIXX6bnRDOeo/U0PfUqRCwguUBKve9LegMN8hX4es0pxwwm2W9vvBGrPklVpTIQvbkAOScPf2czkXA2FYoSmdKwVDWC0tuFnFvYJ6wMl4EVNImvA0q3I+n7HKmqn9FEzrdiX53oeyMQjDWEaCMQCASCYSHrC7DYFuF2vJo29lvSGLDYFo1pwWYs41aC1HQ20uD3ElIj6CQNZYZcbtyxh+De2oTS7kD9cbyH9vWVdp8r35ihtBt5fAr/+oejPPtw5XmrZonFu2ebFCbi3QXnm5gwylxt3PRX2l7jXz7wz6yZ+jFebK7pm96TK/HazTomNUf4zKtaJq77Z+R8Kw0P/hoAX30LDU++wvT1KwCI+IPIuUaUrjPlOeGo8KBqupE0icJDrGXkvSNXg8tPaZmJNWvLsNkM3HPvdGxFUWXpS1+Zwc9/8h6+njDQ/9sbz6SqUlGVYEL1TajHTdDrQs7JI+L3JqRPDVozAwUbSdKkrOaJVr+0o8+fOALvKDlKtyNtRdFIVf0IBIJ4hGgjEAgEgmFjm3KmL9y5PWnFjVYXFXZi4wTZo6oqG5311HocuMPxiTFTNr1G11uH0YeSP6UNu124t7wKcM5MFIfSbpSr91I5dQdHdj7PJ69wo4RlWr3FNPpuzvAqI0eZPYe6lt6sksJAxLsLzj8xYZQuOxS29k0/3dvMP7/1jZTLlTgihN3RKjz76ruQdImX+8FOD3vv/jfMM6Yw+6F7aPnrm4AE4WLC4enoy3Toc9qTtoxM7TlN/Uk/TQ0+Hrg/82+ptDy739KUKVM5daoxq7FjFo0WnaXf/8zffhJV8ccNUVUVY37UdDjUmzrwRdKcaUWK9B/n07VfASi93egs58YrTA0rhHzujNugqhFCPjdaU8FZV/2cDVMGRd4LBBcyQrQRCAQCwbCRJImi0tVYS5bS2VxNoOckkUgIjUaHIXcahZOqRIXNMNnorGeTu5ngoAvk3J4eZh99P6VgE0MNBvDs2Y715qXnpDc/u3YjlcXlW5htP4LF2I23C4rPdFVMzm9mVug4HU03YZty7hPEYvHu2aZHiXh3wfkmJozy/nVQcgJyMkdE5XVHqNwdrXAJNEWjlI1lJQTqTmMqK6Zs7VIMtnwu+8HdSFotOquZlpdq49ah6ouZ+k8fRZci8WnZcjtvHfDQ5c7it2SVWbY8u9/Sf/7nE5kHXWA0Vv+AgCPe+23SdXcw9cZP0n36Xboa3ubU9mf65klaPQbbVAxF0yicW8Xpl39K0DmElEZJy7Q1vxhRk3/F56JzfzXdJ/cQ8fd/l7ZZiyiZ90GM+XbqXv0fXMd2xy2Xf9ltSSO3BQLB0BGijUAgEAjOGllnxV4mLs5GCrcSpNbjSBBsACp3HcDS4+v721RWTsW69WhzzRz8yn1xYwc+bR/2tgyK89bJEmX2nD6BJl27UeWULcybvA+9NrnHg0nXjdtxpiKo9NzGqlrNOiovK8gq3r1yVoEwnxacd/qE0UAuNM1CLt+Lok89XhdUmX00gvnM4SESiv7uCpcvxHvgfXwNbbx9/+NpXzOCEfOi61IKNgD5Vh3XVhawZVMHwWCa35JeYn5lQVZx3+MVo608QbRp3vU8zbueTzrecumNcULHkE191TCdB6pHRCxRVRXnng14jm0n7EuspHUe3Y7z6Hamf/A+zCXTE0SbQMfJs94GgUAQRYg2AoFAIBCMMWo6GxNaoq7Mt3F3+WW0/2UTIcBrMrHj2rm02Seg1h3CXDQB800LuX73Acy+flEn9rR9KLi9If6608HB4x48PoXIoPuyupZe9Gd8KlK1G+XqvXz6qsMpBZsYaiSAx7kda8nSc16VJeLdBRcSA71gprpuY7L6Hm9P6sKbp0kYW6gr4NrgFK7YsbdvmkYXveGXrXlYKufg3rQXNZj696iiRTf9A5R+YlrGbataGf2N7Kl14U5ScWO1ysyvLOgbd9EyhApCramAwrlVfZUtfmc9oa7WhHH2K25lwhW3pKxw8bePjFji3LMB95FXUZXUnnVotLiO7cZ98kDCrMhZRKALBIJ4hGgjEAgEAsEYo8HvTZimqCr5Oj0disKW66/lyKwZdOcNSHAJ9sJVczheUc7so8dYvGM3Ev1P27NBVVU2bmtLKWoMJKioSERQSbyBBKgs3YHF2P8+LIWzmVxxJ8YcO6dOPEv76df75oVDLjqbqymc8JG+mxU1HELS6jDayim8ugrZdPZpWCLeXXAhEfNhAmhs6+UDh0u5K9xB7bVaWu0aFC3I4aiHTeXuVsy++Bt8Q2m/+GJbGfWP8tS+Tdgd/V1GMODnA4TJR0VGthjJn1pCqEtBb03/O5AkiRWrSrh5iY2Xaxw01fdX4pWW57Bsuf2irrCBaFuRt35v5oFnyC2/BvfhV1JWtsRoP/wGjkObqPjQF5NWuIQ8bcPe5hiKz4Xn2Pb0gg1AJEz36fcomfchWna/GDdLcwFEfwsEFwpCtBEIBAKBYIwRStIWVZFr4TVHE0dmVXB4+lRC+uR9Et15ZvZdNRuAG3fs7nvang0bt7VlbB8CQFVZ7NpKt9bMYfPlhLSJ21Jijr9x8HQewT5lCZaCmUQig4QkFbxH9uB17U24WQk4juNt2IdlxiJs80fG++ZCjHcXXHwM9mGqLbieGaePcdsbXiCcdlmttYDCZVV9f0uSRNGqW7AuuRbnX9+k44CEv7uQSNjQNybogfY3OnEf9GCrLGDKyuKMv7f8fB2r14jfUjI691enFV8G4299n5CnNaNQoqoqU2/6NBpZx6kdf06YHwl00/rGf6OR9cMWwJNte6oKH6XXkyDYABiKMldsCQSC7Ej+eEwgEAgEAsF5Qyclnp47gn4uzy/kREV5SsEmRkiv58isGXhNOXFP29MRixfOKNgAi11bmde1j9ucrzHPsw+z4kkYo9UMrtTRcPzQL2g++SL5tiviZ7VAuMWd8gYn7HPhPvIqzj0bsnovAsF4IObDpNdFhZMe2cyRvDkEpQxVMHoDlvmLkhqQy/lmgsYr8fsmxQk2Awm5FRybOji18ewrNi5m/M76JFOj36XeUoQ+zxY3J+g6lbmyBZh0bRWTrv0I+jwbkytXJR3TfWwrXUdfI+A4TtDZQMBxnK6jr9H4/Pfo2P0MatqY8eTb3n74DY788Tu4T76FuWR62uVjrV4CgWBkEJU2AoFAIBCMMcqMZuoC8VGwO5yt7HC2woD43pjPjSTBG+2n2Xi6rm9ed56ZnYsqWXdTdhfOffHCQPlEE+tXVGDO0fLNJw7zrbUz0csadh/tpObVd5ndfRi9Gq2WudG1lXmefdRaK2k1lKBIWmQ1jDEUf/MxadpHKCy+Dr3RxqkTz/bPCAGdQPoUWVQlgOfYdqxzlo5oMopAMJYZ7MO0tWAxALO7D2MJJ7ZRaq0FWOYvwlb1saTrC7pDOGtdRNIYCANEgirOWhclS2xpTYkFqVGTebpIElNvXIvBYuN4zWODF4j70zZrEV31h1B640XxdEbGmYgJ4ABF16Y2f0+27ZkqfGJIsgHLjEXiOC0QjCBCtBEIBAKBYIyxvHAqB7zOBDPiwcR8bgBa/b6E+e3lZVnHfffFCwP1LT6efKWB9Sumc8OVRXS4Azz+/Ame+v51dD37u4SbRfuUCXx13W3xCVZtQGH/mOaTL9B88oXEF24FBhXlpCrDD/tcI5aMIhBcCCTzYaovXkp7eCHXOXcwWXGgiShodDoMpdMoXFaV9jffUuMgdMY4OK/cxJz1FejMWmq/eZgr/ukScuwGXO90c+RXdYTcCs01DspE+9OwSJb8FKuS6T79LpMrV8XFfQ/GeXT7OdmubATw4W671lTQ18oqEAhGDiHaCAQCgUAwxrDKeiotdja5m5PGfseI+dw0+bwsK54arcSJW1H25r198cKDiFlaxLwt7IHENBNfQz0NTz/J9HXr+yceAqYCuRleuDdxUjqjTREjK7gYSe7DNHfI6+lp6P/Bddf7eO/JBuasn06oW6HjgJsZnyhFHRAX11Of5AcqyIqhxn2PNOlSpjIJ4EPddm1OPuZp11I4t0pU2AgE5wDhaSMQCAQCwRhkpa2cW62TsCYx+Y3REfSzqGgiq0svYXdnov+ErMn+ND8wXris2MTapWXY8g2U2k3YCww8vG42z2xuQhNJnyrVRy9wgoQqmgSSaEXpyvBFjKxAMHwiqTyrNNDwUisHfvo+E+Za+8enEHMFmSm8ugrtCKTeDZdMHjTpBPChbLvWVMDUlf+KfeFdQrARCM4RotJGIBAIBIIxiCRJrCqaxhLrZGo6G6kPeGkL+OgZ4HvQ53OTgnKDOeW8wQyMF25o83H/428nHfcpKfHSwVRaRtmatRhsNqbfcy91v34iOmM/aK1WqJAIhxJNhrW6AtBDuDd+XroyfBEjKxAMH42uX5zNKzNx6doyjDYDi//jKoJeBYNVh/Ptfg8VjXz2aW0XK/KZViH3kVezMhgeaTKmTKURwLPdduFfIxCMDkK0EQgEAoFgDJMv61ljvwSApxzHeb2rJavlrFo9ywunZv06g+OFU9GqL2ZyoDlumq+pgbcfuD/peLMyn8LZVXQ2VxPoOUkkEkKj0WHInUbhpCo6vS/Q1fVa3DLpyvBFjKxAMHxyy3LoqYuKs90NPmrvTy7O9o0vzxmNzRq3xLxdPMe2Z4z/TtfONBwyedBkEsAzbbvwrxEIRg9JzZD51t7enW62QCAQCASCUcCtBHmk8UBGc+IYt+RP7BN7suW5ra1sOtiRNvY7V/Hy6dP/mzS5ZjBaawFTv/FwWmNUxeei8fnvZbyhgTNl+Hc8LJ7qCgTDJOgO8c4jx/vMiNOhs8rM/u4lIj1qBFB8bjoPVBPoOEkkHEKj1RHsbifS29U3RtJoUSNhKj70RYLdHTRt+79zuk35l92Wlal7sm03FE0T/jUCwQgwYUJeVuNEpY1AIBAIBBcANZ2NWQs2EC2NHyqD44UHo9WALt+K13ANlvodEEq9PZLegGX+oozpVaIMXyAYPfRWHbbKAhybOtLGfmv0ErbKAiHYjBCyyZogkDRs/A7BAaJNtpHaI4HWVEDh3KqsxibbdoFAMLoI0UYgEAgEgguABn9iZUuBzkCh3kAoEqEzGMA7wKOgIdgz5NdIFi+shFVkrUR5cQ7LF9jJz9WhqjNxVufh2bOdsDtJ2by1AMv8RdiqsiubF2X4AsHoMWVlVJx11rqSVtzorDK2yoK+cYLUKD4Xnfur8TvrUcMhJK0Oo62cwqurkDMY+Q6O1c7UzpRTVMplq7+X0DqVY5vC9A+ux5hv58jT38PvSt9CKwRwgeDCQ7RHCQQCgUBwAfBgw36aBgkxH5lYjkWnp8nn5Vb7FL73Tv+F/FR9Lt8ru/qcbpPS5abz5WoCTSeJhEJodDoMpdMoXFaVscIm6fpEGb5AMGqEukI01zjoqe8loqhoZInc8hwmLbeLCpsMqKqKc8+GrIRmSUpu5uzY/nu6jr6WdF4q0rVOVXzoiwQ87Qliz1C3SyAQjB6iPUogEAgEgnGETkqM7+4I+vnQxDIiqspLLQ1x84YS9z1c5Hwr9tUjVzYvyvAFgtFDl6+jbM3k870ZFyTOPRvStnSGfS7cR14FoOja1UnHFF5dhbdhX1Z+XgCTK+9M2ToVa6s6Xftc4oJaHUZbmRDABYILmHN/RScQCAQCgeCsKTMmxnfvcLZy7/4tfOHAVv7aGi/aDCXuWyAQCATZofhceI5tzxjjrSoBPMe2o/jcSefH/Lwk2ZDxNc0TZ1B6w2r0eTYmV66Km6czFzLp2o8knQdgtJVRWvUD7AvvEoKNQHCBItqjBAKBQCC4ABhKepRVq+e7U+eSL+tHYcsEAoHg4mFwW1OmqO50KU2Z2qxGgmxTogQCweiTbXuUqLQRCAQCgeACwCrrqbTY0SdpkxqIXtJQabELwUYgEAjOAX5nfdzf7Yff4Mgfv4P75FuYS6YnjA90nEy5LkmSKLp2NVPveJj8y27DaL8EXcEUkLQjsq1DSYkSCARjF+FpIxAIBALBBcJKWzkAtR5H0oobqzYq7MTGCQQCgWBkUQek9EHmqO7IoPGQOnVq4m1fBuD03x4l2NkApG2ISItIiRIIxg9CtBEIBAKB4AJBkiRWFU1jiXUyNZ2N1Ae8KJEIskZDucHM8sKposJGIBAIziFDjerWDBifrh0q4DiO59j26DjFn3YbtKYCdLk2gt4OIr3upPNjKVGDOZuYcoFAcH4QnjaCcUVAcXGys5pufz1hNYRW0pFnLGdaYRUGWZyIBAKBQCAQCATDZ6hR3QM9ZTp2P5M2dSozEgZbGZOWfR3ZZEXxuek8UE2g4ySRcAiNVpcyJWokYsoFAsHIIiK/BRcVqqpywrmBFs92AuH4E1FX4Djt3n1MtCyiwiZORAKBQCAQKO5uOmvexN/QihpSkHQyxrISCpcvRLZmdxEpEFyMDCWqe6CnTLapU+lRUXq7+v6STdasTYZHIqZcIBCcH4RoI7ggUIIuOluq8ffUo0ZCSBodxtxyCidWIesLOOHcQKP7VSJq8hNRIOyi0R09EV1SJE5EAoFAILg4UVUV58bX8dQeJuyOr6YO1J3Ge+B9LJVzsK28WTzkEAiSEIvqzlQxM9hTpnN/dYLQE0ueajv4dzoOv5F03uBUqrDPReeB6iElQg01ptw6Z6nwwhEIxhBCtBGMaVRVxXlqAx7ndsKhQb2/PcfxuvaRU3gNLcrelIJNjIgaoMWznVLrUgyy9RxutUAgEAgEYxPnxtdxb9qLGkw0RwUIu7txb9oLQNGqW0Zz0wSCC4aYV0w2rUYxBqdO+fXwWu9muo5s4qpGmcH1be2H38BxaBMVH/oi5pLpcVHi6RKpkjFYMEoXUz4cUUhw4eNzh9hf48DZ0Es4pKLVSdjKcrh6uR2TVZd5BYJzihBtBGMa56kNuB2v0t0rs6NxCW3eEpSIFlkTptjcyvVTa2nTvkbAGG/NVD7hZuZPX8+u44/R6NzWNz0QjnrezLSLE5FAIBAILi4Udzee2sMpBZsYajCEp/Yw1iXXIuebR2nrBIILh1hUt3XO0uw9Zc6kSKnA0Wlwqhj8Z65fw2El4TXSpVIlS6RKR7KY8lSCEAxdFBJcuKiqyp6NbRyrdeFzx++HjrpeGg54mFFZwPyVxaL68jwiRBvBmEUJuujq2M4bJ67jSNtsuoOWuPnN3ZM57pzBrYv+iJH+Em+75XKspjKc3veTrrc7IE5EguS4lSAvdhyhpWcTUqQViQh6jZ4ZuR9gcdEdmIWZtWCc4/aGqNnpoMHRS0hR0ckSZfYcli+wYzWLJ20XOp01b/a1RJnKJ1KxfgVacw5HH/wdV/7iy/ScaMZztJ6mp14lfMbzxr5m6XneaoFg7DIUT5lY6tTRaVA3BSLa/nkD/x0jXSqVRju04/FIxJQLxid7NrZxZFMHSjB5NpHPrXDolXZC/jALPzl5lLdOEEOINoIxS2dLNa8fu5x9p+cRiiSPsO0OWugNG+NEm6lFCzEbS7Caypk5uSqu0gYgHBEnIkE8qqryXMdJDndVY1SPosPXN0+JwNHuU7zv3cvV+Yu5oWi1eNIgGHeoqsrGbW3UHnXh9sY/aatr6eXACQ+VswpYeYN40nYh429o7fu3r76FhidfYfr6FQBE/EHkXCNKV0/fmEB9y2hvokAwbjHayulyH+dUcaJI02WGQk/8tOZdz9O86/mk6zIUTRvSa59NTLlg/OJzhzhW60op2MRQI3D0jU6Q4PpPTBLXAecBIdoIhkWXO8TLNQ4aG3pRQiqyTmJqWQ7LltvJH6G+x3ZnK4fbbkgp2MQIh+Nfb2/dEwDcMvsRjre+kjBeqxEnIkE8G531HHQ/j4W30ZJYogwQVj3scb8CksRiYWYtGCUymbCPFBu3tbHpYAfBUPILN7dXYdPBDgBWLS4Zsdc9F4zWZ3YhooaSH9+CnR723v1vmGdMYfZD99Dy1zcB8De10fjD34tUKYFgBCi8uort6lb8xmDc9HkTbuGmSz/EiT8+RKTHk2LpfgYmUmWL0VZOwHG87+90ghAMXRQSXJjsr3H0tUSZLDKB3jDhFNcBqhoVbnQGLdeuGtvXAeMRIdoIhoSqqlRvbGNPrQv3oL7H+rpeDh3wML+ygKoR6HvcdnwG3kEtUcno7CqmqLA5YfrmIw8kHZ9nECciQT9uJciurpMU8l5KwaafEEc825hnXUquMLNOieJz0bm/Gr+zHjUcQtLqMNrKKby6Ctl0cd80Z0s2JuwW2yJsUz521sdatzdE7TuulIJNjGBIpfaoiyXzbOTnnr34rXS56Hy5Gn9jPaoSQpJ1GKeWU7isCjl/6PvJaH5mFyqSrv+yz1RWTNnapRhs+Vz2g7uRtFp0VjMtL9X2LxBSCNSdFqlSAsEIIJsK6C7KBYKJM00mcmdeg/vA62gjqY/FgxOpsmW4MeWC8Y2zobfv3z5PpmvgaMXNsVoXc5bYMOWLh+CjiRBtBEOiemMbWzZ1EExRRud2K7y+08HbkxxoJ0cIqRF0koYyo5nlhVOxyumrZgbS0m0DoHyiifUrKjDnaPnmE4f51tqZ6GUNu492smHzKd55/3qmlBzDlOPNuE6DtoBpheJEJOinprMRXWRXXEvUvAm3cNvUNXT6W9nR+hKHnTv65vnCbnZ2VnOrMLNOQFVVnHs2JE3TCDiO423Y15emIW760hMzYVcjyVPxwiEXbserABSVnl3lV81OB+6e6MVapuOt26tQs9PBmluH39euqirO6g149mwn7B60n9Qfx3toH5b5i7BVDW0/yeYzc7X+hS7nNvIKrrkoK2+MZSUE6k4D4Gto4+37H8962eGmSnkVFzs7q3H461HUELKkw24sZ0FhlfAJE1x0SCYLBOOPe4ec29nXvpkbL11JcXgBrndqyUmi6yRLpMqW4caUC8Y3qapq0uFzKxyocbBwjfC3GU2EaCPImi53iN21rpSCjYqKsthPYHaQHosKA84JdYFuDnidVFrsrLSV912IuwMhak46aOjuJRRW0WklyvJyWD7NTkTNAaC+xceTrzSwfsV0briyiA53gMefP8FT37+O57eexh8wU980hw9M34ssp1aJNZKBiZZFIu5bEEeD34uR9oTpoUgQvTYHX6g7YV6bMLNOinPPhrQXhGGfC/eRM0LDtaLFLBVK0IXHuT2l+BBDjQTwOLdjLVmKrLOmXFemVqEGR/+TtkzH25CiUt/Wm/S1ssVZvQH3lldRgyn2E7cL95Yz+8mK7PaTbD8zgEjITZfjtYuy8qZw+UK8B97vMyMeKkNJlVJVlW3ODRz1bMcbjr9JbQkc54R3H7Msi7jBdvF8/gKBLCVWJ8y338blRQux6Av5W+APHMuBGY1g7QaDqseWMzVlItVQGE5MuWB8o9XFH3vt5SaWra8gx6xl40/eZ9nnp2O26XlnWwdb/tjYN66j/uyuAwRDR4g2gqx5ucZB15mWqLJyE+vWV5Br1vLVLx7kG9+ZyZEJDp6rr4MUxTTucJBN7mgb00pbORtPtFHb4sIdGGR62dXLgXYPkiaXaDBiP7HrusEXeIfeXYxRD5eUv0sEd8JrG7QFTLQsosImTkSCeEJqBJlw3LS+p16TV3HDpI9Q53k7br4ws05E8bnwHNue9gkegKoE8BzbjnXOUvEkLwWdLdUJ7T2pCIdcdDZXYy+Lr/waSqtQSEkuxKc63irhoT+Z61u2y4Vn9/aUgk3f9gcDePZsx3rzUuR8a8b1DuUzizGS1UoXCrI1D0vlHNyb9qaN/ZZ0MhNumkvXW8eHnSq1zbmBg+5XCanJv2tv2MVBd/TzFz5hgosFu7GclsDxuGk7WmvY0VrTP8EAh2dE/3lV/o1cNUKVvcOJKReMb2xlOTjq+gUYR72PN55s4IPrp+M81cuT3z7MnJsmcOUSe9xy4RTXDYJzhxBtBFnTOKDvsaHex9NPNrBu/XRUFX707+9g/kogpWATI6hG2Nzewps7fXj0EdAkH+cOKGjOOOuXFZtYu7QMW76BUrsJe4GBh9fN5pnNTQNuNiR6uj/MrOJP0t7zIm1dx3B1+4hEZExyGTdc+UlRYSNIik7SECY+xiHuqVfDHxKWEWbWiXTur86qVx6iFTedB6qzjkm92PD31Mf9bSmczeSKOzHm2Dl14lnaT78eNz/Qk1j5NZT2Kp08r296NsdbWTv8qojOl6sJd/XvJ6aycirWrUeba+bgV+6L30Z31PPGvjrzfjLUzyxGNtVKqbhQ235sK28GwFP7NmF38rZiXb6ZiVWL6Hrr+LBSpbyKi3c821MKNjFCaoCjnu3CJ0xw0bCgsIrj3n30hDOfL83aAhacg5b+ocSUC8Y3Vy+303DA02dGPJBIWGXWIhtzlxbzwqPvx83TyqI6crQRoo0ga5Q0fY9KpZ/OUH8D7pX5Nu4uvwxJgjfaT7PxdF3fvIAcJmD3gseU9vUidpC6oKHNx/2Pv512LKgcOenhu//jAa4+8x9YzTLf/dQlGGRxky1ITpnRzDuBCZhw9E1LeOo1iGJhZp2A31kf97f9iluZcMUtGPPt1L36P7iO7Y6bH+i4cFvM3EoPNZ17aPA7CKlhdJKWMqOd5YXzscq5Z71+dVAll6fzCPYpS7AUzCSSpMpr8LShtleVFs2n7sw9eDbH20Awwg+fPk5IUdHJEmX2HJYvsGM1Zz7O+hvr4/72NdTT8PSTTF+3PvlrNWW3nwz1MxtIqmqllK91AbX9pBSWqqqwLrmWzpo3CdS34G9qgwHJUsaSQiRJSpkq1e1vR1XVlO9vZ2d13E1pOp8wb9glfMIEFw1muYDLLIvSVqEB6CQDsyyLhJgpOKeYrDpmVBZw6JV21AhMKDNx09oy8mwGVn9vFhXzCmh+v5vb75nGcz96r2+5ovKc87jVFydCtBFkjTyg77G0zMSatWXYbAbuuXc6L+S/z+kBbviKqpKvi5bdtPp9CesiJwxnUg0XTClkzeVTkST45e4TvNtxptdeB6oVNE6IRDJtXeKFo14nUTmrYERSTgTjl+WFU3mr+zpCkZNxZsSpMGmt5+TJ14WOGo6/MW4//AaOQ5uo+NAXMZdMTxBtIuELr8VMVVU2Omup9byLO9wTN68u0MYBbx2VlpmstFWe1c26lFDJpeH4oV8Q6G0n33YFzpbt8XMHjU/WKpSq8iQcclE5tZa36q7C3ZPxQIskwWln/I1GXUsvB054qJxVwMob0icHqsrQvvdIKLvxQ/3MBpOsWikVY7XtZ6BAE4oE6Q17CKi9KIO2c6CwNPfO2zjkepGmE40oih9tWMLWU8iHrl2QNlXKi4dtzg0p35/DX58wTfiECQRRbjjTqp9M+IVohU1M+BUIzjXzVxYT8od5541O2ht8/OH+9A9uTFaZucvtaccIRh4h2giyZmpZDvVn+h6bGnw8MOBHHbjLByX9YytyLbzmaKLJ52VZ8VR2OFvjVyb1V+0smW7nb8daKc3PYcXMSfxoe7+Sy0SwGGVwgdubWLonSaAmKQCymuW+GwiBIB1WWc91+dM44LoUC29niP3WMdtyg3jyNQjF50LpccdNU1WVqTd9Go2s49SOPycso9FeeGLqRmctm9xvEVST7yPucA+b3G8BsKro+mG/jjG3nEBPv+fBpGkfobD4OvRGG6dOPJsw3pAbX/k1uFUI0leeaPw7mVUUZm/vbEKR9D2uyY63ED0+bzrYAcCqxSXJBwHSoKpHU2kZZWvWYrDZmH7PvdT9+on4bdNlt58M9TMbTKZqnBhjse0nXeVPKrxhF/tcNRx0/52Q6oei/nkumvnvxgeZ8jcLs7bakZI8FHGV+KhP8/4UNf7zFD5hAkE/kiSxuGg186xL2dlZTVvgJOFICK1GR7FhGgsKq8R1hmDUkCSJhZ+cDBIcfaMTNc3zG1kvMaOyQMR9nweEaCPImmXL7bx1wNNnRjwQKSzFWQZ3BP18aGIZEVXlpZaGxJWp/ReBfzvWyprLp2Ix6ni3wzNoxWCZKvPl5eXU7HRQ39aLElaRtRLlxTnccEUh2w51JkxfvsAuKmwEWbPSVo6q3sHhLg1G9WjSihutZOHq/MXiydcABkZ8R/xdcfMmXVvFpGs/Qvfpd5lcuYpT25+Jm28ourBazNxKD7Wed1MKNjGCqkKt512WWK8kf5itUoUTq/C69vVVyzSffIHmky8kHavVFVA4Kb7ya3CrUJTUlSfhkIsbpr6KGvFzuG023qAlYWmD1k8gbEy73cGQSu1RF0vm2VIef41TywnU94srvqYG3n7g/pTrNJRmt58M5TNLhiRldzk0Ftt+MlX+pCJChIjqTzrPb1Gomxd9n5dtjX/40ZsX4lhlB4FwOOX7G5yQI3zCBIJEcmWraAsUjBmu/8QkdAYtx2pdST1uTFaZGZUFzF8pHoifD4RoI8iafKuOaysL2LKpIyH2W2rVok7uT+DZ4WxNrK4ZSLDf+FWn1RAIR3D3Btlw+FTCUFkrkZ+rY82tk5OuKtV0gSBbJEnioxOmc1vBfbzYcYRm32akcCuSFMYg6ZmR+wEWF60UT74GkS7iu3nX8zTvej7pclpTAYVzx3aLmdsbomangwZHLyFFxT39HbqL+1uilhVfzaKiWdgN+TT62nnk3f5qDne4h5rOvayx3zis15b1BVhsi9IaCQNIGgMW26IEA93EVqHMlSeSBDdO28q8yfuobayktbsEJaJF1oQpyWvlcvshdnV8ms9++CrMOVq++cRhvrV2JnpZw+6jnWzYHD12u70KNTsdKY/Lhcuq8L61L86MOBVaawGFy7LbT2Kfmav1L1mNH4w6KEEuFaPR9jMUg+NsKn/SCUvpiOhVTs32MH2fDWNP9HJR0YVpmt1FwBz9vJr9x5IuOzghR/iECQQCwdhGkiSuXVXCnCU2DtQ46KjvJayoaGWJovIc5i63D6vCxucOsb/GgbOhl3BIRauTsJXlcPVyOyarEOyzRYg2giFRdUZd3VPrwj1AhZVrjQRnhMCSOQJOCmlQu/qf2O481cnOU50px5fnCbMrweiQL+tZWzIXmHu+N2XMk23E92Ak2YBlxqIxGyuqqiobt7VRe9QV35J5qTtu3Mtt+3m5bT8/v+Ju/ta6P2E99QFHwrShYJsSrehKFtkN0QqbWGT3YAa3CkF2lSeWwtnMqriTG5YkT1ya0r2ZJ18pYP2K6dxwZREd7gCPP3+Cp75/Hc9vPd2XLlXf1pts9QDI+QVYrl2Ee8uraWO/Jb0By/xFWcV9x7BN+Rhdzm1EQu6sl4kRDrpQQu6MCVLnsu1nOAbHySp/Wnz1NPfUxS2fTliKLZdM2PFbFI5VdnD5ayVIBUbqLj3Fu4vb+5ZrDzSyteOZBNPlsZCQIxAIBIKhY8rXsXDN2T8QV1WVPRvbklbuOOp6aTjg6avcOd+m/RcCQrQRDAlJklixqoSbl9h4ucZBU31vX4KI36vhtMVDiDTNkAoUuHMJ6/R0BdK3GQBYDTLLpwmzq9FG6YpG7fob61GVEJKswzi1nMJlVcj5YzfKVjB6JIv4nnD5Lahhha6GQ4QGedxAtMLGMmMRtvljt8Vs47Y2Nh3sIDg4LU+TWIlxbcEMwmqEfe4TCfOUSObjWzokSaKodDXWkqV0NlcT6DlJJBJCo9FhyJ1G4aSqlAJDQUkV7a270Ws8SeenIlPiUom5ldbu2Pb1b+dgZDw4Gn6Pv6ceNRJC0ugw5pZTOLEKWV+AreqMILVnO2F3EkHKWoBl/qK+cdkiSRJ5BdfQ5XhtSMsBhJWurBKkzmXbz3AMjlNV/gwkk7A0cLlkwk5XmYJ16ZW8dW097wbb4+apRJKaLouEHIFAILi42bOxjSObOlCCyR/o+9wKRzZFvfCuXZXaC08QRYg2gmGRn69j9SAVNpqsUk+tx4E7HExcqFfC0pnLN+ZfSa3TSc2xVpRUrpaAXiNRObGAfIMonRstVFXFWb0h6c1UoP443kP7+m6mhCp+cTM44hug48gW1EiYsls/S8c72+lp6W+d0ObkM/WOh8dshQ1EW6Jq33ElCjYAEW3CpNWli3i6aWvSdcmakTm9yjpr1lHUMV7cFcDXcRlXT9qHXpu60iOigibuZ5w+cSnHEGHt9WXY8g2U2k3YCww8vG42z2xuOlNlo7K4fCtXTjxClyP+xj/Qcxyva19fdVDRitVYb15K58vVBJpOEgmF0Oh0GEqnnRGHrUN6zzEGe9sMJlWKVnQbM7cynau2n+EaHCer/Bks2mQSlmLLpRJ2Oou6+UPR/0GS03qybYohEnIEAoHg4sTnDnGs1pVSsImhBFWO1bqYs8QmzI0zIEQbwYghSRKriqaxxDqZms5G6gNelEgESZVoqVMIvqPHE9DwzX2HowuUAAVAkrASq0GmcmIBKyuE2dVo4qzekLZtIex24d4SfapatGL0omwFo49b6aGmcw8NfgchNYxO0lKij1ZZtQZd9EyzwJTZhDUS2oiKKknIkQiX5JcyIcdEp6uO92ZAlxnCGpA1vZR6X2CBPtGXY6xQs9OBuydFhUyXGQrjK1e+duh3KddVbjg/FYJub4g3j3Ti8S1GVWF28WEsBm/COI8/j5buEiZbTmM2RI23M/ne9AY03P946ijQxeVRT5xUQlE45MLtOHP8KF2NnG/FvnpkTTgz+QGlqybKJkHqXLX9DG5zgtQtSwMNjpNV/nQFOzjSuatvWiZhKbZcJmEnHclMl0VCjkAgEFyc7K9xJDUzTobPrXCgxjEiLVnjGSHaCEacfFnPGvslcdOea2xlU6SD4MCMqVagA7ADJkAD1hyZq6dYWD7NLipsRhmly4Vn9/a0PhMAajCAZ892rDcvHfbTcMHYJVoxV0ut513c4Z64eXWBtv4/cnTR/wbRjJu9PXuxXDcVq3RyQFhwkM6u15L6cowVGhxRL5byiSbWr6iIM9z1SxX89NTT9GpS+7XE0AYNLC+85lxvblJqdjrw+MKAxNb6G9l3eh6VU2spMbei1SiEIzKt3hJqGyvpCZnJ03uYXXyExeVbM/retHpTly/n6r3Mth9OW9kDoEYCeJzbsZYszegfM1xiPj+u1pcgwWA4dTWRJotWpnPV9pOszQlStyzFDI6TVf4Mh2yEnYFIaFAHtUKnMl0WCTkCgUBwceFsiF4r2ctNLFtfQY5Zy8afvM+yz0/HbNPzzrYOtvyxsW98R33ma6uLHSHaCEaFlTdEK2YSzD0VoBmsZpnKWQWsvEGYUZ0vOl+upssbZIdtCW2GEhRJi14vM3PWZFZeX0TDA//UNzbsjnrejPRTcsH5Z6Ozlk3utzJGW6fDp0KvZCNIiGLiE+GS+XKMFfqMdFt8PPlKwyDD3ZMs++yVPN+0G+R0vl0aTO2TyJ89vLjvsyUmPEFUfCovmcDWw3nJW76A7qCFfafnAdH0qFQEI/nsbbk+5fzK0h1YjIkVPckIh1xZ+ccMl5gfkBJy0+3cFjcvXTWRzjgpq/Wfi7afwW1OkL5lKWZwPJTKn5EiV85Hp9HjHuRv4/A38HTjD1ImXQkEAoHg4iB85prDUe/jjScb+OD66ThP9fLktw8z56YJXLkkvho5rGQOsrnYEaKNYFSQJIlVi0tYMs9GzU4H9W29KGEVWStRXpzD8gV28nNFZc35IhKJ8OfjRo5N/jTdsiVu3ql3A+xrauXSgsUsdm3tq5wINA09ylYwtnErPdR63j0rwSaGihYPRdhoQyb+hjSVB8b5RicnCsYDDXc/VXoT1dubiUxqhZxkvl0GaLJT1HXpOd7S1IQGXPjUt/g45Ygea9MuE9FzpG028ybvw6zvSTJCwpxbwHWzStj1Xm+88H6GKfnxaVnpvGMgO/+Ys6VoysfweQ7H+dukqybq6XqLjqZnsE1JXwV2Ltp+Brc5QfqWpZjBcbaVPyPJFUWLmJF/JX9474dx08OEaAkcT5l0JRAIBIKLA60u8bgfCavMWmRj7tJiXnj0/fjxSa6/BPEI0UYwquTn6lhzq+hZHGv86E91NOhnENYkMRgCXD1h9lnOPI13RZ/GR0LZR9kKLgxqOvcktERNzSmisbdjWOtTMNDBJEpoSJiXzAPjfFNmz6GupZeyYhNrlyYa7m54/RSRI9Ph+GSY0UhOsY+CfC06jYyuJ5/jWwshYGDaVabz9h4GC0+ZBJsY3UELtY2V3HZJsuQllWBvPfOsj3LNzTeyo6mShkHC+ySblvAAzSBTElU2/jFnSyZ/m4RtUrriPHcyMZJtP4PbnCB9y9JAg+NMlT9a9EQIoXL2TzJljZ5wRKGmPrWfE4ztijqBQCAQnFtsZTk46nqZUGbiprVl5NkMrP7eLCrmFdD8fje33zON5370Xt/4ovKc87i1FwZCtBEILnIa23o52daLOkCwydV7qSzdQYm5bYAPRjFvn7yceZ59mMM9aHSiMmq80eB3JExLJtgsK76aRUWzsBvyafS188i7A9pMvHq0O8rQtJlB0aDotRRfmk9e5TaOh7bErSeVB8b5YvkCOweOe2ho86U13CVggMMz6D0Mg7uwrWaZ5QvOjwkx9AtPAHpZInim8iaZT49e1rD7aCcbNkdb2Np6ygAJUtzch0MupO6/sfQDYYpujb8Rb3xHHyfaZEqiysY/ZiSI+dt4OrYSVroyjh8Nz51knI3BcbLKn2C4l96IF1QIqwoBNb4yLJXJcSaUSJDdjleyGhtSAxxr3sekv80n2BQhElLR6CRyy3KYuNyO3irOIQLBcFG6om3q/sZ6VCWEJOswTi0/k74nWhMF55erl9tpOOChvcHHH+5Pcz0FmKwyc5env27yuUPsr3HgbOglHFLR6iRsZTlcvdyO6SI5lwjRRiC4yPn135qIJa+XT8zhrsp9hLq2J0TmTs5vZobtOO3FEzC/2YOhNLsoW8GFQ0gdbNqanJfb9vNy235+fsXd/K11f3SiCtqt09AcKUbTbewbGwRqT4Uw7LmSnMtUChZv7Ws5Co9CtcVQsJp1VF5WwKaDHSk9YNKh10lUzio4r62eyxfY2XesC48v3CfYQCqfnhM89f3reH7raUKKeqYqJ/37ViMBXK0v4XUfQKM1Yswtp3BiFcbccgI9/ZUimZKoDLmjc/xI5W+j0eaQb7ucydPvoK3p1bj2rXPtuZOMkTA4zpWt3DLh02xzbuCoZzu+cHqRKpXJ8XC4onAhH5r22X4RqGMH5VsXYz8yG1d3fPVeT10vrgMebJUFTFkpfOwEgqGgqirO6g14dm0l7In/jQfqj+M9uAfLdYuxVYnWRMH5w2TVMaOygCObOtLGfst6iRmVBSnjvlVVZc/GNo7VuhLSqBx1vTQc8DCjsoD5F8G5RIg2AsFFjtPT/wR2quFlvI59yJrkN9MWYzc503xIqpHCZdlF2QouHHSSNuux1xbMIKxG2Oc+AUQFG+2+KUih5OsIeHII7ou22BXeGG2x045StcVQSGmafgZJok/kHMhAM/XzidWsY+HsQl7Z104khV/yQJ+egWilJD49SQkT8kercwI9x/G69mG2XoNWV9An9qbzjtHqCiicNLrHj6C/Je7vSLgXW0kluZZpSVu1RsNzZzAjYXC8zbkhK3+bdCbHA4lV5Dh7W3i+7nE6/M1Jxx1178XQlMu1xbfjC3VTvnUxk/fNQxtK3nIbcis4NkWr+EpXpU4lEwgE8XRUP4N700ukOsCHPV24NtWgojJhxcdHeesEFwvpKl8gGvndUe9DNmiIhMNEkjwTNFnlPsElFXs2tqUVfnxuhSNnziXXjvNziRBtBIKLnNh5PxbZm0qwiaGTwzBdF41pF4wryoz2+FjvNKwuXcTTTWfShrx6NIeLUwo2MdSQnu4js7HM24ds7onz5RgrZDJNv+GKQrYd6oybPnEi8IFG3gu/zUONYXSSljKjneWF87HKo58itfKGYlRUXt3bQeTMdU4qn55nNjf1mReX5LXGrUdvLCISDqBkqMQIh1x4nFsxGEuJhH1p/WMkjQGLbdGoth4BqAnCTPr2rdHw3BnM2RocexUX73i2Z2VInM7keDChSJB97a/jHCR8xY8JsMfxKq2+ehabP8qxw66Ugk2MSFDFWeuiZIkNXYqnrAKBoB+ly0XX1tdSCjZ9RCJ0bX2NgpuXIedbR2XbBGOfkWgxylT5cmyHG1BRAokii6QFg0lL3gQ9E8pzmLvcnrLCJra9x2pdaSt1AJSgyrFaF3OW2NKu70JHUtVkzwz7aW8/+7JZgUAwdrnvPw4TCKksqXiV2VMO8L4RurQQBnRyDlPz53DzpJV0Nca3EOTbbxvV9gHBucet9PBI4zMJZsSZ0L46A/lA9gbjlqv3Ub5sH5+a+vCYSo8aKqqqstFZS63n3aSfmVWbS6VlJittleelbLfJ0csP/3QiLlEqFTpNiMKcDlQkZE2YYnMr10+txWzIfl/QyFbyCufjde1NaK+EaIWNxbYoYzrTuaDxnR8Mat9aEde+5Wj6e9x4Y+4llF72g1HdxrPlNcfveaur30g6ViXzYt3/8I5r17DWqdPoo21UGiPBiD/jeLPOyiVbl2DZWpH1a9hvKaRsjQgoEAgy0fqHX9G9a1vcNFNZORXr1qPNNXPwK/fFzctbsJiStf84mpsoGIOkE1ogvuIl07l593OtGVueMmHM02KZoM8oGG1/6jRHX+8EwF5uYtn6CnLMWjb+5H2WfX46Zpued7Z1sOWPjQBcdkshCy/Ac8mECXlZjROVNgLBRY7NoqfZ6Sc85RhbzeCPK5boxdm1hxO+E5SpJsqhP/L7PLQPCM4tVjkqMmxyvzWk2G9Nm7nv32XlJtatryDXrOWrXzzIN74zk3nzC1l31x663NHqhWDrxD5fDrc3RM1OBw2OXkKKik6WKLPnsHyBHav57J6YnMt1A2x01qb9rNzhHja53wJgVdH1Z/16Q6XUnsOSuUVZefSEIjraeib2/d3cPZnjzhnMLj7C4vJ+H6J0Ud4RxQ3A1NkP09lcTaDnJJFICI1GhyF3GoWTqtJW2JzL72uw50669i0YPc+dkcThr0+YFooEua5kGe+59xEewm86xnz7bXQFOzjSmZ3o4w25aSp4m9lERZu8chNz1legM2up/eZhrvinS8ixG3C9082RX9UB0FM/2M5bcLHQ5azn+F+eQDrdjqREUGUN6uQJXPLhe8m3lZ/vzRtz9LxzKGGar6GehqefZPq69Ynjj7w1GpslGOOMVItRtpUvmfB3h/F392b0pHE29J8bHPU+3niygQ+un47zVC9Pfvswc26awJVL+g2MO8b5uUSINoIxjVvpoaZzDw1+ByH1/LcdjEfu+WApT+z7DY48LxFN8jGeUCdH8dBrgMvOVN6fj/YBwblnpa0SIGX1SFKU/h2nod7H0082sG79dFQVfvzIu2yojhcsjBSwqPA2ntvamtQ7pq6llwMnPH0eMUOtylBVlY3b2s7JumO4lR5qPe9mFLeCqkKt512WWK8kfxjHrLMVMjJ59KSjO2hh3+moD9GN06KtcOmivHt6ctn6Yj6d3R0ooeuRdQuZWpbDsuV28tOUXo/G91U4sQqva1/SCqDBnA/PnZFAUeO/j4G+NbMK5nO4s3bI60wWOZ4peaq30Nn37+56H+892cCc9dMJdSt0HHAz4xOlqJH+i/5IFpVg4wmR+gORSISDzzyE7uAJLN5B33/zKRqPfpfQVRVctfp7aDQpLkwuQiK9vqGN9w9tvODCYChtTiPZYrS/xoHPrWRV9QLRipqKqwt4r7YTJZi8pc/nVjj0SjvHal3k5Mlx7yWc4mFTJKwya5GNuUuLeeHR9/umh8f5uUSINoIxSbq2g7pAGwe8dee17WA8UWjzU1B2JKVgE0NB4ZQepgfBqI5eZK9gdJEkiVVF17PEeiU1nXupDzhQIgqyRmaiLnpDse9kC35FQa/TUDhBh1evZSgSXiSYx/PbHWkrQNxehU0Ho09+Vi0emrncxm1t52zdMWo69yQcm1JFobvDPdR07mWN/cas1z9SQkYqjx4JaOkMxCVMJSMU0XOkbTbzJu/DrO8hmReMqsKbuxdz9P3Z9PgsDAxCr6/r5dABD/MrC6hKUXo9Gt+XrI+2Zrkdr45Jz52RQJbij8kDfWteqv/ftMvqNUamW2bzrntfVq+VLnkqok2RQqeBhpda8Z7qZc690/snyxfHObwv9WfPdsLuePEwUH8c76F9WOYvuihSfw4+8xA5u44jpzhxGL0q8q7jHOQhrv7ED0Z128Y0SdxcTaVllK1Zi8FmY/o991L36yf6Z4azS4QUXBgMJ0lpKEKLz61woMaRssWo40zlSzZVLxCtqDmypSPz+4pEXzv2nmLvZSATykzctLaMPJuB1d+bRcW8Aprf7+b2e6bx3I/eA0A7zs8lQrQRjEnGetvBeGJnZzUafXbeVX4tHDPA5f4Ls31AkD35cm5KkcG06TRbz/QZD65bKC0zsWZtGTabgXvunY6tKGpG+qWvzODnP3kPX08YrxRmx5HOjC07wZBK7VEXS+bZso7RdntD1L7jOifrHkiD35EwLWkU+hnqA4nj0zHSQkZ+ro41t/ZfiD312mkaHH7KJ5pYv6ICc46Wbz5xmG+tnYle1rD7aCcbNkcTorqDFmobK7ntkteSRnm/uXsxBw/PQ1GSG8+63QpbzpRerxhUej1a3xeAbUo0dcnj3J7Rc+dCxG4spyXQ3wK2o7UmaaXMQMw6K2V5M1k8+Q62NVdn9TqZkqdUTf8T1bwyE5euLcNoM7D4P64i6FUwWHU43+6/IM8tz8nqdS90nNUbcG95FTWYXDQMu124t7wKQNGK1aO5aaNKl7Me3YETKQWbGHIIdAdP4FnaiKVw6uhs3AWIr6mBtx+4/3xvhmAUGE6bk3OIQku6FqPu9sSEyVRVL2eLz60gDXiY3N7g4w/3J085jFE0zs8lQrQRjDlGq+1AECWZD0K68ne3fOG2Dwgyk007zrLldt464KEriaFdU4OPB9KcWCMyBKwqvb5wVoKB26tQs9MRJziko2anA3dPdm1AQ133QEJq8ieYg6PQYyiR7FuTRkPIaHBEL8zqW3w8+UoD61dM54Yri+hwB3j8+RM89f3reH7r6T4T49bu6AXgYC+Ynp5cjr4/O6Vg07etQZU9tS5uXmIjf0Dp9cDvK9P+cDbfF0SrjopKV2MtWTosz52xzoLCKo5799GTJC48Fd6QmyOdOznSuTPrZTIlT+UV5CNbNSjuCN0NPmrTHA90VplJy+0p548XlC4Xnt3bUwo2MdRgAM+e7VhvXjpuU3+O/+UJLD39x7Z0RrpGr8qxFx9n3mf+bbQ3c0wiGYyoQ2iRkgzj+yb2YmK4bU7JWozSCS2pWox87hABX/S6J5uql8Fk21I1EDUCkgTpI5OimKwyc8f5uUSINoIxx+C2g1QtBzC8tgNBPIN9EGKkKn+PSAy7fcCruNjZWY3DX4+ihpAlHXZjOQsKqzDLBVmPEYw8Q2nHybfquLaygC2bOggOwZBOlSBioe/Mk61gUN+W3lyuyx3i5RoHjQ291Mt+0GYWAGJkWncqdFLyePO4KPQByJrsT7cxIeNciFoxkiVKxToykrVmKJHo+4305OI/UEm4vQQ1rMXjMzOn18whBjZFJcftVni5xsHqAaXXMfEIstsfhvt9DUTWWcdl8p1ZLuAyyyIOul/NKvZ7uKSr4NFJRj5a/g06K/04NnUQSXN80OglbJUF4zLue7D4Pb/hJWZ0ZSemhd1RzxvD0jV9xzUlpCLrpKw8osY60un2uL/TGelGxw+tSnE8oy+yE2iqH9J4wfgg1uYEmQWQWJvT9Z+YRG93dJlshZZULUb7axzEnlVlU/UymGwqfSQNfPpHl1N/qKtPyFHV6HQ1Tcq9rJeYUVkwruO+QYg2gjHI4LaDdC0HMPS2A0E8g30QIH35u04uGHL7gKqqbHNu4KhnO95BT4FbAsc54d3HzLyFSMDR7jdTjpllWcQNtvHf738+GGo7TtXKqMHtnloX7iQVN4MpKNTh1IYI25LPTysYhJNvk6qqVG9si9uGwDRAm70glGrdmSgz2qkLtCVM/9qh3yUdX27I/uJ5qFUwwxEydGcuzMqKTaxdWoYt30Cp3YS9wMDD62bzzOamOGFHlsL07lpM8P3ZqD5L33QzMAuYppUouaGIqR+dxNe+9FbS1DCApkGl16niyFPtD8P9vi4WbrBFj83JjrXZIqFBJc0VcgZ6lC7eW/Q6YU8ueYemous2JYzRWWVslQVMOXMcGS+kEr9vdJ2OGze4uqRHzWWXUolDLSGsapFel3FveS9BFK+v66V2XyuVlTY+9tGyC/JcKClD27eGOn48Y5x2yZBEG+O0S87dxlxgfPGL93LqVPKKjguBjoZeQv4zqsmb8OgLMrZJOTQf9/JvT6vkWvXkFuhwnIw+9Nbt06L/pZaezmDfMv/2dObXMR3R8bvdhvSvnwUarQaNLKEE+pcxHJR5YnMOzce6MeXryGs20PETH+FQ/2/8d7doKJyU0/c+ADRytE8qkuRYoJE15FhkLM16eDLrzRtT6HTJHwIClJeX8/vf/x4Qoo1gDJKs7SBVywEMre1AkMhgHwRIX/4+xXLNkC8Utzk3pH366w272O9+CYBIipsFb9jFQXe0339x0fjt9z8fDLcdZ8WqEm5eYuPlGge1e10EAip6HRTmGTDlaPH0KJhytEyZasJaoad6Z0vc+rIWDLTJ97fqjW0J1T5SBAa/i3SCUKp1Z2J54XwOeOuyStiyanNZXnhN1uvOpgpGHVAv3OTw88Onjw8pVarMnkNdSy8NbT7ufzzzE7N5Dg2B0/MgRRuUMazi3NKOTielTA1L9t50A57qZbM/DPf7upAYWDk21AoLSZJYXLSaUMTPW12bhiW+pFpmkmk67mAHPsWTdD5ASPXzp1MPoagBWAS6q3KZWluJubUEXViPwZBLScUUJv+DfVxW2KQSv7WD2r1j1SXT7rmX10O3ciRyBQoDflsKJB7JooQ8erZu7qQ+UM83PnnjBSfcqHJ86kFaI90k4y9mCpdV4X1rH+Esqra0+QUULhNt7DFOnWq84H4riUgD/iWd6R2C3Hw9eYUG2pt8fWNUFfweJW6ZTGhlibwiQ5rPSer/X4bnJ5GweqZqJ7qMzqiloCQHWa/BXm4mJ08m4AtTOCmH9ob+lj9J0uA85Y/bbq0sUTglB68zSMgfQVVVJElCZ9RgtukveAPidPtlfX1937+FaCMYcyRrO0jVcgBDazsQJJLMB2Fg+XvNI/vpaok+HddKMm8YHTwmPdM3NqwqeEIdBCN+VFQkJPQaIxZdEVpJJqwqtPlPEs7gUZQtf5S2Umz8DVpJfO8jRZsrgNsbrYYw6rVMKspBq5Woa+5harEJjQQen4I3UsDVyx+Ia8fJz9exes1kFDu8/lYnIaCHM+LcmYc1J9p7oT3xdbMVDDq6gjz12uk4QaLLHWJ3rSvhSbTkB9WUvSBUXjy8nn+rnEulZWZaw3QAvSRTaZk5JN+tdFUwD91zGd/+78MoA7TtUFilrqV3SKlSyxfYOXDck5X/zwSpm0nteSkFmxhaFVx7OskhdauUbtDFVUw8guz2h+F+XxcCySrHYmSTwhXDq7g45t17VtUyyWj21WU1ThkgzofMPZy47bW+v3WSgaust1OeP/6E93TidzjJ+UpV4eGftlIXmcdQbqwACOlo2GfgTwtfYM20O4a5xecHdfIEaO5vUc1kpKtOFi0+MeT8AizXLkpraA0g6Q1Yrl00bn2RLkYGHvN1Ri3WEiOyTsJenjtAADH2CSCRsEpEUdEbteiMWnyeEGokjdIiQU6+LqUAEnt9nVGL3qjF36PEVcjE0MoSYUXFlK8j16qjvdEHKoT8YVpPeDO/UVWNex+x19bKEvnFiRVAFxPirkcw5kjWdpCq5QCG1nYgSCSTD0JXS2/fU36DGkENuuDMZ96lOPApXYQH+eKEwr34I15Mcj4RNUwEhYH3GHn6AgoMxYQiQTxBJz2hroTXTTUmgkK34qRAP7zoX0EigZDaV8rhD0VocwWYXJSD1axDCas0t/cyq9xCx8lWIHk7zlBEAItJiwR0+bIrtfX4wrz+VmecIPFyjYMut0JZuYl16yvINWv56hcP8uVPXcL/bm/ISgCwmmWWLxj+8WOlrRKAWs+7SSturNqosBMbly1DrYIZSLapUlazjsrLCtK2xAHoZbjJqwFfVHTKKzcxZ30FOrOW2m8e5op/uoQcuwHXO90c+VUdilvh47Mt2O+YBMSnhgGUDkp3GMp+c7bf11gnWeXYQNKlcA1kZ2d1nAifzlh+JJCQUDM9dj1DSA1w1LOdedal5MrWEd2O8006E/RWfTFWf1dfC5Sqy6H3WCGenhBDFmzOIHWb2flykOXrusiX889iy0eXSz58L43vfBdjT+Z9xm+WmPGR5F43Fyu2qjMpeEmi4wG01oK+6HjB+EFn1BDsjZ5HsxZAgKA/jEYrkWvV4e1MTH+KodVK5J1J+wwrakJVS+SM4BPyh5O2SUkaiZw8mYISI6FApE9IMuXp8HkyRMUNIBSIxAk2EH3vAiHaCMYg57LtYDyiBF10tlTj76lHjYSQNDqMueUUTqxC1mdn3BvzQTji+js+/AnzNYAhAqZIBCUSjXru0YJX6URN4Q4WVkN4lU4kkh9sVSJoJA3hFCk86cYEI2dvRiroR83Gmn8AyXxFshYBdBILZxcCZBw7mIGCROOZGMuGeh9PP9nAuvXTUVX4r0eP8w/rJ/Hc5mZS7Hp921E5q2DY8dEQffqzquh6llivpKZzL/UBB0pEQdbIlBvsLC+8JusKm4HGpf5gBK0GwsMslMg2VWrlDVE/kWTm0xAVSRaWWbC/okUh+hvsrvex/8fvctXXP0CoW6HjgJsZnyiNe4LXBOQ4QgABAABJREFUdsTD744kttBYrTLLBqU7ZLvfSIAlR84qReJCJFXl2GBSpXANJFkiYCpj+bNFrzHyAetcDnfWxk1PJxR5w1Gz+Vvt48sMeqCp9kAT8fsff5vwrFX86c0WvBFzdEDwzH9DYNmHSqjd4YzziAq1WKnp/Ctr7J8cgXcwOuTbygnNrUDedTxt7Leig9BVFSLuexCSJFG0YjXWm5fS+XI1gaaTREIhNDodhtJpFC6rEhU2WfDrX/83Wq2WwsJCFCWMx9NFV1cX//zPX816HT/96U/41re+jaJkfujwqU99kjvuWIEsy1RV9VfHfeMbX+eqq64iHA6zffub/OpX/510ebNNj79bSZnuNBCtLCFpJSIDxlqKDHg7g8gGDZIU9Zq59vp5rPnMR/nyum+hOVNh42kP0tsVyup1BqJGVHxdIXxdqX/Us+Z8gMJCK29u3Z31erWyhNmWvsr3Yx+7k4985CPs2rWLxx77z6zXfb759re/xaZNm9i/f19W44VoIxhznMu2g/GA4nPRub+aXudJFHM7EVMPyPGiRqDnOF7XPiy2RdimZDbulSSJ6y23U3TqDboifvQqSGo07acmDFr6739VNUJQcdOjklKwYcDYZE9gvaEuuoMurIYJWA02WpXEJwbpxmT7VFeQHQP3D6NOS0mhEZ0sYdRr0csapk3KxeH294k7qXxFshEBYpUyMVKNTUVMkLAGUhu3rV1axt/+0orPGIEk97XJtuNsyJdzh51gp6oqT29uZsdhF4EsL5JGIlVKcfvprDnG/IYu5gbCuP1hWo16DpfaUEw6yu1Gru2Q8L7mIdQ96PjSGeLAT6JpEw0vteI91cuce6f3zU/2zej1EvMrC5IKDZn2G4i2zze2+3nkqeNZtX8N5mx8YkaDWOUYkFA9NtjUOVkK10AGJwKmM5YfSK5swayzoqKiREJ0BlpTbq9ZZ6UsbyaLJ9/BtubqpGPSCUVtgZMp132hMrDtcqCJ+KSQgd07vSgxwWYQmb7vGHXJnqwrWuoDDSP+Xs41V63+Hgd5CN3BExi9icc9v1kidFUFV63+3nnYugsDOd+KffX4Ej5Hk3vu+UcA7r77szidTqqrXxzyOv7lX76R9dg9e/byt7+9zG9/++u46Zs3v8FPfvIztFot//7vj3LVVVdy8OBbCctrZYmcfB09ruRtThqNhkgkEq14ydcRPFPJnKqVKjzI1FeSJLo7ginXf7ZoNBoum3MpFTPKhyTaGPPkvpatZBVAOqOGqqoqPv/5e/F644+Rsc9kLKLRDL16SIg2gjHJuWo7uJBRVRXnng14jm0n7HPBRCCX5HdIQDjkwu2IGvcWlab3D1BVldPHHkUX6qYobgbI/Z0zffgkhcHH9NQtT4kH/zxdAWZ9PlpJR6c/+Y1BujHSMMvJBckx6jX0BqMneH8ozInm9GW3qXxFPF0KSlOYonYZya0SikSQzRryp+momGpi+QJ7XOXHqsUlLJlno2ang73vd+HxhdHrJOZdWsCHF07k3558L6UgofVH96vSMhNr1pZhsxm4597p2Ir0SJLEt9bN5Gc/e5duUwTVCHqjxOTJRsqLcxK243yhqir/9vQJ6lqHVjl2NqlSqqri3PguntrThN39VXV5QB4+Zvb4sVROptedi2OrM2Vkc9CtoNFLlFxvY8bHS3G+3V9ZM7h2zmqV+7xYkiFJUt++8IuN9TQ6Eqv9YmTb/jXw/Y6ET8y5JlY5BonVY8lMnQencA1kcCJgOmP5gcwsuIabpnyUQLiXl+p/HyfaDE6U8obcHOncyZHOnUnXlUkoCkeyL5e/UBjs1wTgcYdoPeFHSVNFls33DRBM4h+BHEa5AD9LjUbD1Z/4AZ6ljRx78XGk0w4kJYIqa1An25nxkfWiwkYw6ixYsIB77/08Go3EG29s4be/jVozvPjiC2zbtp0rrriCxsZGHnroYQKBAM8++wyf/ORagsEgH/7wP/DRj34UVY2wdeu2vmVjvPfee8lekr179wIQDoc5caKOCRMmJIwpKCjgoYd+QH5+Pm9sepPbl93K4rn/wKqPf5hbbr+BwqIC2loc/OInT/DT/3qIXHMOfl+Ar3/hB5w4dpKF82/m5tsWYS8uwjahkF//1x/50/8+x/QpkJ9v4X+e+n9ccmk5z/3pL/zno79J+fncte7j5FnM/OejUeHp/u9/mfePHuf5DTV84Suf4/YP3YRer+d/f/1/PPPk83Hb52htZ961V6LX61l8y/U88t1HOf5eHf/68wcomWjH3xvgm//8IM4OF3/+2+9Zu/Je2h1O/vjsb/jPXz7Grq1vJa0A+uZ3v8rEiRP5xf/7BX9+7s/MnXsVgYCfmTNnsmnTZk6fPs3atZ9Cp9PR2trGQw89TG9vL9/+9rfo7e3lsstmkZNj4pFH/pXPfvYuysrKePrpP/Hii38B4NOfXssNNyxCp9Pz3HPP8Ze//JV///dH+clPfkZLSwt/+1sN//ZvP2Lr1m089th/8IMfPEg4rPDAA99hwgQ7HR0dPPLIv+Jyufj2t78Vt20xJEni61//OqdPn+bpp1NHfAnRRjAmGcm2g/GCc88G3EdeRVUC0V9uASkFmxhqJIDHuR1ryVJknTX1uk9tIOjL7mndH//0Gshaimx2FEXB1dWJy93JvV++J6uWJ4D/+Nl/su6rnyakpL7Y9ASdeIJOvvDZL/Opj34WnU7H/NtnA6DX9IsG9933BW6//ba4ctMYCxcuZOLEEv785+dSvs7cuVfh8/WmPKHGGHhyPhfccMMi6upOcvr06aTzh1KGmw0lJSU8+OD3+fzn12Oz6On2KShnlLjnnnqcVZ9M7iOQzFck3Y1xyBPG4JMwWbRYTImnnPxcHWtunUx9Wy8eXy/BkEq3TyE/V5dWkFCN0eWbGnw8cH9q3xfdmYf8i28pSFmZcL54elNz1oKNVhNtERqceDnUqHTnxndxbzqJGkzR1uj20/laA16NQiTDrh4JqjS/0UHzGx1x04MWLVOsOnSyRGn5mWqWLJKCVBU8WXjbZNv+BSPnE3OuSXdTn4xUUemQmAg40Fg+HemEFpM2n2DElzIBcDCZhCKt5vyLpiPNQFPtmIn4lpo2Ar4IH5geZuV1B4l4GjjV0IWk1XHabWd38/X4QskrcAajkzUJHlGREgfyBfxZWgqnMu8z/3a+N0MgQK/X87WvfYX77vsSTqeTxx77D/bu3cuhQ29TWFjIjh21/PSnP+NLX/oiK1fewZ/+9H99y1ZUTGflyjtYv/4L+Hw+8vLyhvz6OTk5LFiwoG+9VVUfAaC6+kXuvvszvP76FjZu3MjKlSvRyhK5BTpkvYaZc2bw0Q99mmDYj21SHl/7+lcJhUJc+oGZ/Mt3v8i9n/4aAFfMnc2HFkcf4FZv+iObXtkCwGWXX8oHF38UVRPixVef5TePP0WvL/mDk01/f4P/+eP/Y+NfnqG90ceyD9/EC3/dwIdW3YjNVsCK29ai08k889ffsPnVbQDMnD2Dj9z6SXq8PlZ9/MNUzCjnJw8/BsD/+9W/8h8//W+OHHqXK+Zexnce/hr3rPkyj/7rL3nk0e+wZ+cB9u06yK6tb6WsAHro2z9lybIbWXHbp9GZVObOvQqz2cy6dZ8HIC/PzLZt2wFYs+YT/MM/LOfZZ/8MgE4ns27d57nzzo/y0EMP8rnPfQ6NRstvfvM/vPjiX7juumuxWq2sW/d5ZFnmv/7rP9mxo5a33z7MnDlzMBqNNDc3M2fOHN58cwdWqxWn08nXvvYV9uzZyzPPbOCOO1bwj/+4jh//+CcAcdv27W9/C0nS8PWvf53m5ua0gg0I0UYwxjmbtoPxhOJz4Tm2PSrYABQD6Vs8+wiHXHQ2V2Mvuyup/43eOBFf1yEy5ved4VOfWIJbC1+69xu0dzh46rnfA9GYvtQtT/H5gJ/5p09kt/HAtp1b+PNfnqHm6U0AaCUdFl20Hqi8vIzCwsKUy7755psZ1z937lycTmdG0eZcc8MNNxAMBpOKNhqNZkhluENF1krk5+pweUNEVDWlYCNJyX1gRuLGOJuY64HklMrIPVJfS0k6knmpnG/c3hBvHskc2xojHIkaOHt84WFHpStuP57a0ykFmxi9oby+aplMxsOD0Vll/uG7l3DHMOKcY0auI9H+BSPrE3OukXX931Wy6jGIN3VOVtURI1kiYDakE1pmmOeh0+Rw1LMdb5L1ypIhLjUqk1BUbJg2pG27EBhoqh0zEdedVFk0ZSuzLEfw10UVZPuZ500TSk5TUXCc06ErWfipz6f9vgGOve/lke+/0/d6qiYMQZlJgYrRfaOC84bS5aLz5Wr8jfWoSghJ1mGcWn7GxyY7D0NBcqZOnUp9fQMOhwOAzZs3c/nll3Po0Nv09vb2XU++9tom1q79VJxoM3fuXDZt2ozPFzXQ7e4eunfYN795Py+++GLf6w9s15ozZw6/+c1vz2zXJj7xidXkFxsw23Ts3beHnCKVHAzkmPR89atfoaKigkgkgqzVIWmi54o3XtuO1xvtXHhzyy6unDsHj6eb/XveIhDxEfSGOdXYzJSyErqDHWi0Eu2NPmyTcmhv7CGsqJyqb8Xb7WPy5MnYciROHmvi1Aknaz99HQuvX8h1C+cBkGcxU1Y+BYAtm3bQ4x1gLDzg1FW5aD6XfKC/tTp8ppXplZrNfHjlUj72ySqqln4Sf0/mli01otLbFUJV4fXXt/RNLy4u5uGHH6KgoBCj0cDevf3+MW++GfViO3GijmPHjtHdHb1vkSQJrVbL/PnzWbjweubOvQqA3FwzkydP4tCht7nxxhswmXL485+fY+nS27n00g9w7NixAd9XtNLqlVdeZdWqVX2vOXDbAO699/Ps2rWTp556Ku37AyHaCAQXBJ37q6MtUTFM8fMthbOZXHEnxhw7p048S/vp1+Pm+3tO0tH0DB7ndsKh+AvuQM/xuL8HrwsShY/Btws3L1zCt7/8IFqNzJYtb/CzJ34IwN6/v8Orb/yNa+dWcqL+GF9+4F78/l62/3U/t66sJBAM8PE71vLZj68jokZ49Y2/8e9P/Dhu3W8fPdj/upIGk5zfF/e9fv16fv7zn3PNNb9K+rl98IPLKCsr44knfsW3v/0tenp6mD17NiaTiR/84EE8Hg9VVR9BUcKsWFHF9773A1RV5Wtf+woWiwW3280jj/wQlyu7m5/q6ufZsmUr11wzj3feeYfNm1/nM5+5C4PByP33f5PW1lZuuGFRQqnmtGnlLFq0kCuvvAKfz8cXvvBF/vCH3/Paa5tYsOA6/v3f/x/f/e4DfPKTa/nABz7Affd9gfvu+yJFRUU8+ujPuPfe9fT0JDfunjv3Kj796bVA9OT12mub+sp2ZVnH9773XS699APs33+Ab373R3T5Qry18xVmz789bj2yVsKSIyf4wIzUjXG6mOtkgoTBpGFupSWtWATpvVTOJzU7HQTPvJ9sRIqBDE6VytV7qSzdQYm5jbvmKoQjMq3eYrSWD8Ut11lzrK8lylRupWL9fLRmPQfvq8E0NZ/LHrqZzl2neOvxpr5luut9vPdkA3PWT09pPBxDo5ewVRagG+ZnHTNyPZv2r4GkShhL5hmSySfmXDO1LIf6uuj7yVQ9BokpXAPJlAiYilRCi1lbwILCFeTKVuZZl7Kzs5q2wEnCkRBajY5iwzQut9zExuafZSUURddXlfV2XSgkM9VeVLKVq4r2odcmryrNM3QzXd7F3/5TYcepoT2gkiJa5MNzeO+UlhcqW897i5/g3KGqKs7qDUkTowL1x/Ee2teXGCX2gXNL1NtvZD1fPve5uwmFgnFC0EDSfaeBQP8x/s4776SxsYkHH/z/7J15fBT1/f+fszt7ZHPsJhuScOQAREHwAASNIMqh2NIahFYsVq1XK9X+enm0Vlut1m/Vau9qW2s9qq2oaKypeIAckaCAIIegQMgF5N4jx947vz82u8nuzl4hCQTm+Xj0UbPzmZnPHux+5jXv9+v1IEajkaef/hvp2RpUaiHMxF+SAt6QKrWAT/KSmaultbYbv9+PzwPWRic5o9Pwuvw0Voe3y7/7v7VcMncOuLWseX8dmTlanJ0+fvvrJ3nztdVhY4vHFuJ0RFTt9J0HEl+dtzwqDEMURQqLRyMIAnqtni5b4LdRq1eTMzotTFBSawRU6l7PG6/Lh8vVe87vf//7PPPMM2zfvoNLLrmYCy/sbT319lT7S5Ifj6f3O9rv96NWB1oZnn76H7z33vth80tLS2PFiltJS0vj73//BwsWLGD69Ons2pU47bPv3AD27t3LWWedhU6nC3sv5VAytBQUhgHOtpqwv9WG8HJqe/sePC4LWn0Ofpn+do+rGWvzu1GCjRyJjgXhaq9Op+fBnz7Kdd/7OpddPYuzp05h0uSJAIww57F243ssvnoRzU0tXH/VzWHHmTjhTK676kauuqmMq765lJUrX0EtyF/wCQhkiDkYxUDFxLx58/j8889pamoOGzdr1ixuuulG2WOkpaXx7W9/h7///WmWL/8Gzc3NlJe/yfPPP88NN9xEfX09P/rRD/n1rx/lpptu4a23KvjWt5I3+jObzbz77nssX/5Nxo4dy3nnnce3v30r//3vf0Olrjt27ODb376VG264iV27dvGVryzis8/2Uln5IU888VtuuOEmHI7AD1RjYyM33HATO3f2/hDs3r2bffv2sWzZVdxxx4958sknYwo2QSZPnsyvfvV/XHfdtzj//JmcccYZQKBS6Zln/sm1117PlCmTmTplHCX5BlQqgTStGr1GRZpWTXaGhpJ8AyNM2qjFQ6SB6kOPnMVv/3wuggB33zuRleUXhoxegxfGchTnBS5Cg4LE1b/4iKfeqOYnT+3mx3/ayctrwsWLkvw0ypbkc/H8XEwm+fsPJpPIxfNzY3qpJIO108OL7x/m4ZcO8MDz+3n4pQO8+P5hrJ3H5iPRN2kmKFIAIZHivr/v5ur5hWEVFZlpIqb0vs9VYk7Jeq4793mmj97OaOMRCjKbGW08wvTR25mW/Rda618OLYictbbQnt01VmpfCJgdarL1jFk2hZa1h3qOGmOBqAoYD29/7AtGTDWFbdKYRPLm5zLmGF7rVKut5Nq/+hKZMAaEPEPkiOcTM9gEDJGTu4+WTOXYRearONd0GRlq+bvvGepsCvSnISYo2dQIOiZlzQ7Fc6eLJubnXc/ywvu5tvhXLC+8n/l515OnL+bMrNloBF1KxzvZWHJRPvPPzcWUIZIudDIpe3dMwSaIVu1hUu4eDJrkInwjsVt9rF/TSvmqpn7tr3Di01a+Euv6d2UjvgF8VgvW9e/SVr5yiGd28lBXV0dxcTFmsxm1Ws3cuZeELsLT0tK48MKAh+b8+fPC1mQA27Z9wvz58zAYAndUU2mPuuyyS5k6dSqPPPJYzDG7du1m7ty5AKH/lyM9PZ329kDC65e//CUAskZoycjVMveyWWTnZmIyZzDr4pkcqP4CY4EOjU6FIET/xv7uD0+Ql5+LqO2VCjR6NZu3fsjFl8zhS2Xz+HTvxyDArj3bueqaxWh1gd+TsacVh/67L12dXaRnBEoNtXo1u3bt4jt3fAONXs3I8Zlc9KVzMBXoWfGDG9iwtoo/Pf409z10Z2j/Z176M4LTQEttVyD2vLoTS6MzzHfTH+HOkJ5uoLW1DUEQWLhwYczXTo6tW7exaNEitNrAcyksLESr1YbW6MXFxTQ1NfH55/u48srFoc/L7t27mT9/HgCXXrqAnTt3xjzHunXreP/99/nFL36R0JxYqbRRUBgGSL7wRZ+vuzNgQhxCxYGdv8flaMFoPpu2o5Vh4/3eLqLtQWMRfiw5DH5VKMp7fPFpHKj+nKNNRwD477tvcN45M9m64yO6HV18sHEN+fqxbFxbxTevvYYXX3oRAQFRpWf2eZfw7nvvkO4bgVorghPy9WOxe1px+x1ISAgIaFVpqAQ1Jk3gQkWv1/O1ry3lBz/4YdTcPvzww5htUZWVgcf37/+CZcuuitqelpbGWWdN4de/DlQKqVTqmB4zctjtdnbv3g3AoUOH2LbtEwCqqw9x5plnAvFLNSNZu/YD2cf/+te/8dxz/+Szzz5j06Yq2TF9+fTTnbS2BtqT1q/fwNlnn83GjRupra2loSEghhw8eJCCggIaGhpQCVAsYzYsFw0+UAaqfVsLEhH01REEgcVLC5i7wMzqimbqaxx4vFJcL5VkU4QkSWLVxibZRKPqow62H7T3K8UoSCxPkngihU6r4uxxWaE7+XNKNjB9dOy7+H5vuBm5JGdkCpimjkSbrSd9fDYqUYVac4SgXptZbOCMa4vRm3XM+cO5uDu96EyaMONhMUvN5PtO63eFTRC5aiuzQcvH77cxyqrl1m9vgU4JdRr4zLFTzIIMpE/MYGM0aZhZmj1glWOCIDAnd1nMypgLcsowqI1sbFsZs+UpQ53NpKzZXGSO/q6UIzhuoI43HOlrqr3rv38jsyM5ISZT18HMUVWsq720X+c9EVr8FAYHr82C/eNKJHf8u/CS24V9SyWmuQuVyO9+4Ha7eeKJ3/L444+hUqlYt259SJxpb29n1qxZrFhxK/X19Tz9dLhZ76FDh3jttVU89dRf8PvljYivv/46ysquwGQysWrVq7zwwr94/fU3+H//73t0dXXxt789BcDLL69k9ep3wjxt/vnPZ3nggftZvHgxW7dupaurGzneeKOchx56kMWLy0I+LgAqFew/8AX/XPlHsrOz+c9/XsYtdKDu8xuq0QfW9BqdClOBnjFjRqM1elHbBbw9/nYep49dVYdwdHpoazrK7k2B9WP5wbXkmwspf+8FEASsVis/+9nPUGtUpJu0jD4jky6bh6rKrdz6/Rv479qX+NXPn+Cn3/8/fvX4Pbyx+gpEjUjFm2/j8Xi5/CvzufKya3G7PVyx9HLmXXYRa9/dSPHYQtrbbHhcvWsZZ1d4DHrkOvXZZ5/n8ccfw2azsWvXbjIykvMQA9i8eTPjxo3l73//G4IAFouVu+/+CQB79uzBaDQCsHPnbpYuXcrBg4GW8X/845/ce+89fPWrX6W9vZ0HH3wo7nn++9//YjKZuOuuu/j1r38dc5wi2igoDAMEdcQizEGYaDNq7BXk5J+PVm/uaWmKpFewSdRKlfhYoBJUaFX6pC5Wg+1MkhS4f5+tLUAtiBTox5KpMaMX9aF2JwC1IJKtjW8IOmrUKMaMGc2LL74AgMlk4h//eJqbbro57n4eT+CXx++XUKujFW2VSkVrays33HBTwuclf/y+5ZVSWOllUEGPV6oZSaxSyZycbFQqFdnZsf18+tL3R6xvaW/kfOVek0SkemFc3+zkgef3oxEFivMCSU6mDI1sa4EcWk20r47RqEnY1pJqitCqjU1x55JqilEkfStokm0JK8lPC7Wnfbq/jsl5ie/i9zUjFzS976+h2EjxteegM6eRebqZ3fesofDqKWiy9QgeB8Gs9I7abqoStOrknGc8ZsEGeo1ca5u6ufsvu1A3g8oOqj5vlwpQOUHVAWikUOynHEGfmGQ8YkA+/WcoCVaEyX1GIXEKlxzByphYJBJ2UqmISUYoOlkrbCIxpmsoSmvBFWFtkXf2fEacPQ+9MY/qd/+OZX9v9G1eenhKok4n4HZLSFJyseDHu8VPYXBoX12OzxYughqKSxh/ywrU6Rns+OFtocd91oDnjRIFnjx9xZXNmzezeXN0Ip4kSTz22G+iHv/613uTWd96q4K33ort4/Xcc8/z3HPRpuxf+coVsuP7etp0dnby/e//AL/fz2WXXRqq5Hn77fB2pPr6eq6//luhv/s+t8OHj3Dffb8IG799+w62b98BQIZZy7VLv4PPKzF+wlgqXn+f+s/lK7u+/uUboh772x+f429/fA4AnUGNeYyBV/71JitfkEg3acnI1tDUaGfxpdeG7fedbwaMkgWVgCFLxNnlY9H7V4e233D190CC8RPGsvqtNbic4etiv1fi4vO+GmrZvufHvyS3uPem44YNG9iwYUPUfB9+uNcAve/rAOHv60sv/ZuXXvp31P5PPPHb0H9v3ryZhQu/FPrbarVyxx3RPpR9z9n3b41GzQsvvBA1PhJFtFFQOMGxert4p6SA+tFavCoVot/PWEMu53n3one1AHDk0BscOfSG/AEENfRJc7K37yFvzAKysifKtj/FPVbwkIjoVOnoVAZq6mo5bezp5OUW0GZpYdGlV/DIHx9CLWgwpKXzpTllVFVVxSwp/fnP72XVqtdDjvvJGLhVV1dzxRWLQ3+Xl7+eULCJRXd3d6iktauri46ODmbMmMGWLVtQq9WMGTOG2trwZK3f/e63PPTQr0LVK33xSn7aPC66fB6a3A5qnZ0Ue1xIPUJJZKlm8Pn2nUci7rrrTh555DEuvXQ+V1zxVd5887/k5uZy770/k60+OuecszGbzVitVi6+eA6//e3vU3qN4pGqgarbK1HfEujpjaxYCQoSctUtEKiwCY5NlVTMki9ZaObD3e1xxSNILcUokr5JM5EeNXLoRCFUXbR0TgHnj/ofDkvvXfx4YmzQjFxfPA1XtRWA7lobu+5+L+wc9f8JVInpUePBgJTEEkFjEhk1QCbPfaut1M2gtoAQ4y1QeaH5oIvyVU0xza2DPjHJeMRAfJ+YoaA/lWMDQSJh53gfb7gSWSEL0LJ7Hc071zD+y7eTUTAuTLTRij6KSwx0d/soLErj1ttP44F793C4wZF0LPjxbPFTGBycdTVRj3XX1lD70guMuyU6NMBVf2gIZqWQCJ9XorPNjcfpD91c0OhVZJi1qFO8QVBQUMD99/8clUpNR4edhx761YDPVy0KpBk1dFncHNx/iF/d90TY9qAvTiJD4CC2ZieSFPDNcTt9NNfEj6OU/BLddi9pGSLdfauCe04nN6e++wYJVgydjCiijYLCCYokSaxqq6LKvg+rwQP09sgewcVORjNZ0jHH3RDLgQJBpUNQ6fB77X0ejd9KlRSCgCBAmjoTkzCSXz32EM//aSVqtYrVa/7Hvt37ydePpb29ndmzZ/Hd7w58SWksZs2axcSJZ4Sc9hPx4Ycf8uCDD3LppQv4xS8e4IEHHuSOO37EbbetQK1W89JL/44SbcaMGY3dbg97TJLAD9Q4O/FKfryShFvy4/B76fR56PJ5afE4YpZqrlmzhrvuuovrrruW73739pjz/epXv0JTUzNbt25l3759PPXUk2zaVIXZnIPPJ98C99lnn/Gzn91DQUHAiPjzzz+noGBg4o1TNVD1R1wXR1asBFsLKjY3U9PkwOuTENUCJfmBqpxUxRFIzSz546p2ttvs2B3yr2WWQWT6xGxyjVpe+eBwUilGcqTSDgYwa0p4dZHfXRe2PZEY6+o6xMhFy+jc3hQyI46FCh86nQu3X4M/jnB1rMbDkYSqrba0INljCzZBPG6Jj6raY7aEXL4oj0+324ddwlgylWMKJz5RFbIEfteLLrkOlaihYdOrYdvcXjW1NYG2h5ZmF9/+1taUz3k8W/wUBgfJm5p/mt9zbH5rCtGUlV2Z9FhJgo5WNw6bJ6xtB8Dt8OHs8JJm1JCZqyXZzuq6ujpuvLF/NyYhuiJHjkARtkRk2msQfwIPub64nX5c3b7Qfv4Ya9OoOfgluu3Rn99YBsRdNg/Wxt71jKASyDAnGa07DBEkOZOCPrS0pB5bdqpg9XZR0b6FWmczHsmHRlBTrM9jUc4MTGJ64gMM0TEVhievtW5ijfVT3FLsCw6Nz8d0ZyMXe6ITZtSabDLNszjc/jHp7l7z11FjF4e1PzXXvxe1b19uu/vDqB8WUZuDVp/4or+8/PWUfuyGA8XFxXz1q1/hT3/6c9jjLR4HFq8bf5yvVJUgkC1qGaEZ+Dv6ixeX0dLSGuXnM3XquZSVlXH//Q8c8zkkSeKNN/4X9pjN6uGRhw4kdWHsF8EzFtnbBaYMkfu+eVq/RJlEvPziYTZ80J5Ui4FnBPjNREekRXDlnFG8tekoHq/EuJFp3LP8tJTn9dqGRt7f3oInwUs3riCNny4fH9YGVLv7Z7gdfcVEFeCncMJyNDoT1bv/EnYMbVoxxVN+Retre7GuORQ39lvQqjDOK8Ep5NBWZcEj895qTCLm0mzGDHBijSRJ/N9vDnD488BCLJn3bHSpm5/eOE12Hm+81piUT8zF83NjVuwoKPSH5spnse0NTx0Zdf6VFF18DR2H92Gr3UVD5cuhbTsap8X0tCksNvCd746nqNjAhnUtmHO1TJ+Rw84d1rAWv7Hj0rjjntS/ixROXOoeux9XTXjKp6GwmPHf+S6GomJaNqyj+umnQtv0Y0+j8I77h3iWJz6LF395SJK17C1uuizxI6oFlUB6toasESeOwJDMvAeCZAUYCHj8BZfU+nSRnNFpHN3fiST1tFzlaGiq7g3iUIsC+acNv2tljUYdc5skSaxbtw5QKm36RVgFhC88taXa1cT2zmpKsyayxFyKIAhJCTGpHlPh5Mbq7aLKvi+uYAPgUavZo85lelMTGWl+VPp0NBl56NPHkjOqjHLbZ/jZyrl99kmm/SkegkqDRpvb7/2HO7W1tVGCjVfyY/N64go2AH5Jwub1kC3qEIWBLeF8443yAT1esiRroIoKLr5kBFcuGy0ba93fipVkiEwRitViIIngN5JQsAFYv6Ml5BWUKMUoFonawbSiwOwpOXxj3sio731BFS5uJfKiUvWMNy8JJLvZqw7LVtyoTXqySkdjXjIRQRAoWGDmSEUzXTUO/F4JlSiQXpLGqEV5A1ZhE/a8BAGNp484lURbSEOtk1VtVSzNjW4XGQyfGAWFREiS1OMqHn7X+shHr3Pko9ejxne6M/n4SGnM4w2XFj+FgUdfVBIl2nTX17Lr3rtlx+sKxw7FtBRk8HklHLbEwofkD4xLz9ak3Co1GCQ774HA7fRFRYoHBZi+CCoBQQVSRLWSJEmkGzVk5mhpqQ83ZFadAK/lYKKINv1gVVtV3AoIq6+LNdZPQz2MyQgxyR4TkF2YKpxcVLRvCfvMXJ4/jdm5k8jTGanrbuGhfb0XZR16HdsKzudbE65GNJhCjweFH49+JOM8bWRJx14yKwgqRNGIoEruq+Nkq7KJRavHiVfqrVzIEDWM1KeDAFa3ixZXr89A0PMmXzs0i+tIg7XBINGFsV8EfxYc1QZEgmCs9ZOvH+TFX5zP6xsO4/FK1DT134/B2umhYnMztc29PiBBo+NkzZK9ZoL+u5SMNLBi8Xgy0tSyIlN7nxLeRClGseibNJNqO5g+vQRXV+9CPpEYq0sfGzpn7tJJmBaMpb1iP64aG36vH5WoQldiJGfRBESjPrSfxqiheIhbdVI1t5a8gd/ZBaZzMEZUpB4vnxiFU5u2LSuxf7EBuTaDSARRh0N/Htp0E91JVCzG4kRq8VMYOHIuL6Pz021RZsRyqE3Z5FxeNgSzUpCjs82NzyslVU0S9Lwx5uuO86x75w2pVcL0RVAJSH755952xIHHGd0iFVOAESA9W4Or24vfK6HRqzEV6BE1Ankl6aRliri6feSM0tNS27vfyV7UoIg2KZJsBYRb8vKBbRd+JDwJhBin38P2zoNJHTPWwlTh5KLW2Rz29+qmT1jd9AlPnH0jbzd+EjW+OcdMp1ZDRfO6UEWXzduF3e8AlZY92lymu5rQErslwodIuqEEj6cNnyd6cSCoNIiiEVGnLAoj6fK56FueIQGiKvC32x/9Q+WUeWw4E+vCuNHiwilK+HIBsfcHNVasdX8qVpKJ5lbpA+9JUQKjZKu+932pOdrNC+/UsmLxuJgiU5ASmXj0VDCma1KuMMoZWUanZZvsv9VI1JpsckaFL+RFo5685WeldM6hIlVza0Q/Vl8XFe1bWZ53sewxTwWfmE6vhc3t5TQ7a/BKHkRBQ56+hAtyysgQs4/39E4ZvN0W7PsrkbzxI5oBEASyTp/D+AuvY/IV3tD3Z2uLm46O5H8nko2CVxh+iMZssmbOxrr+3bix34JWR9aM2UrcdwzGjCmioaEu8cBjwO3wARJupxdLowPzqDQ8Lh+N1R2km7SkZ2voK+S6Hb6oiOrjQXDeQNJzjyRYpSO3v0qtCu2r0asx5utQiwIjig0BAcbhI3uknta6wM1qUaciM1eDv8mPx+HD4/TSeDCxXYuoE06I1zNV4s25pKQk9N+KaJMiqVRAuJKobHBLXj60f5ZQsAmSaGGqcHLgkaIXazOzJ+CT/GyzHoza1uK28VDdy1EVXUE26AuRgCnuVtmKG7ug4XBaCV898+f4vDbaj5Tj6jqE3+9Bpf4EtZiGRpubdIXNqYRP8uCXfPT9Ok1Tq7G4XTh9PnK0emyecNd8KYm7r8ORyAvjh186EEpISibWuj8VK8lEc6tEYETiFgMphh4ZS2SCgBfPoguGXsgUtdlkmWdjbX4XyR9nIa/SkWWejagxDd3kjpGUza0LAou5Gldz3HEnK5IksbFtJXvtlXT6wkW8o64DHOzcxqSs2VxkvuqkvxN5ItD+STm+7t73Ie/s+ZgmzMDy+Ue0H/gYn7PP73TPYl0QhLDvT0mSKF/VFLN6sS9Ki9/Jj7nsKgDsWyrxWaOFerUpm6wZs0PjFKL505+eSjzoGFn1wH7a6gPVKEVTsvjSinH89bYdTJpt5rxFI3nj8S/oGNW7HjQX6Vny8wmDPq9E9J03JDf3eETu7/NKfLG5PXpg8F6Csef/CwP/d+a8HGYtH0231cPrDx1IqgLRYBK58r7TMAxD4XrEiMzEg1BEm5RJtQIikiwxjQvNE5luGs+vPg8kB0QKNvGEIDh1F6anEhoh2pRqWeFsXqrfIDu+w5+grUQQ2JhWxCe6AhZL3ZTgpqGrCZ+golGdTpV+FGb9KK4QBESNibzi3rjW085oC92dGI4K9mBjc7ciSWrC7p74fOTo9WSKEu0uZ6+TWhBpeL6WY8YUpTQ+1VjrVCtWrJ0eqj6zJIzm9gMqE0jtIMS5eS34e9/FZEQmgNJJ2f02T47X0mXKSHxM85iehXxbpWzFjVoTEHaC44YLqaQ++TOd+EoD309ef/9bS4YzG9tWssP6Lh5JXrzr9FnYYX0XgDm5y4ZyaqckzraasL/7xnzrs/Op3/ifsO2u1uiIZrnqRafLT2dH4DOekSmi16mUFr9TBEEQyF28DNPchbSvLsdVfwi/x4NKo0FXOJacy8uUCpsTAHVPleiIYgOXXFtMplnHsp9PYvz0bI580cFlN4/ltV9/3jv+BPFgUfepbk1m7nljDUh+uPw748gwa/lsYyvr/1UXc/8DW9up223D2Zm4etBgEpna0+ZpMGmYUJrNnjWteON4JopagQml2cNSsEkFRbSJIJFpcKoVEJHYvQ7WNO9ihzX6RzpIIiHoVF2YnsxEfu6s3uiKmR/v/KfMnqnRpdIy7ezv8FL9Brapwz+v+TGqaIbi7sRw5qW6+9nuysfCFNntcjUY84wjWZ538id8pBJr3Z+KlYrNzVi7vAn9ZyDgqyPlgXA09vFEN3gMgf9ORmQqytOHzIRTIZmWrtJJ2Sy5KH4ykyAI5BYuw1SwMLw6TqVB12NGPpwqbIIEza3fe78RPHFSFTQ+/JObICNw908cgkrAYxXaBppOr4XP7JUxBZsgHsnFXnsl000LSRdNQzO5UxTJF17NGi/mG8Dvi12VfSq09Skkj2g0kbfs+sQDFY4L5uI0mqsdtNR283wSxuG5J4hxeHDeQFJzH1FoYO+Hbbxwz26mXDKCcxb0rt2Sfe5yCCo47QJTmPgyo6eCcH+VRbbixmASmVCaHRp3MqOINj0km94kEp340uBo4/7P/p30uTySl0aXNe6YeELQUCxMFYaGeJ+7/pCoSgtiiz8T3Bk0v/wszroavB4XVpw05qWzq3Q8vsx0JXo+Bl7Jg5ntdFCCl4yE47U4WJSTWsXKcMWUoaH0zOy47UsAWo3Qr4qV2ubAIiNZ/5n0PBGdg5gpQmdNyWKrJTmRyZgu8v0lJf1qN0mmpWvNjlYAls5JHEMdWR03EHjdFtqPluPsqkHyexBUGvTpJeSMLEPUpuaP0p9jlS3JZ093LQ3b1Kg6o40a/ZlO/JOb8M3pvQFSMoh+WwMltA00m9vL6fJFV1nJ0ekLeN7Mz1Mu+gYTQR2R7DazjFEzr6Dj8D5Gly4Ni/kGUKlP7rvDCgqnCtMW5VG73Z50O8/UE8Q4PJV5q0WBaZfns2dDK5Nmm5m6MJ83Hv9iwOYS+espCAIzlxYwZYGZ7RXNtNY48Hkl1KJAbkkaUxflnfQVNkGUq/8ekk1vype5a3nEKdOnR3IX0LGI1wozmAtThaEl0ecuEeFhoqm36wEgSVy2qZFpX3yOzWYNPZwJZB5uIf+Lw+yZlMsHswqV6HkZREGDhm6y2I+FyUhoY44VcFOgbsQoxh5zspEo1tqUIYYudlPF440WPeL5z2SZRL5/XUncFCHNBnVSItOFZ8YXmbxWJ+0V+3HW2pA8fgSNCn2xEfUlY5Nq6XJ7JKr2Wlgw3dzv9qv+IEkSbQ0rZVuuXF0H6LRsC7VcJfoOOJZjCYLAbd+YwoPnvEZn5QhUjZngVYHox1/QEWiJyujtrzep01mUc94xPvvYDLTQNlA0O2uiHps+Yh6XFi2n3dnIpsb/sbttU2hbkyt2la/CwKA3l+Bq7pPsFiPmO4guV4loHmi8Ngvtq8tx1tUgeT0IogZ9UUlPG5Fiyq0wOAzXdp5k5w0waXYu+eMy4rZ99RfJD/s3W5lyaW7Ua2Mwaph1ilcdKqINqSVCNXusSR83lQtonSDi6nP+WNUQg70wVRg6kv3cxcKkTscn+aP8bFJp1wOYu+kwZ+9owu+Rn0dWl4fpO5oA2DC7SImejyBPX8JR1wHy+BgAOxNkK25EOsliPxemG6O2ncwcS6x1IjQ9/eDJ+s/YLB6QiNtucKwikyRJtK3ah73qMD5reDymq9qKe/Nhzk4zsCHPRMmo9LhtXdZOLxWbm1NOljoW2hpWxjU39nksWJsD/ii5hfH9UY71WCYxnQtHncaay+IL29quNHK2ncPfmo7i9UiIGoGi4h4hznTsi+JkvZOOh9DmjRF44PG70arT6PaEJ274/PLjleSpgSNnWhmdtdvCzIhjoTZkkzNViWgeKCRJoq18paxhr6vmAJ07t4UMe5UbTwqDwXBt50k07yC717Wwe11L3GMJapBxEyGvxMDlK8aTlqFm1aNfyHridFu9bK9oPuUFGjkU0YZUE6FSu8BO5gLapE5nWsY4Ku174y9MBZHSrIlK3PdJQiqfO4AslQGTaEBUiZTo8liUcx5/PlJBhytctIlXpRXJKIfIufusqGMINkG0Xj+T97aybWoBXeko0fN9uCCnjAOd2+jyWcjnY8zsopVpOMhFQo2AjzRayeUTTGo9peYHj/eUjwv9ibVORNDoOBn/GYCOJh+PPnQglLQit2g/VpGpbdU+rGsOIbn9stu1Di/TnXYANghCwraumqYEJuMDiNdtwd5WGTeNCkDyu7C3VWIqWBjTM2egjrXEXAog30IqQfrG01HvKeCwXQX0vlY11Q52brfHfa+TJRXvpKEW2kQh+rO4s62SbS1ruXj0Ui4adQXV9t5/G2pV+HgleWrgEQ3ZZE2YjXXPu3FjvwVRR9aE2YgG09BN7iSnrXxl3Ghsn9WCdX2PULxYMeVWGHiGaztPvHmbRuqo39WBw57YSDjNKPKlH5Swb2M7NZ+Et1w113Sz7oVavrRiHG0NDllPHIDWmqFb9wwnFNGGY0uE0qk0zMyZwDcLL+aXe1/mcESrVKILaBUCSBJfdB/BIARaJuSEG5M6PdSWcrKSyAT6ZEKSJLZ3Voc9luhzl6vN4p7Cr4c9VqzPo9rVFPZYPMPiLHUaJnV6SPiZs3U/jo7kvHSyujyUfnyE9+eWKNHzfcgQszkza3YovUXEQQEfRo3TCDomZc1WTEAHkFSMjvGA2ApWn5f1awJtLIuXxm5j6Y/I5LU6sVcdjinYBNFKMNnexTZzVuixWG1dXt/QpYy1Hy2XTaGSw+ex0H6kPKaXzkAdSxAEluZeyALTOVS0b6XG1YzX7w14u60rpnmbAVeMcm6rNbn3OhGpeicNpdAWrPTry4y8SzkrdxZZ2hzern0+bFu+LrwVR0meGhzMM3qS3fZXylbcqHuEneA4hWPHa7Ng/7gypmATRHK7sG+pxDR3oZK4pDBoDLd2nm6rh08qmmmrdeDzSKg1AnnjDUxblIfBpOHj1xqTavs6/cJszIVpTP1yHjWf2GOO9fukmJ44PpnWdwVFtAGQTYRKV+t4teHDhC0mLr+Hja2foRHUuGRSnRIl/viRsPq7sfq7Q49pBRGDSkeWOi2squJkrWpI1gT6ZPJRWdVWJWs8HK8yKzI1LBAZLSAgIJH4C86kTue+omVhn6NDdWujxhmKSxh/ywrU6Rns+OFtYdsKmnrnrETP93KRObDwlrtbDZChzg7drVYYOJI1OsYHKltv3LfbLbGlysLcBeYBjcptr9iPz+rEUGJi/IoZqDO07LitAkORkTN/OZf2jxqofnIrAFleH5d1d3HBwnPjtnWJ6qH7znN21YT9nZUzmdHjv44+LY+Gg6/QcviDsO2urtj+KAN5LACjmB4mEtusHh759AAed4K25gF4r1P1ThpKoa1vpV+QTY0VbGqsiBqboc7mgpzeVhwleWrwEASB3JnLME1ZSPv2clyth/D7PKjUGnS5Y8mZWqZU2Aww7avL8dnCf39jrWd81oDnzXBKYlJ8ehQGA0mS2LKqSbYtqrnaQe12OxNKsznvykA1TLJtX59UNIfGiVoBr1sadlHoJxqnvGgjSRId3u6ox7t8Lja1J2+qtM1yEJvMcfqDW/Li8XnxSX5GaLKQkrokH74kawINJ4ePStDLRo64lVmCwIvN60KVSB0+B3Zfd1KfjsjWumASysjmTkZEjO2uraH2pRcYd8uKqOOofb0VBEr0fC+CIDAndxnTTQvZ3F5Ok+sQPr8HtUpDvm4sF+SUKRc7g0RCD5p0kY46L/d8+wzOm2nmluu3YLN6sFq9rK5oHtA4XWetDYDuGiu1L3zKuBUz0GTrGbNsCi1rD6GOaKtKb+sKa+tK13ZSWriJgowmrp/qxecXEdOK8brNKSc29Qcpwu/E3r6HvDELyMqeiF/GC0XuscE4lhyrK5qx9SwIi0sM3LJiPOkZan50+w7u+tlEps/IGbD3OlXvpKEU2iIr/WIhV+mnJE8NPqLBRN4s5TUbCpx1NVGPxVvPuOqHhym34tOjMJhsWdUUt4Km2+plT0/FaiptX221vRWnwWMPtyj0E41TXrRZ1VaF3Z9aKfPcEVOYZZ4U5jkyUIJNEAno8DvocDmodjWxwbYHg0pHrphJSVr+SdMylIoJ9MnioxLpZdOXeJVZTW4Lda745l9yCAjMzpoU1loXTEK5SlKndCyfujfyXomejyZdNCkXNUNMXw+aB/+0H5vbhySAIIE5XcOPrzqd++/aw6O/+pyV5eGib/0A901Lnui2KNPUkWiz9aSPz0YlqkgbnYnjcMAcVi0FF0kSc0o2MDlvD1n6jogjHKHus31JJzYdC4IqshJFxYGdv8flaMFoPpu2o5XhW6PGD86x5KjrsyCsrenmpRdquWXFOCQJHnloHyvLL8Tv712EVlVaqKtx9MugOFXvpJL8oV1w9rfST0meUhjuWL1WKtrfotZZS9fFR1HP1JDf7OfCj31kJFiW+z2pCcXHC8Wn59RkKCqruq0e9ldZEiZGed0S+6ssTFlgTrrtyxdR/awSBfxJtD2dSFHoJxqn9FVXUDDwp1jH0ulx8uaRjwdkDsnGgvsIpAR1uB0ccjcPacvQYHrNpGLG218flRPNKyfSQylZEplgF6blMkqfQ4vLRpfPRZPLCtBTiSOEPid9k1AatfmMdh0JO46hsJji5deiM5sZd/OtVD/9VGhbY37v66VEzyucSBjTNZidGhz1ve2uhVPSYpoGpwFjm9189vAB/B4JlUYgvTiNkYvy0PYzcUjQBERNQ7GR4mvPQWdOI/N0M7vvWUPh1VPQZOtDgg2Ar+ff5JySDUwfvQ2tWv4iIpXEpmNBqx+Jq6vXH0WjM5JpOgNT7rk0NbwXNV6XHjuqWJ9eEnasUWOvICf/fLR6Mw0Ho3/n4h1LDm+CJKeXnq+hs6P3O9PjlqipdvTLoDgV7yRThsiiC4b2u7G/lX4DlTyloDDUBNrqX6PKXoXVZw08mA1kqzgySsWB8Som7/Vzef3omOsZlebEM4ONRPHpOfUYysqqvi1MiZKdgqlOM76cx9GKZrpqHXHXTmpN79xGFBvIH5vO51VteFyxPf9OtCj0E41TWrSJV/EQjy3WA4kHJUkqpsd9SaVlqL+ixVB4zaRqAp2Kj8qJ6pUj56E0ENQ7Wql3tPLE2TfyYt36kGgD4a9b3ySU+dfciP0PP8ffpw+8u76WXffeHXV8e7qGqpmjACV6XuHEROyzSCgsNrD82mLMZh033zoOc27A6P32H5zG+7/aR5FHIr3TR1dnb8VGV7UDy3Y75tJsxvQjcUhfbMRVbaW71sauu8NFjvr/7I4ab8nSk67tZHLe7piCTZBkEpv6iyRJtDWspNu2M+xxj8tCe9Nm2ps2R+2j1mSTMyp2VHHOyDI6LdtCZsRHDr3BkUNvyI5NdCw54r3Xu3daebuiESmGrmO1ennv7Rb27ungu/+vJGHVTbLeSVqNQOmk7CGL+44k1Uq/Y02eUlA4Xqxqe4011jW4Jbfs9o5MFdvOFYDDXCyzngHQFaYmFB8PTnafHoVohrKyqm8LUzLJTq5P7Hz2iR1PhKeN3NrJXJxGc3Xg+C213bTUxi99E3UCk+flnnBR6CcSp7RoEykYJFv1MtAkEwsuR6KWoWMVLYbCa0ZOwEjFjDceJ6pXjkaIbkkyioYBabHL0xllX7u+r1vfJJQXq0SunnkR1rVvo/bFvmh0iyr2TMqlK12rRM8rnLAUFadR07NIqK/t5l6Z3ulpwCQg1uWnx+qluad/uzDFxKGcRRPo3N6Ez+pMOFZt0nPx96Yxovo5srSdocfjGfYmSmzqL20NK7E2v5swnjuIoNKRZZ4dVzwStdlkmWcnPG4yx5Ijmfc6EQ11Tn794AHOvzBx1U1C76QMkdJJ2aFxw4FjTZ5SUDgeWL1WquxVMQWbIB6twJ5JKqbviG6VUpuyybk8NaH4eHCy+vQoyDPUlVWRLUxB5JKdRgLpVi+xrhQi107TFuVRu90ua1ociVorcMVPxmMuVLxs4qFKPOTkJVIwWN30CffueZFOrzOlqpdjZVnhbP4dJxY8HsGWITmCokWsaqKgaLGqrSp6W4peMzZv6hVLIC9gLCuczX8aNsqOT9ZHZajm3x+K9dGl88kKNpfnT+Ohydfwt2nf5d6JX4/anqbWyr52fV+3yCQU0xVX03bGHPwZJtlz2tM1bDs3nw2zCjGp05lvOuekjp5XGL4EvEpif0ekAeOJLdgE8bsl2qoseGyptYOIJj1ZpaMRtPF/WgWtiqzS0eSMzKAoO9ynyt6+B4/LglafI2vOmyhlKRW8bguN1X/F0vi/pAUblWjElHcZ5jGJk9DMY67ClHcZao18/71ak530sSJJ9F5DwKD4oktGoNHGFmPstkAsePmqprjHCnon3ffN05h3bg7jRqZRlKdn3Mg05p2bw33fPI2lcwqGlRHoBTllpKvD35tNjRX8dfc9PPbJrWF+NpHJUwoKx4uK9rd6W6KAHE02D03+Bf835Zdclj8/bGxHpoqqmdHrTI3JjDrLONhTPWYkb2q/QcPFp0dBnliVVWc99Ajn/vbPYY8HK6uOhcgWpr7JTlfeeQZqUeCym8ciEug+TCQa9F07GUwaJpRmI8b5/YVAS9SU+bmKYJMEp3SljZxg0N+ql3hkiWncN2kZNk+XbPVOoljwRMi1DB2rwa9c61isSqT+es1AQMCodoUvluO9Hsn6qKTS+nYs8+8Pi3JmsL2zOqn5qRDCPJcStY/VdrdQ2x1tVtz3dYtMQsk16dFdfhXZ6Ytxf/Amli/2Y7V14TP4aMxLZ+t5JeQU5jDvJI+eVxj+GE0aZpZms35NK24ZY72zgeCnN7PEwJQV49FkqKn6yW7O/n+nkZanw/JZB3v+Wo3H6uVIRTPFKSYOmZdMBMBedVi24kbdI+wEx0WmLCUy7E01ZUmOYDuUva0y1L7UF1GTSU5BKX6fm9Yj68K2pZvOSdpXRxAEcguXYSpYSPuRclxdh/D7PahUGnTpY8kZVdbvVq9E7zUEDIoPNzjwJjA/TCUW3JiuYfn8gUscO54cS/KUgsJgEDRf7ao7iM1pw6GSaMvP4osLzyA/t4hFOTOoddaG7bNo5OWMThtFm7sNpy/6O7cxTwWE36R1HamnrXzlCW/cK4jR30fxfAeHg0+PQmyGurIqsoUpVrLTaECb5DH7rp2CrU77qyy4rV7yAQMgEAjccWsFTLOylZaoJDmlRRs5wSBe5PL52adz09gFsq1T8Vqr7F4H5Uc+wuGLX8rZX+Raho5VtJAzy40nGKTiNdOXVASMVHxUUm19S2X+1k4PFZubqW124PFKaESB4rw0Fl2Qhykj8Q+mSUynNGsi71t24CG2v41WEDGodFGvTarCok7Q8OXs6aG/4yehTIOMaZDR86cH5jlyWF54clykKJz8lPX8+G+psmCNKMs19/nvjppuPn+hlikrxuHp8NK63cqEbxQi9Ukc6upHupQgCOQunYRpwVjaK/bjqrHh9/pRiSp0JUZyFk1ANOp7x0f4hCQy7E01ZUmORO1QXk8HrYfXo00bEbXN4zgis0d8RI1pwFu6IP57HSSRYBNkMCLghwP9TZ5SUBhIQuarH1eGKg3Se/6Xe8TCyC+OsGdSLg/NOYgPa9i+GpWGA50HWdO8jq+NWcyG1g/DtntlQjKHi3GvvqgEV014C2Ms30EYHj49CrEZ6sqqZFuYDH3+O9ENL+hdOwmCwIwl+Yxw+Wj+0ILKFf57nO6W0Gy306BX98tH8FTjlBZt5ASDeFUeH1m+YFnhbNkKh0QVEHXdrdQ5kotrTtVbR65lSE50iXfcSNEillluLMEgFa+ZvgQFjHjeM0DKPipyrW/x3p9k5i9JEqs2Nsl6GlQfdbD9oD3kaRDvi0eSJCRJQiWoIMbrrBM0zDWehVPysM4WLqzEExbl8Eg+1th2hnx7TvQkFAWFY0EQBBYvLWDuAjOrK5qpr+kVV43NbuiU+Tengtr/NdLZ4GDKreNCDycTTxkL0agnb/lZCcdFpizFM+yF1FOWIvG6LdjbKhO2Q/n9Ljyu6Iv4gaj0GSjk3uuGBieensobrVYIVeEUlxi4ZcV40jPU/Oj2Hdz1s4lMn5HDLddvwWYNPKeBjoAfDvQ3eUpBYSBJZL6a1eVh+o7ATdYNs8PHvNP0Pnee/gOWF13Fm0cqovbVijrOeuihATXuHYo4ZoCcy8vo/HRbVMuMHMPFp0chNkNdWRVsYdqzpjVu7Hfftqhkbnj1XTs1rGqivdKCKsbxj8VH8FTjlBZtkhUMgiSqcIi3vcVlS3peqSZKybUMyYku8Y4bKVrItY5BbMEgWa8ZOYL+KHKGyRCosAkaJidLqq1vycx/1camuOkh1k4va3YEvniWzon9xbOqrYq1tp1xP3N+JARB4CvZM9iRgrAofyx/WAvccElCUVA4FoxGTVTVxGcPHwilRWUWGzjj2mL0Zh1z/nAu7k4vOpOGtl320HiVOPh3fSJTluLRn5SlSNqPloedK67xsYzX10BU+gw0fd/rl188zIYP2gHC2qZqa7p56YVablkxDkmCRx7ax8rycAP6SL+vU4lUk6cUFAaKZM1XtV4/k/e2sul8M15N73fTYccRfvDpXTH3y6t3ULttYNpLUolj9tmtxyzsiMZssmbOjitoAQhaHVkzZp/QVUMKiTkelVV9W5jkKm4MJhE9gFw1TowbXsG1k9vqoa3Kgj+OIAS9XjgFC8xolLjvmJzSog0kFgz6kqjCId52h1++NSpd0OHBF3UBn2wLTKyWoViiS6zjRooWcq1jEFswSNZrRg5BEFiaeyELTOdQ0b6VGlczXr8XUSVS0k8flVRb3xLN39rpoeozS1yRA8Dtkajaa2HBdLOs2JGs15Cnj9dQKsJizPlHtMCdjEkoCgqJSC9Oo6unf7ujtpuqBIlD6SWDb4w32ClLkTi7asL+trfvIW/MArKyJyZVRXOslT6DzeWL8vh0ux1bEokVkWiGQKQ7XlhdHioONVPb4cDjk9CoBYoz01g0Ng+TTlkkKxw/Is1XY0VaQ6DipvRjHxtniUDif+OZHX5KP/ZBifz2VNtLkoljtqx7B8f+vXisbQmFnWTaQcxlgdZEOaEIAhU2weMpDG+OR2WVIAjMXFrAlAVmtlc001rjwOeVUIsCuSVpTF2UR8tbzTT33AxJ5oZXcO10tKI5Kh48Fv31ETyVOOVFGznBwOVz0+ix4sMfNjZRhUOqFRACAneMuZIXmj9ISWAIEq9lKJboEuu4kaLFYHnNxMMopidtBmz1dlHRvoVaZzMeyYdGUFOsz2NRzgxMYnpKrW/JzL9iczPWLi8lIw2sWDyejDQ1P3lqNz+9diJaUcXHe9tZubYhMLdOLxWbm2XNKvvjNfSNEXOAxMJiKr49wSSUBdPNVGxupqbJgdcnIaoFSvID/jyneoVNos+YwomP1+qkvWI/zlobkscPgkC6VqLbnYmU4OdPYxIZtWhoWgOD6UmxjIHVmoCw05+UpUhSNT6OnMexVvoMNrEMiguLDSy/thizWcfNt47DnBuwVfzeDyfwxKOf093lo3AIRLqhRpIkVh1souqoBasroq3X5mB7i53SkdksGa/4CSgcHyLNV+MZrwIU1zvYSA4CrUgR6/S+aNwSk/f6yTMn314Sr+0JSKoiCI8bZ0S1RF98VgvW9e8CxDVCjpyLOsOIypCOSi0GWuw1GnSFY3sqd0zx56QwLDielVUGo4ZZMQSTkYvysGy347F6E97w6rt26qrtbTlOxQtHQZ5TXrQJEikYvNa66ZirGxIxVp9PoX5EyglKkLhlKJboIndcOdFisLxmjhVJkljVViUrYFS7mtjeWR16XQZy/rXNgS+SmqPdvPBOLSsWj+Oic3Jptbp48vWDvPiL83l9w+FQeX1Nk/wXT3+8hmJVIjV6rGHPrT++PSdTEspAkegz9oFlFyqPjnRrPmd5JrNkRnFSBtQKQ4ckSbSt2ieb4KQBMujCTTouTARyDKLR5GgQs4bmJ3IwU5aizpWi8XHvfv2v9DlW8/ZUCRoUf/RhO3Z7oFW4vrabe+MsNE0mkcuHSKQbSlYdbGJNXStuv3yVqNXlZU1dT1vvaYqfgMLQk6r5qtrnB0aSoTKgFqxh8d9BMjv8TN7rZ84mH90kbi9Jpu1JnWlMuiIoEfGMkOPNBcIraxSh9eTjRKys0po0mEuzaV7TGrfVSaUVMJdmh1qc/H26E1L1wlGIRhFtYpBK21SqCAiM1efzk9FLgdSqWtSouCDzDJbklsYVGgZCdBkMr5ljZVVbVdznZPV1scb6KTCw85fzOgj+Vsr9aHp9MQy3jsFrKFJYfLhuZZTYd6y+PQqJP2OowK9z0ZFfx3ZvNR1fdDLH7WB0wemBi2vtwJkQKvSPtlX7sK45hOSWvwurxoeeQCmvC/n3y9ngpGFV05Aa46WSsmSzelhd0UxdrQOvR0LUCBQVp3H5ojyMpthCSKrGx9D/Sp+BMm9Plb4GxU/+voaGeidSnLWgViswozQ7Ydz3cMPq8lB11BJTsAni9ktUHbWwoNCMUWmVUhhiIs1X4xmvAvjUKkBghHYit428jIr2t6hx1eL1e1B7fGR/epjSzR4yuuOft297STJtTz6rNeyxRBVBEF/YiWWEnMxckqnUURieCIJA7uJlmOYupH11Oa76Q/g9nuNeWTWm52ZIW5VFtuVJYxIxl2aHxgGoNDF+1xN44SjIo1zFxSCyuuGTzoMpizeZqjQkJNx+LxKBtKBcMYubCy6lUN8bpZqKwDLfdE4oBSgRxypaDIbXzLGQrB+Mu48fzEDNP+h1UJxv4NqFxZiNOgrzDORl63jwlsm8vLY+TNgR1THu3h+j11BfBtq3RyH5z1gQhyiyLyOTdGcXGS3v02ndFrq4Ve6AHR+8Vif2qsMxBZsgAqClCzdZSET/uzxRjfEkSaJ8VZNszHVNtYOd2+3MKM2mLEZ8ZirGxwhqMnNmkVt4Vb8qbAbKvL2/GI0a7r7vtJivFwQqbIKv18lGxaHmsJaoC8bksPysIgQB/vzxQfa1doS2WV1eKg41s3yiUnmpMLREmq/GM14FaMwPrNtKdHkYRSPL867BY7Vw5MnHcR+tB598Kmdf+raXJGuEDKlXASQSdiKNkJOdy3CJLFfoP6LR1K9ks8FCEAQKlxZQsMDMkYpmumoc+L0SKlEgvSSNUYvyotZKfX0EU/HCUZBHEW0SEKxu+MaIOTFbJiAgqBhUOrLUaf0SBQajqmWgRJdUvGZSIVXPkP74wSzPu3hA5l+cl0b1UQe1Td3c/WR881KAknz5L55j9Rrqy0D79iik9hkL4hHU7NHmMt3dRIbHgrW55w5YoXIH7HjQXrE/1BJlKDExfsUM1BladtxWgaHIyJm/nEv7Rw1UP7kVNT5KStUUfvNc2R7rE9EYr3xVU5RfS1+sVi/re+IzF8tUCaVifGzKu6zfn+OBMm8/VuJFwBeW9FQmnUCi3EBS2xHeprtgXB5v72+k0JjG4omj+HXl52HbazoUPwGFoScV81V7uoaqmaNCa5pgK5F1w3tILmfC/SG6vaT97fKocyfT+pSoIigZIo2QUzFlPpbIcgWF/qIxapJeE/XXC0dBHkW0SZJkBZCgEFHjbOJ3h99M2rx0MKtaBkt06S+p+NL0vVMc6QeTivHusbLogjy2H7Bj7UpcgWHKEFl0gfwXz7F6DYVtP0F9h4Yzcp5DQeJ93jrUOqp0o7jUWYvkd2Fvq8RUsHDAfEiGM0PtZ+KstYX+u7vGSu0LnzJuxQw02XrGLJtCy9pDqPuIA5YdzRR+k5g91ieSMZ7N6uHjKktMwSaI2y2xpcrC3AVmWUFiKIyPB8q8faCQi4A/2fFEtOm+vb+R5WcVkaXXsK/VHjU+VluvQmp4uy20f1KOs60GyedBUGvQm0vImVaGaFDaZyNJ1nzVLarYMykXT4aBOT1rmtY3Xsa67h0kj3xCaySCVseoFXciZmbSsvI5nHU1uOqqo8Yl0/qUqCIIEgs7giDQ/PKzIbNhT3NjSvNINbJcQWEo6a8XjoI8imiTIrEEEEmSeK11U8pCRLLHP5lIxZembytYpB9Mf4x3+4spQ0PpmdlxS/0BtBqB0knZMe8YD7TQciL6Dg1n5DyHgiT6vDX2ea98Hgvth98gr+RbgzHNYcHx8jORPPJtUaapI9Fm60kfn41KVJE2OhPH4Q5CZicxeqxPJGO81RXN2KxeiksM3LJiPOkZan50+w7u+tlEps/I4Zbrt2CzBu7cWq1eVlc0ywoVQ2F8PFDm7Qr9RxPRpqtRq3D5/FgdblbubogaH6utVyE5JEmibctK7Psr8XVHmNk2H6CzdhtZE2ZjnpG4ffb222+loaFuMKd7wuFpbcZrtyH5otdGPpVAV7qGrn0Gsl41cETzX573enHWHZIdHw/V+k1IPi+SN/5+4sc7SHtnLR0H96d0/HA+hBdeirlVEKqQpPitvKrKjxj96ip+cubpUdtSjSxXUBhq+uOFoyCPItoMEP0VIk41+uNLExQu5PxghtJ4d8lFgS8UuYtQCFTYBC9C4x5nAIWW4+U7NNTVE0NFLM+hIPE+b15UYX8fadxPXslAzm54cbz8TARN7/tgKDZSfO056MxpZJ5uZvc9ayi8egqabH1AsAH0efq4PdYnkjFeXU98Zm1NNy+9UMstK8YhSfDIQ/tYWR79u1KfoEooFePjVBko83aF/lOcmUa1rfczsLmhnc0N7THHl2QqfgLHQtuWlVj3vIvkjWEg223BuqenfXZm/LbDhoa6U84XTTsiH022GU97Kz6nA5/fi08Ar0ZNt9GAVqOnRJOJ2PM77bG0gs8bI/8vNpLLBUhx91Pr9KTlF6DSajGMHI3j6OE+WwX6428jPxl/3HkIgoDk9VLf3AIyoo0gKpdxCic2/fHCUZBH+dc+AByLEHGqEekZEq/lpK8vDRx/411BEFg6p4AF081UbG6mpsmB1ychqgVK8gOCRTKeDIMhtAxVhdbxqp4YKmJ5DgWJ93kTCb9b1u1yYuvyDIpPx4lAPOEOOG5+JvpiI65qKwDdtTZ23f1e2Pb6/+wOfx51Pt69+qOYxzuRjPG8CV7PSOSEk6FioMzbFfrPorF5bG+xh5kRx8KkE1k0Nvw30+ryUHGomdoOBx6fhEYtUJyZxqKxeZiUlKkwvN0W7PsrYwo2QSSvC/v+SkxTFiIaTEMzuWGEIIpo86JFfLPMWL8z2sNGrdeTNnI0glpNx4EvYpwl8feiz+Wk81D0zRkAlU6H5PPJRpULogZBFPG7XJCggiYZpHixd4Df7QprrxJEDfqikp6EIaUVT+HEIRUvHAV5FNFmAJAzL40lRkQKEacakZ4hiVpO+vrSnCjGu8Z0zYB4LwzHVrjjnQYz2FwuTmCbezd2rfzzi/V5Ayjwhn8HuD3qmD4dXquT9or9OGttSB4/gkaFvthIzqIJiCb9sT2JOESafwuSCm9bBmJ1MZJDl1TFlCRJvLT2CJt2W3BFiAJB4S4rTQz5P/X1NLnryV1MGWfkaKsDe5cHa6cXa6eXVRsbueHywgF5jjmLJtC5vSlkRhwPH2pcGGNuP9GM8cSe+MzCYgPLry3GbNZx863jMOdqAfjeDyfwxKOf090VaPPTHMcqoYEyb1foPyadhtKR2aypa40b+61VCZSOzA7FfUuSxKqDTVQdtUQJPtU2B9tb7JSOzGbJ+OEpzg8G7Z+UR7VE5Z09nxFnz0NvzKP63b9j2f8xEKi4ad9eTt4sxUC2v0hej6yPjc/pxNncSNrI5NZogqBK2J4UsQO60UUAeNpb8TsdgRZbQUClT0PMMeO1tCO5XcTUWwSByI1BsUmSJLpqoj12YuE5ehjbkfBWR1fNATp3bguZLSv/RhUUTg4U0WYAkDMvjSdGDKRB7nBDzjMkbstJH18axXj3+HKipMEMBsEECvuWSs48M51t5xbg0cZvlepLps9FqetI2GONnQXUdIe3p0iSRNuqfdirDkeJCq5qK53bm8gqHY15ycSB9XmJY/5NVjOc0QD1+bBvXNyKKUmS+L+XDlLdGLvtxtrpxdanCqvmaDfPr65hVG4aXq/ER3ui2zM277WSZdAMSIWWaNKTVToa65pDcWO/JQTcpMvGfcOJaYxXVJxGTbWD+tpu7o2TwhCk8DhWCQ2UebvCsbFkfE9b7xELVrdMW69ODAkwQVYdbIor9FhdXtbU9Yjzpw0/cX4wcLbVRD3WsnsdzTvXMP7Lt5NRMC4k2gC4WhUD2f4gSeBtbcbbYUOKEe3td7uTbl5KSbABBLU61JIkVxHkaWnGZ7Mg+eMcV0bNiSc2qfV69CNHce5v/xydZBVDGfJZLVjX97TiLVaSLBUUTgYU0WYAiGVeGkuMGEiD3OGGnGdI3JaTCF8axXj3+HGipcEMJG3lK0PJFXM2Be6W7p6US2emLuG+GsnHZHcrGVJvqbTdlUlVXSnm7PAFVduqfXHFBJ/ViXVNYDGfu3RSf59OFIk8t0hzw7ienv1942NWTD37VgPVhx3E0DlCRC4jmywu9jd0xhT8fH4GtELLvGQiAJYNn0FX9HsoGbpR5+bgt2ZBdIjOCWuMd/miPD7dbscmY+YXickkcvlxrBIyZWi46Ew1buvbjDA0olZ58flFGjvzqaq/kC53BpDYvF3h2BAEgaWnFbCg0EzFoWZqOvq09fa0Ohn7tDpZXR6qjlriVuYAuP0SVUctLCg0h+1/qiL5oltlJEmi6JLrUIkaGja9GrbNLzM+Hk8//TfUajU5OTl4vT7sdhs2m40f/OBHSR/jscce5ac/vQdvAgNegG9+8xquvHIxoihSVnZl0ueYOvVcysrKuP/+B5LeB+C0007DZDKydeu2uOO8rc14be1xRRHJ68NjaSctyosmMYIgYM7L5//ddx8/vz066ludnhnnvJ6AmBRPsOnhuf+t5iffuYWj9fVhj/tl3huf04mzKXbbdsz5uF3Yt1RimrsQ0WhKeX8FBYUTC0W0GQBimZfGEiMG2iB3OCHnGRKv5cTlc2P1doXi0o+X8a7CyZsG47VZsH9cGYoaFYCLNzUwfUcTm2aOYv/4bLoNGvxqVdS+mT4Xk92tzHH1lif70bKnaTJdngzy+/h0eK1O7FWH41Z/AEhuP/aqw5gWjEU0HnurVLKeW4h+KGyCQ2PApQurmMoyiKz8zxGqPrOCKTA8GfEOYHRuGh3dniGt0BIEgdylk+gqeg13pQFacsCnArUfw3gThcvOIz2/gJodr9PwlgdfSwGST41HlKgv0rL46lknVIVNEKNJw8zSbNavaY0b+63VCswozZaN+x4KJEmirWElZ2VV4ksLbxkZbTzCBPMB9jRPZmfrPEon5SQ0b1c4dow6DcsnJhbRKw41h7VEXTAmh+VnFSEI8OePD7KvtSO0zeryUnGoOanjnuwI6uh/a6NmljFq5hV0HN7H6NKlNFS+DECXO50Nn82gfd8BvB4JUSNQVJzG5YvyMJrk/83efPO3Abjxxhtoa2ujvPzNlOd45513JT12y5atvP32ap555umUz9MfJkw4jeLi4riiTaQoolKp8MsIJJLkx9XWmtR5VVotkt8fSpKSJInWpkZZwUYQNWjMI6LmFGiTciJ53FHVP8l57ASMj1WiBkdDfcwx/cFntdC+upy8ZUornoLCcOfUVQ8GkFjmpbHEiIE2yB1OyPnSxOOwp52H6l6Oiksfjn4ww52TNQ2mfXU5Plv4haWhuISzblnB7PQMdvzwNjoNGqpmjmLf6FEI6X4yxG5G++2Uuo6EV9g4M9nTPJkNNXOAcJ+O9or9oZYoQ4mJ8StmoM7QsuO2CgxFRs785VzaP2qg+smt2Do9/POl/bQY00Imv4UmFaXWTWgPH0jJcDAV82/S3Jw2t50Dq0cCvRVTBquaynXtSGN6hyYr3h1u7RXvEgk9A12hlZY3Bvfs98Me6wY+3/sq7A38bZjdu22bNp/qnAtOSMEmSFlP9c+WKgtWmYobk0lkRml2aNzxoK1hJdbmd5H88qasWfoOZhZuY/7UHEaPWz7Es1OIR21HuNi+YFweb+9vpNCYxuKJo/h15edh22s6hoc4P9jozSW4mg+EPXbko9c58tHrob8lCT6sn8Pe1sl0ebKA3teuptrBzu32lP7tXnDBBdx663dQqQTWrVvPM88E1pxvvvkGGzdWcvbZZ1NXV8cvf/kgLpeLV155mWuuuRa3281Xv/oVvva1ryFJfjZs2BjaN8jnn38ud8owDAYDd975Y8aOHYck+fn1rx8N2x4pMJWXv05Z2ZVMnTqVH/zg+/j9PhwOJ7ff/j1uvvkmNBoN558/kz/84U/U1NRw1113MmJELi6Xi1//+hEObtvCX195lc937WJaaSnP/flPvPvG63JT4/4//BFHVxdTpk3HkJ7Ofbffxrd/fAdjT5/Ac3/6E6teeJ7pF87iph/+EICC0WN4943XeerRRxhZWMiv//p3rv/y5aHjCSoVYqYx1Bp17rnn8s1lV+F2dlMy/jT++59/84/f/RaAm374IxYuvhJJ8vPnhx9m04eVpI8u5N7Hf8vU88/n4Of70Oi0oWOXfWM5X/vWDWi0GtZWVPC33zwW9lzUOj36/Hx0ZjPjbr6V6qefCn8fiksYf8sK1D3rlUhc9UornoLCyYAi2gwAqQgRg2mQOxxI1pemL0pc+onByZoG46yriXqsu7aG2pdeYNwtKwDI6PZw6bpaStWtPF90I51aPzlFVdgyPHSG2j4KqKorpcsTaPuI9Olw1tp6j19jpfaFTxm3YgaabD1jlk2hZe0hVAaR9SNM7DGm09EN9PHEqT4Kn3jHMrmjmzmWDQgkZziYqvm3KqcDjTgq9F4erOvGsceL3wdSdLEREF+860syQs9AVmjljCyjpW0TWl93wrF2QUOVfhTnn+CiuiAILF5awNwFZlZXNFNf05veVVjSc7f+OIpOXrcFe1tlTMEmiFrw4LJX4fV8GVFjGprJKSTEEyG2v72/keVnFZGl17CvNbqXcLiI84NNzrQyOmu3RZkR9+XD+jnsaJqO16+V3W61elm/JrkKEa1Wy49//ENuu+17tLW18cc//oGtW7eyc+cucnJy2LSpisce+w3f+97tLFlyJf/+939C+44fP44lS65kxYrv0t3dTWZm7JafSMrKrgCgvPxNbrjhW9TXN/DAAw+iVqvR6XSccUZ0LHUkV199Fb/73e/Zvn076enp+P1+nn76HxQXF/PUU38F4Be/uI9//vNZvvjiCyZOnMjtt9/O978R8GZxuZxcc+l8IH4li0aj5dqFl7L829/h0X8+yy033oij9hAvvreGVS88D8BZ089jyYUXYGlr4x/l/2X9O+9gbW8LO44gahAzjYi5vb8NPpuV0yedwdJZF+JyOlm1aTMv/u2vjD/jDC5eeDnXXDofoymbZ//3Nt/40kIuvuQSjNkmls6+kDOmnMWL768BYOzpp1M6bx7Xf2khkiTxxHMvMOmcc9n76Y7ec7mcdB6q5qPrrpZ9PSPXK5H4Pam14ikoKJyYKKLNAKAY5KZGIl8aOVKNS49MydEIaor1eSzKmRFqtVJIjZM1DUYutjMWGb4uzvLXsJXJvH/w0pjj5Hw6JI98W5Rp6ki02XrSx2fzn02NbDNn4hHk1ZEOMYttWdMBuNgSaL1MZDiYqvm3xx8+3nbIg8MaeEzw9/rVJCvexSKW0DOQF4GiNhujeQ625nfRErstzY2KPdpcNJrsYSOqG40alp2A8ZntR8vxeXovXLNyJjN6/NfRp+XRcPAVWg5/ENrm81g48ObzeHd/CZVGIL04jZGL8tDGaBFRGHw0EWK7Rq3C5fNjdbhZubshavxwEecHG9GQTdaE2Vj3vCsb+93lTmdv6+SYgk0Qt1ti7bst1B7qRqVWoderyDFrESOS4IqKiqipqaW5OSDKr127lrPOOoudO3fhcDj48MMPAXj//TVce+03w0SbqVOnsmbNWrq7A2J2R0cHydK3LWvatGmhliufzxc6XiJ27drNd797K2+//Q5r166VHTNt2jRKSkpCf/v9/pDp7vtv9s4hnoHvhvcCv4v7P/uMz3ftorOjg472dhAExJ6Kme2bq2hpbARg7f8qmHr++Xzw9tuhNCiVPg1NTm6owgYCawZfdyc7Pv4YmyXwXXekro4R+QWcM2Mma976Lx63m9bmJvbt2snE82Yy5ZxzWLc+8Jv9+e5d1OzfD8DMi+Zw9nkzQiKOIT2donHj2Lvz05gmw6mi0ijfpwoKJwOKaDNAKAa58sQTTxaYzuGJhjc47OlNk4nXupFMXHq8lJxqVxMbbHsYrc3he6O+SrYmY+Cf8EnMyZoGI4jRCxpDYTHFy6+VLUdeoNqL8dyLqdprwdop056SIYaSl8LOo+kVYgzFRoqvPQedOY3M083svmcNWUvPZN0BR0zBRtR1Yj59E3pjEy0qF+scKnKa/Jz+Mei7YxsOpmr+be/whYku3s5esSNLo8ZGQMBJRrwrytNzuNWJr+cQyQg9A30ROLroGmpdTaTZd5MpRQt0dkHDHm0um9PGMl8R1Y8ZZ1dN2N/29j3kjVlAVvZE/H4Zs1ZtA476QNtgV7UDy3Z7yARaiaodeooz06i29Va7bW5oZ3NDdOJbkJLM4SHODwXmGVcBYN9fGVVx89HhUro8WRSXGLhlxXjSM9T86PYd3PWziUyfkcMt12/BZg38+/D5wO32AxJOh4/ODi+ZRg25ufEFHzkkSSLaGn5o8Pl8qFSB3zNNH+HgX/96kc2bP2LWrAv529/+ys033xK1ryTBjTfe3DP/Hnq+D5yO5MQhrzsQCe73+/H0iQeX/H5UanXoPL3n7Inu1mpDsdx+pwNPe0uPcBN4Dp72VqSCPDyuPscEMotL0OWOwG/vraoFcDQdxd3ehqtPBU/weQmCwKvP/pNnfv87mWcgkMx7F2+9AqArHJvwGAoKCic+imgzQCgGueEkEk+2d1ZTmjURrRD+EUzUunHQeTTueROl5PjwU+du5d7afzHPdHaYT45CfEwZGkrPzGbNjta4prLDLQ1GX1SCqybci6C7vpZd994tP75wLEvnFLBgupmKzc3UNPVJY8lPY9EFebLPXV9sxFVtDRy/1sauu98L2/5q5VGsOVkyZ5QYMXEDxsI9aNJ674jaTWAfCTUTdBTt9XNOpbzhYKrm32214WlLGpUKT49Q46jxIU4Q8CaxkNSJAt9fUsKqjY18uMcKJCf0DHSFliAIXDjhR7zZtAZ/83tke22oJT8+QUWjOp0q/Sg0mmzmn4Ki+mAgRQkzKg7s/D0uRwtG89m0Ha0M36wO/672WL0097SIFC5V4qSHmkVj89jeYg8zI46FSSeyaOzwEOeHAkEQyJ25DNOUhbRvL8fVegi/z4NKraGt+gwAamu6eemFWm5ZMQ5Jgkce2sfK8vht316vhM0S/u+qrq6O4uJizGYzVquVuXMv4a9//RsAaWlpXHhhKZs2VTF//jx27gz/zt227RN+/vN7WbXq9VB7VCrVNkG2bt3K4sVlPPPMP1Gr1Wi14aJSU1MTZ599FgCzZ88KPT5q1EgOHDjAgQMHmD59Gnl5eXR3OzAYDKExO3d+yle/+hXefPO/CILA2LFj2dccvf67+tu3ojUaeeOtt2KmRak0WtT6NASNJqoiZ+oFF5BXVIylvZ15X/kqj/7sHvxuF/j9+F1ORhQU8OCf/sKKq5eFWqT8TmfUOSR/wPx4965d3LbiVl586kmMOTmcMeUsDn7+OZ9u2cKlZWW8/983mTB5MiUTJgCwpXIjDz/1V1b+8xk67XbyRo7E5XRis1hQaUQkSQqZJIfRIypB/PWK2pRNzuVlstsUFBSGF4poM8AoBrkBEoknVl8Xqy3bEIgWTOK1btS7WnmtdZOs2JJ0Sg7gkjy8P8A+OSdKS9ZgziNYPZJqlcmJTM7lZXR+ui3KjFiOvgsgY7omJcPcnEUT6NzeFDIjjqRJH1jwRpr1Liz7lM+7tuMlhkdIuouac0QatYWUHYo2HEzJ/Nuhhf1FoT9NGSJmk0h3sD3KCzmCBqvagztBC9SsKQHh7srZBeyp6TyuFVqCIFBWsABbbmmUqH7+KSiqDyaCKlywHDX2CnLyz0erN9Nw8JXoHXzRyxC/W6KtykLBAvMxmUJ73Rbaj5bj7KpB8nsQVBr06SXkjCxD1MY27z6VMek0lI7MZk1da9zYb61KoHRkthL3LYNoMJE3K1w8F3bsB+S/+5PB75fosHnw97wnbrebJ574LY8//hgqlYp169aHxJn29nZmzZrFihW3Ul9fz9NP/yPsWIcOHeK111bx1FN/we+XNyK+/vrrKCu7ApPJxKpVr/LCC//i9dffCPO0efbZ57jrrjt47rln8fm8PPJIuBHx+vUbWLToyzz77D/ZsKG3snPZsmVMmzYVn8/Prl27OHDgAE1NTXzzm8t55pmn+eMf/8xvf/t77rzzxyxZciVqtcg777zDwS8+7+2r7aGopJhPt2zBvndP7NfO48bb2Rk1RlCr2bt3L7/8y1Pkj8jlnVWv8dkn2xhZWBgak5uXj8/nDSRX2XoqzuK0Le3bu5eN773HS2s+QJL8PPaze3B0dbHmrf9ywSVzea1yEwf37WP/Z58BcHDfPp7/y595uvxNBEGgu6uLn377Fjq7HaSNGo0gijiONODp6v39VmcayZg2E3vVhlDqpRyCVkfWjNlK3LeCwkmCIEnxmyZbWlJX3xVObazeLh6qezlpv5pIfnPWt/h3w0a2WaJFGwh4A803nRMltrzYvI4PbIm9VvpiUqdzX9GyY7pgi1dVFDxHZPrVYDCU87B1eVKqMjnRaX3jZazr3024ADJdfJmsb0zS53ltL9Y1h2Rjv/85toBmfaDKZcq4LFYsHkf5R5/TbP4dLqwJj+3pTid33YXc/P3oaM/XWjclNv/2qqB6NOwbDwQqpuafm4u33seGDwKL1cJiA99eMY4PD7Tx/pZmutzRfjn4YNzoNH66fHzoc/bahsakKrTmn5vL0jlKdcVwprn2WWzN7yce2IPn8/OYOOs20vJ0WD7rYM9fq0Pb8ublUNwP355g5Li9rTLMXyeIWpNNlnk25jHy5t2nOpIksepgE1VHLFjd0d8ZahcY20SmqTP50qL8mDHVCr089vABaqodFBYb+M53x1NUbGDDuhbMuVqmz8hh5w4rTzz6Od1dge/UTVu/x4TTs/h8bwdeb+/vhSlbQ16+LtZpgN6UppMRT0szXlt7KPb7iede4K6bb8Tb12w3+G86zuWNoFIx89LLWXr99fzi3ntx1tXI+tt97Vs30Hz0KBveWR3YT9QgqNX4XeECnFqnJ23UaFR6PR6rVbbiJ7i/mGlEQsJns4SeRyIk4M+XBKqVjHMuJXvhFRx58nHcR+sD/XQRqE3ZcQMKFBQUThxGjEjODF6ptFEYcFKKGJbhjl3Pxt0ey5Q4MiWnL7HmkIxPTiKSqSoaivSroZxHqlUmJzrmsh4vgi2V+KwyF3l9FkDHdJ4lEwPnqTocVXEjytzVthreCxNspo+Yx6VFy2l3NrKp8X/sbtsU2qYxdHF4YhO2Lk+UcJbQ/Nuhhfp82DcOCK+Ystu8fLrdjs3qpb62m/t+shsASQ2qXJD0IAkgSCC4ofT8bL61aHTYQvFkrNBSkCdnZBmdlm2yYkkkopiN7aPzaTVYmfCNQqSIfwNdNf1LEksUOe7zWLA295h3F/ZfhD1ZEQSBpacVsKDQzFuHmtleY6ezy4vPA0I7qD+DLqeXjVjYtb0jFFOtXBzGpqg4jZpqB/W13dx7d+KbS26X/MW805ncRf7JSjDBydthQ/J6+NH114ZtF0QN6sxAm7Gvwy4rxASFE3VPBYqnvTVqXDCV6p3KD8NSqSSvB0EV7TsXSHiSv9EoqEUEjSbM1FiSQEAIPY9kUWVmgQD1j/1cdq2CWo12VCGjbv0xGpNSTaigcDKhiDYKA06qEcP9QU5skUvJSWYONa7YYk/CeSTZkpVq+tVwncdwRRAEchcvwzR3Ie2ry3HVH8Lv8aDSaNAVjiXn8rIBKTEWBIHcpZMwLRhLe8V+XDU2/F4/KlFFYbaeI93hZr2kHYk6hsfvRqtOo9sTXQWpMrVSsbk5SlCL5bklSCq8bRmoD5aAS4s4MrpiymjSMLM0m/VrWnG7ey+qBR9o+ljlqNRw0dwcrvpKtJgnCEK/fIAUhh+iNlDFEk80AcCnIXvERbS6Mqj9XyOdDQ6m3DoubIg/iRSySJKNHJf8LiyN/8PrsZI75iqlXUoGo05D+h41vjU+1G6ItjQPj6lerHgQxeTyRXkh8ftYSFAcD3DSVtlAoIhGMyIPMTsHT3srfqcjUFHTk/bUN+lJyjbHHbNjxw527Ngh61ETL5UKQUAQNUmJLYKoQV80Nix9Su55+Drt8t41Efi7urBtXAOxKnR8Ptz1NdQ9ch+Z557Xs3ZRvtsUFE4GFNFGYcBJNWI4X2eiyWWNe0wVAv4I89NIsUUuJSeZOXj9/V9ERVYVweBW9aQyj1gM5jyGO6LRFGXkOzjn0ZO3/Kywx77e6eHzfx0IM+sdO6cLval3zM62Sra1rOXi0Uu5aNQVVNvD79gKKi81TbGrE2Q9t0qA6fHnW7YkUAGzpcqCVeaiw2QSQ3fb43GyVWgpyGMe01O5FqM9SXJkYR55MSWTr2fkH9y4O73oTBradtnDxqnE1Cs35CLHR437Gu1NVbQeXo8/TMzx0dG2kW77bqVdSgab1cPHVZYwsVYOt1tiS5WFuQvMGI/Bg+hkJpb4HYlOp2LipCwONgRuqowuTKOhrhufrzdtSAEEUUSbF18kTGYM0K9obTHTGNamJXt+lQox0xgl2MjNURpRgLe1OeEx8ce+ORk2zG7FtuF9OnduU9qkFBROEhTRRmHASTViuNMbvwTeKBqweaMjHiPFFrmUnGTmIKr6/89AriVrsKp6Up1HvLa0wZqHQv+RS+fy+8M/mzPyLuWs3FlkaXN4u/b5qGNIfhGvb+DjXQVBYPHSAuYuMLO6opn6Ggcer4RGFCgsSePyRXnKxdowZLCMegVBILdwGaaChbQfKcfVdQi/34O7XcJ5MBfXJ6XYHBlU83Hc46SXpJ4kJhc5rlKnYW/bFSHY9HIitkt1Wz18UtFMW60Dn0dCrREwF6cxbVEehiHykFld0YzN6k0qptpq9bK6opll/fAgOlVIJH4DuFx+Pt1hpb62C2SCGvT66NYchWNERsxQ6/To8wpCiVNhHjWCENWmFXXInhas4LhkpiBmZ+O1W4HkW+AMxSWMv2UF6vQMdvzwtqjtPqsF6/qe77Zj8ONTUFA4/iiijcKAk2rEcJcvdhn7LPMkOrzd7LTVRm2LFFsSpeTEmkOJrv9pNbFasgajqifVecQTjwZrHgrHRqT3i9OWjyGnt0VqU2MFmxorYu7vtBaQrh68u2lGo0a5KDsJiGfU6+o6QKdl24BUnogaE3nFvZVrbquHz948gORI/P2jMYmMWpT6d3N05LiAtWVrEvu5sLdVYipYiKgxpXzegUKSJLasamJ/lYXuiAv75moHtdvtTCjNZsYQeMjU1QZuqCQbU13fTw+iUwU58dvp8tPU6IoqoDCkjaTbER5xLYoqsnM0SbVIKSSPoNMjOcM/u16Xk45YHjU6PSAh5o5AbcoOtGC5nL0tWDp9nzYtKelCHndbK35f77/5gLnxKASVmoyjDbL7dNfWUPvSC4y7ZUXM40puF/YtlZjmLlSSpBQUhjGKaKMw4KQSMawR1HG9aD5s2xtzW6TYYhID6UjvW3bgIbkSUpM6nUU55yU1Vo5YLVmDUdXTn3nEEo8Gax4Kx0aU90v7PLzOA4j6xCl+HkcmrftLmTwp9eoEhVOL42XUqzVpMJdm07ymFX+cFhGVVsBcmt2vuO/IyHFDZgndHYeS2tfnsdB+pDxMaBpqtqxqYs+aVrwxXp9uq5c9PR4yMwfZQ8YbJ+1NDk8/PIhORSLF7zdea4xqm5o57d6wfbRagYvn5yq+QYOA12ah7pGf47MlNk9Xm7IpuuvBQRE/6h67H1fNgbDHss6cwrhbVshW0aSCz2qhfXX5kLR/KygoDA7KldsgcPvtt9LQUHe8p3FcafHYsHi7Bu2OkCioaNTnsVJ4RPbcVm8X/gTnFgSBbDGd6zWv9nseTW4rVm+0OHUBT8uO3yOm87E2dtXRQM+jMaOAp12/oMMTbrQ3WPNIljFjivjTn546buc/0en1fhnNe0cuYoftPVRibNNDn1eDrX4ymRoTiy7of+WYwslPKka9g1F5MqanRaStyoJHpkVEYxIxl2aHxqWKPr0EV1fvhU+kYJOVM5nR47+OPi2PhoOv0HL4g7Dtrq7kBJ7BoNvqYX+VJaZgE8TrlthfZWHKAjOGQWxLFDWBSp7CYgPLry3GbNZx863jMOdqAfjeDyeExVRr+uFBlCo2q4fVFc3U1TrweiREjUBRcU+L5jCNHh8ozzCF/iEas8maORvr+neR3LG/FwWtjqwZs1MWbLy2gGASjBUPmBOXRJkEp5IiFcRQWEzx8mvRmc2Mu/lWqp+Ova5y1R+/7zYFBYVjRxFtBoGGhrpTzvDLK/lo83Tg9LuRkBAQ0KlEvJIfb5xKmv6gEgSMYjoalSh7Xr1KS5FuBI0eCy6/F4noBbAoqBAFNQ6/m1pXc2g/syYTMYGhcV9ytVl0+p1JPUdRUJOrzRqUz0aseRzsagz8R59TDuY8kuVUFzVTYcHIb1DT6KBN3IImrTNqu8eRia1+MraDFzP/3GwlhUkhLnJGvbFEjMGoPBEEgcKlBRQsMHOkopmuGgd+r4RKFEgvSWPUorx+VdgESRQ5bm/fQ96YBWRlT8Qf1UqF7GNDxScVzXRbveSVGLh8xXjSMtSsevQLLv/OODLMWj7b2Mr6fwW+O7utXrZXNDNrENsVU42pLuyHB1GySJJE+aomWWGjptrBzu32YRs9rniGHX/MZT3m6VsqZaO01abskKFvskiSRFv5StljumoORJkEC2JElWASgkx3fS277r07qfn4Pcfvu01BQeHYUUQbhWNCkqDVa8Pm7ZYVLkRBhV6lQUDAI3nxSskbrMkhAEZ1OrliFi0e+fM6/G46fA6MooEx2gzavOGijoSEV/LjjFic990vVzTKedPJPD81RtGAxdsZt7InIDQZUhKEUuFEmYfCwCMIAjdPvZGVH17E563/Q0g/gqDyIvlFnNYCWveXkqkxMf/c7JAnjoJCLOSMeuOJGINVeaIxaigeBMEhceS4igM7f4/L0YLRfDZtRyvDt6qO38Xx4SYLhxZ8wZ6CTjYeqsQ8wkDnGSoO/8rCtBljOGdBeBVd6yB7yKQSU20yiVzeDw+iZClf1RQ3eSkyetzqtVLR/ha1zlo8kheNIFKsL2ZRzlcwiaZBm+exoHiGHT8EQSB38TJMcxfSvrocV/0h/B4PKo0GXeHYnqoYU0rHbCtfGbd6J9IkWF9UEtYelYogE4loNOG1WcMeU2kU4U9BYTijiDYKx0Sr1xZXKPBKfvxIZIsZmNRmDrtbY1a/BMnRZmLSGNCoRFx+DzVdvUlHwb1avfYE5/Vh8QaqEvK1ptDjgbat5PbLFjOiqni0PV4w7p7nEKgo0mJUp9Phc8QQrtQhIWgwCR4/toA2NPNQGHgEQWDZ7NOxdY0NeN00OfD6JNLVApMnpbHogjylwuYEw2t10l6xH2etDcnjR9Co0BcbyVk0AdGkP27zijbqjS9iHM/Kk/4SL3J81NgryMk/H63eTMPBV6L21aWPHZI59kWSJFa1VbFh3m5c6b0XeFa3HaZCx5nt5Ga5qPmdNWw/3yB7yCQbU63VCswozU6qGsTbbaH9k3KcbTVIPg+CWoPeXELOtDJEg3xiWSrR4x9XtdN9wQY+cX2E1WcN217tqmZ753ZKs0pZYl467CpyFAYf0WgaEN8Xr82C/ePKuO1WEG4SnHN5GZ2fbkvKWycegkbDiIsuJq1gZFh1jq5w6L/bFBQUBg5FtFHoN17Jh83bndA7xi9JWLydMcWESNrdHbS7OzgtYyRtrmgDVoffFRCDkjivzdtNtpiBKKj7Md+uqMogh98tMx83oqAmUx0oDY9s1Uq15aq/CAKM0BhlxaahnIfC4NHrdaNwoiJJEm2r9mGvOozPGu4l5aq20rm9iazS0ZiXTDwuF42RRr2JRIzjWXnSX/pGjrfWr6Sj/UPo+e05cugNjhx6Q3Y/tSabnFFlQzjTAKvaqlhj/RR3unxFS7fOyXrXTi68aQo8Ygo9rh4CD5mB8luRJIm2LSux76/E1x3RKtJ8gM7abWRNmI15RnRiWTB6HEgYP9569nrWdXyKXy0vNlp9VtZY1wCwNPdryb0ICgpJ0Ne7xtPSiL8rup1Zjr4mwcl466BSIYhaJLdTdrPk8XD0rfKwx9SmbHIuH/rvNgUFhYFDEW2GgKef/htqtZqcnBy8Xh92uw2bzcYPfvCjpI/x2GOP8tOf3oPXG79MWaVS8Y9//D30d0FBAc888yyvvBK+GC8ruwKbzca6detTezJ9aPN0hIkw8Spk/JKEP8lEJ4AsjQEJiQ5vdPm3R/LhS7LNKuh5k681Rc03HoH5BsSd7yy/gadffh6fL/a+hnQDX7n0y/zvrf9RrM9j1qxZjBxZwKuvvpbU+Y6FG2+8gba2NsrL3wQCFTV9q4tS4e677+K5556nsbGRb3zjav797/8AMHXquZSVlXH//Q8M1LQVFE5K2lbtw7rmEJJb/jvKZ3ViXRNoOcpdOilqu9dtof1oOc6uGiS/B0GlQZ9eQs7IMkStfCVCKkQa9cYTMeD4VJ4MFKLGRMG4byNqjHHTsgAElY4s8+whj/u2eruosu/DLcX/bXfj5UP7Z0xJn462SweAxeXnsYcPDKoh70D5rbRtWYl1z7tI3hitIt0WrHt6WkVmhieWBaPHIX78uJTehX/yXogUbDoNqDfNRNWUB14RSfSyfqSNmVe1U2jOSeXlUFCIIp53TV8MxSWMv2UF6vSMqDSooElwst46xrmXYVn9Jp2fbk1YmdNfA2WF4UG31cMnFc201TrweSTUGgFzcRrTFuVhGKbm7AryKKLNEHDzzd8Goi+uU+HOO+9Kapzf7+eGG24K/f3yy//mww8ro8alModYZr+OiAVwogqZVMjTGWlyWWW3RbZWxROLIFD50vf/U9kXAqLNs6++GFe0MWZmcc3iq/j3G6+SLWbw4YcfJnqKJxwqlYpHHnk09PfVVy8LiTYKCgqJ8Vqd2KsOxxRsgkhuP/aqw5gWjEU0BlqlJEmirWGlbEuPq+sAnZZtZJlnYx4TXYmQComMevtyvCpPBpp47VIQeJ7B13aoqWjfgtXXm/x3ef40ZudOIk9npK67hYf29d5w8WS5OVJaR8n7E/AKsPuwi75Sz6Aa8kqB/0mE/3+cTucQ3m4L9v2VMQWb0Cm8Luz7KzFNWYhoMPXun2T0uLf0I8jqk6IogXrDhaj2TELVkRk21ndkFI/urSZD20RmhhqNVjUsUqhcXguH2svpcNbgkzyoBQ2Z+hLG5pShE49d1FVInUTeNUG6a2uofekFxt2yImpb0CQ4FW+dvGXXM+Kq6+IKRv0xUFYYHkiSxJZVTeyvstAdUQXZXO2gdrudCaXZzBiG5uwK8iiizXHiggsu4NZbv4NKJbBu3XqeeSYQv/zmm2+wcWMlZ599NnV1dfzylw/icrl45ZWXueaaa3G73Xz1q1/ha1/7GpLkZ8OGjaF9IznjjDPo6OjgyJGjUdv6Ckh//OPv+fzzL5g2bSo+n4/f/OYJVqy4lZEjR/LA4w/z5vp3GDN6NC888BsMej0uj5v/98DdHDh0EIM+jad+9VvGFZXw8afb+NLFl/KVK6+gw+vghzd9ly9fchlarZan//McL7z+ckyRZNJpZ/CnBx5FpVIjSRKLv72cDo/8MdL1Bv780OOhcy6cs4DJl53PVbO/zDeWfwOn18MZ407jD/98imyTiSWXfRVbm4Vl378R/DB18tn88kc/I12fxqGGOm7/xR2MFrJ5+423WPXOf7n4/Fkcqq/l+jtWcNuyGxk5Ip91/3qLQ7U1LL/z27z0+6fJzx2BRtTyh7//hVff/y8/u+0OJp12Bu+9VM7/3lmNt8NJcXExTz31V0aPHs099/yE9PQM6upqefjhX+N0OvnjH3/PZ5/t5bzzpiMIAj/5yT00N0eLRkEmT57M9753G1qtlo6OTn75ywdpa2uLGvOTn9yF2+3hs88+Q6fT8fDD/xd3Dl98sZ9zzz2Hl176N4sXl/HYY49z+eWXYTQa+ec//8Enn2ynsrKSzMxMHnnk/ygqKubtt9/m+edfoKCggIcffoi6unomTZrI+++v4ciRoyxZshiPx8Mdd9xFZ2dyJcIKibF2eqjY3Extc+/d7uK8gKeNKePEvdA4VWiv2I/P6sRQYmL8ihmoM7TsuK0CQ5GRM385l/aPGqh+cisQqLhpr9hP3vKzAGhrWBm3GsTnsWBt7qlEKFwmOyYeYRU8ko+ArXvsi2GPT8Pe9slUtXax6IL0Yf356tsu1X6kHFfXIfx+DyqVBl36WHJGlQ15hU2QWmf4d/7qpk9Y3fQJT5x9I283fhI1vqugAx/QJoFcbU6kIe+xMhCpTe2flIe1ROWdPZ8RZ89Db8yj+t2/Y9n/cWibr9tC+/Zy8mb1+ooEo8chfvz4/Qf/FXbejMp5sP1sPDGupf3dOuzdXuw9zyve86mvc/Dc0/W0tbnx+0GlArNZy/U3F1JYNHipWUEkSeJg20qO2itx+cIvzm2uA7R0bmNk1mzGm49N1FUIJ1Fcd7LeNYmINAlO1ltnMAyUFYYHW1Y1sX1dC7VZ0F0MfhWo/GBwwug2wOplT89vwcwB+C1QOP4oos1xQKvV8uMf/5DbbvsebW1t/PGPf2Dr1q3s3LmLnJwcNm2q4rHHfsP3vnc7S5ZcGVbtMH78OJYsuZIVK75Ld3c3mZmZMc8zb95c1q7tjW8tK7sCkK+ysdls3HjjzXzve7fzox/9gO997/tkjDTx87vvYdW6/9HU2sySW7+J2+Nm6uSzufe2O7j+jhXctOxaDtXXct2Pb+Wyi+Zx3ZJv0OyyMe/COZizzVx67WI0ooa3/vEy725cS1Nri2w1znVLrubpl1/g32++Sppej9vjkT3Gmsr1LFt0ZdQ5g+1Up592OhcuvRRRLbKl/APu/L/7uOwbZfzr8b9x0YwLWfPxRh74wU/55g9uwdZh5/brbmHF1TdS/uoqRphzeWvtan72mwd58Xd/56IZF/LHfz/NDddcx0233kK9PbC4/u59P8Zqt5GRnsHqZ1/j1ff/y6/+/BtKCou4/PqlpKm03HrldaHn9oMffJ+XX36FDRs2sGLFrSxbdhXPPfc8AN3d3dx00y1cffUyFi++gr/97emY7+ehQ4f47ndvx+/3M2/eXJYv/wZ//OOfwsbcffed3H//Axw8WM2DDz6Aw+FMOAe3281NN90CwOLFgbvqf/vb0yxatChUtTV16rmcfvoErrnmWlwuFy+99CIrVwbuABcXF3PvvffR0tLKyy//m1deeZWbbrqF22+/jfnz5/WrskwhHEmSWLWxiaq9Fqyd4RdO1UcdbD9op3RSID1KWbAfP5y1NgC6a6zUvvAp41bMQJOtZ8yyKbSsPYQ6wizaVRMY73VbsLdVxm3fAZD8LuxtlZgKFiYtMsSr4ImF3ZnJnubJbKi5EGg/aT5fosY0oPHlA4FHpmV3ZvYEfJKfbdaDUdt8aj+tQPStmF7cboktVRbmLjAfU1S0zerhyT/UUF/vjKnvJSMSOdtqwv5u2b2O5p1rGP/l28koGBcm2gC4WsMTy4LR40Dc+HHf9X2+GzsNiHsm40jxWjry+fj9fh7/dTW1hxxE2uEdPeLikQcPUDw2jR//ZBwqlSq1k6XAwbaV1FnfxS/JPyGXz0KdNSDqnpabuqirEE6ycd1+pyOqPclQXIK+YCTtH1WFPx4nwvtYTYIHykBZYXjQZXGzelcrR0eDJ+IrvtMAlkzItUFhi8T+KgtTFpgxHMNvgcKJgSLaHAeKioqoqakNVVWsXbuWs846i507d+FwOEKtNe+/v4Zrr/1mmGgzdepU1qxZS3d3NwAdHbHbkC655GK+//0fhv6Od/G8adMmAKqrq5EkiS6ngz2f1zC6YBQAWo2WR+/7JWdOOAOf349eG+ipn3H2NH77j78A8O7GtXQ5uunwOLjk/NksvGges6afD0BWRiYlY4ppam2R9avZunM7P7r5NnKzc3j93bdoOHpE9hhTik9n5jnTefTvfwg7Z57OiMXTxZadn2DrsANg7+zgnY1rkZCorq6meGQhp5WM48wJE3njby/1PC8NO7d/SrPLhtVuo+qTLQDs2reHolEBw1dVT0x4cL63XnMjl1+8AIDCUaPJzx0R9lpGtm9NmHAaGzZsCMz33XdZseLW0Lbge/3FF/v5ylcWxXx/ADIzM/n5z+9j5MiRqNVqmpqawrZnZGQgCAIHD1YDsHbtB5SWliacwwcfrIt73iC7du3Cbg+8tkePHiU3Nxev10tNTW2omuvIkaN8/HFgAX7o0CFGjx6V1LEV4rNqYxNrdrTijtEmYO30smZH4EJj6RzljsrxQvJEt0WZpo5Em60nfXw2KlFF2uhMHIcD39t+b2B8+9HyMEElK2cyo8d/HX1aHg0HX6HlcK/47vNYaD9SnrT4kKiCB0CSoNtjwOow0dhZQFVdKV2ejNB25fM1eGhkzOGXFc7mpfoNsuOdPhVHSWzIa7V6WV3R3K8I6WB1zUcftmO3J/aBSyQSSb5wjxlJkii65DpUooaGTa9GjfdHjE82elzwqUO/vupNM3HY1Alfp0TP529/rg0JRnJIUqBC5/FfV3PnPafFnV9/cXktHLVXxhRsgvglF0ftlRSaFqI7QWPNgWERx55sXLcqzRC1rbu2BpVWh2g04rXZeh+PEeGtmAQrpMrT/6mlwSDhj5Et4tFAU0+3ZFGLl+0Vzczqx2+BwonF4N0WUDhmJCnJhnEZzjjjdGw2O42NjUmN93gCiyG/34/X6+WwuxWf349KFfhGuPWaGzlQW81FV32JJbd+E602UJIc666rIAj8+snfMvcbX2HuN77C9K9ezEc7Am0BeTojzS5b2PjXVr/JtT/8Dl6vjzf++hITxo4PO8aly8u4bMlXqN1TjU6lQS2Ef3QPdB7F4XXh8fT61vglPx6PG6/kw+f3kaU1IApqtu/ZGZrXrK8tZMWv7qLD48Dl7ruvhLrnuasFVWi+s8+7gGlTzuGya6/kkqsXUXe4Hq1GG/7ciX8nWpIkmtxWnH4PhzoaqXU20+a2I6ji73fzzTexfv16rr/+Wzz44ENoteGL4/7eAHc65RMIInG7exe4kuQP3VX0esMf7/tZCn5+FPqPtdND1WeWmIJNELdHomqvBVvX8ItoPlkQNIF/E4ZiI8XXnoPOnEbm6WZ237OG1nU1WLYdCQk2ACoxMN7ZVRN2HHv7HjwuC1p9jmzktqvrUNRjciRbwSMI4POref2zK3n/4KVhgk0Q5fM1OBTr86Ie+/HOf7LNEl1lAyA0Bqpra2u6efH5GoCQIa/d3Y5h1tuM+uYLjL7+n9SP/SPvNz9Lpze1COHyVU2sX9MaJtgUlxh46JGz+O2fz0UQ4O57J7Ky/MKQ/0tQJJKdszoisWxmGaNmXoE208zo0qVR41UR44PR41pt/B85saU3wUrVFHhdg8bF0Ps6yTFqtD7q+bz6n6PUHoot2PSl9pCDhvrkxqbKofbyqJYogJIRc/n6+SspMl8UeszlC3jenIhIksRrra/yUN2DfGD7gGpXNfXuOqpd1Xxg+4CH6h7ktdZXe9a+x49U4rp9HTbZbSqNhpzzZiY8l2ISrJAq1k4P+zudMQWbIH41tBrBrYbWmsH5blIYWhTR5jhQV1dHcXExZrMZtVrN3LmXsGtXoNw3LS2NCy8MVEfMnz+PnTvDy4C3bfuE+fPnYTAE1P1Y7VFz587lgw8+kN2WCL/kx+UPv6OVmZ5Bc1sLAN/4au8i6+NPP+GKS78EwIJZl5Dec9dh/Ucfcs3iq9D1iDunFY9Fp9VSMCKfR3/zGB2e8C+QolFjqK6v4ckX/8GmTz7mtOJxbPhoE9cuXka+IYcSfR7Txk1Bp9OyZ/ceyi79ctQ5Y+GV/HT73agQaGk4SvHoQiaddgYABn0aYwuL4+5v6bSDRh16Haw2W6hN7PSxgTtrnd1dZBjSAdCrwkWc/fsPMGvWhUgSzJo3h3WfVGHxdgZeZ8mDw++m0+egy+ekxWPjoosu4jvf+XbUPNLTDSEPmy9/+UtR2zs6OpEkiXHjxgFwySWXRM0B4NJLL436XMkhSdKwboU4WajY3Iy1y0vJSAOPrDiLP//oXDINIg9/Zwq/ue1srpo3JjTW2umlYnNsXySFwUVfbASgu9bGrrvf46OrX6X6qYBYXf+f3SE/myC6ksB4KUqYUXFg5+85cuhNjOaz6epKZ23lAv7z+jd58dXree6li3n5xcMxKwWCRFbwQKCKZ9KM+5k65y+MGD2393F9B6VFVZGHCEP5fA08i3JmYFKnJzfYrkWsKgr92dwUvKiUyJ6znj99+mPSpmxDP/oIuoJmhNwGPrW9z4t1P2dD68tJXQzbrB4+rrLgdoePTUb8qI9xYaA3l4T9feSj19n86NfY8+K9NFS+HDVelxvdKlK2JJ+L5+diMskXiJtMIhdrL8ekNgUe8KZWSH7kcPTNi1077EhSYsEKAq/Jc0/Xp3TOZOlw1kQ9lpd1FiZDMW2dX0SPdyUn6g41q9peY411DVafVXZ7MI59Vdvgp27Go311eVjLk6G4hLMeeoRzf/vn6MH+6OrKYBtUyXU3Yjrn3JjnUZuyMV18mWISrJASFZubcapIak3o0cCRXPB5j68QqjAwKO1RxwG3280TT/yWxx9/DJVKxbp160MX0e3t7cyaNYsVK26lvr6ep5/+R9i+hw4d4rXXVvHUU3/B749tRBzZGgXxPW364uhJiQqSo83k/Yp3eOShh/n2Vdfz5gerQ9ueWfkCf334d1S+spqPdmyl4egRAN7/cB2TTjud9/9VDgi0Wlq55vu3kJ87Aq8vusT5yoVf5etfLsPj9XKovpa1m9aj8sJFk87jzedWIghgsVi5++6fsGrV69x1391R54xHMOrbSDp3/fweHr/nIQwGA4Ig8MDvf82h+tqY+77w+n946x8vs2f/Xm77+R3ceNW1VL6yms/2f86eL/YCYLFZ+Wz/52x4+X+seXcNdmvv3Zff/e733HPPT7jx5hvZV7Ofh37xuOx5JCQs3k6MBTl0dXVFbf/3v//DPff8lO5uB1u2bJE9xmOP/YYHHrgft9vN/v37cTgcYXO45ZZbQkbEiXjnnXd5/vln+fjjLVRWRieQKQwNtc2B97DmaDcvvFPLisXjuOicXFqtLp58/SAv/uJ8Xt9wGE/Pj3JNk3JH5XiRs2gCndub8FkTV6+pTXpyFk0AQFBFVCKMvYKc/PPR6HJ45skP2brtOrq6s8LGHG1sT2gCG1nBA4EqnrwxC8jKnhhVxVOc08wjl51FRpqanzy1m59eOxGtqOLjve2sXNsAKJ+vgcYkplOaNZE11k/jx367Vaj25CP0xH0DeNx+1GqBS76/k8P6T7B7ohMSATp9Fnb0+J3MSeB3srqiOWEbUiw8MS4McqaV0Vm7LcyMOBZqQzY5U6NbRZKNHte0lrLGugZJDDyHeMbFTzz6Od1dsdu/PD3VjfFixvvS1ir/+h8rPilanC3KnUWGvgCToYSJo8uoa9vYO16mOu94Y/VaqbJX4Zbiv0ZuyU2VvYoFpksxisYhml04zrqasL/jpT7JEasNCkCVnok2Lx9d4ViyLrwE+6YPqP/NA7ImxwoKcqS6JuzSg1qt3IA9GRCkBLdeWlqOLbr5VGTx4i/3u0KhvPx1ysquHOAZpUatsxmHTDz2aRkjaXJaw7xo1Go1apUalU/iomml/L/vfJevf+faUCy4WZOJxdvZU1kiccPXruFocyOrN6xJOI9sMYN8rSnqcbVaTb27BburmwumzuCnK35I2beXoxZUaFRqnL7oBYtepaFEnx+KL3f4XXgkXyjCXBTUeCQv/mMoy1UJAtliBiM00QsNr+SjxtkcEo/i8Zdf/oZnnvwHnbbU/+3p9fpQu9Ndd93Jrl27ePvt1Qn2GnokSeKNN/53vKcxLHjg+f3UtwTe0ynjslixeBz/29zIGYWZPPVGNf/6+UyW/WJz6Ae6KE/Pz6+dcDynfErT+tperGsOxY39FrQqTPPHkrt0EgDNtc9ia34/alzlR3PYsXs6Xq82alsQrVbg4vm5siawtbt/htsRKUirAD+FE5aj0Zmo3v2X0JbGjjy22b7PisXjqKhqZGJRZmgRGPyMKZ+vgUeSJFa1VVFl3xcW/x3CrmWW6UzuPP9LfPtbW8MqrNTpnYy+7jnErMQpfRnqbL5Z9CDpcXxDHnv4ADXVDopLDPj9EvV1gd/7wmID3/nueIqKDWxY14I5V8v0GTns3GENiR9jx6VxRwxfl9aPX8a65924sd+CqMM0+TJyZyY20rVZPayuaKau1oHXIyFqBIqK01j45RGs8b3J+lf8+LZNSnicINPOM/GT+84Mez59OXNKFresGMcPb9sBwMryC6N8cTQagd89OSXpcyZ6LsH48S1192NzHZDdd97khzjQ+E6YaGPUn8aMwvsTHncoebH5X3xg663+ztFk86PT/x9qQc0HLet5tyl8TTjPOI/ledcM6RyD1P7fz3A3hH9vZp05hXG3rGDHD2+L3kGlBn/itZ3alE3RXQ+izjImHdOtVDsrRJLqmtDggGXjchRPmxOYESNihwr1Ram0UYgi0kgXkDUPBkhPM/D6X/+FVtQiefw8+uijlOjzw8bk9twtsXm7+eerLyY1B1FQY9bIf4jT0tJ4/an/oFarcbvd/PDBnwIwNj2fJpdVVrQREGjx2LB5u2WEEwkJ6ZgEG1FQYxQNoecaSZunI+y8saLPAb778ztiClaJuOii2Sxf/g1EUcO+fft4773oC0GF4YVGDCzaivMNXLuwGLNRR2GegbxsHQ/eMpmX19aH3eEWlTsqxxXzkokA2KsOy1bcqE16skpHh8YB5Iwso9OyLayVqasrnb1fTI4r2EB8E9jICh7oreLR6s00HHwlbJvP37skCF4rRF40KJ+vgUcQBJbmXsgC0zk8+O772AxWJLUfg1bDjKIiqv5kYGuXDqE8+rU3lW4KE2ymj5jHpUXLaXc2sqnxf+xu2xTa1umzsLm9nPl5sU2svX2qS7Jzej8/8VKbghSWxI6+Ns8ItIDY91fKVtyoDdlkTZgdGheL5CLIZ3PH1zU8sb8Gjz3+v58gn2y1clXZprDHVKpA90uy1TqphkclG6d+xuySmKLN2j33Rj2WoR3LG681HlNM+0BT6wwXQRaNvJzRaaNoc7fh9EV/T9a4Ylc/DzaCGP69GS/1CUCdmYnf4YjrgdPXu6b1jZeTMjkGyF2sJIEphJP6mhCmLor2TlMYfiiizQnG8a6yAXkj3TydkSaXNepxe2cHC65ZzPi0AkSZFAwILP5HaIxkixk0uFpxJijdVQkCRjHgUxMw7HWHKmL0Ki1Ou5tLv1kWJbIc6IwdghpsPYolzEQ+nqPNJEPU0+HtptvrxhUxZ5UgoBXEsIqiWM8fwBlRudTu7pCNPo81Plnee+99Rag5ySjOS6P6qIPapm7ufjKxF1FJfuwLJ4XBRxAEcpdOwrRgLO0V+3HV2PB7/ahEFboSIzmLJiAa9WH7iNpsssyzw1KePtpeGtUSFYtYSUH69BJcXeEXe0cOvcGRQ2/IHqfLPybhInA4fL68bgvtR8txdtUg+T0IKg369BJyRpYhak/ctgOjmI55y5k46gMXsWdMyWLZuePY3LUDgH/8tZqOjvDfIjHLHnUcj9+NVp1Gtyf6t6Upgd+JqOn9/c8docPvk7DZErdLmUwil8e5MBAEgdyZyzBNWUj79nJcrYfw+zyo1Bp0uWPJmVqGaDDFPYe108Of/1rDkc+dEKOQrTeyO5dLZo1m/ZrWKH+eZDCZRLQ6Fc1N7qQEKyAk5gRJVOkSNHyONb/gc/H5LyFv+jZZM+JIdOpsPttwMZUfJD4uxI5pH2g8Ea1/GpWGA50HWdO8jq+NWcyG1g/DtnuPY4uXvqgEV03v92a8dicAv8+PJn8kPpsFnz3amLhv5UwqJsf2LZWY5i5UTIoVwkh1TVho1itx3ycJimijEIVepY1qj4oniOhUYlzBIogoqCnW5dPqjVXxEhiTpTbgk/xUOxujxBSH343N15VSVYwKAa/kT2mfvqKK12+NEm20ghhVURSPVKqXYo1XODVZdEEe2w/YsXYlceGUIbLoAuWOyomAaNSTt/yspMebx/RUIrRV4vNYaG7pvZhKJrZYzgRWroInFnZnJu/um8Hru2IvAk/0z5ckSbQ1rAy9hn1xdR2g07KNLPNszGNO3LaDoGgSrO7IydFyzrkmqg928s7/otMgW1Z/CdeRnWTP2YAgwM62Sra1rOXi0Uu5aNQVVNvD389EfidFxWnUVDsoLDZw/Y1j2bypldUVjXjjGFlqtQIzSrNl476jnp/BRN6s5OLqg0iSxKqNTWz6tJ3u/T5UsTsPgd7qszvvHQ8gW3ESj+DzmT7DyCMPHiCZpYMgwPU3F4bmm6iC5uypWXy63Z5QUHK7JT75yMFV511Mm/B23NhvlaAjk0t4+yNHUseNF9OeCp3eQAVXs7MGr+RBFDTk6Uu4IKeMDDEgkmqE8MuNd5re587Tf8Dyoqt480hF1DFFmSrBoSLn8jI6P90WZkYcD6nTjrvTjirLiK6wBEQRyeNBpdGgKxzb41FjAqJNjuPhs1poX11O3rLU/r0onNyksiY0qFXcsDx+2IrC8EERbRSiMGsy6fA5kvJfUQkCY7S5ob+DnjGR1THBSpS+VTey48RMDrvbZD11gqTcxiQQ9VzitScFiSeqJIr1TmZ8rOql/hxf4eTFlKGh9Mxs1uxojRv7rdUIlE7Kxpiu3FEZjgiCQG7hMkwFC2k/Uo5f6k3FS8YIVc4EVq6CRw6fpGFf22TZqO8gw+Hz1dawEmvzu3Q4RDbVLaCpswCvX42o8pGf0ciFRVX4fT1tB4UnZttBUDRJtrrD352Obdt0AHIu3sCMvEs5K3cWWdoc3q59Pmq8OsHF8OWL8vh0uz3p82cZRc6/MNBqM1is2tjEmh2t+OolxCS1F6vVyzv/a2HZ8tFR5sUddi+Obp+ssGEyiWGtQ8VjA+9HIorHpjGmMFCFlkwFTeX69lDwUCJR1mr1sm9TKdMX+jhir8QtU3GjU2czMms2W1dfgM3anvRx5Sr0kkWSJDa2rWSvvZLOiDkddR3gYOc2JmXN5iLzVRTri6l2VYe2H3Yc4Qef3hXz2CW643ehKRqzyZo5O24Lkxx+uw2304np4stitjVFmhxDIJ1q/C0rUKdnRHnmuOpPzCQwheNH0mtCUeDiqWZMGcm1iCqc+CiizSAwZkwRDQ11x3sa/UaNiix1GhZvV9yIUEEQMKnTUQsqJEmixWPD7u3GK4XfBnP43HR4u8kSDSGTXjUq8mQMe5vcVhy+gU1gkBN52l0dtLs6GJ9RQJvTjlxhywhtFs1Oq+w2naBJKj6173hHRGrCgY441UspHn+4MWZMUeJBCiGWXBS4IKraa8HaGX3VYsoQKZ2UHRqnMHwRNSbyiq/HkHkAWpJPagr2uUcSWcETiVqTjck8C73zYkxN1mH7+fK6LdhaK1l38Hz2NE2mwx3eWnakYzQH2iYwOX8Pc1WVmAoWImpMx2eycQiKJqkkOEkeLR17JpM1fRubGivY1BhduRAkXxcdp90Xo0nDzNLspNqKCov0rPh+yTFXasTD2umh6jMLbo+EpuefQzKVZ9BbfWY0aqKECZvNEzeFKsiPfzKOx39dTe0hh2zFjSAEBJsf/2Rc4LgxItMj6ZsUnYwoe7SpGa/fgU404pc8+CUPKkFDmiYXo34CY3PK0IkmXq87kNJxY8W0J8PGtpXssL6LJ0b1T9/UskU5X2F75/aYcd99MalNLMr5Sr/nNRAEY7hjmQXHIlFbk+SNrnSLl07l95x4SWAKxx9lTXhqoog2g8Cf/vRU4kEnOInSLEzqQEzpEnMpgiDwWuumhJGlWkFkvukcluZGR2UCWL1d3FPzfNQxLs+fxuzcSeTpjNR1t/DQvldk9y82jKDZaYtbpdOXmdkT+PqYWdy569mYY+S6vU3qdO4rWoZRTE/qPBB4bg/VvSyfDDIAx1c4uREEgaVzClgw3UzF5mZqmhx4fRKiWqAkP41FF+Sd0BUQCqkTrLiA5IxQY5nARlbwuLoO4fd7UKk06NLHkjOqDFFjYmkhLJieO2w/X+1Hy/lg/1lsOzwdj1/+zmKHO4tthwNVKVfklJNXfOK1HRhNGmZcYGLtu61JV2IA+DqysFaVkntpbE+zDHU2F+REx2lHEqyaidVWFFmNMphUbG7G2uWlZKQBye6n8bAz6QjuWBHkIC/kyKFSqbjzntNoqHfw3NP1tLW68fsDpsPmXC3X31wYqrCBY4tMl0fizDkbGHv2HhoiEiX9kgu3V4Oo0qNVB26CeePceZcj3msUj06vhc/slTEFm9DxJRd77ZVMNy2kNCsQxx4v9lvjgclf+HBteR3vcYy+FgSB3MXLMM1dSPvqcjq3f4yvI9yvJlaFTLy2pkiT40SoNCf2967C8UFZE56aKKKNgix90ywq2rdS42rG6/ciqkRKdHksyjkvJCpYvV1U2ffFFWwA3JKXKvs+FpjOkRUkKtq3yB5jddMnrG76hCfOvpG3Gz+Jefza7paUnuOywtm8VL8hpX20gkhp1sSUBRWTGBC5khG2+nN8heGP1Wulov0tap21eCQvGkGkWF/MopyvYOqJ6DWma1g+X4ltPBXoW3GRqFUlkQks9FbwxGM4f75a2hrZ3XRRTMEmiMevZU/TZGa1byDvBG31j5RBkhUpXI2xTWU1go5JWbPjxn2Hzi8ILF5aENVWFKsaZTCpbQ4IlzVHu8nqSi2eKVb1WX8YU5jGzx44PeG4utreypVkK4LiibL/3fAUhWdvQ6OVr7hw+SzU9VSznJa7LMxIOhmxt7+v0eb2crr6tEQlk1q2ZMR1AFTZq2QrbjI7/Eze62fWplZsvE/nzm3HPfpaNJrIW3Y9zrpDUaJNd20Nh557Bl1edDWD89B+2eNFmhxD/HQqXWH8yjiFU5vh/JutkDqKaKMQF6OYzvK8i+OOqWjfElVBEqs6xurroqJ9q+wxa53RvjJBzjWO5dWGD9lmPdiPZyHPj3f+U/ZxrSDKCit9q4v6Q3C/ZKqXFE4dAlVtr8kuZKtd1Wzv3E5pVilLzEtPWPNUhYEn2TaVVExgT2Y2HphAZ09LVMlIAysWjycjTc1PntrNT6+diFZU8fHedlaubaDDncWG/8/eece3Udht/Hva3rLleCTxyoBABiMkxEkIZEBCQ0lIWsIKvFBoCdCWQimblkKhlJaW0hZ4S0vZBUogvDWE4ZDtQBKyByTxTrxtSZatddK9f8iSLWt7O7nv5/O+xdLpdCcp0t1zz+95jpzGGecM8kYHwWR08tU2o9/4TLQIruCCVaIylbGaQk58MounK44GbTIKRrRulP6kqxNEl6LEbnRHXcEdroK8v+jqdIlWbAslymoTLFx0/b6Qgo0Xt2SnxryZHP1CP4deb2vaw1FvKw+4LVJrmedi4PdYoL+Youb/crRmJ/Y2E0qnm6x6N4VfuUhs73zMUKq+DjbWBNBWdgzLkW8Cbrcfr6Lxg7cDBKdgIceh2qmU+lTSFkV2xsnIyJwayKKNTK8JJraEc8eU24OLM84wwcdlbXWYxPaQ9/cVemUCPx35XTaZD4Z1F4XCKLZR1LydCls9TsmFWlCSp8tgcdo09KqEqN1LMqcOq5veC2sZN7qMFBuLAVie/r2B3DSZQSaWMZVTnZpWg++/y2vaee2TClYtHcMFZ6XTaLTz/PvHeOOX5/P+xuM4RYma1rRB3NrQeMdr8vLjcbslqiqtUYsUGfGjODvlYursZbjcTpQKNZnafFpKZvLFJhfGbtkc3iajgRp16gleJ0heZjwr5+fy92eORSVGROM+6w+6Ol16y+mFW4lPtvjdlj9iLtPGrOLLo89R2bTJd7vd1UJZ8xoWLb4m6kyk3rxGouQvYnzdsJ6dDetIUKUQpwoMNO/aWpaiSuFK7XeofHsbLtPwqL4ONdYkiSFeZ7crqOAUbcixoNGSPG22XPctIyPjQxZtZHpNKLFleup4XJI7wB0juoP/yKnD1Ib3VLDxOn42Nx6kuH5vWGHIO5qUoxvBNbrw7qLuhMsAKrXXsctS6nPRRONekjk1MIpGSswlYWf8ARySgxJzCQv0F5OiCgzwljk5GUpjKkMdtxQq08f7v/4n0y7igyw9+HjHayrK20lN87y30TY55RckMj/DfwTug/dq2RKhyWhDcSMAS5eHHq8aLPIy4iitsVJR187jbx5GKYBSACFMFMtgus9y8+Kor21g+jlbyRnVQEamkoZyLbf9aCSJHXlCXcU2hYKQrip9Vp3f3xnJk9HH59Fk+Tbo8q32MiZkDIxDTyX4P07CsxNtook20RSwfLOzhjcrf+WrAm8fZtXXwcaaIhFKcIoUcqzUp/rGwmRkZGS8yKKNTK8JJbaEyoxRKYJ/7PJ0GZTa64Le11O8jp8/TL6R3cYyakNUbPd2NGl1U0nYvBqjq41i4x6AkEHMMqceRc3/japNAzyOm6Lm/3JNxrX9u1EyQ46hMKYy1NHpUsDkuZqflxnPyoV5GFK05GTEk5Gq5bFbJvL2uirfuI1Op0d0tNBcswZbWzmS24mgUKNLyCctewkqzeAEoHYdr0kfocXtkjCZIrsmklMCXRPRNhk5HBLbS1qYu8Aw5ETAxTMy2HXUjLHN8xq4OnZRYQZFkJdlICrIQyFJErPP38DpozeREO8ZEXI5oN0BGr6lqXInfyqeyNav5gACKSlKzp6awp6vzUGddBqN/0Wm3PRZJOqy0MfnM2HUEj+nDXS6WQbCoZehy6fGHr2IIUoOauxHfVXgoxMlxuOf3xQ3ajRxo3Ow1dbQXlHu9/jBrr4ONtbUlVhCibuHHNurynA7nSjUarQ5BaQtWiI7bGRkZAKQRRuZXhNKbAmVGZOvDW7HXZw2jV2W0rANS9E2SXUlW5eKGymoYKMV1MxKPqNXo08XJE/skyBmmVOPCltFwG1p6lTuOu0nKAUlXzRs4NO6Yt995fbA5WVkZCA/K4myumYAKurauff5cM4Uidl5m6g8uCegBt3edhRLy06SDbMxjB74AFTveE1OXjw33FTAtq2NrC2qRYzQ8mO3ufji8ya/Maeuo1aRAnGNRpG1RfVDThzUJ6opPDOV4t2NOJwSCODKBJcBlI2gsAISCEoYnaPj9h/2bwV5OJqq38FqKiYhPvjYS1JiK2dP3AnAjt0XMX1mGkuXZ7FwcUZQJ11WdiJtYuex1Y5ST0DtvImPc7T2k4D1KxWe/R4Ih97k5IvYaypGIvb2KYurhW/zQZwJZ3bmFWM9Xo31eHXQxzga65EkaRADicOPNYWr7Q4lOHlDjmVkZGSiQRZtZHpNNGKLl2RFHHa3gycq3wma+VKYPIHPW3bjJPgYU7RNUl1pF+28VvlF0PtmJZ/Bd9LO479hcmgijT5tMR/yE2zCCUuhgpgjZeHInJw4gwh9i7MXMSpuJE2OJmwum999ojt8IKWMzKlKd0dGOC4Zv4mRup24nMHHEl3OFoz1HXkUOQMbgOoNko12JMqL3S4FjDl1HbWKKhC33Bpw21Bg2QUeR0jJoRaMlo73VwWuLHAB+kQVhWeksuyCwcvlER0tmJs2I7nDZ7RoNE4mnn6AlBGXsHipZ79COekO1xfQZgosX1h34KGg607S+jcN9adDb595vZ9gE649KhhuDVSfAWN2gy6K6Xd3q5nK3z7MqNvuHrQacO+4UktxUeiZtiC4nfLvtoyMTO+RRRuZXhNtnbUCAbsksqX1sN/tXTNfrkibAYRuWAKIV2j405EPqbQ2+t2erU3l0YlXBwglJrGdvaZAh4Je6RFDHq98O2wOjSRJrDPtDblv3W+PJCx1DWKOJQtnKIZEyvQOtRD4FaxWqDlqOUZx/Xq+N3opGxu3+O5TKYbW6MJQxVZVTu0rLyA2NSC53QgKBSrDCLJuuBVdTv5gb55MPxDgyAhBanwbEzMPQIQcKcltx9y0GX3WQlRqPSajk7VF9VRWWKNuX+oJXaveY8XhkPhyawutJie1tXaqq2yRH9QFZwQ3z2AhCALL52SxYKqBom31lNdZEV0SKqVAfmYci2dkkJIQ+3tgFD0jpxW2CpySiFpQkafLY3HaZeijqEbvSnPNmgDXVigS4luZnl+CIISvEC9IW0KDZSd2V+T1apWpFKQNXNNQrO1RGXE5ZMTn+Ik5tiQ4Mh0mr4/uOR3V5VT+9iGSz58zKDXg3rGm9sP7sFeV+90XrrZboZZ/t2VkZHqPLNrI9AmR6qy1ghqn5MIuBb/i0D3zZYH+LB6teAuzO/DKX7vbESDYANTYW7CItqgcOBpBRZo6ic3mg2FzaD437kGBEHH0qTuhQpgB6h1Gn9OoVWzH7LbiDmExlrNwTm7ydHmU2kv9bvuk7nPuOe1Orsm9kg9PFPndl6/NG8jNG3a43W6O/+HX2CqOgdT5b0oCnDXVVD31MLq8sYy6+xEUCsXgbahMvxDUkdEFfaKKZZO/RqMwR7U+l7OFpuNrKNm5MGg+SKztS9EIP9FWvYfCbBLZttXod1u07VPepqa+pq8Er5QENdfM771zxHOx5D1KzCUBmWKl9lJ2WXZRmFzIMsPyqIUBW1u539/JaRMZNfb76OIyqD72Lg3H/d2+9rbIGS1aVSrZybOpNH6KWwrt4FEIWrKTZ6ONUWjqDd3bo/Y2bWZnwzouHLWcC0ZeTqnZ3yXmltxBxRxjt2l5VXIyLqsVKYQ7xWU2DXoNuK5gXIBoE6q2G0CbUxD0dhkZGZlYkEUbmT5BEISQddbZ6lT2t1dgd4W3iHbPfJmaNI4vTNHbwzO0KSGFku5kqVNpcpgjijHBxleiIVQIM4DFbcNij/4KqJyFc/KyOO0ydll2+Z04HLee4M49vwhYVq/UszjtspjWL7a30Pz1GmxN5UguJ4JSjc6QT9q5S1DFD47FvD85/odfYwvX8CFJ2MqPcvwPvybnnl8N2HbJDAzRODJMFW9j73JdIdLJ9aefxPP1nt61L0mSxJrVdVELP5GCZFP0KkxGkV88eDrnTTf4ZdMEI9pRq5z84A1cPSXW/R4oVje9R7GxOGRrn9FlpNjoyRJbnv69kOvp6tSZb6uka4m8ufkAGaMXkJw6AXeQsdZgtwVjrMEzknPCvBlHEMeNVukRdrzLhaMv3WLd26OmZVzM5PRZJGvS+Lji1YDl7S5rUDHH1a3HQjRHFlQHuwY8UihxV5T6VNIWDZwDSkZG5uRFFm1k+pRgddZv1K/H5Iqusrtr5ssFyRNZb9ofddDdytwL+Xf1psgLArXOlgDBJtqQ42iWCxXCHI6eZOHIDG/0Kj2FyYVhTyAANIKGwuTCqOu+JUmiafs7mI9sxtXeLWi1/iiWip0kj5+NYdrAW8z7C1tVucdhE82yFcewVVeiG53bz1slMxiEc2QYu50shzu5bmtLYP/B3F63L61ZXRfWOdNd+OkeJFuyuQVnx2NT09Tc+fPT+OUDB/jdb74Jmk3TE/T6wPap3hLrfg8ERtFIibkk7PctgENyUGIuYYH+4oDv3WBOnZl0F2EUHN37LHZrAymGKTTVbPa/N8pRV0EQGJe+ghz9Qsqa19BqL8PldqJUqEnSFlCQtiSiw6Y/xLPu7VFba4vYWlsUcvlx+insbAjMFlQGjy+MyGDWgEcKJfYiaLQkT5stN0HJyMj0CbJoI9PvVNjq/f6OJHp4M182mQ/E1EzwhyMfhrxvhCaZBkfnFZxgDptoQ457EoYcDbFk4cicPCwzLAcIatUHSFHqSXFO5nDZWTx69AhqpUBeUhyLCzLQa4Mf+DdtfwfjgU+RxOAHlK72FowHOizm0wfHYt7X1L7ygt9IVKgKVgAkidpXnif/wScHeCtlBhsh4GQ59Mn1l7sKsbTFA0RsYArWvmQUjbxf8yFfZn6LeLWI4FIi1GagKjkfoc3fNRlM+PEGyVaWWykv9YwKZ4+MI7mP25E0GoFphal92ro0VOvGi5r/G/A9G6qxz+jyOGmuybjWb/lgTp1apcAoV+e+jiy4nLTM89HoDFQfC7ywo02IbWRGq9IzIaNnAkV/iGcz0pZw1LKTtijydgB2NawPers+wmFNuO/xwawB94YSm7dvxmUMfA2U+lSSp832LScjIyPTW+Shfpl+xyn5X0pZW/c1Dx14I2T+jOj2CCrdxR7wCD6PT7yW/z33Nh6a8P2ot6GrYBOOcFk0PVkuGN59yIlLj2m93tdF5uTCM1r4PR7OfYR5KfMYoxtLriaXMdox5DIDqeZqKqumUmayUWWxUWqy8kV1M49/dZT3jtYiSf4H4k0tDdQd2hBSsPEiiXbMRzYjthv7ce8GDrGpwe9vbwVr6OVlEfRURJeQ7/f3yILLmTTjSUaMugiL6YjfffUNnSew3gYmwNfA1B1v+5IkSbzX+B8er3yMLbYNiJk1kNWANKoW99S9OK5/k/PuP8TbHxT6jaV4hZ/u5OZ5xpa6Z9Pc+9AEwJNNE5/QOWcye046ggD3PjSBtz8oRKMNfain16u4cH66bySrr+haN/74U5P541/P9m3TO2tmRrXf/UGFLbCUwNvYp1aoAhr7yu3+y4dy6pToVJi7mFROlH3A/m338/X6H1Jf9Znfskp1KmkjB2ZkJlbxzGSKbmwrUZXKmcmzUQvaHm+brhXGfxV+mXDf44PZyuQNJc79xWOkzLkYXcE4NKPz0BWMI2XOxeT+4jHSl644aZysMjIyg4/stJHpd9SCMuC2cOKESuH5WHYXe6D/XC5ewmXRRLOcRlBFzMnx7kNe3IiYnt/7usicnEi2eKS9F0G9FUmUaBZFzEoRdwYQ5AK00S5SXOm5Orp8XJbHsn+sDsWut5jUTaTMmDKfEVPmoUvJoPTTv9Ny5CtEDTSNaqGm7EGUiXqUgpokXX6H3X745d1IMVSw9mR5md7Rl009vSEtewmWlp2+pp8TZR9wouyDoMu63LGdkHrblyJlppDcxhZbMVkVccB4v7uC1W57G6WiyaZRqQQuXpTJ5o2NvmrvuDglDnvn512tFhidoyMnvyPPpB8cLkO1bjxYTl24xj6x28hcd6dOV5fO4YMvomsuRRPm+QWFlmTDbFRqfczb3pNMGq94BrG5xUSTZ/zIVlmOJDoRVGp0ufmkLVriq9y+oCNH55B5M5YoHTde1Aotk7RnoGvfHfPr4GUotDKpUvSDMqIlIyNz6iGfBZ4iGMU2ipq3U2Grxym5UAtK8nQZLE6bhr6fw23zdBmU2uv8bgsnTuRrPXP1oa5Q9MblEolos2iCLadXJvDTkd9lk/mgXxBzncNIm9v/6t301PGoBAUVVn93QLjn974u4RjM91mmZ0iSxOpNdSEbbzACqUA20O2fhMMtUVLTwoIcA59XNVFc2ciV1pqAVTTsX0/93mLGfucOErIKKBW/oi0TXDoAEzhMAJjsR2mw7PQFWw6nq4SCQuE3TBmugtW7vEz/E66pp858jPgdGyho15EqJHtODPs5KFulSSXZMBtj/adI7jB5FAotWm287+9oGpjUKiHqzBQ0Il80bESIywZjpzgUrHY7lkapFL064vjU6BwdP39gXPjt6yVimNr1YAxU3bhaCDzsDdfYp+o2TtfdqeN16TQ5mihLzaOsrZyJDjfJQXZHqfZ89gyjYxuZ6U0mjVc8g+gEtKpyK40fvB107MdefhTL3p2+sR9BEJiTvoKp+oVsa15DnTdvR1DjQqTV0YRVCmyM0rXC6EN2srfujrjv4b7H5VYmGRmZUwlZtDnJ8RwwlwSt4i6117HLUkph8gSWGQr77QRtcdo0dllK/Z4/lDihVyawOO08AER38IS6aNww0YYKR4NWUOOW3DgJnZinEVQUJk8gRzeCa3T+YcFPVL5Dabe2qBU5s3mlYl3U29D1dQnGUHifhxtDReBavamO4t2NOEKd5IigaIJ5YzNYMnckf/3qGIcbOw+EjXaRD3efQLmxle80ShhGi6DzX4UkSeRedD0KlZp9x9/BPBoINMABYHe1UGn05N2MSx8+eTcqwwicNdW+v8NVsHqW79vQVZngBHWdSBJzSkUm1rlJdgBYceA5QRyIoGzvSbO5abPPcdMV78l1wfjRVB9vBqJrYMrJjwvrxOialwLQ7Gzm/BsP8+2z50as3Y7UKAWQlKzizp+fFrHau69booKhUnv2Y7DrxruTp8uj1F7qd1uoxj6AfG2e39/dnTrdXTo/b9rKTq1EoU0kyyURh5qRuly0CQWkjVzSI4dNbzJpYhXPrI3NYQN2XcaWgMrtBJWe+UHydtpEI+t3/J46ZwUuQULp8mTYjP8KdF26KQSNFu3IHBzNDbjNJr91hPweVyppP3KIyqd/FeAAkpGRkTkZkUWbk5zVTSUUG/eEHNkxutooNu4BYHl68BaK3p7c6lUJFCZPCLsd0Cl8eGutVULwK+HRuGEijVHpVfFM1ufzZfO3OMJkxWgEFXNTJiMIQlBBBDyCilcQCUYwp1Es7VLdX5dg9MX77Ft2iIgZ/cVQEriMFiclB1tCCzYduN2waXcjWflalk4YyW83f+O5Q4LpeyGn3ExCxwVVVaYqQLQZOX0JI6dfTkPldqw5OhDCjyK4JTs15s3k6BdGbCYZKmTdcCtVTz3sF0YcEkEg64ZV/b9RpzihXCdzSkWmHnejCTGh1t9B2YIgkJ6zAn3WQppPrMHeVobb7UShUPudXF96mZO9u82+8ZJweNuX/moK7cTonpcC8FXlITRtZ/n+DiWodG+Uqiq34hQl1CqBzGwtB/a10moWefi+/VFtZ3+TmxdHeal10OrGQ7E47TJ2WXYFDX3vjl6pZ3HaZX63dXfqBHPptCkEPo/3OHTG6MbyQM4DPd7e3gY6e8UziE5AE9rNSMoIeWhRVm4nqPR85/zHaFrzDubtmzE5Wtg6XcnuyxSIKlCJkG1Ss1Axm9GLV+Iymzj+/O9xVFdE/h53uXwifTAHkIyMjMzJhizaDGMinVwbxTZKzIcjZqw4JJES82EW6M/yEwYindxuMR8iXqElSRkX8cTeK2jEInz01iwdbozKKLazqfEg80ZMZlPjwaD5OV23SRAEFujPoqh5h9/oU742g8Vp54UVVII5jaIlkiDk2Zfevc9ehpKY0Z/0pcDVW4q21WNsiy5g2m5zc/yYjczUTkVm+l6Y+C1ounx8XW2ZqJJO+D32xJfvc+LL92kaD87gTciBz+dqoax5TY8bSwYaXU4+uryx2MqPRl42b6xc9z0ABGvqSbBLTKwLLdh48QZl6yctRBWv75ftU6n1ZOSF/nxHO5bUtX3JaQzvxOialwIgdek8jkZQ8TZKdeeD92ojj08pIHm0muTk/j/08+bwxCJ4DQR6lZ7C5MLwmUOARtBQmFwYUPfd3akTzqUDgU6dWOmaSROJYA1mXvEMonOLZbirfS7McM1N0VZuC4KAYcmVfDFNpMS4GbPG/zU/MdLFMeUeCpviWWZYTu69nSJPsFamUARzAMnIyMicTMiizTAk2pNrq9vhd3+4kSGjq42i5h1ck9E52hPp5NYhiThcou85wp3YexpyZsYkfAQLMI6FSGNU01PHc2nWVNY1BB7EJCvjeDh3hd82pagS/F6faInWaaRAIFkZT7IyLmpBCKCoeXvUglCw99lLNGLGJy1fY3M7ubYHr8NQoK8Err6ior7T8ZKfHc+qpWNJjFNy3wv7uX/lBDQqBV8dauaddZ4riseqLRzVWQCIt8L4cn/BBsB2YiaqtCMoNZbA/UoM3Ib8EXOZNmYVXx59jsqmTX73tdoHr1K1J4y6+xGO/+HX2CqOBb9SKwjo8sYy6u5HBn7jTkG653+kqVO5rTEPp+NL323BQrK9uNpbaN61hoxZgyccRhpL0utVvjwRiM6J0RXB5fmd623t9pJlmXxTZaHisBUhyNebWwXuZKgQrKzeVMfyOdFVO/eUngheA8Uyw3KAoDlL4HHYFCYX+pbrSm+dOrHSNZMmUpAwBAY6xyKeJSnbma4s8f3dXlHO/lfeYU/aUg46rsMlKVEKLjKEWs5XlaDrUrkdLmi82Pg5X1g349AEF8mMLiPFRs/Y4PL075G+dAX6uQtpXrsGe1UZLpsNZ10NhBiZ9xKtA0hGRkZmOCKLNsOQNxs2sMG0H3cIL4rXKRCv8G++iDQytKP1COW2OpySC0EQqHW0RDy5DfXcENylEIvwEWysCGCULg2js402V3gLb6QRpHCiznmJ4/v0ZD0Wp1GsLpZQ1eihBLpye+Dy0YoZbiTWm/YhIHH1iAuHneMmmMAV6rUKJ3D1FV3DN8tr2nntkwpWLR3DBWel02i08/z7x3jjl+fz/sbjOEWJyhYrdBRDnXMAEq0g5Mfx7dlxVBptGKvaSc5KZ3bceWRbtkK3K8lSt4nDjOTJ6OPzaLJ8G3T7XO7Bq1TtCQqFgpx7foWtupLaV55HbKpHcrsRFApUhgyyblglO2wGkO75H4uzF6Hcv4mun6quIdmJWWP8RBsAc/1hBjN9KNxYUrD2pVidGEJtZoDw0xNMbSINOieOAlA2gsKKx64qgDsOXOmAClwilBxqYcFUAykJ/SuUxCp4DRSei0jfY4H+Yoqa/0u5vQLR7USlUJOv9QgN3R02vm3upVMnVrpm0kQTJNw90DkW8ezM+HISrJ7fR0mCLeIcvjl8Nq2iBehw70hQK43imGM8k2qruc7t5v3m1UEFsFJ7KV9bvsbmtkUM5nZIDkrMJSzQX0yKKsWvlan+7X9h6pJX1hcOIBkZGZnhhizaDCMkSeLNho2sN+1HijA85JBERFfgVYlwI0NmtxWzPXjWxcKMczhbX8CLpZ9gFMO7OmJ1KYQa87ogeSJbzIcChITjtuaI64yGaMKQ+4qeOI2iJdZqdDFIhk93MUOBAjfB5xckJNab9qNVaPp9fKivCSZwhXutgglcfUmo8E2vFhYginURXdJb4MsR8K3KSvs3Hf9uNdDYbKOU6VwcZ+cMYR9xqk7HjdDtLc1Nn0WiLgt9fD4TRi0JcNooFQN39bsv0Y3OJf/BJwd7M055urtO1Ao1Noe/A6xrSHb11v8ErKPGVs07Vb/hvlH3oxjExq9QY0ndicWJoWpPYqbiEpY8PLbXThPfqKUKcs4J79ozWkSKttVzzfwoZyV7SKyC10CTokrhmoxrY35cb5w6sdI1kyYagv2mRCuenXPsEI4Oc9wWcQ57pPNwisHfnzaS+do0npo3N1IxI7SAZXKZgt4eDKPL49bp/p7YKsv9/m6vKKfizdcYc0vwXDJ71fByiMrIyMhEgyzaDCNWN5WwwbQvQLAJ5RQI5sSJpnkpGJ/U7+KT+l1RLx+NSyGaMa8sTSqV9oYQa/AnmpanSEQT+tsbejpiFY5QY2ShBDqj2MYTle/4CWTHbLV+y4QSbDrvlwZkfKivCSZwQejXKpjA1ZfkZcRRWuMRXPIy41m5MA9DipacjHgyUrU8dstE3l5X1Xn1tEtW56E4KI0HMejbL/CZdQ5fus/lO0IJoxS1iGoRZ7sFUjprO3aUeupT5018nKO1nwSsJUkrV6rK9JzurpNP6j7nRnWcn9PGG5LdevwwowqXU735bb91uBRQaivlt8ef5IGcBwdoy3tOLE6M+aNms/ysCX3yvF1HLaNx7ZXXhQ8j70uiFbyGC71x6sRK10yaaIKEgwU6Ryue1b+dj6PiKG1SAofcE3ESXlBzSmoqd+pwTFRBYoSK+y6Ea1Qrt1cELC+JsTk+3c7h5RCVkZGRiQZZtBkmeMdXggkxkcaeuhJLa1F34hVa2t3+I0mxjuF0JZoMlXa3Hb0yHqOrPegyXjSCipGaNE44miHEiblWUDNSk0azsxWTO3B90YT+DkVCjZGFEui6O6pK7XUoCH01bzDHh/qaUAJXqNdKpejfr8jFMzLYddSMsU2koq6de58PExKpArxTBE6oDCnYdGJWJPKh82KWl4FZD19MbmMRr6Lwzlh1sO7AQwGP1SpTKUhbEtP+yMh0pbvr5Lj1BNsUTqZ2WcYbkh2K2iTPd1OZrYwqWxU5upx+3OK+YSCdGF66j8V4CeXaE129jfqX6alTJxa6ZtJEChKOFOgcSTxLW7QEy56dfNk4lTaSgShydFoTUJZMx3Xx+qj3KVyjmhhkJFdQ+YtH8Tl55F2zEq3BwJibb6X0pRf87leoh6dDVEZGRiYcsmgzTIgUNjs9dTwtDkuAU0AgthamcCJMsPP6WMdwvMQSCBsnaZiVdAbbLUeCLq9XJpCmTqLK1hDWZeOW3EyIH90vI0qDSah2qlgEulD5SDC440N9TSiBK9Rrla/t3zQNfaKawjNTKd7dGLb2W4ELZbyI2KoBt4BUCzZldOHF7Wr4Oh0yUgVmjc6nIGUOVabPcEuhM6EUgpbs5NnDpu57OGEyOllbVE9lhRXRKaFSC+TmdVzt1p9cJxvBXCcleSrGNzpIjuLCvCNOS0mu59+FhMRLtX/n0fxf9+cm9wkD6cTw0nUsJhrXnko5vPLITlUGMtBZlZJK8vTZ1H+k990WTY6OojYDF+EdNF0J16imCjKSq8vNx96lFbC9qoJ9D90bcj+0ObJDVEZG5uRDFm2GCcGyOLqSqNLx22/eC7g91mtp4U7Q20ME/4YaLQnnUoil8cjkbkerUPNk/vVBxZbZyWfy5xP/F3EsyonLN9ITrTskUq36UCDadqreEOo9dkYIgx5qxFK/3h/ZRsFYdoHHPlNyqAWjJfD9S1K2k2xpoeWbESjcnhMtRx5I8dGNQQDUJ8D114/FkBGHJK1AEAROmDfjcAVWqmqVqWQnz2as4cp+3OtTD0mSWLO6LmiuRHmplb27zL5Q1uEW8B2O7q6TNq3AgUwFU49HqP1WqWnIzaRN2ymyNoqN/by1fctAODG8dB21jOjaA/IzA8doZIYmAxnobFhyJWzcTjczZng6LJ/hHDRdCdeoFqwi3esAcpkiV4Ar9amkLZIdojIyMicfsmgzTAiVxeElWG11TwkXVhyMUKMl4VwKPWk8CpUH80b9+l5Vmwcj2lr1nrQ99QeR2ql6S6j32G07QWPV2xhGXzkkXodIRCtw9Xe2UVcEQWD5nCwWTDVQtK2e8joroktCpRTIz4xjou0Ab/w3B5db43tM9xYoz3o61xeASiBJo/LdPy59BTn6hZQ1r6HVXobL7USpUJOkLaAgbYnssOkH1qyuC3u13GgU2VDsESWWLu/fOuaBJJjrpHyCA72qhdHHm0gK5rhJSKJyVArnXvITXt/XmWPjlsJnbZ3KdB21jIQ+UcXiGYPZySUTCwMZ6CwIArr0NDBHn6ODynN8Gs5B05VQjWqhKtK9DiDjhk+RHKEvFAkaLcnTZg9o3bfD6KSmqJ62Citup4RCLZCQF0f24gw0J5lzUkZGZnCRRZthQqgsjljw5paEG4WB2MOKg42WRHIp9EXjkZfuAlCkjJ9oRnqiydsJV20+0IRrp2p0mDC7/UMnuwpbB8yVPHv0v2HXH2p8KNNpwlj/KQDpOSv6Zmf6mVjq1weSlAR10DaXt/41nTanZzsTE5VYLC4Et8dFF1V4MSDYJQ4+fhRDYSqjO5wcWpWeCRlyLepAYDI6+aqkJex4A4DDIbG9pIW5CwyD2qrTHwS4TvLhngO3MrWinaxWCaVbwqUQaNUnMueSXzAqUR9wFV4hDF571FAn2lFLjVqg8IzUfq/7lul7BirQuWv4caQcHQB3lueYKpyDJhJql5oZ+tAV6YYlHueneftmXMZAx41Sn0rytNm+5fobSZKoXl1HU0kLzm7up7ZSKy27zH6/tzIyMjK9RRZthiCiqYXmtWuwVZYjiU4ElZoLRqipO1tHW4Im7GPDuUwiiTVeehNWDNG5FGJtPAo3ahVMAArnForUCBRL3s5Qa1AK5kZ6tOItzA5/0cYrbM0bMZlNjQd79FxJLjuF9hNIkhNz02b0WQtRqfU93fQBoz/r1/uD6hOd7gKLxYVKJeC0SUjx0Y1BAIywgdMoUt/h5Mg5iZwcw4G1RfWYjGLkUE88jpu1RfUnVdtOKOISRvD5+BPdbnWw5ujjQZdPV6X3/0YNYyKNWuoTVRSekepbTkYmGF3DjyOS1Iar8CsgtIMGQOVQo7arsCYFtpbFmxM4/fCZTNfNghDZ3IIgkL50Bfq5C2leuwZ7VRlupxOFWo02p4C0RUsG1GFTvbqO+uJG3CGEePn3VkZGpq+RRZshhCRJNK15J+iVhKxy+J9DWvZNSGPjrJzOWYhuxNIkFQtaQUWmJhXJ7abVbaXd7QgZChyNSyHWxqNwo1bBBKBwbiFVBNdS97ydvhi36k8i5e6EusqjQsHGxgOIPRg5UEsuJjoaSZQ8J5ouZwvNJ9aQkTd8nBv9Ub/eH4jdrpqn6NVIZgftSRChkRWAeCec2xEF4nZINJW0kLXAgPokc3IMJEaLk6Jt9VTUd44p5GXEsXhGBvrEwNe1sqIjaySKUE+AqvKBq2MeTG7OuoXHqn6NFMUFBQGBm7NuGYCtCuSOO26lurpyUJ67J4guiSazA5vDjSRJnpEXjQJDsoajHwu89sxgb6HMUKexwYGxxYkkhf63mZiYzbKfrqIiSSSciVDlUDNp51lM3nkOXxd+RUNWHS6lC6VLyYjaTM4tmU58WwLNeiPZC9LD/japUvRkrBjc4wyH0UlTSUtIwcaL/HsrIyPTl8iizRCiac07YWd2Ey12pu7xCB0bZ+eGXE80mTRhW6K6oRFUzNOf5TcGZBLbeuVSiKXxKNKoVTABKJxbSCS8SNEf41b9QTS5O3plApWOhqCPF3HHnlQNpKniOUtwMM1U7Xe7va3Mf/2OFppr1mBrK0dyOxEUanQJ+aRlL0GlSY39iU9RVOpO0S0nL54frhrDlyVNFG2vxZYoQRgNUqMUmHd2OtPmJ3HgxVLAcwXwRFE9eaeAk6OvkSSJ1ZvqgjoZSmus7Dpm9jkZuoql3YW3SISqbz7ZyNXlUqAroNRWGnHZAl3BoNV9V1dXDqsRB7VKICtNN9ibITOMSR+hBUGg1eREDPJ9pFIJqDVN3HPNHN5vbgxZb5/kSGbsztOYvnEWAgKzP58b8jmHy29TTVG9byQqKT+eSavGok5UUnLffqb8ZBxxGVpaDrZy4MXSYbNPMjIyQx9ZtBkiiKYWzF9tDhuyBqBxupl4qJGd52SFHJWKJpMmWkdOKOdMb10KfRkIuzhtGjstxzC72qN6bqPTgklsC7nOvh636i+iyd2JNpQ4kogX53aS6rZxun4c141bQtM3L9PUbR1ut8d1I0kSTdXvYG7ajMvp7xiztx3F0rKTZMPsYRNePNh0zxd4+L79gEdvU4wAdwpBHTfxTphghjO2t3FC7d/k0XaKODn6mtWb6sJmhhgtIsW7Pbam5XM6LfFe4S2qUE/865v7kmCjt7rc/I7RgsERUu8bdT+/Pf4kZbayoI4bAYECXQH3jbp/ELZORubURBBgxAgNqalqmpsc2GxdXFs6BWkGDUolKBSKsPX241+bCIc8Vxa6Cxxn3JhP/dctmL61YK33HPs2bzeR/Z2hHeLbVtH5+9la3s43r1UwadUYnK0ijbuMjL86B8nd+V0m/97KyMj0BbJoM0RoXrsmoM4wPi+fsbesQpmQyO6f3e67PbnNSeFXJ/h8bn7QdUWbSRNKiFCjJEc3ot/zPfoqEFavSkCvTIhatDG7rWFHmmIetwqTt9NfRJu7Ey2RRLxUt42VlsNgOYg1LpEUwxSaajb7LaNQeA6ymqrfwVj/KZI7uADpcrYMu/DiwSRUvoAAqBtAagCUIClBqYFEPWR2jETFuyTMBP67cJ8iTo6+xGhxUnKwJWzIK4DDKVFyqIUFUw2+sFev8BZNqCdATn7f1jGHG721lx/FsnenL8RzoIVUhULBAzkPUmWr4qXav9MoNuKW3CgEBemqdG7OumXQHDYyMicboiiFFGFUQcRilUogI1MbdF1dR6dC1dvvtxzBiueigVfgmHhrAc5WkQMvluKy+zufxVZXQGj+UMMd6jdAARUf1WKptjLp1jGdy8u/tzIyMn2ALNoMEWyV5QG3tVeUU/Hma4y5ZVXAfVl1va91DiVE5OhG8EDO93u9/kj0ZSCskvA/7GpB6eegCTfSFOu4Vbi8nf6ie+5OXxDWTYSCkQWXk5Z5PhqdgepjgeN02oQCREcL5qbNIQUbL5LbPqzCiweTFL2a6YWpIeuiBQAXCC6QHOCyQBye/wuFop+cHCczRdvqMbaJ5GfHs2rpWBLjlNz3wn7uXzkBjUrBV4eaeWedZ2TQaBEp2lbvawOLJdhTr1exaHHffqdEGr11GVswbugQUpcOjpCao8vh0fxfD8pzywwdYhUVZKJDkqCx0RF03MlmdWFpFUlKUZOergkVmdgjFOrAlZWvqQEIEGy8DPUQ3677lJQXz+kr89AZtMz589k4LCJavZqmfebO5eXPrYyMTB8gizZDBEl0xrS80hV7eGx3QgkRAy1C9EUgbKicmgSljrNT8tnSfNh/+TAjTaHydoIRKW+nv+ieuxNtRpF3uX+WfU5pu78wFdZNhJsTZR9wouyDoPcr1amkjVxC84kP/EaiktMmMmrs99HFZVB97F0ajn/hu284hhcPFkuWedpetpe0YIxw4t8OePvApoZYRpcd/MqpTGgq6j0W9/Kadl77pIJVS8dwwVnpNBrtPP/+MZ772Tm8+0U13ovPWw60IEl4wokjCG9eNBqBaYWpfVr3He3oreSwY96+Gf3chQPawjIceeml/0WpVJKWloYoujCbTZhMJu68866o1/H007/j/vsfQBQjC3nXXXctV1yxFJVKxZIlV/hu/853LmXlypXk5Ixm3rwFOByOHu3PYPLAA/dTXFzMtm1fRSUqXHHFPMrKyjh+/Hi/btfJJh41NjowtThxu4N//4iihKnFcxw6YkT4ltJYSMiLo61jvDcpL56CJSPZ/7fQeYtehnKIb9d9aq1opySCezKhj52TMjIypyaKwd4AGQ+CKvBHKT4nj7xrVqI1GBhz861+97mU/fPWDZYI0VtCVYj/euLV2KRAQSzcSJM3b0cjhNc0o8nb6S+65+6srfuahw68gUW0hc0o8i6XrQvMr7h778vsbAl+MJUlhhawBIWWZMNsVGo9trZyv/vMzQdw2lvQ6NJ8mTdd6R5eLBMcQRBYujyLW3+aj0Yb+YTBBRyDIINRHevry407RQgWDiwInhEBpyjxi+f30rVoxe6U+GJPM4+/cZT3NtZy+RUZXDg/Hb0++PeKXq/iwvnpPoGurwg1ejv58ac4+49/9bvdZfRk3siE5+abf8iNN/6ANWs+5NVXX+XGG38Qk2ADcM89v4hKsAHYvn0HP/zhrQG3Hzp0mLvuupuampqYnru3KBR9f/zhFRWChd5Cp6gwffosRo+OLdQ1lhEbSYKGBgeV5e0YW5zYrC7sNjc2qwtji5PK8nYaGhyEKVUacoiiRKsptGDjxe2WQgYPQ8/e9+zFGag7vvNaK9rZ+ZvD2FucJOXHU/jUZOb89WzUSSqmPjiB2c+excQfdY4VeUN8hxpd9ykSar2KkX3snJSRkTk1kZ02QwRdbj728qN+t7VXVbDvoXuDLl+bGV4oGKVLw+hso80V/upqVwZThOgtoSrEe+omipS3k6yIQ69K4Jv2ah6teCugZru/CSZSRdMa5l1uXsaUAPdRKJJRMNsdXLRRqlN9ocIAUoAwo+Do3mexWxuC5uAEE3JkQrN1YzMOu0Refjy3rBpLQqKSu+7YzS8enMDUaWnccsN2TEbPa9oO1J6n5/qVeb4mCy/Wmui/F2Q8eMOB8zLjWbkwD0OKlpyMeHZ9a0RQQLM5+GfZL5x4eRZzFxhYW1RPVXlnXXhOfhyLFmf0qcPGS6yjt/YqWUjtCTNmzODWW3+EQiGwfv0G/vlPz2/Phx9+wKZNm5kyZQqVlZX8+tePYbfbeffdt7n22pU4HA6++93L+N73vockudm4cZPvsV6++eaboM9ZVhb5vVIqldxxx+1MmjQRlUrFSy/9gy1btnLTTTeSnp5Ofn4eBoOB3//+GbZv3x52+czMTPLyctm//wBr1qzhl798BJVKxddf72L8+HH89Kc/4403XuOmm27GarWSkpLCn//8LDfc8D9ht3H69PO57rr/ISEhgVt/eD/7939LQkIcv3v6AcaNzwfggft+hyRJzJ07m+nTz8Zqbee22+4gPz+fO+64DZ0ujhMnjvP4409gt9v58MMP2LBhI2edNYV77rmXa665mnPOORun08kzz/yRAwcOotPpeOSRh8nJGc2+ffuYNWsWM2cuxtTi5Cc/vYlLv3MRWo2Gl176N6+/9j4rrvou8+bPJN2QSl7+SF599VXWrl0LwPXXr+SCC2ajVmt47733+L//+y9arZb777+XgoIxtLW18eSTT1JVVc1NN91IU1MTa9Z8CMCaNe+zZMkVnHPOOdx5509xu11YrTZuu+32UC8Z55xzNtdfvxKAzMxMPv+82Pe5ueGG65k/fx5ut8Tf//533l/9BU89/SCr31vLzh27KP7iLT76aC2/efyf/PPl37B2bRFr3t/Ow4/8lGnTz0KnU/Ovf/0z6Pv+l7/8NeQ2BUOjV2MoTKW+uNGvIjuaAF8YmiG+ofapOwqNgKEwdcg5hWRkZIYnsmgzREhbtATLnp0BV0SDYUnUUjJ9ZMj7p6eO5/ujZ3HPvn9F/fzRhv4OVfp6pClU3o5SUOKS3JhcbVQ6Gv0e463Z9r6OJlc7Rc3bqbDV45RcfSrsBBOpomkNi2U58Ah5s/RncWb+tTSfWIO9rQy324lCoUabUEDayCV+mTSCwv/gJFIOjkIhH8zEQmVHa0VFeTtvvlbBLavGIEnw1OOHeWfNzIDlS4+2oUvTBBwIy8GIsZOXEUdpjZWKunbufX4fKq0FfcEOWo5NwyWG//fsF06combFANa/xjp663bKQmqsaDQa7r77Z9x++49pamriuef+zI4dO9i7dx9paWls3VrC00//nh//+A6WLbuCt976t++xY8eOYdmyK1i16jba29tJSkrq9fbMmjWLCRNO5x//+CeXXbaYEydqePbZPxMfH8+LLz7Ptm1fApCVlcUdd/ykQ3D5Kdu3bw+7/KhRo7j99h/jcrl4+unf8c9/vszWrSXcfvttALjdbjZs2MiFF17I2rVrWbBgPsXFxRG3V6HQsvDi67nssnncfsf1rLr1IX5218389/+K+fjj9WRnZ/Dq63/k4vnX8snaDXz2WTHffLsLlUrFbbet4r777qe11cLVV1/le33T0tJYv34T9/7iSRYsmEdiQhoXXbiCKVPG85e/Psl1161k2bIrOH78OA888CAzZxZy+eWX02pycuFFhRgMqSy8eCVqtYoP//sPPv10EwCnnz6GSxfegF6fyNpPX2Ht2rWcf/509Ho9t9zyI1QqFX/721/YurWEhQsvoaXFyK9+9T/MmDGDu+++K6wj66qrruRPf3qWXbt2kZAQ+Rhh4sSJXHPNdRiNRv761+fYsmUrCoWCWbNm8YMf3EJycjIvvPA31nywla++3MO0aWexZ/ch2tsdTJ48CSQYO3Y83377Lddcu5TKyhM89ODvSR+RTNFHLwd933vC6A73YFNJi68q248QAb4wdH+rIu2TWq/yhSnLyMjI9AWyaDNEUKWkkjx9dtiwSABBo6X97DNxJsZDiOagOpuRp75ZHfQ+BQKFSROocbb0OPS3pxjFtn4TMfqyQrwr3fN23mvcGrFmu9i4h2+sx2l2tgaISN2FnZ42IwQTqaJtDYt2ua5CniAIUWXP6BLysbd1OsbC5eCAJ7xYJnrECM1F3Wk3Otn19LcBB8JyMGLsLJ6Rwa6jZoxtTkZM2EhKzgGajpyPy+n5LokUUNw9nHigiGb0tvSlF3z3KdSykBorubm5lJdXUF/vGeVYt24dkydPZu/efVitVrZs2QLA558Xs3LldX6izTnnnENx8Tra2z3DjK2trb3eni1btviec9q0aeTn5/Od7ywCID4+nvT0dABKSkpwu918++0RsrOzIi6/adMm34n7uHFj2bq1BIDi4nVMmHA6AB999DF33XUna9euZeHCS3j44V9G3N61azcAsG/fN9x2+0oKxiZyycKZzJ8/iwceWoVSKRAfl4hS6XGYehvccnNzGTduLH/+87MAqFRqdu7ciSSBxdLGu2+vRxQlzjprMu+++zE2q4uvvjxMq9mK253IpEmTePXV1wDYurWE9nYroigxf34h31l8IXPnTcPhcJOamsTceaejVAhs3PgVVqsNq9WGJAkolUqmTZvGrFkzOeecswFISEhk1KiRTJo0iddeex2Abdu2ce+994R9Hfbt289tt93Kxx9/wrp16yK+bnv27KWx0XPxaMOGjUyZMgWA9evX43Q6aWpq4ttvjzD+tAK++mo3v/nNPezZfZDPPt3AgotnMmJEGmZTK06nkzlzzmf8aQVcddV3ERSh3/eeIAgCOcuzyFpgYP+jRxDNrqgCfGHo/lZ13acTRfW0lVtxixIKlUBCfhwjF2fIDhsZGZk+RRZthhCGJZ4Rk2C1rABKfSrJ02Yz5vLvU9u8ja2mQ5jcgakVFdaGkM8xWpvOjVkL+m6jo0CSJFY3lQQdNeorEQP6rkI8FNHWbDskkVJbbej1dAg7AMvTA90R0RCtSBUtyco40tUpvRby0rKXYGnZ6RdGHApveLFM9Kg6Wity8uK5ZmUeBoOWm28dgyHdExz545+N55nffUN7m+cAOyU3jkm3jQk4EJaDEWNHn6im8MxUdrX/h+S8nShVTqymzmaTUAHFb/zyfN7feBynKFFeN/BW/1hHb7U5spDaX3gqkgfWOSAIAr/97VPs378/4D5vcLEkSb68knDL22w2v/UGo7KyEo1Gw3nnTcVms1FXFzi2HLAdds92uN1uEBTU19oQBIGrrrqDutpGJk5O4ZtDrbi8BQwdgTJuN+zZc5Brrr7DLywY8AkwwZCQMJucOEOI4G63xNO/e4HtOzZy9FuPiDZxcgpnTbnQt60ALpfbJyS99NI/+Oyzz/3Wc9VVVwVdv8vl8r3e6i4i6euvv8G2bV8ya9ZM/vd/X+Tmm2/BbDYHXYfnZZC6/bdEsMQyAYGy0ioKxuQwa/a5HDy0m4mTCrjp5qV88+0hAOITlNz9s1/z5Zd70MUpyc3r/I3o+r73BnWKmrSpKdR/0RxVgC8M/d8qdYqavAF0TsrIyJy6yEHEQwhBEEhfuoLcXzxGypyL0RWMQzM6D13BOFLmXEzuLx4jfekKFAoFy9NnMjVpLIoYIkW1gpqfZF/Wj3sQnNVNJRQb94QcXfKKGKubSnr1PN6RpodzVzAvZQpjdFnkatIZo8tiXsoUHs5dwfL0mT0WhrrXbC/KPJfHJ17L/557Gw9NiK0i3SGJlJgPYwoT8BuJZYZC5uvPQq8MLqzolQnkazIifkYKtJn8Pv8mHsj5Po/kXc0DOd/nmowLe+S8Umk8GTeCInw7UdfwYpno8R5IV1W089C9+7j+qi956YVSnnr8MFcu2crjvzzoE2wAtJVWNty6i/1/7cw5koMRe84lhVrS8w+iVHlGiCRX8AB071dM9+8a0TXwVv+0RUtQpgQGjwdDqU8lbZEspMZKZWUleXmebBilUsncuRexb5/nhDQuLo6ZMz0XCubPn8fevf4nqjt3fs38+fOIj48H6JPxqK7s2LGDpUuX+D6L48aN65Pljx49yowZMwCYO/civ/s++eRTHnroIT755FPfbcuWLWPZsmXBnzTIb/L27Tu56abO+vkzzxwPgMXSTmJiAg0NDjZtOMTIkdkU5Bdgt7lRCGpS9VkYjU4/bWz79j1cfrnnYtXpp49Bp9NRX9fEtpLdXHSRZ9tnzJhBfLzn+3XDhi+5csXlaDQeMXzsuDw/caU7O3bsZPHixb7lc3Jy0Gg07N+/n/nz5wFw/vnTKS8vB6Curo7x4z2v6+zZs3zrGTkym6NHj/LKK69SW1tDRkYG6enp/OlPfwz6vGedNcX3mbvwwjns3buP/fv3M2fOBb52s/Hjx1PZkWv17TelLFmykI/+u4PPPt3O1Vd/n88/286BfSbWfrSV62/4nk/4ivQ56SlyiK+MjIxMz5CdNkMQVYqejBXhR1GMYhtfW0pxR3nVToWSefop6NWJfbGJUROLO6XEfJgF+rN6PabVFxXiwehes7227mvW1n3NM1NuCtnYFK6K2+hqo6h5R4+3NVTuTnenjEls49/1m9jdXuprnVIgkKHW86OsheToRvTo+UPhDSU2N20O6rjpHl4sEz2LFmewZ5cZU4Tab4B4YEq32+RgxN7xZcsaXMrOK9+J2gS8w6zdA4ozUrU8dstE3l5X5WueMreJPkfAQBHL6G3ytNmnZN13VaWVV16qoqnJgdsNCgUYDBpuuDmHnNzIV/odDgfPPPNH/vCHp1EoFKxfv8EnzjQ3NzNr1ixWrbqVqqoqXnrpH36PLSsr4733VvPCC3/D7Q4eRHzDDdezZMnl6PV6Vq/+D6+99jrvv/8Bl166iFtuuZm0tDT+/e83+eSTT3nxxf/1y7RZs+ZDRo4cyb/+9TIKhUBlZRUPPvhQyH2Jdvk///kv/PKXD/OjH93C/v37aWvrdP2uW7eOO+64nS++WO+7LTc3J6h7B0Cj7vz3oFBARpaO119/lVWr7mBLybuo1Uq+/HInd/7kCT54/xOe+dPD3H7HjXz3sh9w648e4OnfP0BCQjyCIPDoo89SVlYFgE6nJHtUHIcOf0nhzHMp+fI/uFwid935KAAv/f1tXvrnk7z22ivs3buP48c9DtnNm7cxc9aZ/POfL+J2Q0tLC4888hCpaRoEReC/3W3btjFmTAF///v/IgjQ0mLk3nvv4733VnP//ffyr3+9THt7O08++STgGWVavPg7/OtfL7NxY2e+3IoVKzj33HNwudzs27ePo0ePcvrpp4UcTTp48CAPPvgAWVmeIGJvYHVJyTZefvkfuN0Szz77LLo4FyqVwFdf7SEjMx2bzc5XX+5m5MhMtn/lcf2+8sp75OWPYv3Gt9FqlVRVhf+c9BQ5xFdGRkamZwiSFL64sKGh9/PVMn3PG/Xr+cIU2VrqJVc7godzVgzoyQIEbmc4EQNgXsqUfhFc+oJHK96iqlv4cLShz89MuYk3KjcENDuN0WXxQE5sLp3eIjpaaK5Zg62tHMntRFCo0SXkk5a9BJUmuivyUT2P0xhVeLFMbHzwXi0bihtxhDngVQJnAlO73NY1GHGgvwdOFt6s/BU19s5RI9eR/+HbQ9EHTSoEWHjeCJbPyYq8cB8iSRJNa96JOHprWHLlKfXZcLvd/OG3pVSUWYNWOAsC5BXEsfnLH/e45trbDDRQuCQnZmcjDrcNCQkBAY1CR7I6HaXQdyfAWq0Wu90jAt5ww/UolUqf2HT++dO55JJLeOyxx33LP/nkEzz88CNBa85FUaKyvD3kOFNXVCoBCXBFGVCbkKAie1Sc35jTN4daEUXPaFNCopqsbBVTpkzhhhtu5LuLb4lqvQD6VDUZmeFdpb1l6dIlNDQ0+jKKvJxzztksWbKEX/3q0ajW09DgqVQPV/stKECfqmHECE1U65QkiQ8++CiqZbs/rnp1XVQhvqfS95GMjMypyYgR0TlsZafNMKW76wPCCyIqQTkoP36xulOO2WoGatNiJljNdjRNTOGquEV37/NookWSJJqq3wnqgLG3HcXSstPngOmLz4pKrY8qvFgmNpZ0tFFsL2nBGOSANyVFxYQUFVOVILmQgxH7EFHyb1ZS5q1BVXYVoi05qse7JTpbpBIG7r3wjt7q5y6kee0a7FVluJ1OFGo12pwC0hYtOSUdNn/4bSnlpaFzhiQJykutVFfayM2P75dtEEWJ5iYHNpvbL5clzaBBFUMIqySBSaynXTTh6vY5dbitWF0W4lUppKgygk0jxcyZZ57JT35yBwqFkpqaGh5//DcA3Hjj/3DppYu45x7/zKT7738g5LpUKoGkFHVEUUGhEFCqBOw2d+93AEhIiGP1+y8SH6/G4XDyxBNPoVIJUYtHaYboxI3e8MEHa/pkPenpGpAkTEYx5GssIIAkIUlBJ9b6DDnEV0ZGRiZ2ZNFmmOIdc+lKOEFkIMWBrgTbznAiRpW9kfcat/Y6lLg/CFazHU0TUzhhR6UYuH+CTdXvYKz/FMkdfETC5WzBWO/JIEjPWRF0GZnBRxAEli7PYu4CA2uL6qkqt+IUJdQqgZz8OBYtziBFPuDtF1TdnAozc2cy8px0Nu1w+hptgqFUgDdDdbBapCC60dtThapKKxVl0QVD22wu7DYXWl3wDKNwhHLZSBI0NjpoNTkDRAKb1YWlVSQpRU16uiaqE2iTWI9FbEaSggsaLsmJRWwGQK/ufU7Irl27uPHGHwTc/vLL/+Lll/8V8/rSO8LUg70e0CnsWNs7j2W8409KpcDRI63k5iXQUG/D2u457tDqlGRk6VCrBbJHxaFWe9xSo3LiqK5sx2y2cNni6/1Cd6MVj5JS1DGJan3Nrl272bVrd9TLC4Ln/4WTo9xuj6iDIETttukNcoivjIyMTPTIos0wJZjrA0ILIgMpDnQlVneKG6nXzUr9RbCa7WgIJ+zkawcmZE90tGBu2hxSsPEiue2Ymzajz1oojzANcVJS1KyQD3gHlAxdvt941NbaIqT0IhLz5mCunhjScXP57JH835YTiB0a9mC0SMn488pLVb6RqLz8eG5ZNZaERCV33bGbXzw4ganT0rjlhu2YjB7XSm2NnbyCvnPbNDaGH1cRRQlTi+e5I51AuyQnbaIppGDjRZLctIsmklRpKIWhdfgnCJ79TE1Vh3UeVZR3ijY2m4v6WhvZo+JAgsryNtIMGp9oY7e5KDtmCfu83rYpL9GKR97lhguiKNFqciKFEaPAI9y0mpykpg6uKDUYOIxOaorqaauw4nZKKNQCCXlxZC/OQKOXL4TIyMgMLnJ71DAlTxf8ZH9Fzmz+Xb0p4PaBEge6E2w77977MjtbAl02XvqiWak/8NZsa/roYFevTGBx2nl9sq5INNes8RuJSk6byBnTfsU5c/7GiFFz/ZZ1OVtoPtE3lmwZmZOJGWlLSFD65z4JAmSeuZGCOa+SWrATXepxtMm1xOlrmTQujjiNgpUL8/ycg4PRIiXjT1NTZ3VzRXk7b75WAXgcME89fjhg+VD10D3BewIdzs0BnSfQkcZ1zM5G3N1GopI0qeQmTSA7YQwJ6hTf7d7Mm6GKSiWQkaklNy+OvPx4cvPiyMjU+gSESA7cERm6YK3XIZ+r+4iTVzzKzY9Hn6pGF6dEq1Ogi1OiT1WTmx/PiBHRuZ+GEs1NDt/nSKdTUjA2kXGnJYEAufkJTJycgkrlOSXwjuydKkiSRNV7tRx8/Cj1XzTTVmrFWmWjrdRK/RfNHHz8KFXv1RIhAlRGRkamXxlal1pkoiaU6yOYq2MgxYHu9NSd0ttmpf5imcFT3Vps3BO0EUuvTiBeqeWErTnsejSCisLkCb1uyooWW1u539/m5gNkjF5AcuoE3G5nwPL2trIB2S4ZmeFEoiqVM5Nns9v4KU7J37Wm0rWRNflzANQKLVnuucwbuQC1SuHXIAWgUg6zM76TEHcMsSjxcdlYbX130tbUaEcUPRug1SkZOTIOhVLg2JFWcvISSEpS8c3hVlyiG1GUaGq0hw28tbtsAUHKkiThllwICLjcot/9dpc15L54T9jtXZwu2h5k7PQXWq2AzerZdq1O6RN0skfqUKkVKJWQnKzCbAr8XeuKIAgkJatQKgn6WiiVMCIjuJtmOJ6826wuvD3oNptIXa2V7JFxIElUlls4c1IKElLnMlZXxP0cPTq3n7d6YKheXRe2zcppFKkv9gidOcsHNkReRkZGxoss2gxTvK6PUOKBl4EWB7qjVyVwTuKYmJquvJTbA8OWBxtvzfaBtgoqHYFXK+8c910+PPFVWNFGr/S8d14BaCCQAoQZBUf3Povd2kCKYQpNNZv97g0m5MjI9DcD1WzWGy4weKrqD5k3Y3EFNjE5rUk0Vk1k7+EpfErwiuP8zMg10jL9S9cyqJy8eK5ZmYfBoOXmW8dg6Bh9+fHPxvPM775h+rkPodUKPPPXSX3y3E8/cdQvAPnMScncsmoMP7t9NwDvrJnpN5pVMCaOnz8wLuT6Xq14kAZHBaIlgZathTjqssClAqVIwZgELltuYHXtE77lMzR5rMz7jd86JElizeq6kAHnGq1A4cxUvn/NyEHNmzMZnTz1+FFP9koXsrp8PWSkEBa9XsW0wlSWnELtRE8+eoTqKpvv70ifudG5Ou5/ZPxgbOqA4jA6aSppCVs/DuB2SDSVtJC1wCCHJMvIyAwKsmgzjPGe9JeYDwd1sgyGOBCMSFdrklRxtIqBGQ+DFZ4cDcH2aHrqeBJUOr42lQbcp0ZJjm4E+doMFqedN+AimqDwP8gYWXA5aZnno9EZqD72bsDyCoV8UCIzcAx0s1lvEASBOekrmKpfyLbmNdTZy7CLDmobXViaM2k8UojLnhjy8fpEFYtnDM64qkwnBoOGmhMet1RVRTsP3Rv+woKhDzNMxBhHrZwRxqOUqGneMIfWAxNxtfrnKh0+AeV729CdOYfUORsRBFAG+X5fs7qODcWNOEKcvDrsEhu+aKaiwsrP7x/r9+/QZHSytqieygorolNCpRbIzesIRY8xCyTcugDWFtWHDdMNR4pexVnnJp+SYe0qdef7FUmkbG9zoR4CrqqBoKaoHqdRJCk/nkmrxqJOVFJy336m/GQccRlaWg62cuBFzzGd0yhyoqheDk+WkZEZFGTRZhjjdX0s0J9FUfMOyu31iG4RlUI1aOJAMCrtDSHvm204A7Oznb3mioD7Bis8ORpiDVjO0Y3ggZzv9/dmhUSXkI+9rTNA9UTZB5wo+yDk8tqEggHYKhkZD8Ox2SxBpWd+RmcT03tVtRR/04grzAm5Ri1QeEbqgNZ9ywTnhptzeOqxowFjRcEQBM/yfUVfn0A3bJyJaacByRlcWLKZddh3TgUg7cKNZGr9v99NRidflbSEFGy6Ul5q5Z23alhxzciw7pzyUit7d5mjdrREWteXW42AhN3e89EkAYIKNn0pOg1VcvPifO6uaETKnPxTww3YVuF5TVrL2/nmtQomrRqDs1WkcZeR8VfnBAQ3t5XLIfIyMjKDw9A9K5aJmhRVwpDLfulKsNpv8DhTlow8n3v2/Svo/YMVnhwNsdZ/D/a+pGUvwdKyM8DFEAylOpW0kUsiLme0OCnaVk9FfWfldF5GHItnZKBPPDkOdGX6n5Ol2WzZBZkAlBxqwWgJkneVqKLwjFTfcjKDS05uHHkFcX5jSqHIK4hjdE7fncT25Qm0yeikbs8oJGeE5iinhtYDE8mefpQZBf7f72uL6jEZxahatAC2bW5m0eIRfPF5U1h3jtEosqEjC2RphCyQSE4fuz26EKLskTp+dPsYHn3oYMD2G40ia4vqfa17fSk6DXUWLc5gzy5zwFhZMDy7KvgyjU5m3MFEdgVUfFSLpdrKpFvH+C8fwfUmIyMj01/I7VEy/U6oevJQTVcwuOHJ0bA4bRp6ZXQupqGwLypNKsmG2QiK0GGWAIJCS7JhdtiTYkmSeG9jLY+/cZQv9jRTWmOlqsFGaY2VL/Y08/gbR3lvo9y0IBMdJ0uzmSAILJ+TxcPXjWPe2WmMyY4jN0PHmOw45p2dxsPXjWP5nKyT/iRoOHH3fWPIHxMXsglIECB/TBx33zcm+AI9xOPgiO6amV6v8o0GBWNtUT1mo5u8/Hgef2oyf/zr2QgC3PvQBN5ZM9PPKeJqTca5fTEJKr3fOio73AbRtGgBOBwSH66ujcqd43BIbC9pwRQmGDgWp08kamtsbFrfGHL7y461+/7bKxQFy/CBTtFpzeq6oPcPJ1L0aqYXpqLRRP7+kSSPMHcy7HckFB2ut6S8eE5fmYfOoGXOn89mxm8nMem2MTQdMPsvf4qMjcnIyAw9ZKeNTL8TzJUCoZ0pCoRBDU+OhuESBN0Vw2hPgGqw3BDwOGy8uSHhWL2pjuLdjThCjIEYLSLFuz1XV5fPkZsWZMJzsjWbpSSouWa+nHkwHFAoFNzzwDiqq6y88lIVTY0O3G5PSLEhXcMNN+f0qcPGi/cEOpyzBECjEZhWmBo2f6W74HLLqjE+weKdNTMDlnfVBX42Y83YATiwr5VWc3AXbXe6O1y6E6vTJxySBDu2hy4COF5l44P3arloXlpMotPcBYZhn4OzZFkmDpuLjeubI44Fnkz7HY6EvDjaSq20VrRTEsHxBpBwioyNycjIDD1k0Uam34ml9ltA4KKUyT0KTx7ocZ3hEgTtRRAE0nNWoM9aSPOJNdjbynC7nSgUarQJBaSNXBJx7MRocVJysCWkYOPF4ZQoOdTCgqkGOb9DJixys5nMYDM6J44HHz1tQJ9zyTLPmFyotqauDUfh6ItQY2/GTjT5Ol5sts5xpWjElqowWSCxCk85uXHcde/pIZ/LZBQ5c2Iycxdk8I8XS0lM9FSAS5Kn6n395w0cOtDqGxWKtP2RRKfhgiAInlJvCZKSlOhTNbjdEserbZx7np5b7xjHPXfu8b2O3v1evjie5rVrsFWWI4lOBJUaXW4+aYuWoEoZGq1+PSV7cQYtu8w4oxgbU+tVjAzjepORkZHpT2TRRqbfidaVokDgopRJMefzSJLE6k11QbMkSmus7Dpm9mVJ9OVownAJgu6OSq0nI++GyAsGoWhbPcY2z2ucnx3PqqVjSYxTct8L+7l/5QQ0KgVfHWrmnXXVGC0iRdvqZdeBTFjkZjOZUxFBEFi6PIu5CwysLaqnqrzzYkNOflzUDUexCi7BQo29GTvR5OsEIxqxJVwDVqzCU329J/8qnLBz8ICZg91GW3zb4vQ4bmLZ/nCi03DCK5C1trrIyVP7ar+/3mFEn9o9yFoicc//UXngAC5jt1a/8qNY9u4kedpsDEsGv9Wvp2j0agyFqdQXN4at/VZoBAyFqXLdt4yMzKAhizYyA0J/ulIGe1xnqAdB9wUWsYVtzWvYWZUPGAAor2nntU8qWLV0DBeclU6j0c7z7x/jjV+ez/sbj+MUJY42t/BG/REqbPU4JRdqQUmeLsOTCTQEBS2ZgUduNpM5VQjpBr28527QWAWXYKHGixZnsG1LbJkyOp0CpyO68SgILhZ58QpPI0fFkZSk4i9/OkqaQYNOp+AfL5byPzfn8/fnS33Ck6IP9IFYI9ci1a4PF2IRyGYqN1Jg2YmL4O5Gl7EF44aOVr+lQ6PVryeM7nCzNZW0BHXcqPUqDIWpvuVkZGRkBgNZtJEZEPrLlSKP6/QvkiSxqekdDpk3Y3G1YBeDO3S8F9m8V9skJJhwjON59VSa/FuBSu117LKU+kS64XqFTqZv6I9mMxmZoUR/ukFjaQUKFWqcoldTOCuVDV+EzoLpvp4JZyaybasRiM7lE64BKydXR3mplRPHPf/XlRPHa/nko1q/26acrY9qhCta+qJ2fbgQrTOLNhNnKPajDiHYeJEcdszbN6OfuxBVir6/N79fEASBnOVZZC0wcKKonrZyK25RQqESSMiPY+TiDNlhIyMjM+jIoo3MgNLXrhTvuE6kUR1AHtfpAZua3mG38VOckkd4EZSdB8R5mfGsXJiHIUVLTkY8GalaHrtlIm+vq0IcdwzGHMelCl7TanS1UWzcA8Dy9EBru8ypg7fZzFj/adja72iazWRkhiLd3aAqrQXDaVvRpdShUIi43Sp2t2YhbrmMFbNjy9bpq1Dj718zkooKa8QKdLUaphWmMne+gUMHLZiMYkSXT6QGLEWMQtWXJc18WfJl2GViCTXube36cCJaZ9ZFyq0kKSy+v+Pz8hl7yyqUCYns/tntfsu6jC00r11DxoqejV0PFdQpavKGeW6RjIzMyYtc+S0zrKmo9xxgekd1AN+ozsN/389V83P8rpCV150cc+kDgUVs4aB5s0+wAYhL6bziWVHXzr3P7+OqX37JCx+Uct8L+7n7L3t5e/MxyKmDEIKNF4ckUmI+jEmMHFAtc3JjGH0l+oxLUKqDh1oq1anoMy6J2GwmIzPU8HeDSoyYsIH8Oa+SVrCL+LQT6PT1xKedQJ/3NeUpf+TzmjeRYpzdWbIskwvnp6MPUSOu16u4cH562FBjQRD4+f1jmTPPELIWWq9XcdGCESxZlhl1hXQkschkdLJ7V/Dsmd4QbX15NEQSnYYT0dbNZyj8Gz/bK8qpePO1kMvbq4Z2q5+MjIzMcEd22sgMa4LNmXcf1emK6Do55tIHgm3Na2hz+Y+szC1Usq5JibE1jAX9tAqIc/j+XJR5LrPTzyBDm0JlewOPH+4MlzW62ihq3nHSZwLJhKcvms1kZIYiXd2g0+fu4FDbLkQpuKNMpWtlj/kzNGolc9Kjzwjpq1BjQRBYcc1IFi0eEdV6+qIBy1v3DbG5YwYKr+iEBG+/cZzKCiuiU0KlFsjM0gJQV2v33Zab1/E66YfmOE20ziy1EHncritup9zqNxA4jE5qiuppq7Didkoo1AIJeXFkL85AM0Q/czIyMn2DLNrIDGu8LppwozpdhR2Vsndz6UaxjaLm7adEsG69rTzgtvh4J4VTEij+yowj1DFaisXvz7V1X7O27muemXITH9d+HbB4ub2+D7ZW5mSgN81mMjJDEa8btLq5nriWDaAOPQIIgMLJIfNmpuoXkqDSx/RcKSnqPqmljnY9fSEWeduMIPrK71Akp6gwm0WQom/TStGrECC06DRDjyRJ/O7xowHLBBslKy+1sneX2SdWDcXMtmjEtgS1DroYoOJz8si7ZiVag4ExN99K6Usv+D1GoZYFg/5EkiSqV9cFDUtuK7XSssvsC0seip85GRmZ3iOLNqcAoqOF5po12NrKkdxOBIUaXUI+adlLUGmCjyMMF/Iy4iitsfpGdSKRn9mzuXRJkljdVBK0/epkDdYVpUBVZm/TZhxp6zhz0i2UHknDbAl8nELtpvtg1PTU8bgkNzuNxwKfxx3bFT0ZGRmZ4YL3ooHhtK2g7jwLnjpiHhfnXkOzrZattR+xv2mr7z6Ly9PWNz9jeAiYvRGLYq379qJQQFKyiqRklZ9I9Ldny6mutEXdpnXWucksWpwRUnT64vMmNkZwpXTHaBTZUOxprFy6vO8bK3tLNGKbfe1pmDZW+h7TXlXBvofuDblObY7c6tefVK+uC1tL7jSK1Hd85nKG4GdORkam98iizUmMJEk0Vb+DuWlzQDOLve0olpadJBtmYxh95bAVGhbPyGDXUTPGtiiaMxJVLJ4R+1y6UWzjz8f/jypHA6EO207GYF2VEHjlbFrGxUxOn0Xy1DTeP/QWm79SYzVmIbmUaNUqzss5jWNp8VQ4/dWcFTmzebNqY/DnUchfQzIyMicnXjdoSnpDwH1OtwONMo52Z2vAfXX2UyMjxNtmBNG7Y7qOXXU/dln14zx+/dAR7PbwmWre9XjdQMFEJ5PRyVclsVWhe3E4JLaXtDB3gSGq0bTBIJzYJi5agmXPTlymKFr99KmkLZJb/fqLtkprWMHGi9sh0VTSQtYCg9x2JSNzEiKfLZ3ENFW/E7aRxeVswVj/KQDpOdHPzw8l9IlqCs9M9WvmCIZGLVB4RmpMdd9ed80W00HM7sgBxt5g3QX6s3pUXz7UyNDlU2M/6nfb1toittYW+f7Omtx539kpFzM/Yy5v1GdSYfIfebp778shnydfe3IEPMoMT+6441aqqysjLygjA4wenctf/vJC5AU78LpBnS4Hyi63723azM6GdVw4ajkXjLycUrO/K8TlPjUyQrxtRhBdi9PIUVruuKsgpBCiT9UwZ56B9Z834gx3TBAhIBk683aizdpZ9J0sSrY2+W4zGkXWFtX3ycjaQKNKSSV5+myMGz5FcoRp9dNoSZ42e9jWfUdiMDNkvCNRdcWNSA6JpPx4Jq0aizpRScl9+5nyk3HEZWhpOdjKgRdLAY/j5kRRvdyCJSNzEiKLNicpoqMFc9PmsBW6AJLbjrlpM/qshcM26HPZBZ757JJDLRgtQeazE1UUnpHqWy5aVjeVUGzcg0OKfnznZArWnZG2hKOWnQFhxMFIVKYyI81zpW1x2jR2WUoDxsiCoVcmsDjtvF5vq4xMT6murhy2TsNgiC6JJrMDq92F0yUhSZ5wdrVSIE6rxJCs6XW216lMrAKf1w3qdvsfbvlci5o0Pq54NeBxSsWpcaV80eIM9uwy+8KIw6HXq8IKNl76IiAZOvN2os3aKT0WOC9cVT58GysNSzxtfebtm3EZA48DlPpUkqfN9i13MjEUMmS8I1FSh8Omtbydb16rYNKqMThbRRp3GRl/dQ6S21+cbBvGnzkZGZnQyKLNSUpzzRq/kajktImMGvt9dHEZVB97l4bjX/juczlbaD6xZtgGgAqCwPI5WSyYaqBoWz3ldVZEl4RKKZCfGcfiGRkxOWzAMxJVYj4cVLAJ14YEJ0+wbqIqlTOTZ7Pb+Klf7Xd31IKWM5Jn+0Iz9aoECpMnRBS8NIKKwuQJJ4UrSUZmsJEkaDQ5MLU7A1vyJHC5JWxON63tIikJatJTNJxEWtWQxesG3d2aRXzaCd/t3V2L3cnUnhoZIdG2GUXjjPHSV21asebtOJyBI1nBGi6HC4IgkL50Bfq5C2leuwZ7VRlupxOFWo02p4C0RUtOWofNYGfIOIxOmkpaQo9EKaDio1os1VYm3TrG7y73MP7MycjIhEYWbU5SbG3lfn+bmw+QMXoByakTcAexXdvbhv/8fEqCmmvm940ltKh5e0inSKQ2pJMpWPcCg+cK2iHzZixBHDeJylTOSJ7tW87LMkMhQNDgZvA4bLzBzTIyfYXR4qRoWz0V9Z0naXkZHuFWn3hyOxcaTQ5aLE7cUvgDdtEt0WLx/AaM0GsGYtNiRhQlmpsc2GxuJElCEAR0OgVpBg0q1fBTmpZdkIm45TIqbEdQ6gLza7rT1bl4KtBXzpju9LZNy5u3E23WjkatCLhNPQw/r91RpejJWDE8L+r1hIiCSQf9mSFTU1SP0yiSlB+P5JawVFpJyovn9JV56Axa5vz5bBwWEa1eTdM+s99jFSfBZ05GRiYQWbQ5SZEChBkFR/c+i93aQIphCk01m/3uDSbknMpU2MK7ZcK1IZ1MwbqCIDAnfQVT9QvZ1ryGOnsZLrcTpUJNpraAGWlLgtbSCoLA8vSZLNCfRVHzDsrt9YhuEZVCRb42g8Vp58kOG5k+Q5IkVm+qCzoiWVpjZdcxs29E8mQahfIiuiRMbZEFGy9uScLU7iQ1ST2kRqUkCRobHbSanIjdrhbbrC4srSJJKWrS04eXS0gQBFbMPo3Pay5gj/kzUIT+vVULWsboCvlgfRsV9Y2nhPjYV86YvsabtxNtE9W331h4/JcH/W7Lye9ZY6XM4NFVMBmsDJm2jtG81vJ2tGmez35rRTslUXwOE+TPnIzMScnJc3Yp44fQbR5+ZMHlpGWej0ZnoPrYuwHLK06R+flocUqusPeHa0M6GYN1E1T6HtXPpqgSTop8H5mhzepNdWHDyI0WkeLdHiv78jnhrewvvfS/KJVK0tLSEEUXZrMJk8nEnXfeFfX2PP3077j//gcQxciuu+uuu5YrrliKSqViyZIrfLenpKTw2GOPMmJEBqWlpTz66K9xOBxB19FkdiB25BroNEpGpcehVAiUnrCQm5WAQgBzm5N6Y+eYozf7JjNVG/V+9Td//evfuOUH99HSdCLo/aIoYWrpcAmN6BuX0JIll2MwGPjnP0OHpfcV87OuRqNWhnUuKoxn80nx2RgtzX73nQriY2+dMX1NLHk7wfC2U8kML7oKJoOVIYNRVF8AAQAASURBVOPu8lsWN0KL5JJwmCJ/DtV6FSPlz5yMzEmJLNqcpOgS8rG3dTb/nCj7gBNlH4RcXptwaszPR4taUIa9P1QbkhysKyMzsBgtTkoOtoRtjwNwOCVKDrWwYKohbMbVzTf/EICbbrqRpqYm1qz5MOZtuueeX0S97PbtO/j447X8858v+d1+3XXXUly8jjVrPuS221Zx2WWXsXr16qDrsDncXf7bRW2zjVHpcaQkqnGKbk40WDkjP5lGk8PPjdP1cYONKEq4XBJud4SRBLdEq8lJaqp62I1KRXIuNn5byIavHTicwS8axCI+yvSeaPN2ghEqg8dkdLK2qJ7KCiuiU0KlFsjN63AT9XMbUTCG2vYMBdzBfksGOENG0TGal5QXzxk3FVCztZHKj2vDjmwpNAKGwlS57ltG5iRFFm1OUtKyl2Bp2ekXRmxxJ7DVVkidKwsRJSpcZCpruSDpIAUjT535+WjI02VQaq+L6TFysK5MrIhGG81FR7BVmJCcbgS1Al1eCmmLx6PS6wZ784YFRdvqMbZFdyXcaBEp2lYfc/bVjBkzuPXWH6FQCKxfv8Hnyvjwww/YtGkzU6ZMobKykl//+jHsdjvvvvs21167EofDwXe/exnf+973kCQ3GzduCnB0fPPNN0Gfc+bMQp+AtHbtJ9x++20Boo1Op+ORRx4mM3skX27fw8IFc5g47RJmTD+Xu39yM07RzaiRWfzng7X89/23ALj/57ex5DsLqD5Ri0IQePftN9i1a3dU+3LppYvIy8vjhRdeDPlaGQwG7r33F2RkjMDlcnH//Q8ydeq5fo/zrlMURX7+87uZMmUKhw8fQ6PuPNl4/c1nycxMR61W8fRTL1JUtM53nzfzJiOz0yU0a9Ysbr75JgRB4NChwzz11O+YMGECP//5XajVGvbu3csf//gn3G43s2fP5vbbV9HaaqGsrJS6Os847OjRo7n77p+RnJyM0Wjk8cefoKUlcnterHR1LnpPmreXtlNdb0OSQNmxWwo7IAECuOPAZQAH0YmPMn1DpLydYATL4JEkiTWr64Kup7zUyt5dZt9jBsJFNdS2ZyjRVTAZrAyZhLw42kqtUY9EKbQCGfPSGR1j7pOMjMzwQRZtTlJUmlSSDbMx1n+K22Vno20OB5wTaZWS/ZY74R7FMdMUZlXYWDZWOuV+nEMRS201QIoynpnJZ8jBujJRIUkSTasPYy45jsto87vPXmrEsquO5MJRGJZNOKn+TfZHUHBFvceanp8dz6qlY0mMU3LfC/u5f+UENCoFXx1q5p111b7ly+tis7JrNBruvvtn3H77j2lqauK55/7Mjh072Lt3H2lpaWzdWsLTT/+eH//4DpYtu4K33vq377Fjx45h2bIrWLXqNtrb20lKSor6eePj47FaPdva0FDPiBHpgEecmDDhdP7xj3+ybNkVHD9+nGt/cBcXzJ7J9dcsQ6dWkpakYdLEM1my7Gra21p58fnn+PLLEs5KFrlg5jRmX3Il6Wl6Sr5Yzbtve54v0r5Ey513/pQvvviCjz9ei0YTfoTpoosuJDk5meuuW0lSYg5FH70GgE6n5Omnf0tbm4XaGjefff4q5ZU7+eZQK6LocQfZbJ0uodTUVH7849t975H3dX7ggfv4zW+e4JtvvuXRR3/FggXzWb9+Az/96Y9Ztep2jEYjf/vbX3yizV13/Yzf/vZ31NXVMXfuRfzP/9zAH//4p5Db3xuXQqiTZgWgsAUur7CBohXcyWCUeiY+ysROuLydzGyPulZXY4+YwbNmdV1Yx47RKLKho41oaT+0EXVnqG3PUCJWwaQ/MmSyF2fQssscUDceDEEjcMZ9Y4nPkbNsZGROZmTR5iTGMNrT6LOm0s5Ox0ScBD+ANrvUFFd2WK7HnVo/zqGItrYaIFc7gp+O/K7ssJGJmqbVhzEWlyGFGE9xGW0Yiz2NbunLzxjITesXvEHBWw40Y273H/0orbGy84iJWRPTepTV4a3ULa9p57VPKli1dAwXnJVOo9HO8+8f441fns/7G4/7lguow45Abm4u5eUV1Nd7TuzXrVvH5MmT2bt3H1arlS1btgDw+efFrFx5nZ/Qcc4551BcvI729nYAWlsjNwdFYsuWLb7nnDRpEq+++ho6jYJP122ird2KzeniRJOVLV9+za5DVQC89+HnnHb6RAA++uQLRFGktr6RnTv3+NYbaV+iZdKkiTz88CMAITN4OpedxLp1HgfN/v3fcORIOQA2m4vLv7uMRZdeiMPuJisri7S0NKDz9ZO6jHmdeeaZ7Nixk6amJsDzOicmJiIICr755lsAPv30M2bMOJ/S0jLKyytobPT85q1fvwGdTkdcXByTJ0/it799AgCFQsnx48eDbndfuBQinTQHQyGC0GH8iVV8lOkdvcnbMRmdfFXSEvG9djgktn7awMg9ZhJ1ChLy4shenIGmj8eUYtme7SUtzF1gGJQg6MEiJsFECS6bG4fRGfJ9chid1BTV01Zhxe2UUKiFiO+tRq/GUJgatnYcPCNRGfPTZcFGRuYUQBZtTmIEQUCVsYxDZd/iJHx2gcMtUVLTwoIcAynaU+fHORyx1FafTG4Imf5FNNowlxwPKdh4kRxuzCXH0S8oQJUyvEel3ttYy6dfN+IOscvmdhef7GxAkiS+d2F2TOsOVqnr/ecY7N9lf7UleUSEvss2sFqtxMXFYbVaGTEig8bGpoBlvPtnSNbQ2t7tBKOLqCEhIUkSCoXCd5tKKaBWKQhG131xu92+54nknAlF13UAqNWd6/GKL4Ig+P571uzzOOusidx8860cOtDMhk3voFb7/y715ju3q+Dj/W+FQkFjYyM33viDiI/vrUsh2pPmYAgSKMxgtw6dPCKZ8KwtqveFGeflx3PLqrEkJCq5647d/OLBCUydlsYtN2zHZHTS5oIvT9iZAbSVWmnZZcZQmMroPhxT6ro9kTAaRdYW1Q+pgOj+JlrBBEByQdNWI+aDloD3SZIkqlfX0VTSEiAARfPeekedgj0ePKHD3sfLyMic/AQ/YpM5aSgqq8fY7eRwxug0/nzp2Tz3nbOZkN5p1zfaRYrKwlddn0p4a6sfzl3BvJQpjNFlkatJZ4wui3kpU3g4dwXL02fKgo1MTDQXHQkYiQqFqyPzZjhjtDj5Yk9TSMHGi9sNX+xpwtQWug45GHkZniuMeZnxrFyYhyFFS05GPBmpWh67ZSJvr6vyuWwA8jNjuyJZWVlJXl4eBoMBpVLJ3LkXsW+fxzIfFxfHzJkecXf+/Hns3etvpd+582vmz59HfHw8QEzjUVu3lnDJJRcDsGjRQp8Lpiv79+9n7tyLUCkFvrtoDgnxnfs2Y9o5ZGWko1KpWLxoHl/t2M1XO/dw6SUXoVapGJebxVlnTfYtH2pfamvrGD9+PIIg+O4HWLZsGcuWLQvYpn379nHppYsAj8ij0Wiora1j3LhxAJxxxhmkpaX6tn/evLkAnH326Ywfnw9AWloSNrsFELl44bmcdponKH9UThzvvf8CWVkj0Ok6D18OHDjAeedNxWAwAJ7X2WKx4Ha7GTduLAAXXzyfvXv3UVlZSX5+vu/9vPDCOQC0tbXR2trKtGnTAFAqleTl5QXsnyhKMbkUTKbAz3P3k/jHn5rMrDkG3/3e2/7417MRBLj3oQm8s2amb+RKIYK1smeNRjIDT2VFpyuqorydN1+rADy66lOPHw5Yvqs86zSK1Bc3Ur06toy9aLYn0ufMS1U/tCMNdUYvyyRjfjpqfXTXtoO9T9Wr66gvbgzp2In03gqCQM7yLCY+PI6MeWkkjIkjLldHwpg4MualMfHhceQsz5KPQWVkThFkp81JTkVr4I/tgjEZfHyklpyUOJZOGMlvN3cGYZYHWf5UR66tlglFT4KEbRUm33/H5+sZu2oaykQNu28vIj43hTN/PZfmL6spfX4HAPZyU9D1DBdWb6rFHqHZyYvdKbF6Uy03LsqJev2LZ2Sw66iZirp27n0+fP6APlHF4hmx1aE6HA6eeeaP/OEPT6NQKFi/foNP0GhubmbWrFmsWnUrVVVVvPTSP/weW1ZWxnvvreaFF/6G2x08iPiGG65nyZLL0ev1rF79H1577XXef/8DXn/9dR577DGuvvoqjh0r44nfP4+p1cqCeRdw1uQz+evzf+edd1fz2K9/yWuvvcKePfs4UVPrcxLt3L2f5/7wKDmjsnn//z5l975DAGz78mu2fv4uDQ31HD16jLa29rD78sorr/LQQw9gMpk4evSYb7tzc3PYv39/wOv17LPPcd9997JixQpE0cn99z/I3r17sVqtvPbaq+zdu9c3arZ+/QamTZvG66+/xrFjpRw66BEoP/1kCytXfo8XX/wHBw8e4cCBbznyTStVVW3k5+dgsbSSkdXp1jEajTz33F/4wx+eBuDgwYP87ne/58knf8t9992LWq1h3759FBcX43a7ee6553juuWexWCyUlZX51vPoo49x99138aMf3opCoeSFF15l08bD6HQK0gwaVCqB5iZH1K6JUC6FYCfxbRYx4LZbVo3xndi/s2am3zqC5d7IDE3EKL//vHTvDnM7JJpKWshaYOiTZiDv9kTzOQOorrLx9BNHB61VqifjRb3FK5hkLTBQtbqWpm3GwDemG13fJ0nyOGQiOXWieW/VKWryTiGnk4yMTHBk0eYkxxkkv+HjI7VcMzmXZJ2aw43+Kfh2t5U36tdTYavHKblQC0rydBksTpuGXs5skZEBehckLDk7LSft5UYqXtvDmFXTUKfqGL1iEg3rylB2aYVxi8N7DGJfuSeHJNqg4H1lseW+6BPVFJ6ZSvHuxrC13xq1QOEZqVE37nQVV7Zt28a2bdsClpEkiaef/n3A7d///grff//3v0X8979FIZ/nlVde5ZVXXg243Wg0cccdP6HR5MDU7vRl8fzf2vX839r1ALQ7jNz64/tIiRc466wp5OXlkJ8ZT2KcCpPJzA9/fD+S5BkX06kVxGmVvP+ft3j3rX+RkpLCCy88T1VVVdh9+frrr7nqqmsCbs/MzOQvf/lrwO1NTU1BK88feujhoPv/1FO/8/13Q4MDU4sTt1viyu/fHrDs+PEFFBUVo9a6Uan8D1+2bNnKli1b/W47fPiwr4GrK5s2bWbTps1+t0kS7N5dxtLLb0XsVuFrs7qwtIokpaixdwlAjuakN5hLIdhJvBjjv/PEOPnwbagQKZBape78DcjJi+ealXkYDFpuvnUMhnSP+Pjjn43nmd99Q3ubi+RROmb/4nRaDrZy4MVSwOPKOFFU3ycn7123JxqcTonyUuuAt0r1dryoL1CnqFFqFD7BJik/nkmrxqJOVFJy336m/GQccRla33vlfZ+Q8G1ztI+RhRkZGZlwyL/6JznqIPkNaqUCu8uN0ergnf3ekyUJ9KXUJtZz3GT3W77UXscuS6mc3yJzyiC2t9D89RpsTeVILieCUo3OkE/auUtQxaf2KkhYUAefStWfk40mVUfC2FQUKgVxo5KwHm9FESJ3ZLhg73iNog0KtkXI+gnGsgs8M/0lh1owWgKt6PpEFYVnpPqWGy40mhy0WJy4peBilFan441XX0SrUeF2ifzud79DpRRIS1KToFMyflSg0P7wQ/eTm5uDSqXipZde8jVUxcr99z8Q0/KiS6LJ7MDmcCNJnqZCnUaBIVnjcweld5zAtpqcAcIJQFlZOX/84198y/UljY2dglHQ7RclTC1OBCE214QzyH4EO4l/+aWygNvCndg31jsG1f0gE30gdU5uHOWlnn9nVRXtPBShkWiESkCXpkHq9lls66Mxpdw8z/ZE8znrzkC2SnnHi0K5VbzjRQA5/bgtbV2cca3l7XzzWgWTVo3B2SrSuMvI+Ktz/N6r7u9TTx4jIyMj0x1ZtDnJyUuKo9Tk/2OwrbqZbdXN/gvqSyHpOC5F8BMmo6uNYqOnaWR5eqB9VkbmZECSJJq2v4P5yGZc7S1+99nrj2Kp2EniqAuwlKT2OEhYl5eCvdQIQHxeCnkrz0JriCPpNAP7Hygm56pJqFN1WI97HCfa/JS+3ckhQLig4J6tT2D5nCwWTDVQtK2e8joroktCpRTIz/RUikfrsImFJUuu6PN1ehFdEqa20IINgNlsYf5l13bsZ7xP/Ni1aze7du0O+phf/vJXQW/vr32RJALcQl6sDhetVpGUeDXpKRoEAUaM0JCaqqa5yYHN1kXg6TKi1NeIokSrKbRg48XtljxJwB1Ec9IbLCjbe9IMwU/iozmxdzoGx/0g00m0gdQzZqWSoldFFf4bDxRUWNn19LdMunWM333uIAJgtHR1A9ltbhSK6D5nwRiIVimH0dln40W9xR3KwamAio9qsVRb/d4rtyiFzqQP9xgZGRmZMAiSFOaIEGho6H1FqczgYbQ7efyroxjtYQ4WlHbI2gGqyAGgKYp4Hsm7Sq63lhkWxJo50/jV2xgPfIok2oOsrYOKaVDrCTeNJpMmZV4eGdd0Br6KRhuVj2+OKoxYqdeR+/DsYd0eddfzBzG3u8jLjOe2ZWPJy4pn/a4G8rPiUXeMR71d3DkelRyv5JlVZw7Y9i1d+p0heaJb12KnxeL5TtZplIxKj0OpECg9YSE3KwGFAOY2J/VGz2c1NVFNZqp2MDc5KA3G8G4hAIUgkJqoZoS+7x000VBfZ8fY4kSnU5I9Kg6lUuDokVZy8xJISlLxzaHWLuNLEhfNChwLC8WceWkBmTYmo5OnHj8adYNPNGg0AhfOT+9398Nw5Y47bqW6urLP1ieKEpUVVlxRjLWpVAoSEpWYTSLhDrkFhUBqipr0VA0KlYCzTcRyvMtFN60CW5wSexcxUxuFmNnY4KDVLMY8gudtdMvx/js43Oq3vyl6NRmZ/fOdY6uz4zB6vv9UOiUJI+MQlALm0jYSRsehVCtwtom01XheH41ejS6KbXGLEo4mBy6bG+/sqFKnQGPwvObBaKuw4rK5/LZFqVPidrqRXFLAe6XUKUGScNk9r5UgCCg1ClTxSrR6NQhC0Mck5HUGyfdkO/uT0aNz+ctfXhjw55WRORUYMSK6kgrZaXOSo9eqKcxOpbiyEUeoq4jJFVEJNgAmdztFzTvkYF6ZIU1PMmfE9hbMRzaHF2wALJ3Ol2gyaboHCav0OpILR4UdrwIQNAqSC0cNa8EGYFJBElsPGKMKCgaYXBB9w9LJTNcxMZvDRW2zjVHpcaQkqnGKbk40WDkjP5lGkwO3JPVorKy/icYtBOCWJEztTlKT1P1WyR4OW0dOjc3mor7WRvaoOJCgsryNiZMDnW5KJbgihJIC6PUqFi0ODL5O0auZXpga1qURKwPhfgiG0eKkaFs9FfVWnKKEWiWQl+Fxt+kTB2dkK1jGzNc7j2BI1/aZU6ul2YFLlNDpVBGFPlH0nHTr0zQhR/+UgM4NmhYn5pbO4zEBz/a2AjYnuPwuwEnYbG7aLC6SUtSkp2vorj83NHiCsz0usuj3XRAE9KlqWpodVFW0M3FySse2dK7Dbpf6TfB22yXfvrtsbqx1dhJGxSG5JESLiCZTh9gu+JZxR9gWSQJ7owPR5OzmapFw29y4LC5UKWq0QV5DVZwSd8d3hMvmxlzaFvQ5vNsiAG5n599I4LK7cdnd2FucQR+jilN2iGQ9387+pC8FTxkZmZ4hizanAMvGduQ9nGjB6Ai8sqfQtRLL4f5RW00fbZmMTP/Qk8yZ5q/XBIxEBcUdWyZNsCBhw7IJAEFFJfA4bLyi0nBn2ewsdn5rxu6M/C2jVStYdsHAOgVGj84dkgekbnfHFVYfEhKS538l//9GknC73WGv4g8GjSY7osvzvus0Skame05uS0+0kZsZ73ELtYs0tNgQRYmGFhsKUYjZSdBbJLcb7zyD5H1NvX93ea0B4uOyiY9XYre7wwouGo3AtMLUkALKkmWe3+VgeSihSE5WMe38NIo/q+feh/ybqoCQbVX9gSRJrN5UFzRHqrTGyq5jZl+O1EA52cJlzJiMzrDiRqzEKvTZbW5y8+L8R//cEpLDjUqCRCBUelkr0A4BGTdevHlL4Bkv7Hp7NGN/wYiLU2BI19LS7Ai5TL9+34RatwC2Jgcuu5uEkXGRl+/A3ujA2eIM+Rq6RQlnx2uoG+Hv+NMYNIitYlQjTIJCwO2QQj5PMBQqAY1B0+vtlJGRObmRRZtTAEEQWD4uiwU5BorK6ilv7ZL3kBTHNpWD9m6/D4syz2V2+hlkaFOobG/g8cPv+u5rdsojczJDF9Fow1xyPObMGVtTud/9GVPmM2LKPHQpGZR++ndajnzluaNL7lM0mTTBgoQFQSB9+RnoFxTQXHQEe7kJt+hGoVKgze8Y3xpgh41RbKOoeXufN8fpE9XMPTuNT3c24g7zligUMPfstH7JnglHX1i+LWIL25rXUG8rR5ScqAQ1Gbp8ZqQtIVGV2qN1PvHmUUo7rP/RjJaNyY7jgWvG9XpfekN3h0OdyY5VKeEyAGqYNCaZVUvHUFRSy4TcJF8Q9YpfbsMpSqgcoDwWuF69XtWvmS1PP3HUF8z6o9vGkpsXz8b1DRjSNUydlsbe3Ua/YFZDuprxE5JCCi5dtzcUgiCwdHkWcxcYWFtUT1V5p1MlM9sz5lFXY6e62oazQxzKytZx2dKRFH9WH7KeOVhbVX+welNd2MY2o0WkeLcnJHb5nIERYiNlzHjFDe8JcW8yk2IVLLzLq1SC30iRrSHCSTpgI3REim85t0egSU1VowAcTQ5srSJ6UUJQCGiTVGgNGo6VtYUY++tEq1OSmR2HWi2QPSoOdUd4/qicOKor23F1ZFP1qxjXZd0qnZL4LB0KtYB+fBKSS0JQCTi7ioVhtsUtSoim0K+xF8kt4Wh2IIlutCO0fmNIgkqACKKNoOhcT7QICgFVihqFSohpO0WTE3eqelBGpWRkZAYHWbQ5hUjRqrlmQuAVuM1HA33ea+u+Zm3d1zwz5SY+rv3a7z6nFIUvXEZmkGguOoLLaIsqb8bVkXmTcc1kJJe/bblh/3rq9xYz9jt3kJg1plO0iW8GSzoA7RUm9t37md/jqv693+/vcEHCqhSdX97NYCBJEm82bGSL+SAOqdsV8z5qjlt+QRYCAlsPtmBqCzzJTUlQMfPM4dfuJEkSm5re4ZB5MxaXv0urxn6UY5adnJE8mwsMV8b82uVlxPlEm2hGy/Iz48Le35+EczioAEUruJNBKvCe7NHxv/6viejyjIl0p78ba7zBwNEGs+YWxIcUXHLyO9qcohxRSklRh3XGPPnoEaqrPG48VYjmua4Ea6vqa4wWJ1t3N+OqklBb8SgKArjj8Al0AA6nRMmhFhZMNfS7GGsyOvmqpCXiuJnbLWE0OgNUkK617tE4cbyfXa1OSUaWrscCh7YjvDpwHMaDRSHg6jiJj5S5JIoS5morGlHCLUoo6HDvdJzku9pEksK4gVQqAVGUsNtclB2zhH8BAJ2u/5oNlToFLqvnWFO0uTBF2B5lmG1xNDl8r61KpyRhVByCEkxH2xAU3UKAJXCaRFxtLlTJnlMk0RzZZaNQCQgqwZNBQ2ceUHcEpYDk/UwoBNSpat9nIPh2CphLLSSMikepEXC2uWg7YfVl3kST4yMjI3NyMLy7ZGV6hSRJvNe4NeBEzcv01PG4JDc7jf6XPtVCsMNqGZmhga3CkyHjzZsB/PJmuuPNnBGU/icVkiSRe9H1KFRqqrf+p/OOUQdB3R7Vtij1OtIWj+/JbgwIkiTxZPV/+MK0N+T3gNHVxuctu1ndVNLj5/G2Oz2ychzzzk5jTHYcuRk6xmTHMe/sNB5ZOY7lc7KGZCBwODY1vcNu46cBgo0Xi6uF3cZP2dT0TszrXjwjA31CdNdV9IkqFs8IzE4ZKLwOh1BjPgoRVEbIdugwpGjJyYgnI1XLY7dM5O11VT6hIVybtjezxWSKLn8tFjyV2VG+1l1yaryCy88fGMf9j4zn5w+MY8U1o/o0U8ZbD969qerehzyjkz/+2XjiEzp/k4O1VfUlkiTx1xfLaT/oQtUCChso7J7/VbWAuhyUdfhEEaNFpGhbfb9uE8Daovrog50l+PTz11n3xVvsP/Apu/Z8xLov3uLfb/8NU4uTxsbQI0FedDoFb771Z9wugbJjFg4dMFNz3EpleRsH9pmoKGvzCTYAP/3pjbz33rusWfO+33puueUH/Lvodf6z+R2eee1pElLjUeoUKOOUaFLVuDWd76d3FMu7D5Xl/tkqE3Ky+fcHL4cUGCRRIh4IlRr2wotPMnPW1LD7vePr/6LVahg1agR/evbRsMv2hKuvvgogpsBdhUrg/Iun86tf/TLo/V4hBTwCUHutjZVXX8/3rl8W8rVyixKOFieOFo+Ydt6sqZx59hmBCwqg1CpQJij9mq5CObGkLp8JhUZAN6JTIAy2nd5tcVqcKLqJtl2Xl5GROfmRnTanMKubSnw13sFYkTObN6s2BtxuUMtBoTJDFylIdkqovBnAlzmjM+Rjrz/qe8zI6UsYOf1yWo8fZlThcqo3v+25Q2OD9HJomABiaN17OAQJv9mwgVJbbcTlnLgoMR9mgf6sXjXHpSSouWa+x1UgOlporlmDra0cY5kTk0KNLiGftOwlqDQ9GykaSCxiCwfNm3FK4YOrnZKdQ+bNTNUvJEGlj3r9+kQ1hWemhh1BAdCoBQrPSB3wsTIv0ToccMOG9Q18XtEQ8shj5rlpXPuLXO66Yze/eDB4Zsua1bVoNQq/kNncvA53i75nr0G0wcCRcmr6g1hdQDn5/eu4WrO6jhPf2LpOifqhEEFrEcjPT2S/1fMdW17X/yNblRUdo4T58dyyaiwJiUq/z1F2psJPRLlkwXUA3POLH1Ff38gr/3rPd593zCjcqFSaQcP1K38aNFS4OyqVwL79X/PDH37GP//5kt99b7zxJi+99A8A7rjjdlbc/n3+85/ObZHKw18gqDlhxeVyowCi+aURgMSOUZxAN5CnyS0SCoVAu83EE088EcUzxsZVV63grbf+jULlGRtytjiQImgTglqBoAiz3d0EFEmScNmjcIx3edi0WefRWN/Iwd2HApZxOdy+pqiuKBQKTzZZdJvV5zk+MjIyJxeyaHOKYhTbKDEfDnl1HeDuvS8HvX2sLru/NktGptcIHVejosmbgc7MmbRzl2Cp2OkLIz7x5fuc+PL9wCcAFKdXkTTxEiw7GodtkLBRbGOL+VDkBb3Lu9r6pDlOkiSaqt/B3LQZl9PfoWJvO4qlZSfJhtkYRsc+UjSQbGteQ1sIh013LC5P5s38jBtieg7vuFiwsFfwOGy8Ya+DRVeHQ6gTZq/wohBB2QiuYBNOTjB964AFnnORUJktO7YZA5qbykut7N1l7lXuTaRg4GhyavqDRYsz2LPLHJWLJFRbVV/hFegiNRc4HRKN5TbUGeAUPC1i/Y3YIWxWlLfz5msV3LJqjN/nqGsYb9cxI4A0g5aJk1MYNXIKDzxwB4JC4PPPvuDtd14D4MMPP2DTps1MmTKFyspKfv3rxwA7X+34L7MKl2G12rlu5RXcfMtVSG6Jjz9ez++e8mRlKRQCSSlqjh79Nuh2W62dgpZGowlwaAiCwKzZ5/GbJ+5BkiRE0c5PfvJj9Hot9z1wJzNmnAsS/OmJv1J58AhqrZrfv/4Up59xGl+u386zf34WpUZg2rnTueHGG9BoNezduY8H73kSkyRx732rWLL0YqqralBrlIzI1CIoBPbt+4RJEy8B/IUtQYBkvZrTTsvi17/+JT/60SouvXQR559/Pnq9nuzsLF5++RXWrl2LQqHgnnt+zuTJk6moqCA7O4sHHniI2trgFwp++MObSUlJ4eWX/8HXX+/ipZf+yW/++RhJSYmAwG/v/x27vtzN+DPG8dhfHkWhUCBJErcs+xFOU+e/j/PPn851113HfffdT1tbW0A+jkKtQHLDxHMnsmTldzGkG3j8rifYe3QvmjgVt65axcQzJ6JSqfjrb5/n6LdHufIH38Mlurjyf77Hrx55FEEJP/nJT0lOTqalsYUH73iE5oZmPv76v3y8ei2z58/iyfue4rxZU7n0ioW43RLPPfFXNnyyEYVCwSPPPMjZ08+mqqaK7Kws7v7RL2h1tLH0miVceeP30GjVbNq8mdfeeJWLrryA61Zei1MUyc3J4YPXP+Tvf/wHCAKLF3+HpUuXoFar2bBhIy+//C8EQeDOO3/KOeecjdPp5Jln/siBAwe59NJF5OXl8cILLwLw7rtvc+21Kxk9ejQPPni/7/X8yU/uxGKJPB4nIyMzsMiizSlKUfN2jK5Oa61WocLujuKgUJnA4rTz+nPTZGR6hS4vBXupMaq8GejMnFHFp5I8fjbGA5+Grf0WVFpSTptN+vSzSbvUFlWQcH+F/PaGoubtYUXbYJTbez/m0FT9Dsb6T5HcwV9jl7MFY/2nAKTnrOj18/UVXZ1BkttJlbo2YMB46oh5XJx7Dc22WrbWfsT+pq2+++rsgaN5kfCOlS2YaqBoWz3ldV1C5DM9tcqD5bDx4nU4QOgT5q4orBBwjdsFChOoMyNPbIeq2u5t7k24YOBYc2r6kqHkAopFoGtp7hhjy2RAaty9Y2ShkLzBO3RrfAKam+xoNBqe/O29fHfxD6ivb+LD//s7hw7vZu/efaSlpbF1awlPP/17fvzjO1i27AreeuvfKJUeAWPcuFxuuulKLvvOTVgsbej1yZ5tUgm+jJxw3HbbKi655GKqqqr4y1/+CsCsWbOYMOF0nnzieW5ddR0PPvA0WzbvICkpkdZWCzf9YAVxujgumuP5jixISSI1OZEx4wu4/44HMbqaeeH5F8gyZCFqHay4bgU3LbkFh93BA0/dx3cum8fh6louvGgGc2ZfSXp6Klu3raau1uYJwhUgOUWFwyGhVAmo1Qr0He6jESMCM38KCgr44Q9/REJCAi+++Dxr167loosuJDExgeuuW8m4cWP5xz9e6r7rfvzv/77E4sWLufHGHwAgSAruvP4uLKY2MrMzeOZfT3PtwhtYfv0y3nrpbda89SG6OB1OhyevB8kj2Fx//UruvbdDsCEwHweb57+zsjP5wdIfctZFk7n9rtv50fW3svzqK6g5XsNvfvpbEhITeG3tv7jyoqv5z6uraXWaefV3b6AzaPjrq8/x8G2/4kRFDRdfvoAf3X0LT973FAB1NbXccvMtnDnpDOZeeiE33/hDUtNT+NuLf+Orzdu5YMFsEpMSuWLO9zhz+hm8/v4rOE1OCsblM2teIdctvAFJknj2tWfIUo/CUt3OuLHjWDJzOXabnQ+3reb1F98gd2Iu558/nR/9aJVn1PnJJzj99NMZNWokI0aM4Prr/4cxY8bw2GOPcu21K0O+7pdf/l3ee281H330MVqtFlGM7bhARkZmYJBFm1OUCpv/yVc0go1GUFGYPKFX4xEyMr3FaHdSVFZPRasVp0tCrRTIS4pjcUEGeq2atMXjseyqC+qA6U73zBnDtCsBMB/ZHLT+WxmfSmLuDFzfnkHl55uRnG4EtQJdXodQo/c3qEuSxOqmEkrMh/1EUui7kN+e0v07AMK3xgGIUXxPhEN0tGBu2hxSsPEiue2Ymzajz1qISq3v1XP2llDOIFFJ0FQ4p9uBRhlHe7eWPZe751ksXcfKhhpimNGtoHRbXOkGqQUK4uP8MlsMHSe6P/7ZeP7w28NYrZHzG7y5N3MXGHosXkQKBh4MhooLKFaBjo7JnoEIyfaOkXXP/vF+jtRqha+FKxg5OTl8+20ZJ07UAfDh/33K5MmT2bt3H1arlS1btgDw+efFrFx5HW+99W/AU7G9+LJC1q79HNFlQ6tTYLO3oU9VR91G9be/Pc/f/vY8t922igUL5vPRRx+zZcsWtmzZQppBw84de3nklz/l7X//lw/XfEprK1xwwTT+8twrvnW0mlpJTU6k9NsyqsqrSBgVx5GDRzAkpROvj2Pc6WN5fa1neV2clurqGpJGZvJR0TpEUaS2toFtJbsAjztIEASysj2/Z3q9GpdL7dd61Z0dO3Zgt9ux2+0oFAqUSiWTJk1i3bovADh69BiVlZURX4uuOFuc3PXQnZxz/tm4XG5yC3IA2LtjL7fcdTNp6amsff9TaqprcLskxo8bT84Pc7jzTn+nSKjK7k2fbcbtdnPk2yOMzB2JrcnBWRPPZtwZY1l06SIAEhLjGZE1ovNBAijsKiZNnsSf/vUMAEq1ktq6GpRazw/Cx+99itVpY9LVk/jsw2LaW9pB4+abQ98y7vSxnD3tLD5Z8xmSKHFg60HKjpQDcP6c6Zw1bQr/Ln4DgPiEePLG5NJQ18iur3ZjavHk7x2vPEHmqAwKF8xg4sRJ/OMffwcgLi6OnJzRnHnmmXz++ecAlJaWYrPZSU0NPXJ84MABrr/+evR6PcXF66irq4vpfZKRkRkYZNHmFCVYA1S2LpV20Y5JDJyhVqJgvv4slhkKB2LzZGQCkCSJ1cfqKKlpwWjv1nJksrKrwUxhdirLxmaSXDgKY3FZ2NrvYJkzgiCQPn0F+kkLad61BntjGW6XE4VSjTY9H05MxLLGhMvof/BpLzVi2VXnG4nyCjDe3KhwIb/eXKnl6YGjIP1JsO+AcK1xACpF734ymmvWBIxEJadNZNTY76OLy6D62Ls0HPcc5LucLTSfWENGXmwjRX1NKGdQsDj2vU2b2dmwjgtHLeeCkZdTau7MIFEqBtcR0190dTiEOmH+8c/G+yqztVqB7AwtKqVApqUJ6z4jh6wjqcYakNkiqUA0gJQBkgIENySrlfzk2vFkZ+iCOjyMRpG1RfVDTnjpDUPFBdQTgW6gQrK9Y2Shsn+cDjdep03XxqfEJBWiS0uL0RMurFQKuFwSAsHFFs/4kv/roFAIxMeryM3rnTj1+efF3HzzD/joo499t6lUAq+8+jrFxVu4+OIL+PiTV315PBqtgoKxiSiVAi3fekRiUXT66rFViUqSRieg0anZuG4Tj9zaGRzsBJb/6BqQXGhVduyiFgkJpVIgJVWNIIAoiTQ5G2kX2mkSm6mwVeCSXIhBfs+czk5R2u12o1QqQQKH0UlbhRUkCbdDwt7oaUiKJmR44aULUanVfP+iq1FoBDZ/uwH9aUmsXfMJZXVlXDB3Fv/87/9y2/d/AkDdiTrSMlPJy8tn//5OV21nPo5/nbboFonP0iGoQKVRkjI2EXW8it888gTbPtre+R7olKgTVSjMnsrxeF089bX1XDn3at8y6gSV73ffZrX5nV1582i8+xzq+owgCLzz8n946U//9Lv9vFlTcTj8X1+1XotCKfDBBx/w2muv+y1/5plnBl2/2+32uzikVnu+nz/77HMOHTrMrFkzee65Z7nnnnupqKgIvpEyMjKDhtwedYoSrAHq56ctJS9hRJClYZTWwPL0mUM6Y0Lm5Gb1sTqKKxsDBBsvRrtIcWUjq4/VYVg2Af38ApT64NGMSr0O/fyCkJkzqng9GbNuIGfJr8hb9htylvwKRe35mL9oCOngcRltGIvLaFp92LM9UeRGATgkkRLzYUxiW9jl+ppQLXChWuMA8rW9O/mytZUH3GZuPoDT3oJGl4a7mxvF3hb7SFFfEs4ZlBJkTGdaxsX8aNITTM+8mJ0NX/jdl6kt6K/NHFS6nqh6T5ivv+pLXnqhlKceP8yVS7by+C8P0t7mecEKz0vlkZXj+aG2kgt3b2C2dR8J+AfVSoBzBDjywZ0GUjyg8/yvSe3iyXe+4YOtJ3B3ODy6U1Xe/8G3g8FAtFWFI5xAF6zNSlAyYCHZ3jEyjSbyMYq30vrQATOWVpHmJjufrj3A6NG5pI8woFQq+e53F7Bvn0f8iYuLY+ZMzwWr+fPnsXevvyi0c+fXzJ8/j/j4eACSkpIQRYn6OjuVFVYqytuprLBSXxf4PTJ69Gjff8+ePSuoG2XKlDyqj5fx52f/QVXVCUaNymTjhi+56qorfG1SuuREACQ3mI5ZaD5gxmF20l5jo2TNV0ydei6Z2R2tZ6kppI80sH9XCUu+ewFZyS1MKNBSWHgumVla0tM1tFkt2JPttAntXDBjNqLbidVtxY2bClsFzWJT2NfY1uBgx7qdzJ0/F5fVxZiCMeSPy8NpctJe3s4zT/8BgyE94HGSJPmOMxMS42lubMbtdjP34ot8r2/2yGzKDv0/e2ceH0V9///nzM5eOTa72ZCEIweXgiBqESUKWBWrLVYQPFpae9haxWprbT1bW69q1R5fW/1pW3taW8VCxTbeiHIFRQQRBDlCQkLubDabzZ6zM78/Nptkz2wgJ8yzjz4kO5/5zMxmMzvzmtf7/TrEv1f9m+0f7KB0SgkAbS1t3HXXj7n99h8xcWIpAAsWzOf667+DMc+A3qaPEosUWel+r1RZpf2gmw3/28QXL72sex9OnnkSsi+Eo6YNOkSc+zqo29mIq81F2WfnAiBJEqVTSrtjxyWTjoxCE7v37OaiZQvJPSmHolPHM3nyFA58epAdW3dy0WULAZg6fQoTp4b39f0NW7nk8ovJsWWDAAVj88mxRUezi5KAKIkYrPquz92FZGWFf/djxozBYrGwa9cuzj//swBMnFiK0Wikra2NhoZGpkyZAsD06dPJzQ27b8aOHUttbS0vvLCS7dt3UFxclPJ3q6GhMTxoTpsTlBJTPpX+aAtkssbDAFO05sMaw4jTH6Sivo2AkvpJb0BRqahvY2GRnbxl07EunJhWz5nu7biDlG9porqp50l2Sb6ZS07JwVVxJKVzB0ANKLgqjmBdOJFy/9a4kqhk5UcD1eS3PyQ6B0Dy1DiDIB1zPys1YYmQyIGdj+P3NpNjn0Vr/cbuJbEizlAT6wzq7QrK3P8PGtyb8fXSvjY3lLO5oTxuniydjbm5i4dil4eco2mU21rXxou7/dSPPRtZFAm1guAKoXb5l+QxoNhIbGcCZFTe2dmMPAb0zfHLg2kk+gwW7c4gr5U3DWi61UghUoIEpJVmNaHINKRNsvsqI0Mgrjwvgs/n5847fsHzzz+BThLZuHF9tzjjcDg499xzWbHiBmpqarrTniIcOnSIVatW8/TT/49QSOG1197h4Z8/FZUs9YNbv8XXv3EFVquVf//73/zjH//gpZde4oYbrqe4uAhFUamqquKxx34J9PS0+dOf/syXvnQ1jz56BqGQwqaN29m1ax979hzkpJMn8fqbzyMICvf99Lc07Y0X2gEcLW08dMcjPP6P3yBJErIc5MEff4+9n7zL+5vLePG19dQdqWHHru00h5o46NvPw0//gtV/WEV9Ux0Hqg5EzSerMu2yi2CSBxJqCILOIG/85y3OOe8cXtq8ispPK6k6UI27oxNFVpkwYQIth1oRLNHrvv76G/z973/l/fe38vuH/sjjf/41/373BbZu+oCWprBQdMnSi1l0xRcIKSHqG+vY9PZmZp15KghQX1/Pfffdz7333svtt9/OuHHj6OzsRBDANMaAYtPjb05envvi31YxoXQ8/373eQRRpOpANbd+40e8+/p6fvXnx/j80ku44zt3cecNP+Enj93FrffegqSXeOGF52l+rTHsUPKF8Bz0svng+8woeYdn/vRHFEXlF3c+irfTy5svv8W5F8S/L3U19fztyb/zzH/+iCAIeDo93H7dXd37pjOJmCeYEA0CghD+3D3//PM88cRvAQGv18u9997LunXvcNppp/H3v/+VYFDm4YcfBmDnzp14vV6effbv7Ny5k6amcIn0hRdewMUXfw5ZlqmtPcJ7772f9P3R0NAYPgQ1tlV9DM3NHakWa4xSnHInDx5+Ie6mMhFWXSb3FF+t9bLRGDae23uEdbWOqNfmTshl+anFCAI8+f5B9rb0nKsumJDL8mnpl0eoqsrqDY1JU3osIpzS1M6CZieZpVYmr5iDLsvAju+Wk1Gcwyn3n4/jvVoqn/oAAP34LOppRw7KhCSVhoIAFec46cwKuw1+Petanjv8bpSbZZKpkLuLruzX+3Is9OccAHBBzqxjFpUOf3Iv/s7oG4BxE5eQW3A2BpOd2oMv0lTT0zzalDmFolPuPaZtHguJ9nfKrO9jLyzjwMdPsMGxkUoTKCke7usFI6dbP8eCvJHTVHmgeWlVQ1qNcs+7wE4oX2DTtnpcSq9nRiromkDfAYoadtiQhr6RadBx/UUTOW9+Pjt3OLtLsCZOMvOju6cc83H1B1VVWbO6Ma2+M6PVsdruDPLIgwfSEugsORJ3/nTKsDRvbm8PxpWRrf7v9QiCgKtdjkqSikUUw+VBY8b0NA9es+Y/LF58eVrbbm4O0N4W7Pc2UqHIKoHWACGfQrNf6X54YTTpGDfejMkk4nQGEd0ySoccVQIUiyCC0SYh6FsIelwAOM0CHr2A3E/vvSRIlJpKkYSev2VFVvFUebr7x5gzTHg9PoonFfG75/6PxWXLmDh1Isu+djm/vu83ZJRmJC2V8jX6CbSFhXvJpCNzvBmdSUQJqqghFUESCLplOo+EhUSDTY8ppu/Oj398N08++SROZ3v03M2BuHKp+Der678DrAFLJh32yTb8QT9W1cbv/vU4V1x0NQFnMC49LGp3RAG9TY8pzc/NQKKqKi+99MqQb1dD40RgzJjstMZpTpsTFKuUSZllWsp+G6A1H9YYGVR3xJc7LJyUz6v7GyjKMbNk2jh+sfHT7mVVCcanYvWGRtbuaCGQpGeDS4FttvBJ9bwqJ9XPfsSkFXPQ20xMuHomzW8fQszoOZ0Gj7jJQ0fEKjC+zsTUAxnsntGBb3FewvKjY23y21/SPQcQEjDWj2d/xTgekg5Qkh9OLbJm9f9mzJRZGieC1B16ibpDLyUcb8wc3pKieGdQtCtoepcrqNZAlOMmQpbOxnTLPObbrxr8nR1G0mmUO2u2hY88HdRs9RN36SFAqABCdhADpCXYAHQGQvzfswd48pfRn6mi0sFvfBvLmtWNKYWrY023Ggn0J8nq7HMGN8kqFYmaSW983wgICKJAR3swygUTId20p2TIskpHe2rBBkBRwuNsXWlMyVBV8LcEkNuD3SKIBAS6lkfKvHqTDZhJ3PtAEEMI+k70lizUkJmgx4XTLOA2CklT3PWiRJF5AggCzoATR6BXM3ZVpjXYSoGhx00VaA33rImILE/+4QmMkglRL/L444+TOc7Mof2H+OU9v+4eHyu0ROjdQFj2hWg/mDyGWpQEDPb439vPf/5Q1M+9BTBEwoJMgl+XKAlIlvB5SnbFNzE+FmRfiMd++ShZ1ixCfoVf3PMoQbecUrABUBU1/FmIKfPS0NA4MdBEmxOYSFPhRMk2EHbYRJJtNDSGk2Ao/mLm1f0NLD+1GItJz94WV9QyOcH4ZDjdQSo+aUsq2EQwKAq5gSAhwH2glX2PbUKXoUfQCeSeU0T9mvjeGr2xdEjM3mbBOmYcz5+7IW55qM5D08aPE6ZQDRZ9nQPwGeBwAf69k6gh3Duhst7L9oMuyqbbWDq/f66B3LGLcbdti2tGnAid3kbuuOEtKRJimgePm3hZlCtIAE7xw6QA7DeCy2BEZypEJ+opME5kbu5iMiXrsOz7UJKyUW6JmVCewPuV7bR7+hAmJehtwCkdm8GKJZPJMuu48+ld3HXNNAySyPt7HKx8uxYANeZPJVKCNZS0O4O8X9GWUsiAgUm3OlaSlYCmK8SOlCSro0EQwmlPNpseR2sAn0/p7qFiMolJ057Sddk4WgPIsorJpGPseDM6ncCB/R0Ul2SSnS3x6Z4OZDksj8iyiqM1kDKRyd8S7wbJAvxAgpZaAHQAnV3j9IBeF0RARdD5EY0dmGx5CIKAr72JkAid+uSCDYDdYMeoMxJUgihq/EifEt3jLeTrOj5fCE+Dj5tW3IxzXwcmu4GMgvjvtcj4RCRrIByLIIbHpRIyEglgUXMIgE5A1AvoTDoMdkP3fEquAW+tN+W+pkKUBFSFqGP41hXfIXO8Gef+jijRKCJ2CToBV6WbzPEZ6AwCwc4QnXXebtEpmdCloaFx/KKJNicwgiCwLO8cFlpPo9zxAVX+JmRFRhIlSo35LMo9U3PYaIwI9Lr4izG9TsQfUnB6A6zcVRu1TEowPhnlW5pwdqa4mVRVFjQ5meHqxCKHL5UVXwhPlROAT3+xkaypuXhqXcnn6MIQ1NHwziH2FteFr6p7UVCto31ddcIUqsEi2TnA5VZx1ZlQPi0Gf/zFodMts3ZH2DWwbEH6rgHJYMNin5cwjSlqv0QjFvu8YY/7jnUGJXMFmVQ41Qc5lgXDnnY1nCRyOKxa38C7KVxsqaiq9/Ds69WsWDKJ+afl0eL089R/DvLcz87mP+uPEJRV1F5/IgaDwJyyoXd4vFbe1F0yVFKawXUrJpOZpRsR6VYRkaaq0UNLexCPP0Qo5t6zP0LsSEmyOhYkSUgplhwtvq6bep8vRFODj7HjzaDC4apOZpyak3R8IhQ57KqIFStEwEQ4TT3ZX5QCuIAMfSdmc0/DYKNlDEZLHrLfg8EyBkewmVAvS45elBAR8SuB7tcEBDwhL20BJ/nGPJzB6DIjNXYvErlFhJ4Epcxx5r7H98LY5XpKJrZEhB1jH+6oRAJY7G4ICugypITlR+oxOG1i9zvSqFjUh9OoOg57CPnC1xYRsStzvBlFVgm6g+gLTPSW6Y5WPNLQ0BjdaKKNBjlS5pA2QNXQ6C8l2WYq26NLnrbUOtgS0+cmQml2+uUR1U3heZM91d/35w/JbHNhSHHN5t7fsx+6LANTvz8X07jshD1vLB0SZRU5vHVRzzrZLh1lFVagJ4UKIG/Z9LSP41jofQ5wuoM8+OoBlFRCFhAIqlTsaWPhbHu/0mHsE8KlQq7WjQkdNzp9WNiJjBtORpszaKSRrosNwGwU8fqT34xEdIRYQUHomno4HR6Hq3vOTdVVHv75bDXXrZiE2pVutXLNOVHjhyLdqq8+XbH0V4hNJNCd6PRV3tKf8bFlRr2dFzkGgcZ6Hx1uOanjBsCgC0T97Hc143f1dO4OZEcXUdkNdtpjRBlHsI1iaQIFpjG0+OMTo+Ki0bv+PmOFid49aBKNT0bvBsLdZU2qCoKAziRGOWKSkUwAiyVZ+VHkdxE5rtjfhyCCt8lPsOs7U5AEiHHW9KavUq+eg08idvXzc6ahoXF8oIk2GhoaI55FE/PZ3uxKGvfdG6tRYtHE9MsjIkkziZ7q/23lp6xocNAfk0DIHeDTRzYy5vxSJKuxu+eNrpewUdjQ85RXHxCYsTuLrM6e03HvFKpEKVeDSZ/Oo1443TLlW5pYfmHPzZscaMNRvwZfZxWqEkQQ9ZgyS8kduxjJYEMQBPKKrsZaeDGOujX4Ow+hKEFEUY8xcyK54xYPu8MmwmhzBo00en+W+ip18voVBCH6fqSkIINrLi7BnmOkKD+DfJuRB66bwQtv13T/3eYYdMy5IGdYHR5yP11EQ5Fu1VefrkQcrRA7GpgwoZja2vg47YEkfJuvYjTpyC8wIkkCY8eZkPQiqqoyfoKJmhoPSlf5rkBy4Ub2hlBRCfpk3PVedHqBkKzgrvUgGgSyBAE9Kp1AkLC7JlbAcfktmCQPOjGxtKOoKlFWNRUkpCgLj1/2s78jcSoVgFEwRh2DaBSQveH9dh7sO8hENAppiV2CDoz5id00fa3vb/ETkpWw4DIuIrh0kjnBjE4vEuyU6awPC6khWcXf4o8qP4r8LgCCPpnOBi+Z48yEZIVAR4CMAhN6i0SgM9wDTZREdBm6sLOnnwKLZNJhLjAiSAI5U7JQQyqiJBDsDHbvg5rkmKP69fRT2OqLCROKj2l9DQ2NY0cTbTQ0NEY8VqOesrE21h5uSRn7bRAFysbayDGmf8OhT3AxE3n4N6fRSdDR/6fiqqzQ/G4VpsJsDDYTmZNtiJKIeXw23iMd6OTwBrJdOmbszmLBelvcHCGnD0f5fvKXn9rv7R8LEecRpNdTpKoxPF5VVVprVyZ00Pg7D+Bu29btoBEEAUlvHRWlRKPJGTTS6P1ZSqvUKeZPu7rRwx1PJY+VtmZJ3PPVKcMuMEj6nnNIUUkGy68pwW438u0bJmHvKtu4+QdTu9OtEp1zBpJkDqd0/p4TCbHHA0888fSgb+OF546wfl20+7Ow96k9Byb2elsXXJCb1K206779eGvC/WIESeizPOcI8GaC188cW8FZ4ysw6GKbqsOzZ+ipy+lx24w3j+M7E6/l1/t+S7vcd7mvUTDyUOnD5Eg9pV8BZ5BPHjxAMI2EMb1VYsY9U9APstj6yUMH6OyKqs+daWHmikms/+4OSr5QyNQvF1G3voVP/nioe3zmJDOn9Eqf6/27iJrj5h2ggH1WDjNvmMS7N24HQDAIGPMNhNwhQp4QSh+9rtJiDFAa/qe52MTMn07tXqSqKrWrG2mtaEv4vuutEvYyGxNGcXKdhoaGJtpoaGiMEpZODpc9VNS14QwkaIBplCgba+sely4l+WYq671xT/XzRJXT/X5UQNCLmMZmk1FqpXV9NYhCOJs4BWpAIdDqYdfdayn60kz0NhPeI+EnjzpV4CLjDJZOP4uqp95JGBsO4K9qTzb9oNHbBZDOjXak6XNr7cqUjpRQsA1n0xsA5BWNvPhrub0Nx2tr8B2uQpWDCJIeU3EpuZcsHjXOoJFGMkdJslKnqDGqgiokzyA26AXKptuGXbABKC4xU9V1U1hT7eEndyQXmmDw061iHU5KSOVwkzetv2foEWI1+scli/L5aLsrrUj0vhpmi72EwFSCjQo0APGt7cNsayijzj2eSyb9F4spuiSnwK1EiTZHvHX87JMH+9z3VBiseuxlNprWtqQUK0SDgL3MNuiCDYCSyG0mQvUrDbhrvcy8YVL0+Jj3u/fvIrskg5OvKcFkN7Lgt6cTcMsYrXpaP+4RudSAiq+253tQMAhIGTp02TpCHccu5ASdQYLtwe73rnZ1Y8r3O+iUaepKrisapcl1GhoammijoaExShAEgWVTCllYZKf8UBNVHV7kkIqkEyjNNrNoYn6/HDYRFs3NZ/sBV89T/a7Gw0KvxsNqUMF7uB3v4S4RpQ/BJkKoyy5d8/yuqNfHNBuYvDoL64rMqNhwXcwNqCIPfcPBZC6AZDfakk5ADrThat2YsoQIQFX8uFo3Yi28eMQIHaqq0rpmJa6tGwk5YxxCVQdw79yGZc487IuvGhXOoJFE789SOqVOEbIFmZIJ2RxuC+JKUKpnzZK6m+aOBAbyZn0giHU4mQzx4lcq4aw/6XsaPfQnEr2vhtmmQmO3OyQVAmCB2M4y3agq1HUU8/ePr2Ne0bvkZzagE2VCikTOVjtiTi1KlqfP7STCr/opd/yP5flfiXp9QldfqXScH0NBRHRJR3AB8DX4+eShA2SWmBm7KJ/MEnP376Kj2kNFH6JsLGpAJUQIe5mNomWFBNuD1JU30VkVToMSJQF/kx/Znd73vewKUVfeRMny8QScQVor2voUgZSASmtFG4UL7UMilGloaAw8mmijoaExqsgx6lk+beCs+9YsPWWn2Lr7PyxocjK7j8bDETJKrUxeMQddliFh0+G0tn/G2IQlVBCujR9qIs4jSO9Gu7TAjKN+TVTpkCV3BuMnX4nJnE/twRdpPrKue1ko2Iajbs2IEUBa16zE+e4bqIEkDiFnG853uxxCS0aeQ2gk0/uz1FepUwR9SMbudbCrNvHlyfg8I7deMXFEOGwiDOTN+kAQK4JFdJl0hbP+pO9pRDPQkejZpRnMXDEZfZaOijt3Met7UzDnG2n7pIPdv68EIBM4FXg/xTyyYuCd6oviFxRshNkfgSG+fKo3mbpM7AYbKlDj7UlrrPJXx40VBIGiZYUULrTHiROmsUZQoeNTN7vv70DUC93iiME6OH8XEdElXcFFDah0VnrprPTStt2F9QwLUo4OuT1V2+fUxIomJTFlcbt/vh/Z7UuyNhhyJCwTs2jZ4QSgs6uZeX15E0GnnNbnJOiUu8UeDQ2N0Ycm2mhoaJzwRJ7Yf/RRMzNcnWkJNgCeKifVz37EpBVzUjpmYskoyaHkmtMw2s1kn2RPWEIFYCyNj4kdbCLOI2ennFZPkUVz82mvrop63eXYTf6EhVhs01CU+JsBf+ehuNeGA7m9Ddf7G5MKNhHUgB/X1o1Yz78YKcc6NDt3HND7s5QOmUEvp7bXMLmjkaqseDeKNUsacYJNhIG+WT8WYh1O4/JMVOx2pC2clRYMbvnW8cxARaL7GsLnpI4qD58+W83MFZMIdsi0bHcy9ctFcclEeUe5v9L6c5EBafanBAyJGwfPyJ7OD0/6Po6gg5fryqNEGznB+T1Cb3EiVd+ViDgyWH1Xxi7Kp227K60+O7EEnTKtm9owTTCheH39KmsqLMtlypeKuoWTVKKJGrNrOrOIyW6gs9ZHdomZ0390Mq0727tFG0+tj1337cff1L/PSecQJNdpaGgMDppoo6GhccITavczv6aZGZX16OTQUTloUjlmABAg+5wJdO5qxlPdzsd3RLeNjC2h0llN5C6aylAT6zxKRu+eIs64C3eRAzsfx+9tJsc+i9b6jVFLEwk5w4HjtTWE2qNLojJKSpl83Qp0mVns+MF3u18POcM9b/KvHhkOodFA5LP01vsNBAVd8oGqyqSxGXx+/etkhfw0GC1xQwx6gTOmWPhfRRPVTT03wiX5ZhbNzceaNbxCzkDdrA8EsQ6n6sb0y18iQqzGsXGskej97cNi1gs8+OBMMrN03HrTDm7/8TRmz8nluq9vpd3Zc7694yfRrwsI6NfPo6i5jOJrdrPJtQm/Gi1in22fw8HOStY2vcMVE5awvmVT9zJJTP6ZbncGea28icPVXkqaAxS7Q+iSfKUMZt8Vg1WP9QwLze86wjFb/UQJqAQdQezzcmn7wInsSs9x0/yhk6nLi6OEk2SiSe++OQA5k7O6mx13VHvZ/YdKMsf2JEmqATWqOTKAp8EXTpXqR78eDQ2N0YMm2mhoaJywqKpK6+q9uCqOEHL6iNxWpuugSdcxgwg5ny0h9wtT8de4CLj8UbGqsQgGEUvZ+CGP+44QcR5V7GnD6e67p4gQc+E+buJl5BacjcFkp/bgi3Hriyku9IcSX/WBuNc81VVU//NZJl23Im6Zv2ZkOIRGE0vnF+Cq2MlHqhW3Pt7BYcsQWTA9h4uERmpC4ZvFUIzAY82SyM3S8+H+dto7o2+YKuu9bD/o6v48Dnc6yrHerA8E/XU4RRhJzZ1PdPrbh8UbVPnns9Vct2ISqgqPPLiXlWvOiZs32etqZybL87+Cisq69nVRy15vfIvbTrqF5cVX8XJdedSyUmNJ/FyqyprVjd2uMzMwB0gh2wKD03cl4vBxbnelFmxEGLdgDJOvGMeWu3bHlRcFnTICKjmnZtO6yQn0XboW8iu8f+9u5j4ws+cYk4gmvfvm6LN0BFxBtj+2j+ziDDLGmtAZRWrfbk55rIH2IDVvNqX8nBxr9LeGhsbwoYk2GhoaJyytq/fiXHsINZD8ai7WQWMqzMTX0AmQlmNGtBixnBO+iTv84EZCzuR16xB22FjKxmNfOu1oDmlAEASBZQsKWTjbTvmWJqoaezV9Lgg7G3rf2JkyS/F39gggdYdeou7QS0nnN2ZOHMzd75NIPLnffbhf6ynBkeEQGk0IgsCiCQqnr19PRd5UGkxWZEFEUhUKfU7K9u0na5ufml7reOx2ivNN3Z83ENi425HU+eV0y6zdEX5Kv2yBlo6Srlsuep2R1dz5RKe/fVha+jF3myMQ91qkpG5R7qVsd2/HGXJ2LzvireOWj26PW8eqs7Io99K419esbozq7zSLcN8d6FvoGOi+K30lK3WjgK/FjyAIScuLYl0y6ZQkGSx6Wnf3CCfJRJPCL4yhZXMbil8l6A4RdPdsq6MqPaecElSpWlNP1Zr6pGMyBzm5TkNDY/DQRBsNDY0TEtnpw1VxJKFgk8pBExFs+kQAQ5GF8d8/C+dbh/oUhwCMxRbGff+sYXPYxJKTqWf5hX1fPOeOXYy7bVtUM+Jk6PQ2csctHojdO2oi8eQICX73RSWULL8Go93OpG/fQOUzT3cvE/WaA+FoyF10Lu7t+7iocVefY3XWbD536yK+kJMFgNMd5MF/HOhTfAgEVSr2tLFwtn1UOkXcchtbHGto8lUhq0EkQU++qZS5uYvJkmz9nq8vt5xOhAyjjjFWQ0IhVmN46U8flk6gdYKZb15Tgt1u5Ns3TMKeZwDg5h9M5dePfoqnl0Ptrh9+xIyZFrZ/2IbXEz4HRmLorZKVMksZa51rCajx4k4Eg2CgzFJGjhTdd63dGeT9iraohtz2XsvTEToGqu9KuslKEZRg1/dBkvIiRVaTO2STrNNxyMOuJw92/5xMNGl625G4JK4X6TQbToXeKjFukJPrNDQ0Bo8TVrRx+oOUH2qiusNLMKSi1wmUdMUGW9OMDR6IOTQ0NIYHR/l+Qk5fXP8aSM9BA4AoJI7/FsB2yWTsS6cRavcnFYdikV3JL5JHMpLBhsU+D2fTGyljvwXRiMU+b1jjvqPiye3EPaL21FTz8U/uSLiusWh4HUKjFcmajaVsJs61H6AGkruVBIMeS9lMpC7BBqB8S1N3mU/p2AxWLJlMllnHnU/v4q5rpmGQRN7f42Dl27U43TLlW5rSEhpHCqqqsqF1JXtcG3GHokXPev8BDrq3Md0yj/n2q/pV+tVft5zGyMJg1WMvs/XpEgkCB4GDtV5+kmYUtcMRZPPG1u6fY2Pol9qXAVDhqohy3HSP14WFnci43rxW3kS7U6akNIPrVkwmM0vH29/dETeuLeRk40Vv85/cJoRNkF2YiXFhJmdUnI1ZDj+0CDiD1Jc30VntRQmq/U6aiiQrpYsx15CyDC3WJZNu6VqEZKJJRFzqq99Ous2GEyEaBOxlNi3uW0NjFHPCiTaqqrL6YCMV9W04/dEn88p2L9ubXZSNtbF0cvLa+IGYQ0NDY3jxVbcD0f1rpBwjakgh5O67DEafayb/wokcefETDHYzCBBo6XpCqBfJWzYdSC4OJWpuHHL6cJTvJ3/5qYNz0IOIfcJVALhaNyZ03Oj0YWEnMm64iIonPw2oAdJwnwvZJnIvGV6H0GjGvvR8AFwVHxNyuuOW67qEnci4CNVNPU/dq+o9PPt6NSuWTGL+aXm0OP089Z+DPPezs/nP+iMEZZWqxtGVjrKhdSU7nG8QVBOLne5QGzuc4cj5BXn9j5xP1y2nMfKY0JU0lihxCcIigCtXz64ab1i9OQokibgYekEQWJZ3BQutF1Hu+B9V/mpkJYgk6ik1lrAo99I4h02Ew9VdDbCrPN09dnp3ocoqMbNz2VZ+37gFx2d6vicaA8BsODT1IDOOnIplVRaOCucxJU11du1Lug6VxgoHb1S8l3S+zFIzqHT3nkm3dA1Siya9xaVE+7r3r1V0Hokpq07RbDgWvVXqfr80NDRGLyecaLP6YCNrD7cQSKJMO/0yaw931cZPSVwbPxBzaGhoDC9qMP6xlm32ONSQgqOiBqUPZ0zQ4eXIi58AEGiNvlEUDT0tFxOJQ6maG/ur2o/qeIYbQRDIK7oaa+HFOOrW4O88hKIEEUU9xsyJ5I5bPKwOmwi+zqqeHzKAycAnQKpAEB0wqWu8xlEhCAJ5yy7AuvAsHOWb8FfVo8gyoiRhLB1L7qJzoxw2EYJJGndG7tVib9rk0OhJR3HLbXzi2phUsIkQVP3scW1ktvViMiXr0OycxrAjCAJFywopXGinrryJzioviqwiSgKZpWbGLcpHskh09Gr6G4vFImHLNVCdpC+KHIL3N7exZ1cHkl6guKQr6cyqJ0fKYXn+V/q1z3KCEp9WIOIvWVvyJrtcO5ANiR0wHksnO8zbkLeHOMt5bsIx6SZNRcqNjsWhEiHiklFV+h0f3pdoEhGXku2rZA5fT6Tr7BGNAsYCY9TnRHPYaGiMfk4o0cbpD1JR35ZUbIkQUFQq6ttYWGQnJ6bMaSDm0NDQGH4EvQjE96+pfPoDsqfn4TncTqiz/48v3TqR3WNymKSqCIKQUBxKFQ+uyEeRSTqCkPRW8kuGJhZbDrThqF+Dr7MKVQkiiHpMmaXkjl2MZEjcB0SNjRv/TNd/D5LYcdMl7Kin+3DUrRnSY2upXUln+06UUPiiXtSZycyZRd6Eq5Ie30hHyskif/nFaY/X9ypJKCnI4JqLS7DnGCnKzyDfZuSB62bwwts13eKOpBs97tYtjjV09iqJmj3mAi4qXo7D18DmhlfY1bq5e5k7FO55c2H+yIicd7qDlG8ZmfHrIx3Z2YGjfBO+6gbUoIyglzCVFIaFS2t23Hh9jj5lY97eUfNbNrUR8Pdcn+okgbq6FO4zFdrbZdrbwyJEVaWXndtdzCmzsbgPJ0sipK7Uq6KSDJZ39diZeU0x6ktH6FBc7JuxJ6lgEyGoD/LptE+Y+f7pZHRmJhyTTtJUbIx2+MX0HSrdq8S4ZNIpW4OwWGP7jKVP0SRpL5uufTXmhtdN19mTd65twBo5a2hojBxOKNGm/FBTXDlTMpx+mfJDTSyfFn3ii51j7oRclp9ajCDAk+8fZG9LR59zaGhoDD+mkhz8lc6E/Ws69vQni6OHgAAf52RRYcrEvKGRZQsKk4pDyeLBRUk8+oM6Tom/QYRzi95lQtZHKHJ0KZa/8wDutm3dpVixNx2x8eQIMO6KJWSbTsHxRgVtez9E9raH3TV2wtEnGZG5Bz/yW1VVWmpfoL3pLVQl2hKvyAE6WjfgbttKzpiF5BVdfdyX4Jbkm6ms7yq5aPRwx1Opb1rCaVOjgyZfVdxrQSWAQWfGE+yIW9boH/7IeVVVWb2hMWGD48GMX3fKTsod/6PaV01QldELEiWmcKmOdZS4j1RVpXX1OlwVuwg5o3+//sojuLfv6y4R7O97F4mar9zvobam57zR4ZKRk7jVkuF0yrzb5WRZksLJkojiEjNVlV5qqj1RPXY+A7QtfA+PJb1G/h5LJx+Wvc+8t85POqavpKlIAld/e8/0JpFLJp2ytXTKtyL0FpcS7SsCfHD/HuTOVHbQnm1rzYY1NI5PTijRproj+mlDKsEFoKoj/ulE7BwLJ+Xz6v4GinLMLJk2jl9s/LTPOTQ0NIaf3EVTcW9v7DOCG8KuHNWgI+CRCYgCWaF4N4xL0rHbksn6fCtAd5JNRBxytDSw5c2HaS9sI6QLofuqjpyGDzjpvzMw0XOjaSxN3CvgRCTZDeKC0nfJ029DkRM7oULBtnA6FJBXFN0HJDaeHOiKJ38Jigj/PwlKrEtnEGitXYmz4RVSdaVUFR/Oxle6S9KOZxbNzWf7AVd3M+JUWLMkFs0dPTcsshr9edrZupFtzW9z3vhlzB93GZWuaIEqNASfv1S45TZ+/9ZWPt2bhxJK7BwY6Ph1VVVZ3boqYVPcSn8l293bu5vijnQBs3X1upTNuEPODpxrw/3N8pZdcFTbkHoJAJlZOjrd4Rv9SGNgOaRw7927+5wnEFDZWtHG+QvtUf1u+uKSRfl8tN1Fe4yY8SGgL2yKei1Xb+PWk76HTtCxrvld3mhcG7Xcd5abBZefnrIPTaqkqUgCVzoOFSlHImdmFr56f1wJWqxLJp2ytf6UI0XEJehfn5xYtGbDGhrHNyeUaBOMqXXvS3BJVBsfO8er+xtYfmoxFpOevS3xqv1oqq/X0DiRkKwmLGXj04riVoMKgijwToGVfdmZlLW0UxIKUmAxoDPo+KAjxLk3z2FybgaFMUk2V35hClv0r1Az+QA+S/QFZtv4VhqmHmHC7lKmr5+FZDWTu2jqYB72qGL1hkbW7miJinvONLiZkb8Lgy71Dayq+HG1bsRaeHFUL53+xJPHIsa6dAYYOdCGq2U9fcaIAKDQ3rI+7viON6xZespOscV9DmIx6AXKpttGVSKSJETv65z8izg171wshlxerf573HjdIH/+khFJuPqoaRv7Dy5OKthEGMj49dWtq1LGTztDTtY6wzf7y/KuOKZtDSayswNXxa6U6WkAaiCIq2IX1oVnJezx1BcRpwvQLdhAT2NgW27P76N3wtOtN+3g9h9PY/acXK77+lbanUGcTpnXypu4uh+lNjlWPWeV2Xh3bUtU7DeAWxftFFk09hLGm8fRGmjFF4p/eOJ2dMJ4UvahUVK4iNJN4BINAnnn2FL2x0lEX2Vr6dKfeHcEEsaOa82GNTSOf04o0UYfU+vel+CSqDY+dg69TsQfUnB6A6zcVZvWHBoaGiMD+9JpALgqjvTpuFH9IRpNRjolHW8V5gIwc5KFFUsmIb73KZW+f1Kz81Mmjzdy0Xw/rc4CjjguoCK0kcpZewklERl8Fi+Vs/ch6ATOMV2OlGMa2IMcpTjdQSo+aYu7US8r2ozF1JM+ZMmdwfjJV2Iy51N78EWaj6zrXhYKtsX1oUk3njwRxszBjfx21K8hJPc0ok51bACK3D6kfXaGi6XzwzciiUpyIOywiZTkjCbyTaXU+3tcX5sbytncUJ50fIFxeCLnIwlXNXvmI/ssfUavAwMSv+6UnVS4KpIKNhECaoAKVwULrRclTTUabhzlm+JKopIR6up505/eTxGSOV0i1B7ueXDQO+FJVeGRB/eycs05UeNrUjhZkrG4SziIbY4shHRReoNe1HPAfZC1Te9wxYQlrG/ZFDWPLtTV0D9FH5rYGO5Y+lPKBMceM3409Edcss/LRUA9ZnePhobG6OOEEm1Kss1Utvd8AfUluJRmx9fGx86xpdbBllpH0m0mmkNDQ2NkEE60mU7WnHHU/mIzaiB1zbgcd32ocqjlX2Ra38UTasduA6cH7Daw2+rwB/bT4JSTCjYRFEOII6fXYDpJS5uLUL6lqbskpvdN4vvv/CNqnMuxm/wJC7HYpiUsX0rUh6Y7nrxlfZRIkgqd3kbuuMGN/I5KtqLvY4Oh6bMz3AiCwLIFhSycbad8SxNVjV7kkIqkEygtCDe/HU0OmwhzcxdzwL0tqhlxMrJ0NubmDn3kfO+EK297+PyUTvQ6cMzx6+WO/8WVRCUrqXGGwj1v+pt2NFT4qhu6/51ROpbJK5agyzKz576/cNrj36fzYB2uPVXUPBcu6/RX1R/VdpI5XSKNgf/41MF+zZcsvS0VgiBENUeuqQr3Imv1jMNJz/vweuNb3HbSLSwvvoqX6+LFyuljT+6zD01maepr7HRLmVRVpWZVQ0Jxpz8x40fLQPfJ0dDQOP44oUSbRRPz2d7s6m4knEpwsRolFk2Mr42PnSMVyebQ0NAYWbg2HEYNhMgotTJ5xRx0WQZ2fLecjOIcTrn/fBzv1VL51AdIvazZJQUZXDD3PepcbyDqEjs2jAY3kgpBoIHU6TAeQwfvtb08YtJhhpvqpp4bvt43iTlxYSIiB3Y+jt/bTI59Fq31G6OWJhI7eseT1336S/zeahJ6ziPjRSMW+7xBL0OKS7bq49hgaPrsjBRyMvXH5NwYaWRJNk6xzGOH842Usd96wch0y7xhifvunXClRpwPvUgWvQ7HXh5e7auOey1VSU2VP378SEEN9lwzeqrqqX72dSatWAKA4gsgZZqQ23ua9Cpy+pHSsUScLr2Fm9jGwBCd8PTtGyZhzzMAcPMPpvLrRz/F0xmKSm/rL5HmyBGc8hgePFzZLcQd8dZxy0e3J1w3w5XJuL9P5o3O95LO35+mu32VMtWubkzpdEk3ZvxoGeg+ORoaGscfJ5RoYzXqKRtrY+3hlpSR3QZRoGysLWFU90DMoaGhMbLwVYfdFp4qJ9XPfsSkFXPQ20xMuHomzW8fQtf1FL/AF6AuI1y+1Ohsoqp5HRnm1CU2OsAGRPKoRno6zEgh2RNeJeZra9zEy8gtOBuDyU7twRfjxqfqQyPprRTNeIDW2pW4Wjcm7HOj09u6k6gGm9hkq76ODQa/z47G4DLfHv5c7XFtxJ3AcZOlszHdMq973FDTO+FK6OpJkk70Ohx7eXhQTeA4SFFSI49gAVPQJ77cDjhcfHDtw2RNncCM+79N/f/CxyNKR395HnG6zD4rh1//4mBUBHhvEgk5sRT14WTpD1bJSpmlLGWPIgB9SM/Je09JGvcNA9t0N+AM0lrR1meEdzox48fKQPXJ0dDQOP44oUQbgKWTu2rj69pwBhLUxhslysbauscN1hwaGhojBzUY3/jVesZYDDYTmZNtiJKIeXw25zS62J+dgVsvccpJm8kwu+PWKx1zPnMmreC9A7/jcOsGAAxAPiM/HWYk0fsJb++bRMk0EXo9Ua879FJX+lNi+upD09t146hbg7/zEIoSRBT1GDMnkjtu8ZA1+o1Nturr2GDw++xoDC6dIScBxUuGLgdZlQmpAXSCHos+j3GmqczNXTwsDpsIvROuzDkN+NrGpxW9Dscev64X4i9RU5XUSCNYwDSVFOKvPAJARkkBJddcjNGewyn3Xoug06G3ZlH/SkX3eGPp2GPeZlGRmfMuyEvYFDgdrFaJSwY4PnqpfRlAwjQwAKvOylxrGWeZzsVhdabVh+ZYqS9v6t6OoBNQEzjEpAwdsifUZ8y4hoaGxmBxwok2giCwbEohC4vslB9qoqqjV218tplFE/P7dMe0hzz4LHuxiK0EW+3IfjN6DNgNmUy2ZDJvfC4bjjh4+IODBEMqep1ASdfcVs15o6Ex4hD0IgAZJTmUXHMaRruZ7JPs7Lp7LUVfmoneZsJ7pIMsYGZ7J9vsFnJzGuPmybecijWjhFb3vrhlGYzcdJiRSEm+mcr6cIlU75vETMMMvnb6B1HNiJPRnz40kt467A19c8cuxu3YmnafHVHKGfQ+OxqDQySRKZHDJqj6kWQ9etFEhm54G+v2Triyn1RBR8NUZJ+lz/UGIn69xFRCpb8y6rVUJTWlxpJj2t5gkrvoXNzb9xFyduCpbuTjO55KOlZnzSZ30bkDst1kTYH7wmAQmFNm61fcdzoIgsCyvCtYaL2Icsf/qPJXIytBJFFPqbGERbmXhptJL4OxC/OGpFSos7qnFDeRYAMge3r63aWKGdfQ0NAYLE440SZCjlHP8mn9U8pVVWV1awUVrr04Q121x9Y6APyATsykqnMWH+6I73lT2e5le7Or24HTu/7b6Q9SfqiJ6g6vJvJoaAwDppIc/JVOPNXtfHzHm1HLap7fFfXzgmYnnblm9Pr4psXFeeeSZSrEmlHKtPGLu502EE7qHKnpMCORRXPz2X7A1d2MOEJnIIvdTTOZPX5bytjvoepDM5BIBhuWvAW0NZTTd+y3SE7eglF1fBo9RBKZkvWycYfa2OEMN6VdkHf1UO5aFL0TrvSmTiwTdtNWORtVMSRdZ6Di1xflXsp29/aEjoxYrDori3IvPabtDSaSNRtL2Uycaz9IGfstGPRYymYeVdx3wvkSNAUOBBXcHSG8nlBCB47VKjGnzNYt+AwGOVJOn02jh6pUKOTr61wbM97fv/EaGhoaA8EJK9pAYrGkMMMIQIPHHyegrO3YylrnRwQS1FkDtLfm0+6SgMTLnX6ZtYfDnS2WTSkMi0AHG6mob+uXyKOhoTGw5C6aint7Y5+x3wAdko4aUcdUgzFu2QeVTwNwwYwHOdDwetSyvszpw5UOM1KxZukpO8XG2h0tcbHf66sWADCjYBcWY7zjZij70Aw09glXoaLS3vQWqpL48yiIJnLGLByVx6cRnciUiqDqZ49rI7OtFw9biVRswlX+9PUAuGpnJHTc5GSKnHOKfUDi19PtgWIQDJRZykZs3HcE+9LzAXBVfEzImeC81SXsRMYNJLFNgQHa24NR6U56SaCo1Mwli/IH3GEzkpE7eq6/s0szmLliMvosHRV37mLW96ZgzjfS9kkHu39fGTdeQ0NDY6g4IUWbvsSSWCrbvXzY1I4vo4OARQ4/Mo9FNkBnAeG2o8kJKCoV9W0sLLLzVk1ryobGsSKPhobG4CBZTVjKxtP21iFI0N8mQkCA3ZZMnOiobx5DyYTDCce9vfsnca95Umx/ONNhRjKRG7+KPW043b3P1QLrq85jv/NsPj/9AyZYG1GHqQ/NQCMIAmOKvoSt8BJaalfS6fwINeRFBXQ6Mxk5p5FXdNWoPT6N6EQmSJ0q5w61scWxZthS5WITrgQBCk5Zj33SNlr2l+F1FqKGdOh0CkUFJr7z2XMGNH49nR4oZZay7nEjGUEQyFt2AdaFZ+Eo34S/qh5FlhElCWPpWHIXnTtgDpt0SCTknJD0uqbvqPLw6bPVzFwxiWCHTMt2J1O/XISaInhEQ0NDYyg4IUWb1Qcb+0x/iqU9EIJAAShBsB3ikoLPMC9vOvnGHA57mnlw0w4ImbrHz52Qy/JTixEEePL9g+xt6UmKcfplVh9oYLfD3ec+9BZ5tCQqDY3Bw750GrurOsja34pFji99EnNMdE62s94TFma3757LhML96CRX35MLJjoFIyjxvUqGOx1mJCMIAssWFLJwtp3yLU1UNfbqQVZgZtHcfHIy5wz3bg4Kkt5K4cTvDPduaAwCvROZIozkVLlECVeSqZPCU98Cos9hA+0KTrsHyihCyskif/nFw70bGl1IWRKyK/47HxGqX2nAXetl5g2TesZnn5C3ThoaGsPMCXfmcfqDVNS39Uuw6UEXdtNYjvBa44e81vghv551La82fAiBaJvwwkn5vLq/gaIcM0umjeMXGz+NWv5xSweuYM+XRF8iT/mhpn734NHQ0EgfQRDYNDaXRtlAWUs7E1WZAosBpzeEaaKVZ9wCf/zJufzlZ1sIyio+fxaNTbOYMH4rSooyB1EwUmy9iDLrxWxxrKHRf4iQEkQn6ikwThz2dJj+IgfacNSvwddZhaoEEUQ9psxScscuRjLYBmWbOZl6ll+onf80jg96JzJBT6rcmdarcOxexKGq01BDOgRdCHNOAzkzaoZpT8MIgsCCvKuZPYznsHR6oGhoHA06k9j97+ySDE6+pgST3ciC355OwC1jtOpp/bjn4YzOKCaaRkNDQ2NQOeFEm/JDTVElUXMn5CKJAhsPt0aNSyqihEzQXgyWw+T7ZvF/G2o53GmFYEbU+q/ub2D5qcVYTHr2tsQ/ifeFoksw+hJ5qjq0bvUaGoNNUFbplHS8VZjLzEkWViyZxPYtDZxclI33pcq48VWHL+CcGTbqXBsJxCTAABh1NsZa5jG56wn0cJU4DASqqtJauxJX60ZCwehj9XcewN22rbuPjNaDS+N4RXb6cJTvx1fdjhpUEPQippIcchdNRbKa+p6A6EQmgDPHXET1rs/w33UhnB0hoEeg9LWNZ3vjdFY1NbB0/vD2t8uUrKP6HKahkYjMEjOdleFr7I5qDxV3pI6zzyw9tih7DQ0NjaPhuBZtEjUabvZEN7NbOCmfJ947ELdubxFl4aT8KOcLHeOhYxxNiEAAyI5bX68T8YcUnN4AK3fV9rmvfYk8cpIYQg0NjYFDL4VviEoKMrjm4hLsOUaK8jPItxl54LoZvPB2DUG5529R0olMybuaIuvFHHKsoaPXE+hs40Qm5i7GOIpcNKlorV2Js+kNVCWxqygUbMPZFE67ySsavrQbDY3BQFVVWlfvxVVxJK5hub/SiXt7I5ay8diXTutTWOmdyATw0roO2irdSROZ/N4M1u7o6m+3QOtvp6ExkIxdlE/bdhfBNCLR9VaJcYuOLcpeQ0ND42g4LkWbVI2GY3l1fwMZBilu3Kv7G/jyzCLeOtTMxurmmLUEEncj7mFLrYMttY6ky006kYDSUx7Vl8gj6bQn1xoag01JvpnKei/VjR7ueCr10zaA0oLwEzejZGXacfwEWg604WrdmFSwiaAqflytG7EWXqw1ytU4rmhdvRfn2kOogcSNykNOH21rD1Hl+Zh9532CrAaRBD35plLm5i4mS+opHeydyBT0ZeKqnZEyQhsgEFTZ/EkrhpK36BAOpJxfQ0MjfQxWPfYyG01rW1ASRKBHEA0C9jIb+hMoWUtDQ2PkIKiqmtLC0dwc3xRvpLPqQEPajYYLMo20eQNxY+dOyMWoE9lc00pwgLvGW40Sp+RmsbnemfY6F0zI1XraaGgMMk53kAf/cQBnZ99P3KxZEvd8dcqAJqWMVJqq/0p701tRr1lyZzB+8pWYzPnUHnyR5iPrupfl5F9EfsnxK2JpDD833XQDtbWJ09sGGlVWwuVQcvJkuQiKLkR7YRuK2DNWJ0hkSDlY9T1P6J3BJtxyG353DrIv/cQgyeTGkBldnphofo2jZ8KEYp544unh3o1jpt0ZjvQ+XO1FDqpIeoHikq5Ib+vx/73VH1RVpXZ1I60VbQkdN3qrhL3MxoSlw1uiqKGhcfwxZkx8xU4ijjunTX8bDTd2Jn5ynMolcywYRIGysTYuLLLzicPdpxMIwiLPoonaxZiGxmBjzdJTdoqNtTtaCASTn0MMeoGy6bYTQrAB8HVWxb3mcuwmf8JCLLZpKEp0Y1V/5/Cm3Wgc/9TWHh6ym6egwwuyimTSYx6fjaAT6djXis6kI3OijaDLj/dI+AGXLiSR4cqk09bzwEtBpjPUhiAI3cKKVR+++fOF9CAICEIIU3YHRmMQUPEHVDKNGWRLY+j0qDQ5w9cqSshI7GEnml/j6BkqMXCwUFWVNasb2VrRhjNGgKiq9LJzu4s5ZTYWawJEN4IgULSskMKFdurKm+is8qLIKqIkkFlqZtyifM1ho6GhMawcd6JNokbDyVKZ+kNf81hNepy+YJK1u8YYJcrG2lg6OfxFWTbW1qcjKCLyaHHfGhpDw9L5BQBU7GnD6Y4XVa1ZEmXTbd3jTgRUJdG5TeTAzsfxe5vJsc+itX5j95JYEUdDYzSj+MKlzCGfjK/BjXm8BVEvYszPJNDmRdBFp8lIgfhLK1VV8MjtZEu56AQJQQCrPp82oRNdRhs6owdRlAl2GXRECbwhP55gB9YMG2K7GUUFklwuxM6vceKyZnUj765tIZCk1MfplHl3bbhH0pJlWo+k3uhz9JQs11ztGhoaI4/j7pu9OiZlqa9UpnTpa54MvS5OtDGIAoUZRiSdQGm2mUUT86PEl6WTu24O69pwBhLcHPYSeTQ0NIYGQRBYtqCQhbPtlG9poqrRixxSw3/HBWYWzc0/YRw2EQQx/njHTbyM3IKzMZjs1B58MWqZmGC8hsZIR1WCBAMtKCEfYXVEQNSZQIlPhZKyDIiSiM6sBwF0Rh0hf1jcEVQRg86Moiooqoyidok+ahBXsAWboedGWWdygt6NICQuvRJEGVegFSkji0CnNWU7vUTzJxsTUHyoqAgIGEQTFn0eOkH7ux3ttDuDvF/RllSwiRAIqGytaOP8hXZyNAeJhoaGxojnuBNtgjEpS32lMkHYRfPlmUX8b18966qakRM4X/pOd4q/4JqQbeLuOVOS7qsgCCybUsjCIjvlh5qo6uh1c5hA5NE4/nDKnZQ7tlLtayKohtALOkpM+SzKnYNVyhzu3TuhycnUs/xC7YkbgCmzFH9ndMpe3aGXqDv0UsLxxsyJQ7BXGhoDg6qC7G9CltvjXGVKyAtqLqBHZ9JhKsxC0IvoMvS4K52YCjIRJLFbsAFQBYVAyEsiAkrP6yE1iKDvhCSCTc/+KegMHgRPNiaDQHH2NIJKAFeglc5ge9L5Y4+xXW7CI7cTUoNx63hDbjKkHHKk/LjyK43Rw2vlTbQ7ZUpKM7huxWQys3TcetMObv/xNGbPyeW6r2+l3Rn+/TudMq+VN3G15izR0NDQGPEcd6KNPiZlKZ3o7YWT8nntQCMTbZmcnJfNE+8fTDBv6nkSlUaVZpvT2ucco15rMnyCoaoqq1srqHDtxRnqjFpW6W9ku7uSMss0ltrLtJpzjWEnd+xi3G3bCAXb+hyr09vIHbd4CPZKQ6OHZ575AzqdjtzcXGQ5hMvVTnt7O7fccmuf68r+JuSgg8efeI5bv/81ZDnm+1wfhICekC+E+2D4b+APa/6CfYydgD889svnL+uZzxB2ztptefz58X+ilyRuuus7VFaHU58iuIItIPTd1w5AFGX0mU4yM4yoKIiCSEgNxY1Tk9RPtctNuGUHqpok/UoN4pbDvfy0vjijl8PVYdGuusrDP5+t5roVk1BVeOTBvaxcc07c+JqqxCKfhoaGhsbI4rgTbUqyzVS293wJ9RW9Dem5cfqaJ7YvjdY8+MQkXefM6tYK1jo/IqAmvmB3hjpZ6/wIgGV58RdaGhpDiWSwYbHPw9n0RsrYb0E0YrHP0+K+NYacb3/7OwBce+03aW1tZc2al9NaT1WCYYeNqvC973458aDsTvAZIaSLevmHX/s+VQeim24rUgiPJSzEn3vWArbtfJ/7f/mTnuVqiJAqIyLhCbmjN2OwYTMWJHXR6PR+vIqXmg4HVuMYrEY7DXL0HEKC+qmQGqSz6xhTvhcD0BdHFEUUpe+ULY3BQU7RQD8RQXlg01E1NDQ0NAaH4060WTQxn+3NrrRSmSKk48bpD3qtefAJR3+cM+0hDxWuvUkFmwgBVabCtZeF1tPI0UqlNIYZ+4SrAHC1bkzouNHpw8JOZJyGxnAzd+5cbrjhekRR4J133uXPf/4LAC+//BIbNmxk1qxZVB3ax4/v/BY+X5D/vfohSxeXoagSV1z1Ha648kuE5ADr3v4fT//iSeg0gyom3Z4qKvgzfKg6hdNOmsNPbnkAvV5izqy5rLjjm/zhV3/j8JFqTpp0Ch9+tI3bHvguAF+94pt86ys34HS20d7WwabNG3n2pT/xgxvu4PxzF2Iymnhz/Ws8+sTPydbbyTLkoBP0OHwNUdt//g9r+PTTTzlnzjxCoRC//OWvWbHiBgrG5vPTR27n7Y1votPpuP9HjzL7tLPQ6XT839OPUb7uP9xy/e2MLxzP5NKpjLEX8ugvHmPx4suYNm0ab775Vvd79/Wvf40LL7wARVH54x//yKZNmznjjNP5+te/RigUQq/X43C08fLL/+XDDz8Ewi6oO++8m5aWloTv27hx4/jJT+7GaDQRDAZ4+OFHqK6uRqfT8b3v3czpp5+OqvZs74tfvJQrrrgCVVVYv34Df/7zX5g+fTo33XQjJpOZurojPPjgQ4iiyIMP3o/dnocgCPzf//0fe/d+Gvfa9u07jvWjNmKQ9GHRrqgkg+XXlGC3G/n2DZOw5xkAuPkHU/n1o5/i6Qy7tPSS5uTV0NDQGA0cd6KN1ahPK5WpN+m4cdLFqBO5oMiuNQ8+weiPc8anBOKEnUsKPsO8vOnkG3M47Gnmwb0vdq9X7viA5fnnDe4BaGj0gSAI5BVdjbXwYhx1a/B3HkJRgoiiHmPmRHLHLdYcNhojBoPBwA9/+AO++92baW1t5Xe/+y0ffPABO3d+TG5uLps3V/DYY7/kxhu+xpVXX8uzf3uye92JpSVcfvkV3HTTTbQ278NsFMDS5WjxmrodN7945leElBBr/rGa5//+D/wZPi7/1hUAvPzfNTzz5z9SXFzMg4//lLwxNqZNncGP7v0e+w8c4IlH/8DnL7iUbTu3cu3y67n0KxciiiKv/PNt3t7wBlajnT//8/f85ulHEASBP/3fc5wydQZ79u/GFWhNeMwCAj53gGuv/TY333wTt956Czff/H0y8gXuv/sh3t74Jl9acg21dbU8/f9+j8ls4qn/9zSvb/gvAPl5BSy7dhGXfPYyHn3oN3z729fR3NzC88//k3/963lKS0s599xz+da3rsNisfD00/+PDz/cDsDJJ5/MV75yDQ6Hg7PPPouLL/4cH374IRMnTsTl6kgq2AC0trby/e//gGAwyPTp07n++uu4++6fsHjxYkwmE1//+jcAyM7OYvLkSSxdejkrVtyIx+MhOzsbSZK48cYV3HnnXXR0uPnyl7/E0qWXU1dXj8PRxg9/eBuCIGAymTjrrLPiXjueKC4xU1Xppabaw0/u+LjP8UWl6ZXxa2hoaGgML8edaAN9pzIJJE3NTIheFAj2IQDpBBifZeJ7p5VgNRn6MbvGaMcpd/bLOZMjZcQte63xQ15r/JBfz7qWVxs+jFpW5W8a0P3V0DgWJL2V/JKvD/duaGikpLi4mKqqapqawufPt99+m1NPPZWdOz/G6/WyadMmAF5/7SW+ce2NUaLN7DnzePWVF3A6DiNJWbhcR8ILLG5CWR6CnZnccfMPaG5oJtuazZP/+CM7Wj+gYvtGnlv1VwAEQcTha2BsqACr0Q4oVFYf4JN9uxAFHS+/voozzzgbOSSz6f136fS4sRjsbN26FZOURUfAyXnnnccNX78Zg8FAXu4Ypk46mT37dyc8XkEQ0QkSFZu3AFBZWYmqqgQCAWoOHmJc4QQA5s89j6mTTuaLX7gMnSCRnWmhYEw4bWrdprWoqsqnB/ZQX99AXV09APX1DdjtdmbOnMk777xDMBiktbWVffv2M3FiKQAffbQThyP88Gvr1g+4+ebwfn/+85fw+uuvp/xdGQx6br31B0yePBlFUTAYwtdQs2d/hn/+85/d4zo63Fx88cWsXfs2Ho+n67UOJk2axJQpk/ntbx8HQJL0bNu2jY0bN3Lzzd9lxYobeOedd9mzZw+VlQfjXjueuGRRPh9td9Hu7NttbrVKXLJIK+PX0NDQGA0cl6JNX6lMABvr2tJ24pxakINBJ1LX4aW+wxcn4Fj0On42d+qwlEM53UHKtzRR3eQlKKvoJYGS/HAssTVLK88aKJz+IOWHmqju8BIMqeh1AiVdCV/l7VujnDPJXDMQds7ICZpHApxlm0pIVdjmjG6ELSvpl/ppaGhoaKSPqobLW3sj6TMxmnLQG634vc3R43UKnbYODvApFEI7Dv73zkucOvM0KrZv7B6XrbdhNY7BoDPREXBiw9K9HRUVVVVRVaIazYf72Lhw+OqRBR/33PoAl37lQlrbWrj/jkcwGhO7InSCngwpXDIVDIa/LxRFQZa7vjvUcK8ZCG/v3od+ysFPK7tLrCK9c4LBcJNkVVGjmjGrqtK9fjJ8Pl/3vxVFYcOGDXz2s+cxf/687tKqZFx55ZUcPlzDffc9QE5ODs8884eU42MRBNizZy+33vrD8P7KQYKOFhSfj6987iLmL7yIW26+kZfW/JdXX3+Db33rOs45p4wf/OAWXnrpJV555dV+bW8kk2PVc1aZjXfXtqSM/TYYBOaU2bS4bw0NDY1RQupv4VFOJJXp7jlT+Oncqdw9ZwrLp43nyyeP48LiPKyGxJqVUYyu8f2w3smWWgeH270JHTdnFuSkFGyc/iDP7T3CQ1sPcN+W/Ty09QDP7T2C0x+fOJUuqqqyan0DDz53gHUfOais91LT7KOy3su6jxw8+NwBVq1viLsY1egfqqqy6kADD75/gHW1DirbvdS4fVS2e1lX6+DB9w+wvUaNsm691vghP9n9HG7ZF+eaAQgmceRcXTSP52s3xL0uiceltqqhoaExaBw+fJiSkhLsdjs6nY7zz/8sH38cLhcxm82cc04ZAJ+7ZAk7tr8XtW7Fplf57GfPQwkcIeBzYLFYUQTo1IFHkjDqM7DbxgBg0Bs475wL2Hdwb9QcrkArTn8zroCjWxSZXDqVaVNPQUDk0osW88H2LXy0ezvnzFlAhjmTDHMm55VdAIDRYERRFdo7nORYrFy04BJy9GPIknK56+Z7+cIFSzCIZrKkXApME7Hqk0d1G8SeEqCN773L0iVLqe88RE3Hp5RMLIobrxcTlwzt2rWLBQvmd6d0TZ06lUOHqhKOfeWVV7nxxhXs3r27W9CZPn06P/nJ3XFjMzMzu106X/jC57tf/+CDD7jsssu6f87KymLbtg+58MILyMgIO1azs7Oprj7M2LFjmThxEsHmJmhuZKzNSm5ODp1tDl7+x9954Y9/YGJhATkCeDxeXn31NVav/g9TpkxJ/KaNYhYvLeC8C/OwWhNfO1itEuddmMfipVoZv4aGhsZo4YS8G+zLiTNvfC6/3VGVVjPjVClRqqqy+mAjFfVtcXNVtnvZ3uyibKyNpZML+h3rvHpDI2t3tBBIkhTgdMus3RGuIV+2oLBfc2v0sPpgY8r+SE6/DAEbhCaCrSdFJJlrBkAvSPgTCDc/3Jn4aWSpUbMva2hoaPSHQCDAr3/9G371q8cQRZF33nmXnTvDoo3D4eDcc89lxYobOHz4ME89+VDUugcP7OWF5//EX559FSUU4o11r/CrPzyKAqDKmHUG/vbE80iShCiIlL/1Mu9sXgvAV5Z9A6C7TKo3e/fv5gffuYOpk0/mvQ8389q6clRV5e8rn6H8n2/T6mhmX+WnuDs7cLldvPzaatau2kxDYwOf7N6LiIjNUMipJ53B9i27KTBNTOu9sOjzulOlnlv1N4rHl/La8+8iiiKV1Qe4/kff6B6rE/RkSbaE8+zZs4eKii385S9/QlFUHn/8cbzexJHRNTU1OBwOXnvtje7X8vPz8fsDcWNfemkNDz74AEuWLGbDhh630ssv/5fS0lKeffZvhEIhfv/7P1BRsYVVq1bz9NP/D0VReOed9Tzym9+z4vs/5v67vkdWxm0IAjx+332oqNzys/tQlBBej4ef3XwTEydO4pb7HkAVBbxeHz//+UNx+zPaEQSBJcsKOX+hndfKm6ip6nFiF5WauWRRvuaw0dDQ0BhlCGofVozm5o6h2pcRxaoDDX02MzaIAhcW57FsSlgUiS2h6QjIuAIyqcIvY+dIB6c7yIP/OICzMw1RKUvinq9OISdT+4LuL05/kAffP5BeEpnOB2M/BF34gvRXs77JP2vWs60tXrQpNo7BJXvimhEnwqrL5J7iq7vTo9KNFNfQ0NA4nlmy5Av9ftgRYc2a/7B48eXdPwd9TchBR8JIbI8I3gHwJE8YW8QTv/gj13z7q6hqCLfck8BmNmXg9XkwmzJY9ef/cf1t36TmSHX38iwpF5uh5xrhscce5bbbbu/X9p3BJtxy4mOMIAgiWVIuVv2xPyiwWCw8+eQTfO1rX+92/N5ww/W8+eabHDxYeczzqyq0tAdo9wSRQyo6NUShvwFdkvLj3giSHlPxRAQp8XNLVVV56aVXjnkfNTQ0NDQ0+mLMmOy0xp2QTpt06KuZsdUodbtkUjlq+iKgqFTUt7GwyJ52T5zyLU1pCTYQdtyUb2li+YXj+7VfGlB+qCn932fIBO3FkHsASO6aAZhiGotR1KdMmwIwCBJllmnkSJn9ihQ/2hsZDY0THTnQhqN+Db7OKlQliCDqMWWWkjt2MZIhsftAY/QjdbkZZbkdVekpW1YE8A9QEbkoSIiCRI6Uj0IQT8iNooa39aPv3k3ZmediNJj45+q/RQk2OkGPRZ8XNVd/BRuAHCl8jB65nZAaX5od6YsTGXcszJ07l9tu+yFPP/37qBLtp5/+/VHPGVB8tAaOEFKDqCoEPTkEvVmoXQ4iS9AVJdjoTCbMY8cj6HR0HNgXNVek540h//h3IcvtbTheW4PvcBWqHOwSrErJvWQxUo52TtPQ0NAYLWiiTRL6KqFaNDG/W2RJx5UjAhdMymfxtHE8+f5B9rb0OJicfpnyQ00sn5aesFLd1GNHLh2bwYolk8ky67jz6V3cdc00DJLI+3scrHy7FoCqxsT2ZY3UVHdEv29zJ+Sy/NRiBIG43yEA/r6VUqsuk0W5Z2LRhevxE4kwkXEREQaiI8UzlQBlviMUhjzoVIWQINKgy2CLHN6fZXnnHM3hamgcNaO9IbqqqrTWrsTVupFQsC1qmb/zAO62bVjs87BPuEoTRY8DertsINzIVm/KR1JyCQZa8Hk6UVHwGYNRTtlsgw2bsYCgEuhqGtze57b0ohmjaEZu0/PdG76HIIAOPZlSTrfz5YFf/SThuoIgdjUYPvZLNUEAqz6fbCkXV7CFgOJFRUVAwCCasejzBmQ7AFu2bGHZsisHZC5VVWnyVxFQfESaxymKjqA/o1uwATCq0WVXIZ8PX1MD5rGJr6sU3/F9XaSqKq1rVuLaupGQM+acVnUA985tWObMw75YO6dpaGhojAYGTLS56aYbqK09PFDTjWjeB1Z2/VtWVKpdXuQUluMImwSBpzOMGCUdh9ujb9S36XSstCROhoilqsGDPxje3ibgpf8nMS7PTGu7n6+8LFHX4uWUUgu7D7lQVZUP9CLvr4yPmT5RmTChmCeeeLrPccFQtAi3cFI+r+5voCjHzJJp4/jFxk+jV1B1Kefr7ZyBsLiy0Hoa5Y4PqPI3ISsykihRasxnUe6ZUSVRFa69BJQgC3w1zAi0YIl5Ujo+5GZqsI2D/kacObOw6rP6PD4NjWNFVVVWb2ikYk8bTndM3656L9sPuiibbmPp/P737RpKWmtX4mx6A1XxJ1weCrbhbAr35sgrunood01jCBFECYOpEGe7H2dbENP4Iwi66HIbFQVREAmlUYYjCnoKk/SdGUrnS/S8UlSpVV+E1GCXyOPrJfKYukSewRVkQ2qQBt8hlBhHquzLRlXC37cmg47xeWZCtU0k+fNNzHEe0tC6ZiXOd99ADSQ5pznbcL7bdU5bop3TNDQ0NEY6Ayba1NYeHtEX5YOFwx9ARqV3bIPFqKcgM5y+cKTDiycSwUm4HMoAxMY8BBSV6g4vAgImScRuMiCJid9PURRB6H3BIYT/J3T9HyH8miCgdo0/EX83yUhXXNTrot+zV/c3sPzUYiwmPXtbXHHjrXoz6DITOmcsqhWr+xQ+deRw34H9UZHhy/PPS7kf5Y5wpPgCXw2z/Y0YknRJsqhBZvhq+ajyKc47+ba0jlFD41g4Hhqiy4E2XK0bkwo2EVTFj6t1I9bCi5H01qHZOY1hwZIr0i46UcXeXg5wB9vpCLRhNY7BarTTILtTzqMTkgv5Q+l8ORpUFdrlpoSiUkDx4g25u0Wlgby8CKlB2oMteEMdKGqIqGjGLvSmDgRBIeCx4guEaHD4GCNE17HpjCZM+YUIej3msePx1h+JnuQ4viaS29twvb8xqWATQQ34cW3diPX8i5FyrEOzcxoaGhoaR4VWHnWM+OT4G+hckwGH149Rp2NMhoHq9p6nRO2+IK4EUd8KKr4uZ4c3FKIjIJNj1JNnMsRdW5gMIt5A+CmfSa+jMNeEXhIwGXQYJJGJ4zJpcvpQup4kmQzHdbL7oFGSbaayvcdCrdeJ+EMKTm+Albtq48Z/JncMi4qvjnLO6ASJUFsJ7e1ZHA6EgJ750k0Qq/Y1kakEmBFoSSrYRDCgYHV/ihx0ajeWGoOK0x2k4pO2pIJNhEBQpWJPGwtn20dkQ3RH/ZqokihL7gzGT74Skzmf2oMv0nxkXfeyULANR90a8ku+Phy7qtGLCROKB8Xd2xxsxiW7CGXIqChRhgyL3kamwYIk6Gn1NfRt1lAF+sh6QESHVZ84ermvdQeTcOPitqSNi2U1SEfQgaqqA9K4OLLNsEjURy85IYTO1IG+q7cNqAhGI6rP07N/fh8dh+KDALqnMJqSvr8TJhQfze6PGByvrSHU3nNOyygpZfJ1K9BlZrHjB9+NGhtyhnve5F+tndM0NDQ0RjKaaHOMqAmeArV6/RRkmtCJAp5gtIVaQU304CgOWVVp84XFnTFmQ9Qyu8VAh0dGVlR8wRAH65I/7ZN0AnaLIelyjeQsmpjP9mZXdzPiLbUOttQ6Eo6NRL/nSPoo58yqAw2sbW0hoCS20jv9Mm9VN6CEfFx5cmnCMUE1RJnvSFRJVKobywzFp91Yagw6kYbo6fTVGskN0X2dVVE/uxy7yZ+wEIttGooSL7D7Ow8N0Z5ppCKdEtf+sqrl36x1riXQ1R+lgCC5SYXyMX3Od3rORVyYP/rOw265jX8c/imdobY+x2bpbHy1+AEyJesxbXN9ywvscL5BUE2/xinozSa453pu/OLpjDP52HnnjxA7nX2up7PaKL79gePWXeI7XBX1s6e6iup/Psuk61YkHO+v0c5pGhoaGiOdQbNgPPPMH/jLX/7EmjX/YdWqf/OXv/yJ//u/X/drjsceexQpSSRjLGedNYe//OVPPPvs37j22m/2azt33HE7hYXx1v0bbriez3/+kpTrCsS7IwRBQFHD/W6aO5NfgNzzg5v50pIvJl2uoNLuDyLHNDiWdAI5mXrEFPbeb3xlGXf84HpyMvT8+O47Eh7faMBgMPDiiy8AcO6553LFFcuGbNtWo56ysTYMScrUIhhEgbKxtrj0L6c/SEV9W8oG1QBBVcfmI/UcOvTvhE/+9IKOwpAn6jWXYzdBfxsGU652Y6kxLEQaolfVe3j29XDazfzT8mhx+rnnj7v40oVF6KWev52R2hBdjfv7ETmw83HqDr1Mjn1W3PhEf28aox+n7KTCVdEt2AC0InG0v21JMDI3d/HA7NwQs8WxJkqwmT3mAu6c/QzfmfEgM+3Rje7doTa2ONYc0/bcchufuDYmFGxSbVtv7sBnfZs7nvqYa36zn/f00wj00WdHMBixzJl33Ao2EE7H6g9KUDunaWhoaIx0Bs1p8+1vfweAa6/9Jq2traxZ83K/50g31lIQBG677UfceONNNDc3c//99zJ16lT279+f1vqPPPJov/ctgkkS8YaiXRQuf+ISqKNBVlVafQEKMoxRr+flhN0z7Z4gcij+Rl8Uw+VSeTmGYzq+kcSmTZuGfJv9iX6PJVlkeKbgpsy4mUJdIzpBJqRKNIQKWFubwxJpZVyj0xJTPro4i3r4xtLvbSbHPovW+o1RS7UbS43BJijHn3ciOnKiUr9E56mRgCBG3+SNm3gZuQVnYzDZqT34Ytx4URx5JV4ax0654384Q86o12QE2hGxoZC6zXw8My0Ljtl9Mlw0+ariXgsqAQw6M55gR9yyRv+xPSSIFYn6s22TtaH73+ttCwCY0bELSyjegayz2roTk45nBCn6HJVRVELJ8msw2u1M+vYNVD4T7VIT9do5TUNDQ2OkM6TlUXPnzuWGG65HFAXeeedd/vznvwDw8ssvsWHDRmbNmsXhw4e5//4H8Pv9vPjiC3zlK9cQCAT44hcv5YorrkBVFdav39C9LkBOTg5ut5vm5mYAPvxwO/Pnz4sSbURR5Pnn/8lXv/o1AoEAWVlZPP30U3z1q9fwu989zmOP/YrDhw+zZMlirr76KhwOBw6Hg+rq8BPk6dOnc9NNN2IymamrO8KDDz6E3+/na8uWcOVVV6ICf3zuef7+4uqkxy8JAtd+6Uq+9dUv09TqoKmlhf2HqrAY9Zx/5unc/N3vojMYqDxcw013/wyvz8cl5y/grptuxCiJ7Nmzl0ceeZRp06bxox/dil5v4KOPdnLXzx7B45O56MIF/OSO79HhdnO4uormpiYEgajjW7PmP7z99jrOPHM2tbVH+PGPf4KiKMyfP48bb1xBR4ebqqoqGhoaot7jWGw2G7fffhtjxuTh9/v5xS8eoaamlt/97nE++WQPZ545G0EQuPPOu2lqasJut3PHHbeTnz+GUCjEXXf9mPb2du666w4mTpxEZ2cnDz/8MDU1tdhsNu6772fk5FjZvHlz9zY///lLKCkp4emnf8/dd99FZ2cnM2bMICMjg3vvvY8DBw5gs9m4//57ycnJoaJiCxdccD5XXnn0yQj9iX6PJS4yfLyNRZbNeJo3oMTECo+X6uhUzLQ1+HA7d5JhmUru2MVIBhuLcuewq3Zl1HjtxlJjuIm4aEoKMrjm4hLsOUaK8jPItxl54LoZvPB2TZSwI+lGZuNPU2Yp/s4D3T/XHXqJukMvJR1vzEycBqQxuqn2VUf9nKu3cetJ30NE5KVDf8DhqSTds2qhaQoXjPnawO/kECHHNB7e2bqRbc1vc974ZcwfdxmVro+jloeO8SFBIpEo3W0LYq8HI4LA+tzz2GaZTZmzgrGBBqwmgVybGWPRRHIvWXxcO2wimIpL8Vf1nNM8NdV8/JM7ko43FmnnNA0NDY2RzpCJNgaDgR/+8Ad897s309rayu9+91s++OADdu78mNzcXDZvruCxx37JzTffxNKll/Ovfz3fve7kyZNYuvRyVqy4EY/HQ3Z2dtTcTqeTzMwsiouLOXLkCOeccw6tra0ALF58GQBr1rzM1q0fcPbZZ7Fhw0bmzZsX59zIy8vj6quv4lvfug6Av/3tL2zeXIEkSdx44wruvPMuOjrcfPnLX2Lp0st56621fPPr1/C5q7+KJyDz5gvPsm5TBTV19XHHLwAl4wq5/mtf4bwrlgOw/j8v8Ob6jeRnZXD99dfz3R/ejs/j5otLr+DaL13Jyv+Wc//tP+Sya76Nv8PJxDF2AO6++05+/vOH+PTTfdx337185cov8M477/Lzn/2IFSu+i9Pp5P/9vydobmqK2w+73c4777zL44//lkceeZjPfOYz7Ny5k5tvvpkVK27E6XTy5JO/o6GhIW7d3nzvezfxl7/8lX379jFt2jRuuukm7rjjTgA8Hg/f+tZ1fOlLV7NkyWX84Q/PcMst32fdunW8+uprGAxhl9AVVyyjrc3Jvfd+g7lz5/LDH97KLbfcyrXXfoP16zfw73+v4sorr0i6D2azme9853rOO+88li//Mvff/wDXXvsN1q17l9WrV7N06dKUx9Afcox6lk/rXz+O2Mjw883raa97E10Sw32mGBZ5gr5q2n3VuNu2YbHPwz7hKnQZxdCxq3usdmOpMdyU5JuprPdS3ejhjqc+7nN8aYF5CPaq/+SOXYy7bVtUM+Jk6PQ2cseNzpIXjdQEY5rfLhp7CePN42gNtGLKKOWQp5Y8ZLJRkCBBYXS4JGqmZQEXjPnaqE5slGJKjObkX8SpeediMeTyavXf48brjvEhQaxI1J9to8a/z51SFh+Ufp6y6TYWzE/e5P94wyk7KXf8j6qzqvGUmND5QxQ0KZzzfogsT+J1dFYbuZdo5zQNDQ2Nkc6QiTbFxcVUVVXT1CUkvP3225x66qns3PkxXq+3W0B56621XHPNV6NEmzPOOIO1a9/G4wl/63R0xFtkH3roIe6+Oywa7N37aXcvnN5lWevWrePzn/88GzZs5Pzzz+Ovf42+AJg+fRoffPBB93a2bNnSve9Tpkzmt799HABJ0rNt2zamTTuZrVu30tHhxhtSeGvDJmbPOjVOtBERyDGF3TTvbf0Ad2c4EvqtDeGSFmtBIdNOmspfn/odigrodKzf8j6zZ81kfcV7NLSEHUQdRxqZYLchCCKffroPgDfeeJO5c8+msvIQVVXVtLSE43XfeeddTCZT3PvU0dHBRx99BMC+ffsZO7YQp9NJVVVVt9D17rvrMZtT32B95jOfobS0tPtnRekp34n8Lvft28+lly4CYObMGdxzz08BCAQCXa/N5Nln/9H9Xt9xx23dr//pT2GXz5tvvsVVV12ZcB82bgxvZ//+fVx99VW91v0zAG+/vZYvf/noXTbHSu/I8EzBjad5I6Z+dEgIBdtwNr0BwJkTr2ff7jsxJIgTj0W7sdQYChbNzWf7ARfOzj6SXgBrlsSiuQOTMDPQSAYbFvs8nE1vpIz9FkQjFvs8LZXtOEUfE6+tF/UccB9kbdM7XDFhCetbNtGInkZAh8okXSZFejshJYhO1FNgnMjc3MXHVBLllsP9YZp8VchqEEnQk28qZW7uYrIk27EdYD/IN5VS7+9xamxuKGdzQ3nS8QXGY3tIECsS9aavbRuyW7FN3EbIVYJVNyHsgi0ws2hu/ohMqxsMVFVldesqKlwVPSV+dgCRunEiByaLzNijsGBzKEpsPBH6+2hoaGgcL4y49KhwI9b+9z7YseMjbrjhRgCuvPJKJCm+An379h386Ec/xGrNoaioiD179iTYfvy/BQH27NnLrbf+MGrs/PnzwuNi5hARwilRXWQadNhMBkKqiifYc4MTmV8URT7Zs5fv3/pDjri8+Lp65Fxy/oKoeWVVxekPEkoSU9m7iW2yKMuIYBIZI4riUT2FUlW49tpvJ9xOIBDsGqMgikfb61qN+W88wWD4WBRFRacLb2ckPVHrHRleZtyMCVf3slTpT71RFT+u1o1YCy+mYMwFtDW9Dkog4VjQbiw1hg5rlp6yU2ys3dGSMvZbLwaZkb8Xf8t7yPpwyd9Iwz4hLPq6WjcmdNzo9LZu15vG8UmJqYRKf2X3z683vsVtJ93C8uKreLkuWjQIIVCUNZfl+V8ZkG2rqsqG1pXscW3EHdPbpd5/gIPubUy3zGO+/aoh+Y6bm7uYA+5taadHHWvD5ViRqD/oJJnT51Tx5fFfO4brjdHN6tZVUalnsXRki2w7Pfy5OW9z+PryROnvo6GhoXG8MGTfcIcPH6akpAS73Y5Op+P88z/Lxx+HLfVms5lzzikD4MILL2Dnzmir/bZtH3LhhReQkZEBEFceBWC15nQvW7To87z++htxY0KhEB9+uJ1bbvk+mzdXxC3fs2cvZ545G7PZjNlsZu7cswGorj7M2LFjmTRpEgAmk4nx48ezZ89eZs+eTXZmFpkZZi6cdy7bdn6MThRY/aenKcwPR4J2BGQqnW5e3bKNeWfPISsjg6yMDC6cF05C2P7pfvILCjDkFeILhcgwm5hYXMQHH33MgrKzKcjLCx9jjgVnRwdBOURp175cdNGF7Nz5MYcPH6a0tLT7/T3vvAWxh5eU6upqSktLyc3NRafTMX/+/O5lS5cuTVhmtHPnR3zxi5cCYaEk8t4k4+OPP+5O4jIYDBgMBnbt2sWFF14AwNlnn0VVVRUAu3bt4oILLgTo/m+6fPzxLs4//3yA7v8OF4sm5mM1hP/ECnWNUcv6Sn/qTSjYhqNuDfYJV2HLvxidPvFNr05vw5r/Oe3GUmPIWDq/gAtPz8OalVj/zw4FmN3RyrlbO2lf7aB664O01LyQVFQeLgRBIK/oaopnPEBO/kWYMqdgMJdgypxCTv5FFM94gLyiq0eUKKwxsCzKvRSrztr98xFvHbd8dDvf2/Ej3mqKFtWtOiuLci8dsG1vaF3JDucbcYJNBHeojR3ON9jQujLh8oEmS7JximUeesGYcpxeMDLdMu+YGy7PzV1Mpq7/Yq5ZzOZrRQ/xlaJ7T1jBJlHqWSKCBoHdMw3I0yaSs+Aiim9/gLwl2jlNQ0NDY7QwZE6bQCDAr3/9G371q8cQRZF33nm3W5xxOByce+65rFhxAzU1NTzzzJ+i1j106BCrVq3m6af/H4oS34gY4JprruHss89GVVX++Mc/4nA4gOieNgDr1r3Db37zq25XTm9aWlpYufJF/vznZ3A4HOzduxcAWZa57777+dGPfkhGhhkQeOqpp3jvvfd57rl/subZPxFSVZ5+9jlq6urJNkhMKi7C2e6Kmr+hqZnfP/tP1r74HE2tDnbs/gSAYFDm+tvv5pc/u5vMjAwEBO779eO8vXEz9zzyK174wxMAfLhzF7fe+yDfu+defv2zH5NhNPLxxx+zdu1aFEXhd7/7Hb/73eO43W4OHUo/zSEQCPDEE0/y5JO/o6PDzZEjtXR2lXAVFxexa9euuHV+85vHue22H7J06eXodBKvv/46lZWVceMiPP7477jzzju4+uqrkeUgd931Y1atWs1dd93BX//6FzweDw8//DAAf/7zX7n//ntZvPiyfidG/eUvf+W+++5lyZIlfPDBB3R2JinkHmRUVUVuWs10nZ8PmIFOiC0h6Ul/yrRMjkt/isXfeaj7xtJaeDGOujX4Ow+hKEFEUY8xcyK54xZrDhuNIUUQBJYtKGThbDvlW5o4UFOLzyEjeSUKPTJlLe1khRQgD5ryUA5NoO3kGtQvrmRM8fCVLiZD0lvJL/n6cO+GxjBglayUWcpSOhYADIKBMksZOVLOgGw3Vdx1b4Kqnz2ujcy2XjwkqVTz7WHxP5H7B8IOm4j751iJiEQ7nG/0+T7EbvtEFx1iU88iDbR1go51ze/yRuPa7mUdGQrbr542YA4xDQ0NDY2hQ1D7eOTZ3BzfPyYRS5Z84ai/PNes+Q+LF19+VOuOBGRFpcrlQe56K6dOmsjXrricex799aBt06wTKbFkDNh8JpMJn8+HTqfj0Ud/wT/+8Rzbt+/g4Ycf4p57foos9923YiRgMBiQZRlFUfjc5y7izDPP5KGHHo4ao6oqL730yqDuR0vNCzib3kAJ+VnvW8DJ+r0USj2NocdNXIIt/yxa6tbTfGQdSopeGgAGcwklM38+qPusoXEsyIE2qp55FnVnEcgpeklIQYRZNZRe9zVNZNQYUSTsDdILqy4s7Cy1LxswseCtpr/yUftb3T/PHnMBFxUvx+FrYHPDK+xq3Rw1/vSci7gwf+iExU7ZyRbHGhr9hwa0f08sqUrEAAREMnQ5TM2azdzcJaM2Tn2geejwz6PK+q4p/jIX5H+W1kArL9eVs74l+sHXJNNk7i66e6h3U0NDQ0MjCWPGxFcQJWLE9bQZCmRFpdUXwCcrqKgICJgkEbvJgCT2/0JMEgVyjHrafAEUYH/loX4JNgZRROy6AAwqStKeNb0JKgNbXnD55Uv43OcuQq83UFFRwfbtOwC4667R9eVeWFjIvff+FFHU0dHh4sEHh17okANtuFo3oip+BAHOM68noET/qfWV/hSLFuGtMdJp2fcy6t7C1IINgKxH3VtIy76XKZwxemORNY4/BEFgWd4VLLReFE7h8VcjK0EkUU+psYRFuZf222HTV3PhRHHXQSWAQWfGE4x/aNboT99FOxBkStYhEYkEQWBB3tXMtl48JCLR8UJs6lmiBtq9kY8xnl1DQ0NDY3gYEaLNULlsVBVafAHa/cFuV0wEbyhER0Amx6gnz2Sgvw/R8kwGPMEQ3q4mwv3BpNeRZzaiqCrV7X2nAwGEVBVZUY9KZErEv/71fFRi12jl8OHDXHvtt4d1Hxz1a+KamdpsE/F0VKEe5QWT3jQOOdCGo34Nvs7wPIKox5RZSu7YkdncVePEonOdDJ403X+eDDzrOmDG4O6ThsbRkCPlHHMJSbrNhWPjrne2bmRb89ucN34Z88ddRqUrusdf6Di/6R4qkeh4ITb1LFUDbQBJewCkoaGhMSoZEaLNUNHiC9DmC0YlO/VGVlXafOELojFmQ7/mDqkqwV6x1/3B5Q/i8ie+ELMY9RRkhqO7j3R4u9OnVKDVF6AgI3WjQI2hx9dZFfdaZ/t+rGPOxNW6EyVB+lNfaVK+zkMc/uSncWKQv/MA7rZt3ck2J3p9v8bwoTT2CDYZpVYmr5iDLsvAju+Wk1Gcwyn3n4/jvVoqn/oAgFCDebh2VUNj0Ik0F07WoyXSXNggRgudc/Iv4tS8c7EYcnm1+u9x6+n6edOdToz4SIka1+g/salnkQbaySg1lgzFbmloaGhoDDAnjGgjKyrt/uSCTQSF8DibUd8vF0urLxDl3kkmtvQXAWj1+DFJOsZkGKhu75nHJx+dSKQxeKiqirPDgzkuyELE2fwB2bZT8HRUE5KjHVUux27yJyzEYpuWME0q6KslWfx5KNiGsymclpZXNPKau2qcIIR6PvSeKifVz37EpBVz0NtMTLh6Js1vH0KX2XPDKYR0w7GXGhqDTn+aC6sxpc6bG8rZ3BDvkIhQYJyY1j6k4/SZln0uArCnY9OIiBrX6D+Lci9lu3t7wh5MsQx06pmGhoaGxtBxwog2/RFVZFXtt4slVkDJNRlweP0YdfFiS39w+YNYTQayjRKeYHTpldqHAKUx9Kze0EieDOaYnlLjJl5GbsHZGEx2qvf9g9a69TFr9qRJ5dhnJUiTSvC79gAfAa2gKn7apFeQT3KS94WrkHK0p6MaQ4toMNB9Fszw4p24jn37X0G5rIMa33oyiyYxbvzlmMdn4z3SgWDon5tRY2ThdAcp39JEdZOXoKyilwRK8s0smpuPNevEKMFI5lAJKn46e4kgqZoLy2oASTAip5maNDd3cVr7lo7T50NnuCG/QuIHQBE3EMCCPO2BwEjBKTspd/yPal91d08bETHp7xEGPvVMQ0NDQ2NoGTDRZsKEYmprDw/UdAOONxgKN7XpwmbU0+rxYZR05JkNHA4E48b3EawVhaIqUfO3enzkZ5mQRAFPIHrb/UEFXL4gFoNEk9sXPY9Kv/ZRI8yECcWDMq/THaTikzbOLCxgXHZd1LK+Gg/3FnVqD76YdJwldwbjJl2B45UKWja8i9LR+4I8REfTBjwf70Q3zQazdaDKWu8bjSEhc3IRHUfq4aydCNOqCZo9BL2ACbwB8LZU0tayldD4cXBkFplTBufvUGNwUVWV1RsaqdjThtMd/TCist7L9oMuyqbbWDq/4Lh1Z/TlYhGJd5Glai5sFM0ICimdOXrByHTLvLSa8abr9El1k9+936qf7c7XmZY1l3yTVloznPSVbiYgJHyY1zv1TENDQ0NjdDJgkd8jnfu27KfG7ev+efZYK8tPLcZi0rO3xcWvNu+PGl+cZeKnc6emPf9DWw9Q2e7t/nnuhFwuO3kcelHgt+8doMblTbF2ePzyU4sRBHjy/YPsben7fb9gQi7Lp41Pex81Bpfn3jrCuo8cZBrcfO30v2ExuQdlO9bDZ+La9DGKP8UFuQ44BZjd6yW9Tet9c5whOztwlG/CV92AGpQR9BKmkkJyF52LZE0vQnDg9sXHoZd+CVP3gyFFQ/aADvZNQn+KipiNJigOERFnzMF6D62uIHJIQa8TybXomTw2I22HzKr1Dazd0UIgmPzSwaAXuPD0PJYtKBzIQxgxrG95IaWLJRa9aCCoBDhv/DJKs6fxt73RqYZj9MWUZp2WNO46S2frV5lSbIx4Onwm73wMkomdLZvwyK645ZJgwKYfhw4dIWSt780wsKrl36x1riWgxvfFiyAiYtFZsOgsx5R6pqGhoaExNGiR3zHodULMzyL+kILTG2Dlrtq48ZKufze1JdnmKNFmS62DLbWOtNdfOCmfV/c3UJRjZsm0cfxi46cpx1uNEosm5vdrHzUGl+qm8O9/jD2f/Ann43O8AUp6F/Vp4xFwbvkA+po2BBwEpgNdfS613jfHD6qq0rp6Ha6KXYSc0QKvv/II7u37sJTNxL70/KET6DK8CCcfQZX6SNAzhGDqIYKiDJ3RzbR11st55b3mE7rkZqCJOGM2f+KgvTP6d+MPhnD7Qhxu8qXlkIm4CVMJNgCBoErFnjYWzraTk3l8/d7SdbH0pq/mwpLOMKBx17Ex4qnKsyLUdR6k1d9AMEGjfAiXcTUHoufV+t4MHU7ZSYWrIqVgAz3uqe+Pv+WohRrZ04bjwzX4WqtQQ0EEnR6TvZTczyxGytAEOg0NDY3h4IQRbforqpRm9y/ZZNHEfLY3u3D6j653zav7G6KcP6kwiAJlY23kGI+vi+HRTlAO38hU1XtYteNsvnSmQGvduxjE9rixbn8moqiSofeSrMFwGCFqecahUjyeQ+ntkAfYCczteUlV/LhaN2ItvBhJb01vHo0RR+vqdTjXfoAaSJw6F3J24FwbTmnKW3bBkOyTo34NqtQjIKVMRDNGnyflQBsvVbj5pGUXLm/0ee1EKbkZLFZvaOzTGQPgdMu8tb0FIKlDpnxLE87O8O+udGwGK5ZMJsus486nd3HXNdMwSCLv73Gw8u1anG6Z8i1NLL/w+HKDbnGsSbtfTYR0mwsPVNx1bIw4pC7PAmjwHl15u9b3Zmgod/wvqiQqV2/j1pO+h07Qsa75Xd5oXNu9zBkK97zpb2y9qqq0bl2Ja/9GQp6YpMqmA7irt2GZOg/7HE2g09DQ0Bhq4jJujlcWTczHakxPozoaF4vVqKdsrA1DH4lTBlFgksUcV/Hel/OnNxOyTCydXNCv/dMYfPRS79+9gG3Cl6lUbiWUcQH1HePJyJ5EnWsc2458hr9++A3Kq27DVngpOn3iJ1c6vQ29KfqGx3MoWrDJKCnl1Acf4fTfPJl4p1rjXwoF23DUrenPoWmMIGRnB66KXUkFmwhqIIirYhdy++CU6cUSG3Xvcuwm6G/DYMpNmIjWm/VVC9h25PQ4wSaC0y2zdkcLqzc0DtTunhCk64yJEJRV3t7RitOd+Gl+xE0IYXH62derAZh/Wh5V9Z3c8dROdux3do/Zuq8dpzv17360Eetigb4FkVT0p7lwukhC9N/RztaN/Gr7jXzcupn54y5La47ZYy7gztnP8J0ZDzLTfk7KsUHVzx7XRjpl59HuskYfVPuqo35eNPYSxpvHoRclfCFf3Pgqf3Xca33RunUlzt1vxAk2EUKeNpy736B168p+z62hoaGhcWycME6biKiy9nALASVFLf4xuFgiQkpFXRvOQLzjRidAYaaRFbOKeelgI5vqnd3L+lNOVev28eD7B1DUcNlXSba5S5TSnDfDSUm+mcp6LyUFGVxzcQn2HCNj8wvJK/wmY6eEn0C/sKNHkCstyCCv6GqshRfjqFuDv/MQihJEFPUYM0oBAXfb+9Ebiekb6amuovqfzzLpuhUJ98lsLiJr/JRolwPg70zTraMx4nCUb+ouicooHcvkFUvQZZnZc99fOO3x79N5sA7XnipqnnuDkLOD6md/jfRZP4Kox2AaC0DAV4+qBAe0SbUaJ8ykTkQzmgs5Zc5P+WTXS+zaMpmgkjpN6lhLbk7EtKPezph08QcVfvufan56TXxPt4ibsDeqqrK32sX6Hc2EFNhX0yMSdnhCPPjcgePKJRXrYtnZupFtzW9z3vhlzB93GZWuj9Oeqz/NhftDvqmUev+B7p/7Ks9KRjIxKt9cRH5GUZSryB0KJ2kNhFNII55ISlQEvajngPsga5ve4YoJS1jfsilqudyHUB6L7GnDtX8jqpy67E+V/bj2b8Q682KkDGu/tqGhoaGhcfScMKIN9C2qWI0SZWNtR+1iEQSBZVMKuXBCLr/9qJojbh+hXte4IRUOd/j4+daDnDHGgtUopVVOJYkCci+hKaCoVHf0PFmpbPeyvdnVve/Hw4XxaGTR3Hy2H3BR3ejhjqdSX7hbsyQWzQ27uSS9lfyS6AvdlpoXcDa9gRrbE6ef3jid0ZTQ5dCX80Fj5OKrbuj+t6eqnupnX2fSiiUAKL4AUqYJub2ze4xS5yfgDT919XceIJbePWWOpUm1IEYLH30moglgMOXy5q4C3AFLn+U2wFGV3JzIaUe9nTHQd0lThJomHw88uz/8YKCXuNXbTRgRp9/c2sThBm/Ud1RvIi4pSF52NZqIdbH0JYiI6FCI7/PUu7nwQHO2bXFX353wdUJf5VmJSCVGKaqS0FXU6NceBgwWseem1xvf4raTbmHR2Ev4v/1PxI0PJfjMpcLx4Zo4h03+rAsZM+sCTDn5VL7xR9r2hx8ihTxtOLavIf9cTaDT0NDQGCpOmPSo3rT7g5QfaqKqw4scUpF0AqVdbpWB6BOz6kBDWo6eCVkmat2+lOMkUeDMcba0XDgGUeDC4jyWTRn9F8ajlYFIVpEDbRz+5KeEggksyhVArx7VGUUlTL7+RjKKS2he/w6VzzwdNTxz7lQKrriIyl3/L+p1U+YUik65N93DOuG46aYbqK09uh4Pg42vqh7F31O+ImWaMY/Lw32gFlVVkcxGMieOpf2TqvAAvQJ58fb5WARBRNLb0JuOrsF5wNeAHEhsq0+GKSOfmlYjvq7DyTRLjMsz09ruJ8MkUdfi5ZRSC7sPuYh8VZkMOkoK0u851uwM0OYOkuqrThAEbFl6xlhTu31GG1UNHvzBaHte8ve4nd5vkTlnLJ9Z9JPun61ZEhazxOHmvj9LibBmSdzz1SmjvjFxf5OZZmQvQC8aj7m5cH9Y3/IC29rK04r0FhETjjuncFGUGNXbVZOtz2Xp5BVxKVj5hhKuKfl57FQaA8BPq+6hLljXr3WyxWzypDxKzaUsyr0Ua4rP2+E19+Jvihb1BVGHqoSY/IWbCHS0ULPh+e5lpvwpFC2+t1/7o6GhoaERj5YelYIco37QorKd/iAV9W0phRgIu2VafQHmjbPxYZMrofMnxyhRVpRHcY4pLdEmoKhU1LexsMiuNSkeJpbO73JzJXiqD+Ebl8hT/WQ46tckFmwATgNqCDcZBjw11Xz8kzsSDpWsFiZ96Ts0tr4Rt8yYOTHlcZzo1NYeHrGuC0EUEAjvm86kx1yYi2iQyJw4FgEBQdIRcHR0j0GnQlqHohAKudCrdgSx/18NBmMeSsidoEwqwTEIIuasInSSCVXtBCFiIQsfmyB0/R8h/JogdLfjDsgq1Y1eBEHAZBCxWwxJ0/7kkIrLI4fXTfH7VAGXVyY3xVyjEVEUQYj9Lkr8HoMQ9TnxttdHreV0y3T6Qhj1Av4EovSJ0ph4bu5iDri3RTUjTkaWzsb8vKsGTZxJRCTdKh3BRsLITMsCdnW8ixyTSpTKnTPFOottzeviFwgCbzX9lSZfFbIajIsFDziD1Jc30VntRQmqiHqBzBIzYxflY7Bq1yypkIT+n5M7lA46Ah0cChxiu3s7ZZYyltqXJfxuU0Px521VVSn+7NcQJT21m/8dtUxJMH404ZTDzZqrfdUEVRm9IFFiKulT3NLQ0NAYLk5I0WYwKT/UFFXyNHdCLstPLUYQ4Mn3D7K3pce51B4I21fvOXsK923ZjyvYY2ctyDRy7Rml5JoN3PvOJ1HbSDWn0y9Tfqhp0EQpjdQIgsCyBYUsnG2nfEsTVY293FwF4RKDvp40xzZ0hegknr01v8D7/mFSup91IBe5+HjHbfGL9DZyxw1s40uNoUM0GVG84RuskC+I+2AfT1+zosVDUdSDICIAihpCVXqWq0qQYKAFg6n/bj1B1KOTspEDfQvMqqrg6ehqlKkWAgZMeh2FuSb0koDJoMMgiUwcl0mT04fSywKiqCq+LtHAGwjR4ZXJydCTl2OI02VaXYHush2TQcf4PDM6UaCyzk1xYSaiAK7OIE1OP3JIpdUVoMBm7Pexj1RMBhFvoOdEkew9bnD4UmbYRQjKKka9iF5SCcZo0pHGxCuWTGL+aXm0OP089Z+DPPezs/nP+iMEZZWqRm/iiUcRWZKNUyzz2OF8I2Xs92D1q+mL2HSrWfZzkUQjte79uAKt+EKe7mUyfhDgyxN+xr9q70dOM8Z8e/M7CV93BOpp8ldFvVbvP8DBjm2cWnE5GTvGEnRGf3A6K720bXdhL7MxYenxV6I4UKTXSjw5zpCTtc61uGQXh3yHaJVbUVQFURCxS3YWZajkxgQXjDtrMePOuoyOI3sZX7aM2o0vdC8TdaNTZFNVldWtq9jUvgmXEp3UWumvZFvHNs7NOTepuKWhoaExXGiizQBT3RF9UbpwUj6v7m+gKMfMkmnj+MXGT6OWV3V4yTHqmV2Qw7pebprGTj8Px4ztz5waw0tOpv6onygnciq4HLvJn7AQi20a5vOK8LoPw0G6HTdRZACTgc/ELxJEIxb7PC3uexSjt1sIdXhQ5b57FggSCCYJRekZ21c/o1DQiS/kRdSZ0Bvy4nrVpKb/txYGnR9/yIAvGOJgXf+TruSQSltXQlFseZMvoPT6d4gGh4/xeWZysvQEZYW6Zi/TSy20tAfCYlCgb3fCaMJuMdDhkbuFq77e497C1sE6Nw9dPzOu540/qFCcb8LlkRO6CaHH1BR70yOHjvXWc2QQ6UOzx7URdwLHzWD2q+mL2HQrvWjksxOuwB/y8krVX+MaJTf6D3Gh6eucYf1cn0JUXyQTffLWnYq4LYdgrNLXRdAp07Q23PeoaJlW3p0I/VE4bWIJqAE2dUQ3LEaFumAdz0yCsXkSX9kud7fOq3vvP9S995+EcxnzRqdbd1XLv3nD+UZSJ5pLcfF62+uoqsoVY64c4r3T0NDQSM4JE/k9VARjLkpf3d/Awkn5zBmfS1CJ/5KIXMT2J5I83Tk1RieJb5LDSTw1+18gGGiH2cAVwDLgfBH9pPEYJ07B+JlSxMtzwstjHhLp9Das+Z/DPmHobyQ0Bg5BkpByMhHEPp4CCiqqKUh/hRRVVVBCXuRAGz5PFUFfE6k7n/WgJIie7QuLyYVO6F/TzLjtqirtnmDcua+Plm1x9Hf8SEfSCeRk6hHTfGIcEbYAcjIlWpx+7vnjLr50YVFUE2JJJ3DPV6dgydB1v9Y7Na8oP4N8m5EHrpvBC2/XdKdOHS+lZ4IgsCDvar5a/ACn51zEWNMU8g0ljDVN4fSci/hq8QMsyLt6WJ7UJ0q3ShX3HeoScefbr+J06+fI0h1bilwsBncm+btmoAum7helBFRaK9oIto/uspvBwCk78Smpz625ehsPzvgZD8+8n88VXNjvbagC1Fl0PHdG39ehugwbuWeMPreuU3ayrn1dn6WDCgrr2tfRLrcP0Z5paGho9I3mtBlg9DEXpXqdiD+k4PQGWLmrNm585CI23Ujy/sypMToxZZbGpfxI+ixApb66HFXp6j0gAtlAtkKwpAFRn02WdTb5Yy7A1fJOdIR45kRyxy3WHDZHyTPP/AGdTkdubi6yHMLlaqe9vZ1bbrk17Tkee+xR7rrrbmS578S4O++8g5NPPgmdTsdHH+3k17/+TZSgIOWFb6zk9s4ox82yb3wFZ2sba1/5H5hDYAmi9HE+ScTsM8/liiu/wV13XIccDDsAYxsUn3HG6Xg6Ovh480YUn4+fPPIof3z8l9Q3VIc/l2mehnRCiCyDlw5/Vp9dOKxZBvKtxrTLm65a9kX+9/q7ONqcmPQ6XvzH/+O2H/0oafnVhxWvs/Tyy9N9m46JyP76AgqqqqbVoycZd9xxO3/7299paGiIW5aXE75Zbu8MxiU8rXn+D/zwxw9x4GBV3HrJ3DKRfc/J1DN7ag7rPgp/PtJJzSvtRwPp0UCmZB1xEdf9TbfSdT0kiAhRs60Xs8Wxhn0d7+NRem5aJUEfJwglYvaYC7ioeDkOXwObG17B+0YGJreF7NIMZq6YjD5LR8Wdu5j1vSmY8420fdLB7t9XAmHHTV15EyXLtfJu6CnlqXBV4Aw5U45dNPYSxpvH0RpoxXcU4jkAAtRn62jMlCnoTDJEMmKZOm9Uxn2vblmFP00nmV/1s7plFd8svHaQ90pDQ0MjPTTRZoApyTZT2d5TnrSl1pGyiXBpds9FbF+R5Eczp8bow1Z4Ga6Wjai9nqzJQVeKNQBCKEEnrua1dDo/xGKfx4TpP9NqsgeIb3/7OwBce+03aW1tZc2al/s9x2233Z722Mcf/y1eb/g88sAD93HOOeewaVOPrV0QQD/GhmSzEGxtR/H5QVVZ/a9/okoBGBMEUcVoHkMw0I4Sim4yKukz0Rtz8Xnqo3raJEJVFWS5HUnJ7W5QrKow66STaK6tYbszXB5y//dvDq8gAlmkLdpIeisFWXYkV2K3TG+CcljWSae8SRRFrl52KZu3foSjzYkvGOILV3wn5b4MxZ+LqkJLeyDhsfbVoycRoijyyCOPJl0uCOGyMVu2ntpmL75gcmmsd88bo16X0C0D4V/tc28d4WC9B1GEBIbPOKxZEovmHl0yWQSnO0j5liaqm7wEZTUqjtyaNTp7bAw0+aZS6v09on9fcd8Fxugyl4gQ1eg7hMffI9qcknsWoiBR76mizddIIIXzI6gEMOjMeIIdZDdOAqCjysOnz1Yzc8Ukgh0yLdudTP1yEWqMkNhZpZV3R1jduoq1zrWoHRIlmz9LZmM+oixx8NLX8Y6JbkCjF/UccB9kbdM7XDFhCetbNiWZNUyu3satJ30PnaBjXfO7vNG4FgBVhPJTTFy7Nf73q8uwYZk6D/uc0enW/bgzWlRO9h50j/ekFqE1NDQ0hhJNtBlgFk3MZ3uzK6oZcTKsRolFE3suYgVBYNmUQhYW2aMiyRHCPW78aTwxj51TY/TR3vRmj5vmKAgF23A2hROj8oquHqjd0ohh7ty53HDD9YiiwDvvvMuf//wXAF5++SU2bNjIrFmzOHz4MPff/wB+v58XX3yBr3zlGgKBAF/84qVcccUVqKrC+vUbuteNEBFsdDoder2BRCVOF154Ad/4xjcIhWRqamq4556f8c1vfo3G+v38e+Wf+MOf1rDnk4+Yc9Y8QqEQDz14G9//wU8ZN76YRx++iy1bKrj00isonTiV3z3+AJI+kzX/q+Br1yxHr8/q3s6sWWdy620PYDRl4nb7uP/+B1CcbVx+9VXIwSDLrvkqd153HT/+5a946LYfUtV0gMsu/zJf/fqNADz/3B9ZvervjB1XxC9/8zcOVe5j+imn8cHWjTz84G0giIiinjFWsGXro9wnm995mZf++wYXXTCPltY2vnfrjwE/X7rycq664jIEQaK66gDfuPEeUFVW/uNpDlcd5PTTT+Nf/3qeU2dO5+9/+BWtDidfvPJb7N76BjPmfA6A277/HS5btBBFUfnz31fy3Aur6V1x9rWvXcP8+fPQ6w2sWrWK//73f0k/C2eccTpf/epXkeUgxcUlvPrqq/z9789SWFjIfff9jOuvXwHA3Xffxeo1r/Py6xv4+P3X+d9rb3PeuWexbccu1vzvTX74vW9jNpu45ts/oMXZwkkTC7j99tsYMyYPv9/PL37xCDU1tfzud4+zb99+Tj/9NP75z3+xZMliHnvsVxw+fJhzzz2Xb3/7WgRBYM+evTzyyKMsXnwZl166CL3ewEcf7+GmH93bLYD1Jqrnjapy59O7Eh5vvcNPdVP6T/MNeoGy6bajjvtWVZXVGxoTpvJV1nvZftDVncp3ogvV/U23mpubuMwl1lWzp20rQSXAeeOXUZo9LS7uO8LO1o1sa36b88YvY/64y9gpx7uBEaH6lQbctV5m3jApapEiH18likeLU3ZS0V5B/jtnkrd7OsaOnkjY7MPj40Sb1xvf4raTbmF58VW8XJdcpIuQypnjytSTc8p8/C2HUEJBRJ0eY95Ecs9YPCodNhH8SrTLpi930lE7ljQ0NDQGAU20GWDSLXMyiAJlY20Jo7kTRZKvOtBwTHNqjA7kQBuu1o2QRlxrKlTFj6t1I9bCi7WSqEHAYPj/7J13fBxnnf/f07ZIK+2qWHKX3JI4TsUkseMCSRzCnSE2NkfAkAMCOTC9HKRAQiDAcT96zx0ccOTIkUCcmEMhzU5zLJPYseOaxE2yZavvrlYraXdndub3x3ql7UWWbEl+3q9XXrFmnpl5drbOZ77fz8fGF7/4eT75yU/T3d3NT3/6E7Zv387u3XuorKxk69ZGvvvd7/HpT3+KNWvexf/+7x8Ht50zZzZr1ryL9es/QX9/P2VlZRmPcffdd3HllVfw8ssvs3VrIwCrVsU8KTZu/Av//M//zJe/fButra2UlpYCIEkKsuIgblfW0+Nl3U3X8sUvfZPb7/wOt96yirq6OXzl7u+z5YV/SDqeocfq4SVZw0oQiQ4ffo1bPrgSJDv/+M5bWPfem/h/X/w8D//37+jq6ODh//5d0n5qpk/hI7d+nve/bwVm1OR//vg0r+45hCyrzJ59Prd/6aOcaGniD3/cxIyZszlxYihaWlWkpPYmCWht62DZ297DJz/6fu7814/zs5/+hM3PPMPjf2tAkuCzn/ssb7tuGX976jkAIpEIH/nIrYPn6867v8OOPcnthm+7dhlXvvlSrl25Dl03qPS4cZcMfW5eddWVeDwebr31Y6iqyi9+8TO2bm2kuzslXiWB886bx/vffzPhcJgHHvgDDz30p7QxlgV9IQPTsqitqebPjz7GbXd9h01//QO+pQFuWP1Bbv3Qe7n5fWv4zvd/zqc+/Sl++9vf8cYbb3DBBRfwqU99ittuuz3tca5eHbvwrqio4NOf/uTg6zL+2tq8+ZnB6rAvfvHzfGDt9TzasBlZlrCrEg5NJmJYSSlduYgUcWHtcamDgspw2fBCO5t2dRHJEDUOsTjyTbtiRrZrl5/bRrYjkW5lWRb90eTqznxtVtnGKWpMlCmrK+H8m+twVNlZ/pPLiAQN7B6N7j3Jx5HVc1t0i9Pg/SuuZy5k8o7L0vyApjVehW/eYfTyoR6mEwMn+dyrhVdz5qrMMbGoWTK22v5Gg7zVSeKlKBAIxhBCtBkF8rU5eewqi6dUDI4biX0qUbD3yrz2Ui9/aIqKcvFxird1I1E9/x3SQojqPrpPPEpt/YdGZH+CIWbOnElTUzMdHR0AbN68mYsvvpjdu/cwMDAw2Mr09NObuPnmDySJNpdffjmbNm2mvz8W/dXb25vxGN/4xr2oqsrtt9/GwoUL2b59e1Jb1p49e7jtti/x1FNP88wzzw4uV9Qy+o0yLOCF52IVV4cO7seyLCKRMIcOHWDKlJnISmq0tYRlGkRCXSjKzMGl5eUevvlv9zFtWj2q5qTt+DEsI/kuvOJwoDgclNbNor5apbHxWYK9sYuxLc8/xfz5F/DGwWaamg5x/FjMv+Lgwf1MnTqDEyeyR5ZLEjzyf08A8OAjj/HuNb9gX1OApYvP445//QRlrlLc5WUcOnqSvz31HLJE0rkA8Lg0KlwaPf1Dc1625AoeeGgjum6gKhJSdGDQ+wXgiiuuYMmSq7n88ssAKC11MW3a1JyizZ49ewgEYo+5tbWV6urqNP+isB4l3hHl8/fw8o7dALz2xmG2bH1p8N8LL78II2rxpje9idmz6ge3NxP6kFIfJ8CFF17I9u07BucZf23NnTuXW2/9KKWlpbhcLtrbO6itsOOwyUyrdhLtL6HTH8EX1AsWbnIhSzBjkoM5U0tYuahm2BU2EGuJenGvN6tgEyeiWzQe8LFiYdVpHW8icLrpVi90P0R/NNmENV+bVbZxc2pLcJ+cRm9zP4235W83Ka0X7d0AxzvbmLT36owGzra+Uqr3zad94S5MW/6q7kzkqsyRpYmZUeKQHUQSqpjzVSc5JMeZnJ5AIBDkRIg2o0C2NidVkagvc7JyVk3R1TBp+wwM0BmI0D8QJRqEaAf0GlF6iXK0NcSL+3wsWVDBuuumnvPl4uOJUF9T2rLyygVMm/NPOJw1tBz+E50nnil4f33+7cCHRmx+guKImQcP/yLYMAyef/4Fli9fxvbt25PWfe973+eiiy5i6dIl/Od//gcf/OCHBtcFIxVEojb8/RqmpWCaJroeGZyTJIMZDWOaUWQ59gPd7qzG7ihBs3swE8rIP/7J29n89F9paNjIpW96O5/4aLoxYzQUwjy1/0wPNxLyEgl7MfTE6HETRVHIdTtTkSXinryWZQ1WAP3gO3fx3g9+iiNNx/nkv9xMaUkJqiKhqTKhUHJJe6KniyxLOG0KiixhU2UqXFpW499f//q/eOqpp7POLe0xRoZEIcsykWUZ0zSREi6AFHXoc1/XDeZMdaHIElgWleUqc6e5KC9RUGTl1DmyuOWWj2ZMtUp9nLm47bYv8a//+mVaWlp43/vei9OZfmE8aFicxVfIrkqEDYu6yU4+8a65uJwKt9+3l0+umcPzuzp5/Vgv3YHYOTAtmD7JwbrrTs9Q1rIsfrKhicBA5nQxd6nKlConrx2LiVP+oEHDto7TPu54J9VUuD18lKipo8gatfZZLKpclbHCBiBo+Ngf2IJVRLWnhJRUnZfI8asbqTo4D0ewPO9+NI/K1JWivRvA/sJcbMFYpVxNfQlvXz8Hp0thw/97g7d/bDallZdz36v/zSuhvydV3BRKrsqcarX6tOY+Vrmo9GK2JkSe56tOurj0kjMxLYFAICiIiSmnjxHibU53XjGXuxfN484r5rLugmmn1b4U3+f5IRehfVGibwAngZSbLRHD4plXvfzbA4cnXIztRMYy09M5At596GEfNkclZob1uYjqvRi6f4RmJ4hz7Ngx6urqqKqqQlEUrrnmrezZE7uL7HQ6ufrqxUDMd2b37uS7yzt2vMJ1111LSUkJQMb2qKlTpwKxi68lSxbT3NyctN6wDGzVGg3bG7jjx3eCYhFUezEtc3A7LIlQtAJb6WwkWUk7BkBrawvnnbcAgLlzplNRUUmv7w30yFD1T2lpGV1d7ciKk3/8x6GWqr5gkFKXK22f+3bu5MqrllNa6sLpLGXpsrdxpKkTzVaOZaVfCMqKk69+9U7mz5+fcY43rfkHZEli9Ttv4O8v74rNqcRBl9eH3W5j9TvehiSBu0RLM+7t7+8fPM+qIiFLUFfr5I39r/LBde9i2qRSVEVKew62b9/BypUrsdliQsaMGTOw2WxUV1fzox/9MOM8M+H1eqmpmYTD4cDlcnHlmy8bXGdZ1mC8tqbJRKMWR0/2UVFmG9SxXtq+k3e+8x1A7DmdPXt26iGS2LdvH29+80KqqqqAodeWw+HE7/djs9m49tprMm4bF7fqa0uocGk4bAozaxzMnuLk2ssqqa2MVWY1tw1w/xPNWJbFJI+Nnz18iK17vYOCTZxtB/w8/HzbaX3/bHihneOd2cWpnj6Do619SV5ETe3j18g2aPh4uuN3PHDsHn7f/BUeOHYPT3f8jqAxvOrLuKnwuhn3cHPdt1g34x6uq/kgpaon67G2dD1UkB9OHAmZWsccNCm1ci9GxNVHx0X7iGq5fdpkm0TV4go097ldJRXH3joUvd7R1M+z98e+A7pbBrj/zr1s+WML75/2Pi76/Tpqd1yKs7NqRI4rIfHRybeOyL7GGmuq12DP8jpNxS7ZWVO9ZpRnJBAIBIUjKm3GIf6gTuN+H3oBVbFH2gb4380nz/k7j+MFSc70g1Xm0O4fEx7oxF11Cd2tW4rYYxTvyY3U1E38/vQzSSQS4Qc/+CHf//53kWWZZ599blCc8Xq9LFmyhPXrP87x48f59a//K2nbo0eP8vDDG7jvvl9gmulGxJIk8dWvfoXS0lIkCV59dTePProRiHm0BKNB/uNP/8l/febXzJpRjyRJ/O///ZFm3zH8hp9gNIjdFtPjw4bJkdYw/REbmSpadr6yjf6BPv78yIvsfGUb7W0n0sbc/98/5557f0ooZPDyy0PVPs8/8QTf/c1vePuaNXz1U59C1mxIqkpvEP77v37Cb+//GwD/8/ufc+j1F5kydQaWlfKhJalotmpmz55NV1dXxnM9a+YUXnjyQbq6/dzyidhd0R/87DdsbniAzi4ve/e/jsOmJLU3xXnssce5666v4Pf7+eQnPz24fNu2bVxwwfn89rf/RTQa5eGHNyQZDW/bto3Zs2fxq1/9J5IEPp+f2267naqqSqLRzFUfiVgWdAciHD7Ry3/81wP8+r/+i2PHW9h/4GDebRO5+xvf48f/7yusWfMuFEXliSee4MiRI1nH+/1+fvrTn/H9738XgP379/P//t/3+P3v7+c3v/k1Xq+XgwdzzyHuK2RZFnffPG9w+dd/n7zdxi2tNLX1Z02Oipqcls9M/Hsun+QTTknDypU+NlaxLIsXuh/K2M7UGj7E4eCOwXamXJWzQcPHNu9GOkJNGJaOKmnUOOpZVLkKl1pR0LFk0gVeTbahZzHHL1HKed+0u9ni/VPWdqyua/YwxTEXx64p6P70Hy6aR6VqcQXT1wzf92iiYTMdGV/7ZtRi/tIqLr+hlke//wa2vlLqn76Gvpp29n74f0/7uLMcs5jhmAHEzJAbvH+lOdSMbhlokkqdo46Vle/Ak6VSayzjUT1c476WJ/1PYOaoJJORucZ9LW7VfQZnJxAIBLmRrDy3wTo7M/stCM4ef3j6BM+86kWRYz+M82FXJb790fPP+T7/8UBH8+/o6UhuyZg6azWVtVdhc1TRcvhPdBx/Kuv2kmxLS55ylM5lxoX3jMZ0JyyrV//jsNsKN258hFWr3jXCM4rRqXfiM3yDFTWZkCUZt1RBb3cJRoJxucfhp9TWhyLlFx0SkSQZVatEc8TaFiIdrRj+PHfiy4AScho5xvdb5pnJnXfezt1335M2JjFxy4haSclSkiThsMlZ25tGg9WrV9HZ2ZUUv55IrjhvAFmSBj1jHJrCtElOHDYZf1DHYVOQJAj063T4Yu1pFS4tyZj5TGJZFo8++tjg399+4BBHWgeoqy3hAzfM5BePHMbXm7/yz65K1FbasSyKiuiOf88Vy+wpTu5cN7fo7c4mz3c9mNc4GCRqbHW8a9oXBwWYOLmEGEj2sHmh+6ECjpWMKmkYlk6ZVokma3jD7YPramx13FwXS5LqM/w527H0Hp2TDR30NQ1gGhayKlFa72TqyhpRYZPCw996He/R2Hf5pLoS/uETc6ipK+H4/gBzFlZw8o1eersjPPyd1wHonXqS/Tc/NOzjSUjMcszi9ml3IEkSG7ofpjHQiD/qTxvrUTwsLl/Mmqq146793rIsNnQ/zNbAVnpSfJsA3Iqbq8uvHpePTSAQjE8mTcocSJKKqLQZhzR3xMq/oybUTylh/eo5g/4Cd9x8ATZV5qUDXh7aHIvaDBuW6PMfJ5RXv5VA1wtYCZ4iJ48+ysmjj+bfWFJwVy7A37UzaXGxLVWCsYlhGfQYPTkFGwDTMumlh7LSMnqCUUzLQpGiSFhETQVJ5pQDhUTUVFAUCUWKplfBEKv8UlU3qn3IZ0KrrCYaDKaZEScR1/qdEsjp4kXifkOhUEbBJpXUZKmzQbziKRtdPbnNfBOXJ8VrZ0BVJKrK06uHRotUUQxiwklcYKmrcXKkdYDm9n6+9fvXCt5v2LA4lhAPXmhEd/x7Dgr7nhscWzu+jGzjHjL5RRSLjkgT/3Psq1xYvjyp6iafEBOM+mLrzRAHg9uLEmwArqx9W1IiVKJooyRUh8bbsbKhuTXq1onfIYVQW+/CezQmWnY29/P7PCbOF19Yx80XfYNnOp/jyfZNSeuuqriC1dPemXGdjMwUbQofnXzrYIXNw11/ZpN/ExErc3WVP+pnkz+2n7XV7x7W4ztbSJLE2up3s8JzPQ3ev9IUbsYwdVRZo94eqyISFTYCgWAsIkSbcYieELfa1NrP/U80s371bJZdWk2XP8wvHznMH752FY88f2Jw7Hju8z8XsCyL7paHCHRvSRJsCkWSNGqmX4eZ4cJbzthyJRgtRqvKplvvwkh4fjVZZYZzOkgS/ogfb2ToDrthGVDSQwUeLKMLp9qHIie/NiRAUiQ0mxvVVokR6caMDhBzEpaQFSearRpJTv6akFQNtcyN0ePFytYbA0h9MormAReY0f5Tfk2xfUuSgkUULB2k7K/Pf/qnmwo/QUVimTp6pAszGmLoMTtQtQoM3Ze8XI6JRTGD5qGxsfMTm78RtejpG6n0JQl3iXZGKoiyVgdZMV+0uMDyj1dNYuehAP6+5NdRMYJKnEIiuofzPedxqaxcNL6MbLd5NyZ5yEx2zqQ73Ja1Hakv2sMufywVbnn1TQWLProVZm/geYyEcQsnXcv1M9fhDbWxte0x9nZvzbhtruSoWvusnMcVDI83rayheWeA/gztZKkonijL3zOPAbmHUDTdA6or0o0mqxnX1TtmceeMOwf/9ht+GgONWQWbOBErQmOgkRWe68elyOFW3ayref/ZnoZAIBAUjDAiHodoauYf8vEblpnuXI7HPv9zie6Wh/B3PDnsuG/L0mk//jidLelpN/ZS8aN6IhBKEfOqbFXYFTsyUsbqm5AZwuPowWXvTRNs4kgYRHUf0YgPm2MyjtJZOEpn4yidhc0xOU2wiaNW16C6K5HUzIKLpGqo7kq0qlokZCwreuo/E8uKYkZDGBEfof4m9FAHZ9Ir3bJAD3UQ6m/CiPgwowOY0RBmdCA2p76j6ct1P4buTx+bMP/uQGSwHc1hU5gz1cV508tQZYnZU13MneaixjNUKSRnqTBRFYkKl5bRo2c0iFcHZfuOiAssm3d6WXxhBTYted5xQQUYFFTu+tVe3nvdjKzfVTAU0d3Tl7liazjfc4vnV4y7NuCOUFPS393h9qyCTRzdCnMgsGWwHalQ42Ajg7DjC3fS2Po3Dvp2ZtgiNy6lgkWVq4reTpCfEo/GvMUVqLbcwm1Ui1BxVYSTWjN/bnmUG6euTBsTNIJZ1xkplbgN3r9mbInKhD8a87wRCAQCwegjKm3GIfEydYC62hJuvqGOKredGTUl1FTYuffWBTy4+XjSncoz5fkgKB4j4ht2hU0+FK2CyqniR/VEIDVSV0KiPzqAL+Knxl6NX0/uz5csEyPaA3naqSzLRI90E40GE6prcl/4ShJok2pQKyrRvV2YoYGYGiJJyA4nWmU1kqqihzowdG/G1CiIVbsYeqwFIO6ZM9oY4dxzKiaiPXH+ochQT3IoEqXNG2JatRO3S0M3TE52DjC/vpyungimZWFTJZx29ax69BRaHRQXWL76/jkAPLmjM6OfWi5BJRO5IrqL/Z6bWeNgzbLxZ2RrWMkXzbpZWCVMMDpkOpxIodUzADs7n2VH5+ZhzVuT7MwvX5o1Olxw+lxxypj5YKMvY8VNuKyXrgUHaF3UxPX2z7Fu5nv4y8n0iiin4si6Tk35rG8OJScVVmoVfOG8z6BISsb2qqZw8niBQCAQjA5CtBmHrFxUw4v7fEQMi+b2fm77Ze5eZxh/ff7nEt7WjUkVNuWVC5g2559wOGtoOfwnOk88M6z9SrKd8qqlqJpnhGYqOJtIKa6+Xt3HTHU6tY5JdIW708aXmkbGCPnMWKcqSEJEjeCg30y+a29JVbHVZG5vsUwdw+jJIY6cGmeZGEYPqlmZtbJnpCh0TkXt89T8LSs9/jwfZ9ujJ7U6aFq1E0WWOHIyyIzaUr73yUsG25z8QYPH/t7JuuumEejXeXGfHyhMUNEUia9/dEHGtqnE1l1/UKdhWwfNHQOEIuag2X6+7zl3qcpn19SPS+NQNUd7IIBuRrApTvr19FCI9vDRNNEn3zYjQaKxsWD0kCSJK9dO5qIVVexs6KCraYCoYeG1ummddJCTi19Cd/VDCD736pez7qep/xif2fWvGdfV2+uS/tZTWqxXTnk705xTaW/vwP3nGlY3vQfZUDFVg87aDjrechJmnP5jFQgEAkFuhGgzDvG4NJYsqCg4WWM89vmfS4T6mpL+Dnj3UTN9BeUVF2Q0EY6JMcsAiaB/e8aWKkWroLxqKVXTxY/q4TB9+kxaWo6d7WkkYZfsDFhDF7hhI8zB3sNZx2umldR2pGql2J2T0CM9RELZ2ymsqI5uerEs67SqXyLhLsxo8us3PgdZ1ggPdBIJ+wePGQl3YnMUHw19OnMaPCdhH5FwepJIoVhRHcvSwYp1HDtsCrUVdlRFwq7JaIpE/ZQS2n0hzAQfoDzhjaPOQDhK/EUSChu0eQeYWu2kvFSlatJU7vrV3iTfmLjA8q6lk9nXFMTfZ+QVVDwulYXnV2T1oWnpDHHPf79BcCDKQDhK2CjunNg0iasvHH9tUXFqHPW0hg9lXLe7ews7OjfzlmlrWTb1Ro4Eks9z1NTTRJ982ySSK/Y4jirZqbRNBctMS4MSnBlK3BpLEgyc/cYkvnnsT+jR/tPar0fxsLLyHUnLNElN+Vvj1d++Ts+WASoDyZVstSenEjp0PseXtjF9TXZTcYFAIBCcPkK0Gaesu24qze0DHGnLbTBs06Rx2ed/LpFeDSFzaPePCQ904q66hO7WLUlrNftkauo/BEClvgrvyY2E+45imjqyrGEvnUXl1FWiwuY0+NnP7jvbU0jDb/j55rF7C/IbKDNlPt6rI6fcNa2f/1FOHHkYPZzfA0PRKpi54N5hv46O7b+HcF/6xejcSz5L1eTFHNrzs6TX9pmIps80p7mXfJa25scI9hwcXJav2k3VyjH0QNKyzU3v5uVjc9KOmRjOPBk479S/r72s8qwn+n399wc53jlkTnrR7HLWr57NY9vaOH9GGfc9eiRpfNz3xuPSWHxhBZt2dRHRs4sskgRXzK/Epsmn/pawLItogn9OxLBo6Rpea6jHpQ6mUI1XFlWu4lBwR0Zfmitqrk9KbUpFkTVq7MmiT75tVMme5m2Tq6XKsMIEdW9MpLFibZqprZrjgR6/zuMNHRxrHsDQLVRNYmadk7evrMHtGV+/jzxqLHI7V8JTPmySjcXli9NMhOscdRwJD73vmx5o57yXK7GFM1cFOnqddGyKmYrPWDu6ortAIBCcywjRZpwiSRJ3rJvD/24+yZa9sVapVCbCD9pzgVT/kKmzbqSy9ipsjipaDv8pbXxiGpSqeaipyx6xKpg4FPpDXbMsFoQjyFY0ZY1M04FfJy3JJU5EdR/ekxuH/frK3JqVXZA8E9H02QRSzVaRtDRftZuVdm5hyew9HOw+Py1dKRNjpfox0ey3kDanRK+d+PdK4wEf/mD6Y1ZkiWWXVnPLynqe29U1uL+v/Gof5jCv+RUZJlfYsdtk6mudrFxUM+5vSLjUCi4sX5oxsjtXahPEkpt0s/BtJCTOd13Fvt4XSPVuytVS1W/20B+JVaK1hg9xOLhjsD1qrFdXWJbFxg3tvNzow5/iC9N0ZIDdOwNcsbiCVeOsUmRN1VoAGgONGYV8uxQTWcIZzKc9Suy7JL6PRFZWvoOdwZ34o35KgiVM2TWdfAnxZsSiu9HH5BVVaO7x/X4UCASCsYoQbcYxkiSx7rpprFxUQ8O2DpraBzCiFqoiTZgftOcCjtL6pLv/J48+ysmjj2YdL9Kgzl3y/VAvi5osiJgsD6eLClNn3YivcwcDweODy/KJE+G+o8OeayYz41yC5JmIps8mkB7Z/yv0SGKlQ+5qN1VzETX6kpa5ndGCqk/GUvVjotlvIf5oid5okiSxdvlkViysSvr+kYBWb5iIYfHszk6e3dlZ8HzyxYdHTTh/RulZr1AaaeLeMPt6nqffLKxNz6VUcHH5W/nflm8UfBwLC1Wy4ZTLGDCHKsWKaamCmAlyYuz4aJDob6QbFpoqUVcT+13jcRX+3tm4oZ3nNnURiWRJR/MbPHeqUmT1OKoUkSSJtdXvZoXnehq8f6Up3Ixh6qiyRr29brDtKdu6bDHdiTcHLt96Ja5gzGC9rL6Ei9bPQXMpNN6+l0s+MxdnjR3f/l72/ccRdL/ByYYO6tZNrPemQCAQjBWEaDMBcJdqE+5H7LlE5ZRVBH07Cor7FmlQ5zaZfqjr0RBm6CS1us7icBRXFr0gsxCYW5w4neqXVDEyPodsguSZECMLFUjzV7ulx3HbS2exZn7u6pOxVv24clENOw8FTqs6KNP3z8PPt+UVr+ICzS8fOUxTW8ybIx4fvn717MH48FQfnETj4omCJEksr76JhZ4b2HDie3REmsmVYhZPbtodeCap1UmTbXnjwjsiTZRplQyEh0SbxJaqvxz9dY6th4jHji/03DCi/jaWZbHhhfaM76EjrQPsPBwYfA/lq4zp8eu81OjLKtjEiUQsXm70cc2KKtzjrFLErbpZV/P+wb/9RiyG++cnf4ZuGWiSSp0jJtR4Cnye4jcHStqHKhB7m/p5/f5mLlo/G73XoGunn3nvm4GVUDbX1zTx3psCgUAwVhCijUBwllFtMdNgf8eTOWO/RRqUIE7iD/WO5t/R0zvkQZDY8vTaK99hIJjdULmYVrxiGYtiZKFzylftNtB3POnv+PyzVZ+MperH1AoGAFkiZ8tSIdVBqfstsSlgRTO27sKQQGNkyg4ne3y4ER1/fiqFUqp6+MDMe3mh+yEOBLYQzOBzk5jc9L/Hv560bn7FFciSSmt/E75QOxEzlLa9P9KBbiUvz9VSVUjs+HU1yS2UQWMojtywYmbJNY56FlWuwqVWpB4iiQ0vtOcU/PxBg7+93Enjfh+Xzy3PWXnzt7920OM3qKsv4db1cyh1KXzhU7v48lcuYOEVldz6wZfp8ceEab/f4PGGDm4ap5UilmWxofvhjFWYR8JH2BncOdgSlU/sit8ceFV5jQgZhHsZmh9rI9gywEUfnz242CzSRFwgEAgEhSNEG4FgDBBPeQp0bxFpUIKiyJU+5nTNyCnajGYr3lgUIwudUzFkmv9YrH7MVcEAMZEkU5hVvuqgfPu1qxJOu0JZiUK7L5Im4qiKPPjvYn11EhmpdpqzTWLVzTbvRtrDR4maesbkptS47wO+l9HNCG+Ztpb6sgv479e+lbb/AbOXXFU8mcgXOx7HsqysglMhXjj+oE7jfl/OCq3BsX0Gz7zqzVl5s3tXrJqouamfB+5v5tb1s7Es+PdvvsZDG69O2+fxcVwpsqH74Zx+Z/6on03+TQCsrX53QfvUNHVQtCmrK+H8m+twVNlZ/pPLiAQN7B6N7j1DFVuyOn48gQQCgWC8IUQbgWAMIEkS1TNuwjP5BpEGJSiKXOljnupL8ba9OKz9jkT1y1gUI/PNCSQKvagdT2JqvgoGy4pV3JSXqJSXqgVXB+Xbb9iwsKSY34+mBgc9dOICzabt7YPtUcX66sTmPXLtNGOJUtWTVsGSSmrcd77kqBjFCTaFxI7HeaH7oYyGynHyeeE0bOsYbNWLt889vb2dp17uyDo/f9Bg066YJ83a5UOeND1+nd5A/ra/RPRxWiniN/w0BhrzJklFrAiNgUZWeK7P6mmTSGmdk74jsfdrb3M/jbflfm+W1jtzrhcIBALB8BGijUAwhhBpUIJiKTZ9TNE8mNGBM1L9MhbFyHxzKp90DYHOZ5KWa86pYIEeOnnW5z8cCq1gMC1Ags+uqS+ojavQ/UZ0i8YDPi6c6SrK+DgVj0tl6cWV/OHpE4MVNb39BoF+I2t7V7aL+olAjSM57jtf2lQib6q+BpvqYHfXFvqN9AqaOIXEjkOsJWp/YEtWwSZOLi+c5o6hSpem1n5+03CUtu70Fq9U4q+vFQurBl+3jzd0YJ7qvJtRV8K6m+uoqrLz0Y/Ppqo65kn16c/P4wf/73X6+2LG7do4rRRp8P41qSWqUqvgC+d9BkVSeKbzOZ5s3zS4zh+Ned4k+uBkY8rKGnw7A+j+/OKX5lGZuvLsJ+IJBALBREWINgKBQDCOKTZ9rNTzZhTFeUarX8aiGJlrTo4xNtfTJVMFQ7aEJn/QoGFbR0HtXYn7zYc/aCBJ4ClVC94mEZsmUenS+MkjTRnbsHKR6aJ+IrCochWHgjvoy+B9kw9Jklgy5Z3Mr7iShw/9lIDuzTiukNhxgG3ejUnzGI4XTmqlS6cvTM8wX7fHmocEoOPN/Xw1T5UIwIxxWinSHGpO+nvllLczzTmV7kg3oWi66NUUbk5blgmbR6NqcQUdm7owc5g5yzaJqsUVIu5bIBAIRhE5/xCBQCAQjFUqp6xC0XKbe8ZRtAqqpq2mesZNzFxwL+6a63GUzsXmrMNROhd3zfXMXHAv1TNuGletJILcpFYw3P9E7KItntB016/28t7rZgxWGhSa0BTfb/2UEv59/cX8/AuXUVai8u2PXcT3PnkJ77l2etL4Vm+YxRdWYNOKe215XCrTqxwc7xrIKdhoqsT1V9RknEP8on4i4VIruLB8KZpkzztWJTnxbHf3Fr6/8xMcCezlXXPWD+/4SgWLKmMtlB2hprT1hXrhxEmsdKmrLcHlHLqvWOzr1ijAFycRWYG3j9NKEd1Kfk9ossah4GH+3PIoN05dmTbeKCIVcPqaWmquq0bzZL7Hq3lUaq6rZvqasZGIJxAIBBMVUWkjEAgE45jhGv6OxeoXweiQzavjdBOa4vstJKo7vt+4oXE242KbKlFiVygvUVHVmK/O0osr+cmGJvQ8BTa6YfHyAS9Xzq84Z+LCl1XFKuKypU2pkp2LypfTNnCEtsjhweWF+d9kJx47ns0UuRgvnDh1Nc6k9rlsFPK6VU8Jg2XlKqGBKHoeEaesTB13cd9xNCn5p/wT7U/zpfM+x7qZ7+EvJ9OrpNQiUgElSWLG2slMXlHFyYYO+poGMA0LWZUorXcydWWNqLARCASCM4AQbQQCgWCcMxYNfwVjh9QKhuEmNOXab5xsF9Tx/Q4nFv0PT58oqg3r0Ikgl871nBNx4fG0qQtci3is7ZcEjE5My0SWZMrVSfzj5PXUOOp4uuN3SaJNMf43qSTGjscp1hRZySAcrFxUw85DgYzPdbGv25l1TpqODBRsRnzJ5WUFjRuL1DnqOBI+Mvj3iYGTfO7VL2cdX2+vK/oYmlujbpzGoQsEAsFEQIg2AoFAMM4Zi4a/grFDagVDsQlN+fZbyAV16n6LiUVPbO/K520CMBA2T0uMGk9ki9mOWtCtt/DIye8xv3wpV1UM3/8mTqlSwTzXm5Nix+MUa4oc98JJxOPSWHxhRcY0smJft29fWcOrOwP0FGCi6/Go/MM7xm97z8rKd7AzuDPJjDgbHsXDysp3jP6kBAKBQDCiCNFGIBAIJggTpeUpaMSMSjtCTRiWjipp1DjqWVS5CpdamH+PYIhcFQypeFwqKxcV5u0R328hF9SF7tcf1GnY1jGYDqWpEh2+oSjjQlqxOnxhbr9vb9q+CxWjxhPFxGxfWL4059hsJFbWZPO6KsYUOdELJ5V87XPZSH19uT0aVy6u4LlNXURymOjabBJXLK4Yt61RAB7Vw+LyxWzyb8oZ+22TbCwuX1xQ3LdAIBAIxhZCtBEIBALBmCBb1QBAa/gQh4M78l48CtLJVcGQiE2TWDy/ouC470KNfQvZr2VZbHihvaiL9VytWKkUI0aNF4qN2X7/jG8A2f1vShU3pUoFsqRgWgaKrFFrn5WxsiaVuClyPlEo1QsnldT2uVcO5hcbs72+Vp0yx3250Yc/Q8WNx6NyxeKKwXHjmTVVawFoDDRmrLjxKDFhJz5OIBAIBOMLybKsnE3enZ3prv8CgUAgEIwERsSHt3Ujob4mdksdHFJ6iUrZv5Y0yc5lnrexvPqmMzjL8U8+UcTjUlk8v4I1y2pziiDFiiuF7vfh59vyikoQ8zb5xJo51E0u4dmdndRPLkE71R714KaWjNvYNInrLqtm7fLJeec7nni643e82vN00rJcUduXua/nupoP0mf42ebdSHv4KFFTL0qcyUUu0RWSK3Z6+oy0iqq6mpinkcelJe3zdF+3PT06jzd0cLxp6Fgz6p28fWXNuK6wyUSP0UOD9680hZsxTB1V1qi317Gy8h2iwkYgEAjGIJMmFeapJkQbgUAgEJxxLMuiu+WhQfPkkATPuyCk5N/WpVTwgZn3ntYF5rlKT59esAFwJgoVVzylKm+aV17Qfv1BnW/+z6GCzYaLoVDRaDzywLF7knxkAJyKC499EtWOqfREujkWfG1w3RTHXNbNuGfU55VLFCpR3MMSYU73dSsQCAQCwVikUNFGtEcJBAKBYFRIrKKxTB1J1nCU1lM5ZRX+9ieTYsrfcCQLNrkqBoLRmOfNdTXj37/nTFOMAXAq/qBO435fXsEGAImCL6gbtnXg7zMKMhkuBlmCN811T7gKmzi6me5fMhANMtAfpLX/KCVq8g/BTDHbo0Gp6sn63swn+vmDBpt2dQEkPW+n87oVCAQCgWC8I0QbgUAgOMfIJaaottM3+k2tokkk3HeIXu/LWGZ4ULAB6MlQYaObEWyKk349veKzPXz0tOcpKI5ixBV/MNb+UsiFdjwdKpfJ8IbnWjCixc3XtOCVQz2sXDRpQlZjDEQDOdf3G8nvm0wx26dL3DT8uK+NI/vn0eevQracuO1uZteWJbU7FSr6RXSLxgM+ViysGpHnTRibCwQCgWC8I0QbgUAgOEfIJ6YEfTsor1pK1fTTM/rtbnkoqYomFdPoSfq7vHIBmtoNkbbBZbu7t7CjczNvmbaWZVNv5EggOZ3oTFUNCIYoRFyJJzgBNLUP5NrdIImx4HFSTYZj/x+K7jaiMW+SKVUO6qeUsuN1H1/55/mnJR6NB+ICRGvoEH2mv6htM8Vsx8mU2lVX4+SaK2zsDzekCR5XVaxiZ8+T7O/ZwpG9FxNoWYYRKh/aHzrNbV52Hg4MtjvFRb9CGInnTRibCwQCgWCiIEQbgUAgOEfIJ6ZEdR/+jlg8cPWM4Rn9GhEfge4tWY+RiYB3H3JNcgvLFTXXc3H1Esptlfyt+fdp24xU1UC2i9VUQ1RBYeJKIka0gDYqQFNj29bVlnDzDXVUue3MqCmhpsLOvbcu4MHNx5OOrchgRGPzKS/VuOna6bic6mmLR2OVoOGjsftRDgd3MGD2YpJecqTJdhbWXMvFlVfT2P63pHZCAFWyZ4zZzm70a9HrfpyWY/tQHckVO63hQ+wPbCFqRWjdvxTfkYVYpi3j3BPbneKiX6FtcKf7vBUThy6MzQUCgUAwlhGijUAgEJwDFCqmWGaYQPcWPJNvQNU8RR/H27oxrYqnvHIB0+b8Ew5nDS2H/0TniWdStpJx9LaBfWjJ1rYGtrY1ZD1OrqqBQsiVSnOkdSCpQkDchY9RrLiiKoWdt7oaJ0daB2hu7+e2X+7JO15VZMJ6snAxEuLRWCNfGlMiuhlmR8cmItFwxnZCu1yS0bh7wwvtGT1mJl3wPBWzd6ComSvadCuEHiol0LIgq2ATJ97uVGKP9UAWWql1Os9b0PCxv+eFguPQF3puEMbmAoFAIBizCNFGIBAIzgBGjw/v4xsJHWvCMnQkVcMxs57Kt69CdY++r0IxYkpU9+E9uZGauuKNfkN9TWnLAt591ExfQXnFBZgZ2pqmzrqR+qr5/Lbpl/Qa/rzHcCkVGasGiiHbxWqcbIao5zLFiiv1tc6C9rtyUQ07DwUKap3xuFTKS1T6QtERF4/GGvkqRVLRzQh7u7eyevbH0toJS5TytPHZPGZUexD3jL1ZBZs43W8sxgiVF+xxZJrFVWoN93mzLItNL/8vfdX+wWXC2FwgEAgE4xkh2ggEAsEoYlkW3RsfIvDyFqL+FB+ZpkMEd++g/IqlVK0anq9CoSabxYop4b7hGf1aGb1mZA7t/jHhgU7cVZfQ3bolae3Jo4/C0UeptUOfA8wcp0GT7MwvX3pad8XPliHqeKdYcWXlopqC9utxaSy+sCJvlLhNk1g8v4JQJMqxjtCIi0djiaDhY39gS1bBJpsIETFDPH38wbTxaoZ2wmweM1XnbUVzBvMeb6AnJmYWWjkTp1CxbbjPW8uGdjqqm9KWC2NzgUAgEIxXhGgjEAgEo0j3xofwP/ckViSLj4zfh/+5Uz4yqwv3VSjWZLNYMSVTRUwhSBkuDqfOupHK2quwOapoOfynrNvOP3WKWmzJ8d9xXErF4GM6HUYrBWmiU6y4UozQtWZZLUDGdrXYsdXBdrWePmNUxKOxxDbvRvrytkRlFiG84ba0sZnaCeMeM5DsM/P97f9T0PGsaPqbNFflTJlTRZakgsS24T5vEb9Od6OP6Krk14YwNhcIBALBeEaINgKBQDBKGD0+Ai9tySrYxLEiYQIvb8FzzQ2obk9B+y7WZLNYMUUeptGvo7SecN+hpGUnjz4aq6bJgwRcGIbZEThoB78qIWll2O011Npnsahy1Wn7ThgRHxXWn/nApSdQZINDr9iZOf0Crrl0yYQ1sh1JihFXikGSJNYun8yKhVU0bOugqX0AI2qhKhL1tTFj6LgINJri0VihI9SUc30+ESKRbO2EiVUtidUyrlJIlTAyHU9SYr5ChVbO2G0yl8wuH9XnrbWhA91vIEeTf96eKWNzgUAgEAhGA8myrJz14Z2d6WWkAoFAIMhP2+//i96/J5vultTVM+fW9SilLnZ9/pNJ69zLr6fmpvy+CkHDx/8cuzvvnXiIXbB9YOa99J14lJ6Opwueu7vm+mF52hgRH8f2353mn5MJSXYgy3aiKRHgAJFoOe5JS5k2+30jYgScK+4cQLfcyK6r+cXmy/ifu6/ipq9tG7zgnFnj4O6b5532HCYSPX16XnFlNMllJA3J4tF4MpL+1Kc+TkvLMdpCR9HNUNZxblsVpbZyVEmjO9RGnx7IOE6SZFxqBR4tvWqluX2AUGTI0LnUqTK12klr3xFMKfnYmY4X6avACLkKfmwel0ZthZ1Of4RAv4ERNdPGqIpMeYnKJE9uc+Ns9DUPEA1FGajwEXEF829wCpdaQYXt3PWuMiyDbr2bkBnCwkJCwiE7qNKqUKXh3d+dPn0mP/vZfSM8U4FAIJhYTJpUVtA4UWkjEAgEI4xlWXRveI3el9Lvfvc3N9H8wP3MvnV92rrw8cJ8FTK1TmTzuIibbL5lyiqCvh0FiSmKVkHl1OKMfo2ID2/rRkJ9TVlasZKRZDvumhVsPfomzN7HqLCfRJENoqZKW3AyjccWo9k9LJ7fftoX3kbEx4mD3yfS3wxkvk+hST3Qv5nb3qHy4OapE8LIdjRxl2pntWWsmMqc8URLyzEkSUKWJHK95AN6NwG9e/DvTGMVSaNEdeNWazKud9oVQnpMOHFoCpMrndhUGU12ECFZtMl0PK0kQFQvwTIz9DKmIMsmpqONjrCFrdTBjLJq/L0moYiJZVlIkoTDJlNVbjut95sESEg4A26MkgEsJT0ePRVF0nDbJo0rcW+ksCzoMjrpMXowrGTxMxQNETSDuFU31eqknK/HTLS0HBvBmQoEAsG5jRBtBAKBYITp3vAa/k1HwVTAfBNYlWDJIJkgeTH19DvMAKZemK9CttaJbB4X7eGjqLYKyquW4u94MmfstyTbKa9aWnDcd74KlkzIqgd39TKeO7qcTbu6iejXZR6on16CU3xuPV3PY2ao5knfIEzb8Wf5686ZwFAFwXg0sj1XONvi0Whhkx1EzOG05Ulosh27XEK5Vo2So0qiqtxGb7+BYVqE9CiHT8YqUySpFIenF1nOLXjIchTV3ocxUIZF9it6CQvFHiRKP1ETIuYAA1KQEpebmiyC0rA5tTMpqmAPuwiX9GKR+fMWAEumRHPnPE/jiVjFTBchM5xQMWOnSqvOWDHTZXTiM3yYVuZzZFgGPiP2uT5JmzSqcxcIBAJBduSzPQGBQCCYSBj+ED1bW7AiJhiLwTwPrGqgMvZ/8zxCzRfR/kQbsz7ysaRtZa2wygDDShd3dndv4fs7P8Ge7q0sm3pj0rq4yWbV9PfgqXkbipY5YlzRKvDUvI2q6YUb/Xa3PIS/48mCBRuQKau8ArViDY37/QUnOPX0FW8UGp9bJsGmvHIB86+4h8uX/4JJ064ZWu7oZfHMxsG/x6uRrWB8U65VI0vFVQpJkkyZVsVkx2wqbJPzChGqIuEu1ZBTVBPLUoiGS7GsfD8RJewlAVRnL1IWgUeSo6jOXrQSf9LyqKUTNLz0GB35HlZRKI6hOdu73NgCLqQMhskAUlRF7ncR6XOT2yigeIyoRbsvTHP7AE1t/TS3D9DuC2NER/hAp7As6NQ7aQo14TP8DJgDhMwQA+YAPsNPU6iJTr0z6XEalkGP0ZNVsIljWmbGShyBQCAQnDkmxq0FgUAgGCN4Gw5i9sQrWRwZxxi9Bq0bXwP5dUi4LrPPSE94yYSa4WIul9Fm3GRTkiSqZ9yEZ/INeE9uJNx3FNPUkWUNe+ksKqeuKrjCBmJtR4HuLTkrd9IxCfq2s/3QVYPpP/lSnIaT4JRvbrnizie7Yuk749nIVjC+USSNUtXNA7/9I4qiMKmqBsMw8PV48fm9vH/92rTx8VaoVL773f/HHXfciWGkX3RXu2PeMT39OkbUwmG388N/v4vLLp4PUpT1X/4IB4/uyzi/EtVNmVJBQO0mZPgJ9ZUQNVQsS8KSTBQ1jOYMZBV0LMuk3+ihTK0csUoXW5UNo9fAPNXe6PB7sPeWESoPELVHBqtPlLANrbecbpuCFTaQkIbto5OIZUFXT4SrFi9m2tQp/Op3f+Sn37uHR/7vSTY/t5XeAQN3iUa12zaiFUaFVMx06934dB+arCEjY2IWLMTEt6+1FWcwLhAIBIKRQYg2AoFAMIIMHC604kQBcx5Yb4AUQvFUUPn2wnxkahz1tIaTE5q2tjWwta0h4/jUuF9V8wzLZDgVb+vGpAqb8soFTJvzTzicNbQc/hOdJ57JuF1U9+GKPgnEKlwSk2uWXVqdMcWp2ASn1Lmlkz3uXJGNYacgCQQjhVutYd2H30u/0cOn/+XzdHZ18IeHf5cwQkKWVEoUF+XapKzCx5e+9OWsx5AkmOSxUVGm0R2I8NlPf4z9B17nC1/+GuUuB9UVNlxqJRFzYFDwsMnOpNarCttksAEl4Nc76NW7yeYdlUrU0gnoXSNmAiyrEqpbQ/fpWGZsDlJUwelLri60JOhTISoBlkVPv05FmZbXTyc+30iCYa9Ndpw6HxpdPRF8QZ3Hnnwu4/ZG1MIXjInE2UQiSZLIkxGSvM8CK2YATEzCOUR2TVaZ4ZwOkoQ/4scbGfoMDeUwxhYIBALB6CJEG4FAIBhB9K7+wX+X1HuYs/4KFJeNXZ9soGSmmwu/cQ3ev7dw5JfbAQ2Mi5FKd1N+xdKC474XVa7iUHBHwelRmeJ+R4JQX1PS37mqV1Lx2E9mXB6/+5xqClpsW0Hq3FLJFXde6nRw1wfmigobwVlFksCj1VCmVmKTnaiyhiY7eOuSa/nSp+5EVWw89+xz/OY3vwXgL395lBde2MIll1zCsWPH+MY37iUcDvOnPz3I+99/M5FIhHe+8x28+93vxrJMnn/+hcFtVUWitsLOmhvfxvve937qTvk4RSN6mqAybdo07rzzdkpLXRw71sy3v/0dQqEQP/nJj9h5YDuLr7gaXdf59J3/QvPxo1RXTuLfvvoDJtdMIRQe4Mtf/xxHjx3mj/+5kV17d7DsqrdiUxzcfvuddHR0sGzZUm6++QNomkZbWzvf+Ma9DAwMUFVVxW23fZmamklEo1HuuOMrdHd385nPfJrLLrsMy7L41a9+xZYtMRP2sF9HSvnceOvbl/OJ29cjKzIHDr7OHXd9i2kz5/Ddb92J02Fj/769/PCHP8I0Tf70pwd56qmnWLJkKd3d3fz0Vz/gs5/8PFWV1Xz6jn9hz4FdfO5jX2balOmcP3s+7jIPd937Y/721PO8993vZN6ceu79958mHf/ySxfwja9+gdISJ50drXz7W98mHA7zl788ynPPPc+ll17Cl750G+3t7RlfE4sWLeLjH/8Ysizx7KnnvlvvYveTr/K3Z//Gosuv4mDTIT5z12eolquYPncGX/7MlyhxlHC0pYlPfe3TDIQG2PfkXh598lHectVyjh4/ygf/9cOYpsn2/3uZTU9v4uolV9PW2ca37/sOd3/mLmqqJvGpr3yGwNEAt9zyYWpra5k1axZlZS5+9rOf8+KLW0//BS8QCASCrAhPG4FAIBhBrNBQuXl/k5/m+18FQKtwMP2mi+jcnJIQZU7D85a3UbWqcB8Zl1rBheVL0SR7znGaZGd++VJKVU/B+y6G9JSoWPXKyaN/wV11Sc5tVXnoPNXVlnDzDXVUue3MqCmhpsLOvbcu4MHNxwdTnIpNlMmXYHXy6KPs3XYHrzz7L3Qcfypp3fSp5wvBRjBmUCQVp+KiTK1iZvkF3Hv7v3PHbV/llg9/hDe/+c1ccsnFAFRWVrJ1ayM33/zPtLW1sWbNu5L2M2fObNaseRfr13+CD33oFv70pz8nrS8rc6HrOp///Of4zW9+zRe/+Hm0Uz5bH/nILSxZsgSAz33uszz44J/40Ic+TGtrGzfdFPvsMiwdy4ryD+99Kz/99Q/42r9+C4C7v/hNfvyf3+WdH1jBvd+/m7u+eO/gMfv7+1h98z/y5JNPsXp1zItr165d/Mu/fJwPf/gj7Nmzh3e8Y+XgcZ955hk+9KFbWL/+k/j9flatWoXD4eCDH/wQH/rQh9m9ezeSBI5JNnpcEn0aRGTQZfBMruJL3/oiH/3kF7jpnz/Ml+/6PjUVDn7yvXv44h3fYsXK91FeXs6KFUPG6EePNvHBD36I3n4/73/fB3j3R1byzR/cza03f2JwzNxZ57Hmln/gPf+yim9+7QvY7TY0VcbjsnHe9DJkSWJylYML6jx8++4v8IGPfI5rV65j+yt7B5+jyspKXnjhBf75nz+UVbCx2Wx88Yuf5wtf+iIr3/8OLl54MZPOn0RPNEBN1SSeeuEplrx7GS2tx/nEe9dj0+x86VP/yvs/dzPXvn8FO/ft5JZ/+jAAtdU1/HXzX1n6T8uRZZllVywbPM7rR17nbe97O0bY4BM3r+edH72Ru3/wNT72gVsHx9TX17F+/Sf49Kc/y2c/+xlsttNvLRMIBAJBdkSljUAgEJwBPJdPwVbhoHROBbIq45xWxsCJXpAdVK9+R9H7W1YVu1A6ENhCMEPFjUupYH750sFxo4EkJwsbuapXUlHVoR/5ze393PbL9Hj0RIpNcEqdW6EMJ+5cIDhTzJw5k6amZjo6Yga+mzdv5uKLL2b37j0MDAzw4osvAvD005u4+eYP8L//+8fBbS+//HI2bdpMf3+sGrC3NzllTpYV6urq+OEPf8T3vvd9vvSlf2XVqhv5858f5r/+6zeD4+bNm8vzzz8PwJNPPsn69R8HwMLkL09sAOCp5/7Gt+74LjPLLmDplW/l/DnziVoxbxvTHGrjeeq5x5GQeOONg4PiTG1tLffe+w0qKipxOOxs374DgIsuWsBdd90NQCQSAWDhwjfxwAMPDO6vtzc4+G9Tgp4ELeHqZZewfecrdHq7KXGo+HsCzJsxBVmWeXXvARyazJNPPsWiRVfx5JMxIffFF7cStXT2HdxDt68Ty7J4/fABpk0e8td6fHMDhmHQ3nmSw80HOW/uTHTDpO+UgK9pMtGoheqcxAXnz2Xjg/+JZYHdrrF7104A+vr62Nr4Et2BSNYY9JkzZ/LG0YO8dOwlDMtgwxMbuOySy3hh5wv0DfTx+PNPAPDw449wx6238fTWTcyfN59H//MRAOyajV07dzHbNYueQA+Nr2wDYM9re5k5dQYAUSvKnzdvIGJG2PnGLjq8HViWxYHDrzF98ozBx/zcc88TjUbp6uqiufkYM2fO5NCh5JZdgUAgEIwcQrQRCASCkUSR4dRFSUmdm7qbL8Ve5aTsvCr23rmJGe+9CK3CERNs4uOHgSRJLK++iYWeG9jm3Uh7+ChRU0eRNWrts1hUuaqoChsj4sPbupFQXxOWqSPJGo7SeiqnrEK1ZU6bcpTWE+4b+qF+8uijnDz6aEHHmzRpHp5SddCMOBfDSXBKnVshFBt3LhCMVWKeKMW1FPb09NDT0zMokrzwwgu89a1vLfK4Cf8mJuRYWKy+eSUDem/a+IgexiY7sSwTWY59Fn72s5/lN7/5DTt37uKtb30LV199dVFziJPYYunQFCpcNmRJwmFTsKkys6aW0tkTzjg+jmEYBPQuoqaBrseq9yzTRFYSEqmSHrSJYg+SCUmC1157jZX/9HFMy8KhydRPLsGyoH8gRFN7f1ob6EAkOmheXKX70E09v3mwZRGORogSZee+XfzTJ2PC/WRHLRU2DzISET0yONy0TBR56PEEw0HC0TB6VB98zLIlYU8Q2hM9d4bzWhMIBAJBcYj2KIFAIBhBZMeQFt7f3MOe257i7+/9M0fu2w7A8T/uPeVnE0Nxnp52Xqp6uK7mg6ybcQ83132LdTPu4bqaDxYs2FiWRdfxBzm2/256Op4m3HeIyEAz4b5D9HQ8zbH9d9N1/MGMxpiVU1ZljQ/PhaJVMKXuXSy+sAKblrvtabgJTsXOTVHdRcedCwRnmmPHjlFXV0dVVRWKonDNNW9lz55YlZrT6eTqqxcDcN1117J7d3L12o4dr3DddddSUlICQFlZWdr+d+16lfPPPw+IVeY0NzenjTl48BBLlsSElOuvvz7pOO9822oArl32Nva+9irHe99gx66X+eDajwAxYeT8ufMHx8uSRrlWnbT/0tISurq6kSSJG264YXD5nj17+Id/eDsQaxWy2Wxs376dG2+8cXCMy+UC4Ec/+iF104dMxEN6lL9ueomLL70cQy7l8MkgXUGZw8e6iUajLJg/D4dN5vrrr0s7b5EMBryKpDKz7ALKtAr+4dobUVWVmurJzKmfy9Hjr6EpMqUOFU2VUGQJVZHQ+zupqZ3M+efNAaCkxMm0adPo6olgWVaSYPPzH3yDyy9dAMTNiyPs3HuYebPmMrm6FkVRuPH6G3np1Zdi58xZytuWXQ/A6retpnFnI3sP76Nu2kzmnzrfJY4SKidX0RHuQi7y578qaUgMfVYvX74cRVGoqqqirm4mx44dL2p/AoFAICgOUWkjEAgEI0jpxZPo3Xqi4PElFxdXQTLSdLc8hL/jyazR2FHdh7/jSQCqZ9yUtE61VVBetTTn9qkkVrOsWRa7SGk84MMfTL97fDoJToXPTcLurGPq+f8qKmwEY55IJMIPfvBDvv/97yLLMs8++9ygyOD1elmyZAnr13+c48eP8+tf/1fStkePHuXhhzdw332/wDSTjYjj/OIXv+Suu76Cw+Hk+PFjg+s/8pFbeO2113nxxRf50Y9+zJ133s6tt946aEQMICEjKwp/++Oz6LrOHV/7MlNds/nZT3/OZz/3GVatfhZN1Xj4rw/y+qEDADgVFyGpL2kOv/vd7/n+979LT08Pe/bsHRRifvzjn3L77bdx0003YRg6d9zxFf7yl/+jvr6e++//b6LRKP/xH/9JY+M2pk+fhmINoMoSxqkUqa5uH3d94/s8+N8/A+CVXXv5wh3f5LNf+jo/+e7XKC2xs3fPXjZt2pQ0HytLFYmFiSRJHGk+zMO/eYwyVznf+P5dhCMh9KiJPxhhX1OA/pBBa3eI15r9fPSTd/C9b99JaUkJqiJx33338dxLb5Cqic+/YC5t7Z2Df5sW9Ackbvu3O/njz/6IIss0bH6MzoPtzHbNosvbxQ3Lb+Duz9zF4eYjfOe+f0c3dD5258f53p3fpbSkFFmS+dV//Ccdre2Y5E+aSsSw9KTzcOzYMX75y1/gcpXyk5/8bLBdTSAQCASjg2TlyRXs7EwvZxUIBILxyHBagIo+hj9E01eewQpH846V7Ar1374G1e0YkWMXixHxcWz/3XmisWMoWgUzF9ybJmxYlkV3y0MEurfk3Y+ixYSUqunvSWpF6OnTadjWQVP7AEbUQlUk6mudrFxUc1qGwPnmlm0+AsHZYvXqfxz2a3HjxkdYtepd+QeOEj/5yY/40rc+y6GjBwoYLeFSK/BokxnJt55pWEz1TGX12hv5/td/iBG1GMCiV4VoluISWZKocGlZI7jbQ0eJmAPJs5dkLMvk9k/cQ48/wC8f+MHguqhhJ9STW2iOfcaV0B2IRYQ7bArTqp0oskSbz+A/f3ovX73rHgJ9Oh3+BNHZEYRSPzDU7qSbOv/3yP8x//oF+U/QaVChVlBrq+WWWz5Md3c3Gzf+Jed4y7J49NHHRnVOAoFAMN6ZNCm96jUTotJGIBBMeHJdvIf7DhH07Rixi3fV48B9TR3+J4+Q82amDO5r6s6aYAPgbd2YdD7KKxcwbc4/4XDW0HL4T3SeeGZwXVT34T25kZq6DybtQ5IkqmfchGfyDXhPbiTcd5RoNETU6EUCZLUMRXFgL51F5dRVGatZ3KUa666bliaq9TRrhE9DVMs0N9PUkWUt53wEAkHxSJJEieIaFDRyjMSlVqRFiZ8OlgXhrghGj84bxkH+3/bvnzoSlACOKPQrENBOLTyFqki4SzSq3dnTj2yyI020KdMqcNnc2BUnYaMteS5G7iQlWYodU1UkQpHYeQpForR5Q0yrdqIpUb50+92c7Bxgfn05XT0RzPj91YR9S0j0RwfwRfxFtztlQpVUZpZMB0nCH/HjjSR/V4YytIkJBAKB4MwgRBuBQDDhOZ0WoOHgeedk+gN7iexSoT/9B7xcbse9ZDpVay447WOdDqG+pqS/A9591ExfQXnFBZgZIrPDfUfTlsVRNU+aoFMooy2qnc7cBILxwtmssgH49Kc/i2WBS62k3+ghaqV/hiiSRonqxq2ObFtouCuC7tOxzMzF47IJLism0vQ7pLRkplyUa9X0R4OYCY8nEOkmEOnm6z+9LWmsImnYlSqiipVmKgzpIlGeYvd0rKG5enUfM9Xp1DomsWjl4uL2k4FqexV2xY5u6pgZRLd4e1RqS51AIBAIRh8h2ggEggmNEfHmk/27AACGZElEQVQR6N6S13PFMsMEurfgmXzDsKsvksSHi30wxwGvXAidlbHafFXCPtPFlJuuQ/MUF2E9GlhpwozMod0/JjzQibvqErpbtyStzSTkjARnWlQTCASjgySBR6uhTK0koHcRMQewsJCQsMlOyrVqFGlkf3qahoXRk12wGcSCEgOqq53IauHiryJplKpugoY3ZwWRJMmUqG48zhIqXVbO+O6hbWL/dmgKkysdaGpyulWHPzRUZQMgDf07HA1zMHg441xkJMwEDxpFUgYj17POP6Fyp8ZejV/vSVsvEAgEgrODEG0EAsGEZiRagAolTXwoCcHSV5LGRGQ7Pb0Rqj1nX3yQ5GS/mKmzbqSy9ipsjipaDv8pbbwsD99fJhtnUlQTCARnBkVSR7T9KReR7gimERMoVIdC6TQnkiIROBKkdFoJik1C74vSd3IA07CIdEdw1NqLOka8MqjQCiJVkaityH8Mh01mIBIlpEc5fDJzVHgSan7DX1VSUSU1qZ1JkRRcqos+I4iRRbxJrNzpCnenz1U+e628AoFAcK4jRBuBQDChGckWoFwUIz70dD2PofuJhFpHzRC5EByl9YT7Dg3+ffLoo5w8+mjW8fbSWSM+h1RRDbILa6crqgkEgolHNDRU/WKEovS3hSid5sQ0LPSgjlbrAKIZxxdKvgqiErkKf6/JschAzsqaVKrKbfT2G4MJV7mQZQtKgrmt0iQZt+rGtKJJok3EjBAxcws+uSp3VEmlSqvKO0eBQCAQjA5CtBEIBBOaM9UC1NXyUJL4ICtO3FUXMW3WGtpbnkyq6DGNHnq7X0jafqQNkQuhcsoqgr4dBadHVU5dNeJzSBXVILewliqqnYlEMIHgTDF9+kxaWo6d7WmMKyzTTIqjtrCwLAsLi4HuMEYoimuqc3CMZZrFe8mcQkbBoyUnQ3X6Ixzvj2BEk+WUgTD09huUl6hZk6kUGcpLVHxBPeecJEnCU2IDrZyAEcCwjLQxqqRSrpRTrVZjWAa9RjDjuGKRJIlypRwFpajzNn36zNM+tkAgEAhiCNFGIBBMaEa7BSjuY9Pr3Zq03IwO4Ot4mWDPYRS1pKB9nWnvFtUWi7zO5ScDIMl2yquWjkpbUrqoBrmEtbiIcyYTwUYbITwJ4vzsZ/ed7SmMO/Z/+xB9R2LpTmV1JVz0iTmU1ZUQ6goTCRrYPRrdewLs/XmsiqR0tpML75w7Isd++Pk2Nu3qIqLnFjM8pSqXzy1n5aIaPK7k7xjLstjwQjuNB3z4g+kii8elsnh+BWuW1SJJEj1GDw3ev9IUbsYwdVRZo95ex8rKd+BW3UNz6/ozm/ybiFj5W6qyzlvxsLh8MWuq1o75z1GBQCCYyAjRRiAQTGhGuwUo7mNDFp8APezFiAQK3t+Z9m6pmv4egIziB8QqbOLix2iQKqpBbmEtLqpNBPPiiSQ8CQRni9I656Bo09vcT+Nte3KPrx8ZE3h/UKdxvy+vYAPg7zN45lUvOw8HkgQYiFWyrF0+mRULq2jY1kFT+wBG1EJVJOprnaxcVIO7dOhz0q26WVfz/rzHXFO1FoDGQCP+qD9tfblcjkfzoKISNsP0mr1gQZlShl1xZBSCBAKBQHB2kKw8tY6dnb1nai4CgUAw4hgRH8f23518UdzngJ0JqU6KCZO8yFeeoO7KuwoWSzLuu0ByGSIDuGuuP6PeLYbux3tyI+G+o5imjixr2EtnUTl11aiKRx3Nv6On4+mCx7trrqdyyo0Fn3dFq2DmgnvHpHlx1/EHC6py8tS8bcwKTwLB2Sbi19n/zUPo/vytQJpHZcFdc9Hcp2+q/oenT/DMq14A6qeUsH71HFxOhdvv28sdN1+ATZV56YCXhza3JG1n0ySuu6yatcvPjFFzoZU5AoFAIDjzTJpUVtA4UWkjEAgmNEktQNEwvHQJvFEP/SktSx3VWMfm4m9rxf0OE1/bX/K2qxSTTJXKaBkiDxdV84yKSJSv9Wc4vjrek4+esUSw0UKkZgkEI4PNo1G1uIKOTV2Ykez3IWWbRNXiihERbACaOwYG/93U2s/9TzSzfvVsll1aTZc/zC8fOcwfvnYVjzx/At0YmldEt2g84GPFwqqkCprRotDKHIFAIBCMXYRoIxAIJjzx1h7//7Vj7Z0BRuYfylavjO/pQ/jbn8K64qWkdZnaVYpNpkpmdAyRxwrFtP4U66tzphLBRhORmiUQjBzT18TMgbsbfRkrbjSPStXiisFxI0GiEJNIvJMxtaVxWrWDJZdU89DmFvxBg4ZtHay7btqIzUcgEAgEExch2ggEggmPJEl4ylYROPwcUSOPGKJLWK9NhgUOKAklrUr1SSk2mSqRkTZEHmsU4zlTrK/OmUoES2SkzYJPNzUr2z7bjt6HEe7EskwkSUa1T2LyrI/jKK0veo4CwXhBkiRmrJ3M5BVVnGzooK9pANOwkFWJ0nonU1fWjFiFTRxNHRJl6mpLuPmGOqrcdmbUlFBTYefeWxfw4Objg+LOya4Q771uxmDlTVP7QLZdCwQCgUCQhBBtBALBOYG34SDRHp2Seg9z1l+B4rKx65MNlMx0c+E3rsH79xaO/HJ7bHB/CbxyISx9JW0/ie0qxSZTJXK6hshjOXFoOK0/1TNuwjP5hoy+OuWT3kqg8xmOH/g6lqmjh9uS9jOaAthomQUPNzUrE6ZpcuLANwj1H4bE6GML9IEWju+/C0fJHKbNvxtZlgueo0Aw3tDcGnXrzkz1Sl2NkyOtMeGlub2f236Z2wBZlpM/H4zo8GLHBQKBQHDuIUQbgUAwbjD8IbwNBwk192DpJpIm46hzU7lyHkDWdarHQai5B4D+Jj/N97/K7PVXoLrtaJVOdv/rk7Er3EQ6K7POI96uUmwylSTZsAqIX417t2RiPCQOZWr9yUZi60+qr078sZ5843s59zfSiWCJjFZK1XBTszIRE2wOZV0PFqH+Q5w48A1mLLin4DkKBILsrFxUw85DAfx9+Q2Qy0tVPv+eeUmVN6oiEuEEAoFAUBhCtBEIBGMey7Lo3vAagcYTRP3JLUvhI34CW2PpHFY4mrYuuLOd8sXTsHQzaX8nHz2AGTLo2ZVctTFIoJSyigVMn5vZ4Dbcd5Qpcz9blImuq+LNBLqez1OBImFZUU4e/FHGypnxEHWd2vqTz6A5W+tPvsdaCLkEsHyMpllwquAHucWnbMJTqK/pVIVNfkL9hwn1H8NRMrOg8dkIGj62eTfSEWrCsHRUSaPGUc+iylW41LNb5SU4d/AHdRq2ddDcMYBuWGiqRF1NLCLb4xr99lKPS2PxhRVs2tWVN/Y70Gfw9d8eSFpWXzsy0eMCgUAgmPgI0UYgEIx5uje8hn/TUayImXF9qliTSNQfwr/pKHJJ7Ed8SZ0bx6RSup5vxsyxHSE7vY8r6Lf6MnqMmKaenExVgIlu1fT3IMuOrN4tpx4NphEgbATSKmeiun9cJA6ltv7kMwrOtKxQwSQXiebFw6Gr5aGk50lWnLirLmLarDW0tzx5WilVw0nNSiTeHtfT+RyJLVEuz3nMmLcui0Bm0Xbkl9Rf9G8FzTEVy7J4ofshDgS2EIwmz7s1fIjDwR3ML1/KsqqzV+UlmPhYlsWGF9ppPODDH0yucjnSOsDOwwEWz69gzbLaUX8drlkWMzbONJdceFwqKxfVjNa0BAKBQDDBEKKNQCAY0xj+EIHGE1kFm0KwIiYmsR/U/c099J9qlcqNDG/Uc2jbf9A65TGqJl+d5DESb1cpxkRXkqQ075ZIuAPT6CXxwjuRxMoZ0xwYF4lD6a0/uY2CM7X+nE6cOoCsunFXLx98fooh3pbV692atNyMDuDreJlgz2EUtSRtu2JSqooV/OLCU672OICg/w1am/7KeZd9MbMYFu4oeI6pvND9ELv8T6JbmecbjPrY5Y+9VpdXn50qr0LwB3U2bGlj79FeQqc+V+w2mYvry1izbPIZqdIQDJ8NL7TnrG7xBw027eoCYO3yyaM6F0mSWLt8MisWVtGwrYNXDuZvl7JpEovnV5yRuG+BQCAQTAyEaCMQCMY03oaDRP2hwgyEgerldXQ935y23opEkezKYFVOMYbEfUtfYaD3WNK84u0qmYSYRBPdyqmr0io94t4tRsTHsf13k02wiROvnFE1d9q6000cKpZCDJBTW3/yGQVnav0pNtZb1cox9MDg36WeS4fdHhZvy8LKXImlh73o4XTBpNiUqmJTsxLnlkvo8Xdu58D2e5k07a1pApllDU/8DBo+9ge2ZBVs4uhWmAOBLSz03ECp6hnWsUYLy7J4+IU2ntnlJawnn4eIEWXrfj87DvZwzaVVrF0+WVQLjUH8QZ3G/b687UgR3aLxgI8VC6vOiDjiLtVYd9001r5pEi/+uplwSwjLAFOCTifsrIJ+LVZhE68CEggEAoGgUIRoIxAIxjSZDIS1CgfTb7qIzs1HUVJ+kPcf70lab0kDoGwH2YdlzgXqAang/REoBcBMuEiWJBvlk96aNCzVRLcQiqkmieq+EU0cKpZiDJBTW39yebVk85wpNtbbShFY9IGTxT3AUxTelpV+0VhsSlWxgl8xLWOhvpP0ePdmOObw0qO2eTfSl9AStXDStVw/cx3eUBtb2x5jb/dQVVIwGvO8ua7mzFd55WLDC+08uaMLM4duFdYtnnyla7CCQjC2aNjWMVjJUj+lhPWr5+ByKtx+317uuPkCbKrMSwe8PLS5BX/QoGFbB+uuG/00KcuyaNnQTnejjzK/QVnCutoQzO2H/tkOrnp/HR6XbdTnIxAIBIKJhRBtBALBmMbS06+wPJdPwVbhoHROBbIq45xWxsCJXgBM3cRz+RQ0jx3//ifxbd8C6qmLTasbmAw4C9hfAK7cDecfSZ+TFeHkG9877ZSmYqtJLCt92XATh4qlWAPk4bT+JK8rLk5d1VxEjb7Bv4crWKUnX0nkq4SKM9yUqkIFv0ypXNmEPj3ip/vk8+nHsg/PR6Mj1JS2TDcj2BQn/Xpv2rr28MhXeZ0O/qDOi/u8OQWbOKYJL+7znrEqDUHhNHcMDP67qbWf+59oZv3q2Sy7tJouf5hfPnKYP3ztKh55/gS6YdHUPpBjbyNHy4Z2OjZ1YUYyf1Y4wlByOEzvE148a4UYKBAIBILiEKKNQCAY00harDKgpM5N3c2XYq9yUnZeFXvv3MSM916EVuEYFGwAVKdK2XlV7Lv7h2A/BNGEi3cJkPrAcubf35W7YcEbYMvcIjMSKU3FVpNIkoZFsggynMShYhlOitJwWn8SKTZOXZZtKX8P72I7VUgrVLCRVfewU6oKJX1u+YW+ZCQmz14/rGMbKYLh7u4t7OjczFumrWXZ1Bs5EtiTtD46glVeI0HDtg4C/bH3cr4KDYBAf/SMVWkICicel51KXDdPFdCNaGHv39Mh4tfpbvRlFWzimBGL7kYfk1dUobk1DH8v3oYXCTW3YekGkqbiqJtM5colqJ6ynPsSCAQCwbmFEG0EAsGYxlHnJnzET39zD3tueypp3fE/prd/BA96CR48AVpTsmATR/KCVZ17fyUDMK8pq2AT53RTmoqtJtFs1RiGNuzEoeFSTIVHogFysV4/iRSTrgQw0Hc86e/hClaZW9DyGyFrWkXBr4FCfIEKn1tuoS8RR8mcYcd9q1Lya/WKmuu5uHoJ5bZK/tb8+7TxyghWeY0ExVZoAGesSkNQOJo6JMrU1ZZw8w11VLntzKgpoabCzr23LuDBzccHn0NVGX1fotaGDnS/gavOSfksF127fET8mc2Idb9By/+1U+Z8g0DjXqL+5Cq18JETBHe+Qfnii6hac43wVRIIBAIBIEQbgUAwxqlcOY/gznai/lDhGyn7QB664Cqpq2fOretRSl3s+twXITIdSE//GeTyfeAa2j6f18xwU5qKrSYxMbAKqPw43ajrVIqt8Eg0QB6O1w8Unq6UidMRrNKTr2LkrWiR83+dFuMLlOliLdPc8gl9p7bEUTKHafPvzjvHbNQ46mkND71Wt7Y1sLWtIev4WvvIVHmNFMVWaMCZqdIQFEddjZMjrbHP5ub2fm775Z6c4+trnTnXjwR9zbH5BJsHCB4byFuc523sImptx4pkFoij/l78m2Jm+NVrrx3RuY4EokJIIBAIzjxCtBEIBGMa1eOgfPE0/JuOFh77LSdfEPc3N9H8wP3MvnU9SCGQm8CcB2SpBpiUvH2+C/bhpjQVV00ioQ+05B2Vr+1oOJjRTIJZ9gqPaMbxxZOvxSoTpytYpQppQ+QxQi6gHahYX6BC5pZb6JPRnNOYPHv9sCts4iyqXMWh4I4kM+JsuJQKFlWObqtYsRRboQFnpkpDUBwrF9Ww81D+WG0Auybzj1dNGvU5mYlJVgXofGZYIopMLktwK6ITaNyLZ8WVqG7Xac9xJLAsi+4Nz4gKIYFAIDgLCNFGIBCMearWXABAoPFExoobya4ADMZ5Q+62JtTdYABmPRkrbtTivGaGa3pbXDVJ7qsBRavAVfHmvG1HwyFqpBvN5qrwyDR+OKSmK4X6jqKHOzCNPjI9xyMhWGUT0vJVtOTz0BmOL1Dq81iMyKdoFcxccO+IvRZcagUXli9ll//JnLHfmmRnfvnSMRf3XWyFBpyZKg1BcXhcGosvrOCJHZ15TaX1qMmmV7yjngIma0MCRVl9CRetn4PmUmi8fS+XfGYuzho7vv297PuPuKm9jFF2GQu/+iYUl5MDX/8tl/74s/QdPkngQBPH/xATbqOnKlpq1t0wqvMvlO4Nz+DfNH4rhAQCgWA8I0QbgUAw5pEkieq18/GsmIW34SDhph5Mw0RWZez1bipXzgMYXBdqt8VEmVOUzKijbt3N2KuqmP3Rj3Pk1/eBthusN8C4EJgEbgk0AyZ5wZMsOpzuBXsu8leTFJ5eNBqCTTZyVXiM9D3W1BYrQ/cPyyenoGOdEtJ8bQ3A0FVhvta1fB46mXyBspGt5a5QkW+k2+PiLKuKvVYPBLYQzFBx41IqmF++dHDcWGLlohp2HOwZNCPOR3mJwspFw0vaEowu115eyeZdXYTNPMa/JjQe8I16Cphjsp2+IzFBsLepn9fvb+ai9bPRew26dvqZ974ZWClzDfdqNN//BLPXr47NNRRBLXVg9PQlj2tqHbV5F4Ph7yXQuDerYBNnLFYICQQCwURAiDYCgWDcoLod1Ky7OOv6+LqOBw/R8/zTg8v7jzez56u3pW8ghUB7BYx5ME/NmhZ1uhfsuUitJkkUIqJmKKklKp+3Tsvr30GWHUWZ2xaCorowjZ6Cx8vq6PoaDNcnpxCMiI9otB9JdWEZgYK2KcRDJ9UXKJ+xcbaWu9NN5TodJEliefVNLPTcwDbvRtrDR4maOoqsUWufxaLKVWOuwiaOx6WxZEFlQRUasgxLFlSKuO8xymN/7ySsFyZk+4PGqKWAWZZFy4Z2evZmqSyUofmxNoItA1z08dnJ2yY0R0W8Abbf8m+45k1nwTc+SutfXxxcZxr528DOBN6GF4n6eympn8Kc9avHVYWQQCAQTASEaCMQCCYclW9fRfDVHUR78lc2qOUezv/CZ9h3xxbUcjvSBcfQdW/BxxqplKZMQsSx/fck/Z3PWyfV86YQc9tCkJXi2kQUxTGs45xNcpkE56LQqpZUz5t8z2W2lrtcIl++aqPhplalUqp6uK5mdESz0WTNslosLJ7Z5SWsZ1Zu7JrENZdWsWZZ7RmenaBQEpPAColvH60UsJYN7XRs6kqK+i6rK+H8m+twVNlZ/pPLiAQN7B6N7j3JArBiU6i7+QbsVW4uvOcWJEVB87hofawxaZysjo2f6aHmNgD6m1oLqhDqamvmryd+z17vYUJRHUwFe/9kLtavY80Vc/C4hCAqEAgExTA2vg0EAoFgBFHdFZRfuRT/c09iRXJ4iFgKsjIHrdyDVuFk1uUfob+9lYDzOQLBHVASIpdb5Gi1oQxOL+3CvfB45zj5zG0LIbs5b2ZOp/LobJHPJDgT2apaMokjhu5P2Tr3c5mv5S5R5Bs63lFOvP7dNDHmdFOrJgqSJPHu5VO4fmE1G15oY8/RXkKnzM0dNpmLZ5WxZtlkUWFzlujx6zze0MGx5gEM3ULVJGbWOXn7yhrcnqHnJNEsupD49tFIAYv4dbobfUmCDUBvcz+Nt+X3S5Iiney57Zm84+z1U4Y9x5HE0tMrfjJVCFlYPL/cx56Lj9PXr0OCfh8pO8nWgdfZ0biAa+w3snbZ5An9eSMQCAQjiRBtBALBhKRq1ak2kpe3EPVnqJwwnWDWo02+lOMt/431zv0cG9iEXGWnxDUL+1NrCFfvhPOaoDT9Tu1otqHESY14LizeOZ1c5raFUKwB7khUHp1JCjUJjiFjL6nD4ZqbVtViWRadzb8n0PUclhXJuZd8z2UhwlehYoyFRU/HU8NOrZpouEs1Pvz2GWd7GoJTWJbFxg3tvNzow+9PFgeajgywe2eAKxZX8JYb7Tzma6DjotfhVPUGPTXo4euA7PHto5EC1trQge4fXuuSJIVwWAfzjlM8ZVSuXDKsY4w0kha7XCipq81ZIfT8ch87Fvag27IIZc4+wtNf4clmC+mF1aNuEi0QCAQTBcmyrJy3IDo7RyYFRCAQCM4GRo8f7+MbCR8/iqnrRE70gV4B0fmoK47BeU0YUX/6hkEnHKyHpgW4P9YzKqa3+eho/h09HU/nH3gKzV7B3Es+m9UnRVbK0By1OErrKa9+K4GuZwtulek6/mBBBriemreNuwv/TOc5l+eMu+b6tFY2y7Jo2f91Qv2FVyRlIzH5KVdLk7/9yfzVQZINSZKxzPwx7COdOCUQFMKjD7fx3KYuIpHMP0ctLKxrtqJc9johW7rPVLns4Zqa5Uxuv45ZU0rRTrVHPbgp1h517WWVI+5ps//bh+g7MpCUFrXlc68CKRHgKcg2ibLpQeSW53Oa+ko2Dc91bx4zKUwdf3icnmd25BwTLDX4738+QbC8ALPvgVLKd/wzX3vPpaKyTSAQnNNMmlSYD6SotBEIBBMWo8eH9/GNhI41YRk6kqqhVVyN3loCV76KMeMNiGb5gekaOGVMLDPwuyVI2hycdbGkKtVzZjxbiqlwAdDDPvSwL7tPSrSXcF8v4b5D9HRsIjWVKlurzKA5r+LEMg1GK277bJFqEgy5PWcymQR3Nv9+RASbeMudorrpOv5g9ioa78uYZjh/dZAVIfHWTD4z60ypVQLBaNHj13mp0ZdVsAEwlr+IedkudFvmypaA6Wdjy2Nw5CRsXJq0zuNSRyUFLC7MJKZFmbpF+ewSQj6diC/981fzqFQtrmDauy7E+0g/gcY9RP3BtHGKp4zyxRdRteaaEZ/3cKlcuYTgzjeI+rPfyN262Jcm2FRqFXzhvM+gSArPdD7Hk+2bYiucfQSmbqVh25RRMYkWCASCiYYQbQQCwYTDsiy6Nz6UuTXKaoGSt8C8poxJUUnYolB3hMiOuTDgJHzET3BnO64l5XD5fkL9p2fomo9CI56HKMbzJvNFUmKrTNX09+Rp95FRNDcuz0Iqp60etxUa6d5BkOtcpoo4sfaq5097HonCVz6PnWiGNK98iVSQ3wA5W2qVQDAaPN7QQc+pNqO6+hJuXT+HUpfCFz61iy9/5QJmXSrxkWd/DVkEm0FUA2YcgKOXQ7gUAJsmsXh+xahUcshahpYrGQJH+qmYX0b1JW5OPtc1NL1yhQV3zUVzx+ZSvfZaPCuuxNvwIuGmVkzDQFZV7PVTqFy5ZMzFZaunhCT/pu1ZK4TaJ6d/R6yc8namOafSHekmFE2p9vO003R4dEyiBQKBYKIhRJsJhD+s03C0g+beAfSohaZI1JU5WTmrBo9dlJ8Kzh26Nz6U3YRYCsGbXo5V0pwi58WuawDetB9eXAhYRM/7Oz0VTdCZ/GNztAxd80U8JzJcz5tULDNMT9cL9PXsITLQlGOkSdToQ1ac41awgXTvIMh9LlNNgr2tG5PElULEE0V1o9knZWy5K85jZ4h8gsyp2ecU9rJvJxCMPMeahz5Hm5v6eeD+Zm5dPxvLgn//5mtc98MDmK70apSMOPtg3kuw9xo8LpXF8ytGLQWstM4Za4/KkRaVKNpUvtk9KNjEUd2ucRWLHa/8yVYhFLWlf+dpssah4GE2dTzLu6ev5vmuoThz5OiomEQLBALBRESINhMAy7LYcLidxlYf/nDy3agjPQPs7AyweEoFa+bUCqd+wYTH6PEReGlL7tSoScmR3nkvdqtPjb9y96mWqcwVOqNh6Jor4jlqhpJivk8efZSTRx/Nui9HyVRC/SeTlmUTGEzDT8Tw55+gFTktk+OxQKZ0rFznMtUkOLW9qhDxRNE8zLjwnozrvK0bi4odHyJ/pVU+YS9fapVAMJIYOfxfAA4FjyT9nbXd5hT2SZ0suaySlYtqRtUrZcrKGnw7AwWlRWkelakrR75F60wjSVLOCqGSKS+B0ZS0zRPtT/Ol8z7Hupnv4S8nG5J3aCqjYhItEAgEExEh2kwANhxuZ9OxLiJm5h8//rDBpmOxOz5r5wqnfsHExvv4RqI9yRe8JXX1zLl1PUqpi12f/yQoqVvludhVojjnqRhXtqHruVuqTjepKRuJEc9xjIiPY/vvLizVSS1FVuxpywurzsjNePdCOd10rOFEs+cSR1JFoEIqd6CwSqt8wt54jGsXjF/UhDajGXUlrLu5jqoqOx/9+Gyqqm3cbz6aND5nuw1QW6Wy7k2j75Fi82hULa6gY1NXWux3IrJNompxRVqVzXgmW4VQfUcnR3uakpadGDjJ5179cuYd+Wupr3WOwgwFAoFg4iFEm3GOP6zT2OrLKtjEiZgWja0+Vsyowi1apQQTmNCxprRl/c1NND9wP7NvXR9bkKK75L3YlTRsNzQzkHJRn+1i+kyJGMV43kSNPvSwP8Oawnxw8gkHZ9oLJVeqUrG+QoWex7hJcKoYN5xo9lziSKoIVKiwlk+Qycd4jGsXjG9m1jlpOhJrkTre3M9XU6pWIh8IQYIGk7PdBlDPYKXY9DWx1qvuRl/G+O+48XB83ERnZeU72NG7k4Dpzz94oJTyk1ez8j3jvwJJIBAIzgRCtBnnNBztSGuJyoY/bNBwtIN1FwinfsHExTIKqBbpBhJ+K+ZtK1JmEJFOpC0vNmFoNCjE88blnkfdBR/m6IFfo0eSxxTqg5NPODhTXiiWZdHd8lD2VKVh+grlO4+50rFS26vyvZ4kyZ5THEn32CnGYDrT/hxgmVnMpONjMgtSAsFo8vaVNby6MzBoRpyK1FaDNa1t8O+c7TZAvb1u1OaaNjdJYsbayUxeUcXJhg76mgYwDQtZlSitdzJ1Zc2EqrDJh0f1sMS9mCe6n8aUc3wfGCryyQtZMme6iPsWCASCApEsy8pZotHZmT3eT3D2+fbLhzjSM2Tkt2h6Jesunokkwc9fOsxrXcnP32y3kzuvmHumpykQnDGOffcewk3J/iQlM+qY87FPUDKzjs7nn+XIH+6DdwCl+fcnR8uYpnyO450/hUn+1LWAyYx569DsHo7s/cXgGpuzjrqLvnW6D6dgDN0/6HkTCbVhRgs07yyY7I8VYhf9mn3yiCRp5aqi8bc/WVBFjKfmbcPyFUo8j5lMgrPNt9A2NQD3pOupqc9ehdXR/Dt6Op4e/HvqrNVJwlrH8acKfjySbMc96XokSSpIkBK+Z4IzzaMPt/Hcpq6Msd9WaR+Rf34Ayvvy7sejeLhr5t24VfdoTFNQAJZl8XDXwzzTtYWwmuH6YaAUe/sCrrHfyNplk8XnjUAgOOeZNKmsoHFCtBnnfH3bQY4Hh/q6v7r8Anac9DPD7aTSaeM7W15PGj/T5eDuRfPO9DQFgjNGx4O/o+f5p/MPfBMwH8h1oy+iwL7z4KVLYfVTUNudtDrXxbSjdG5Wo9nRplgRoRCKFQ4UrQKX582AVXA0eq4qGgBZdWOZYSwz3csi0/FnLrj3jFWOdB1/sKA2NUfJXKZf+DWiuj+rMAUU/PxJsgNJtmNmiABPFWOGI0gJBKONZVls3NDOy40+/BkqbpS3bSV0yU5MJXv1hk2ycZ3nOtZWv3s0pyookB6jhw3tf2GP7xAhQwdTwdE/mYv161hz5RxRYSMQCASnEKLNOUJqpc3CKR7WXTyTcofGa10Bvr/1YNL42eVO7rxSVNoIJi5Gj49j/353mhlxRt6kwmwVXBlEgKATDtbDS5cAEizZDhcdSh+XBXfN9WfVmLdQESEzsaqa0SJbZcfpzTmdkX4OclUAKZonp+AkyXbKq5dTPeNmvCf+lLfqxbIsejqfyl1RJNnw1N6QMVlMiDGC8UZPj87jDR0cbxpANyw0VWJGvZMb/nESm4y/0BhoxB/1p23nUTwsLl/Mmqq1onJDIBAIBOOKQkUb4WkzzqkrcyaJNpoiE46a+AciPLS3JW28kVujEwjGPaq7gvIrl+J/7sncsd+yBi/NhV3nobzlELbzQliSQagpiBKazEVrP01veZAjL22Pjd+5AOpPgGsg+z5PMRYMXfN73UhA+udBvEIm6N8+opU6iWSKRjciPgLdW4oSbM6UOXIxPjqZBBTNMRWwCPUd5eirn8I0esl07mHo3Lhrrsddcz09HU9nryySZCzLQlHd4za5SyCI43Zr3LQus+feWt7NCs/1NHj/SlO4GcPUUWWNensdKyvfIVqiBAKBQDChEaLNOGflrBp2dPQQiMTicLa1eNnW4s063h/W6QnrIkFKMKGpWnVKsHh5C1F/hmoGTwWWUYc5cD4MSEQfvxitpYbZ669g3+83MeujC/Fv8aEklnD3xypvrAVvINmyx36PFUNXSZKonnFT1iqM8knXEOh8Jmt1hnzcUXDVS6J40vzG/+Bt25p3m9RodG/rxiRBpJCY6zNljtzd8lDOc5EqQsUFlHztXtmwzDC93S/i8rwZy8pe8WSZIXo6nxp8rgWCiYxbdbOu5v1nexoCgUAgEJxxhGgzzvHYNTx2bVC0yUcgEhUJUoIJjyRJVK++Cc81N+B9fCPh40cxdR1Z09BqZkP0Qnpf7iCxBcjUY+8hz+VTsFU4KJ1TgazKOKeVMXCiF12CaVVrebztSebW7qfcnm70myth6Gyhap6sVRiOHNUZhaRSxUkUT/oCR5LW5RJfEqPRQ31NWfeZXXzJnaokj0D8b6EVQKkiFOQXe3IR1X30dOY3HM50XIFAIBAIBALBxEGINhMApcgW7qbe/O0dAsHZwm/00eB9meZQB7oVRZMU6hw1rKy8Ao9aQNxTAqrbQ81NCVUPG14j0HiCqL8tbWyoNUj7k4dwzatk752bmPHei9AqHAyciPl6dTntLL31zTz7NYOtJ67gbee/xCUzfBPWQyRevWFGQ/R0biK3x82QeEJKC2Y+8SXewmSlrcsfc50vrtxeOivfw8xLMRVAiSJUIWJPIdVEhZB4XIFAIBiLGP5evA0vEmpuw9INJE3FUTeZypVLUD2FeToIBALBuYoQbSYARsq1VKmm4HFo2FWFcrvKrrbkVBEjKnxtBGMPy7LY0N1IY+A1/NHkeNcj4XZ2Bo+wuPwC1lQtHpbZZPeG1/BvOooVySw+GIEwrRuH0taO/3Fv0vrZb57Cg5uPoxsWOi5e7V7Jyhsmtqm3EfER9G8nnylxonhysukvKWtziy9xIUdKqYrJJ8gAnDz6KCePPppx3Uj5ChVbARQXoVLFnkwEvPsI9Xdgs3vQ9fym/5KsMWnaNVimPmr+PQKBQDCSxG6YPEOgcS9Rf/LnXPjICYI736B88UVUrbmm4O92IQAJBIJzDSHaTAC0lFKbi2vd3Hj+VDRZ4id/T0+7UWWRriAYe2zobmST/1UiVnrkK4A/2scm/6sArK2+uqh9G/4QgcYTWQWbfARUhZ+1GvR1Dpl719c6h7Wv8US2KpPOls10tT4/uDyXeJJPfIm3MDlK6wn3DX1e5dpnPkbSV6jYCiDT1LEsi17f9oL2Hwl1Egl1FjwXX8d2XO50sXCk/HsE44ug4WObdyMdoSYMS0eVNGoc9SyqXIVLrTjb0xMI6N7wDP5N27EimT+jov5e/Jtin5fVa6/Nua/REIAEAoFgPCBEmwlAaoJUPjNikSAlGGv4jT4aA69lFWziRCyDxsBrrPBciruIVilvw0Gi/lgCT0m9hznrr0Bx2dj1yQZKZrq58BvX4P17C0d+mX6hHZFgX3kpfaoyuMzjUlm5qKbg449XslWZzDjvfXS3N2YQNNLJJ77EW5gqp6wi6NtRkGGvJDuQZTtRoydt3Uj7ChVbASTLGt0tD2Hq/hE5fip62EvU6M94XMG5g2VZvND9EAcCWwhGk98zreFDHA7uYH75UpZVveecuHj1B3UatnXQ3DEUF15X42Tloho8LvHeOFsY/l4CjXuzCjZxrIhOoHEvnhVXorpdWccVIgD5/tZIz5ZX0SZViOobgUAwYRCizQQgNUEqHyJBSjDWaPC+nNQS9fbaN7G0ej41djfH+jv55mtDF8f+aB8N3u2sq3lLwfsPNQ9d3Pc3+Wm+/1Vmr78CrcLB9JsuonPz0eSkqFMEVIV95aU8X+MZXGbTJBbPr8CdYfxEI1uVyYx563BXXoS/a+dp7T+xhUm1xcSWfMa9kmzHU3N91lSskfYVssxkITGfCKU5phLoTvffKR6FeZd9Dlf5nDS/m/7g8bTRI+HfIxg/vND9ELv8T6Jbmd8rwaiPXf5Yotny6ombLGZZFhteaKfxgA9/MPm9eqR1gJ2HAyyeX8GaZbXnhHg11vA2vDhYEVNSP4U561ejuJwc+PpvufTHn6Xv8EkCB5o4/ocniZ5qeapZd0PGfRUqAAGYvf2Ee/tF9Y1AIJgwCNFmAiASpATjneZQR9Lfj7e/wuPtr/CDS27hb22vpI1vCnekLcuFpWdui8qVFLXbU0ZjtTupwqaycoA5l28nVNnB75snfitCriqT0EBxz0H6vtNbmPIlViVW0UiSNOrGu0bEh1FEVLeiugGroJay/CbEUSzTwOaoTGt9MiLJFUYj5d8jGB8EDR/7A1uyCjZxdCvMgcAWFnpuoFT1nJnJnWE2vNDOpl1dRPTMFcT+oMGmXV0ArF0++UxOTQCEmodM//ubWmm+/wlmr18NgBmKoJY6MHqGbtiEm1qz7iubALT7S7+AaBQzfPrtVwKBQDBWEaLNBKHYBKnNLV62t/dwUXUZa+ZOBh1RWiw4a+hWuuB4ZcU8opbJDv/htHWGmbuNKhVJkwf/XVLnpu7mS7FXOSk7rypjUpSzzo25eDa17QMYUQtVgcrznsOqeJWg6SOYcK00kVsRivWZkZUybI5abCX1SJJE0Lc9r/iSSDyx6kxV0eTD27oRM0MLVjYUWwWRUPJFR7ylLNSfeXmuSPN86Vkwsv49gvHBNu9G+lJaohZOupbrZ67DG2pja9tj7O3eii1YSu3WhezuOkAZ1ciaRGmdkykra7B5xs/3erbWp2UXV9K435dVsIkT0S0aD/hYsbDqnKiQHEtYeubv6og3wPZb/g3XvOks+MZHaf3riwCYRvbv9kwC0Ix1KzBDYTBzvwYKbb8SCASCsYoQbSYI2RKkbIpMMKzTOZB+URDQo2xt9fP3Vj+KTyJyLPlLT5QWC84UmqSkLbtpxlIeOP58htGgysV9dDnq3ISP+AHob+5hz21PJa1PTYoqne1h3XVDlWjPdz3ILn8jepa2nYnailCMz4yiVTBzwb1J4kHl1FXDEl9UzTMm4qtTPX3yoQ+0YqUlbcVayjRbaiVWbkNjVXNzwcLbc6ZnjbR/j2B80BFqSlumR8P8rfn3tPU14wu1U//ccmr2LcDRWw7AADFPr74jA/h2BqhaXMH0NWP7ez1f69OL+3xEDIv6KSWsXz0Hl1Ph9vv2csfNF2BTZV464OWhzTHzeH/QoGFbR9LnumD0kbSh7+qSulrqbr4Be5WbC++5BUlR0DwuWh9rHBwjq5m/2w1/L3p7slfjwMlOTm7cMijYnG77lUAgEIxlhGgzDvGHdRqOdtDcO4AetdAUCX9KWajLpiJLEp19YYJ67rapKBB1WzAZaEteJ0qLBWeCOkcNR8LtScu+uPu3WcfX24szAa5cOY/gzvZBM+JcKB4HlSvnDf59LrciFOMzk6nao1jxxYj48LZuJNTXhGXqSLKGo7SeyimrUG0VedePNOmePhJgYXNUARKRUFfy+AyvEZd7DnUXfJijB36NHhkSv/IZGht6D3u33ZFhVgp25wwcZfPOeOWRYGxgWOk3YXZ7Xxz8d/1zy5m2YyGKbsu4ve436NgUe+3OWDt2v9fztT5FjNjyptZ+7n+imfWrZ7Ps0mq6/GF++chh/vC1q3jk+RPo8XHtAxn3Ixg9HHWTCR85AUB/czt7bvtlzvH2+ilJfyemRZl9yc+f7u3Fv/21wb9Pt/1KIBAIxjJCtBlHWJbFhsPtNLb68Idzt4e09+W+wExDBiqBLiBl16K0WDDarKy8gp3BI0lmxNnwKKWsrHxzUftXPQ7KF0/Dv+lozthvySZTvngaqtsxuCy1FSFTG0KcYDQWv3tdzdmvEhkpivGZGS6WZdHd8lDGY4T7DhH07UDTqohEujANf8b1iV43I0W6p8+qJKGl4/hTWbYcIthzkH1/vzNt+fAizSVktRRkFbBAJAGek6hS9u9hW7CUmr0Lsgo2ccyIRXejj8krqtDcY+973R/UC2p9SiX+9s/0OWBExfvlTFO5cgnBnW+kxXNnQvGUUblySdKyfGlRVjTz9/lw2q8EAoFgLCNEm3HEhsPtbDrWRSRP724+ppY5uH3pBUgS/Pylw7zWderLVANqgJPp24jSYsFo4lFLWVx+AZv8r+aM/bZJKovLLygq7jtO1ZoLAAg0nshYcaOcEnbi4+JkbEUwI9gUJ/16+g/R9vDRouc2ljkTPjPdLQ/lrOaJ6r6cLVpR3Ye/I9aeVj1j5NrTbI4pRXn6jD4WphEgbARGVawSjG1qHPW0hg9lXDdj62IcwVhLVFl9CRetn4PmUmi8fS+XfGYuzho7vv297PuPI+h+g5MNHdStG3vf6w3bOvD3xb4LsrU//dv9B+gO6NTVlnDzDXVUue3MqCmhpsLOvbcu4MHNxwerbADUYs3/BKeN6imjfPFFOYUXAMmmUb74oiS/mWLSogDQFCLeHg796CE8C8+j5to3UzKztqD2K4FAIBjriE+vcYI/rNPY6jttwQagN2zw6IETzK1ysfqCqXxny+uD62QXfPNjF6X1g4MoLRaMLmuqFgPQGHgtY8WNR4kJO/FxxSJJEtVr5+NZMQtvw0HCTT2Yhomsytjr3VSunJdUYRMntRVhd/cWdnRu5i3T1rJs6o0cCexJWh/NYio73hktnxkj4iPQvSVn+1UhWGYYf/sT9Af2YFnWabVOxSt/+nt2F7Vd/kSo/EiSDc05FVlSiYQ7MI1eIPPnfqpYdabbxwRnh0WVqzgU3JFmRgzgah9qd+pt6uf1+5u5aP1s9F6Drp1+5r1vBlbC74i+prH5vd7cMTSvbO1Pb7l8Eo//vZ3m9n5u++WeHHuLUV/rHM0pC7JQteYaAAKNe4j6g2nrlVPCTnxcnGLiwgHQo4ROdg9u7/v7gbRjpbZfCQQCwXhBiDbjhIajHUktUYumV7Lu4pnp1TIFrO+NGISjJldMq+S1rkDSdq4SNWs/uCgtFowmkiSxtvpqVngupcG7naZwB4ZpoMoq9fYaVla+eVgVNqmobgc16y4ufHxKK8IVNddzcfUSym2V/K3592njFXnstRqMZbytGzNGZOcSPhLHHD/0EF0nnwXAsiKE+5sGxw23GiVf5U82CkmEihHzxkklsdUsqvs5tv/ujOMSscwwPV0vYJqhjGldoiJn4uFSK7iwfCkv+/5K6uvDhSfzRjI0P9ZGsGWAiz4+e3BxqCNCxK+PuTSpxAqZRBLbn9791uk8/vf2jONS8bhUVi4qzgtNMDLEbphci2fFlXgbXiTc1IppGMiqir1+CpUrl2RMdCo2LjwfmdqvBAKBYLwgRJtxQnNv8t2wFbNr+NvBNma4nWnVMoWsP9bTj38gwkN7W5KWy6d+EWX6YS9KiwVnArdayrqat5ztaQyS2oqwta2BrW0NWcfX2mediWlNGFITmgoRPhLHBHsyt4nEKbZ16vQqf3IkQkkajpI67KWzKJ90DYHOZ3K2mqWKWZBd0DINPz0dmyAtuSrGaLWPCc4ey6rew96e5xgwk2+8oA69BsrqSjj/5jocVXaW/+QyIkEDu0eje8/QNtFglP3fPDTm0qQ0dWge2dqfntpemGBj0yQWz6/AXapljQ9fuagGj2tsCVcTCX9Qp+HlHpqZgz59dtJ5V7Oc92LjwnOiqWntVwKBQDCeEKLNOEFPqXL528E21l08k3KHllYtU8j644EBvvRUejnxAFH+3NLC5de4+d3TTUl3u0RpseBcJFcrQioupYJFlavOwKwmDukJTbmjsBPH9PceQw/nf14sM0ygewueyTfk9d/JJJYUSq5EKEdJHTMuvGfo7zytZpnixgPefVTWLqa7bSveju0pa7MbbENx50Aw9pEkCY9Ww0A4+fu9o/owU45dBkBvcz+Nt+VuGzrhhJfcBtHXO3H8zMd588vHhIBRV+PkSGvsZlWh7U/ZkCzYc7SHxv0+BsJRwilVPEdaB9h5OMDi+RWsWTZ2hKuJQL7Y9lznvdi48JJZU4j2hTK2TtmnVKW1XwkEAsF4Qog24wQtpcpFU2TCUTNjtUwh67MRNk2OBQc4FhyACIMx4KK0WHCuEm9F2OV/MmfstybZmV++dMLEfZ8p0hOackdhJ45pO/YEUWOoPD5Xa1VU9+E9uTGnL48R8dHrfTlpmWavoO6CWyhzz8nrU5PLqNhemr0CK9Pd/0r1Yq6a2orLnlz+33Tg11n3A1BWcSHT575n2OdAMH7IZEg86UYH6lEJw5e/nblPsdg0XWIg/kswYnDiVe9ZETDi74HDrf10B3R0I5qlibB4woZFS1ckz/ENNu2KxaCvXT52Y9DHG/li2zOdd8Pfi7fhRfQu/+C4QuLCS2bU0vtac8bWKUlVhRgnEAjGNUK0GSfUlTk50jPUIrWtxcu2Fm/W8fnWF4QNqAZZhsXTKkTct+CcZVlVLM76QGALwUzmn0oF88uXDo4TULAprqO0vuiEpmxj8rVWhfsyJ3slRo6bRk/SOj3s4+i++6iZvoJoNPeFXzYUrYLKqekVWDnvQnMer7dPZkHtPpbXPx/z8pBksHJX1PT69qOHfUWfA8H4I1MV4NaBjdSf72PajoU5Y78jksUb7gTBJgF/0ODxlzvZ19TLZ9bU5626OZ2Wo/h7YOt+Lz190dwPeJSJ6BaNB3ysWFg1IX/vxMWQUHMblm4gaSqOuskxTxlP2Ygfr9DY9vh5v+5NlRhPbCHQuLegiPBEJFWh9u1X0b11j4j6FggEExIh2owTVs6qYWdnIMmM+IyggDZJ5rorKwkaPrZ5N9IRasKwdFRJo8ZRz6LKVbhUkUwimLhIksTy6ptY6LmBbd6NtIePEjV1FFmj1j6LRZWrRIXNKRIFkEJMcSunrCLo2zHslqRkcrdWZfPIyRs5bvTR2vxXPFWXZFibux5Aku2UVy3N2JKU7y50b6ScHScWYlPCLJ7597yCTZzhnAPB+MOlVjCLKvZbPsyEIoKm5c8DULt3AfZT8d+JBFWTg+UyL+UonrWAY50hvnH/QZYsqMxYdZOv9eWVgwHcpSqKAkaUjGJOvvdALuyqRNiwqJvs5BPvmovLqfDlX+5BkSQC/cP7reQPGjRs62DddWMvBn24WJZF94ZnMooh4SMnCO58YzC9aSSrURJj2/PhDxo8/MBO3rIrdzR4NqqXXoJr9tSsrVPFRn2faYFLIBAI8iFEm3GCx66xeEoFm451nXbst0zsB1niXnKlTYUx+dVrjZSX/zmtyqA1fIjDwR2DVQai/FQwkSlVPVxXI1pLcpFXAEkxxVVtscSk4aQ1pZKvtUrOkOxVsPGwFSXg3Z+22FZSR1TvySg6JaZBpVLoXWjdtOGyJcfk5kvYqqxdxKRpby34HAjGJ0bEx9xAFyEZWmwQUk6tkKDpLc9zYuEOZm1dTGXrZOyGilY+iX1GJ432WgZUqJ9SwvrVc3A5FW6/by933HwBNlXmpQNeHtoca6sO9Eeztg3lE1x6+g16+rP7mFx7eWVB74FMzKxxAHCsI0Rz28BgJHhVuY1j7dljzAt5zE05th+PdG94Bv+m7GJI1N+Lf1PMI6t67bUjdtzE2PZCzntzd2RYgg1A57M76Xx2Z9b1hUZ9ny2BSyAQCPIhRJtxxJo5tQA0nvThjwy/4sYEGABlH8g+IAptFf386JnXufofqzOmTR0PhKgrzXwnPBj1scsfuwhbXi2SSQSCc5VCBZBUU9zKaf/EQOAAof7DnI6LRb7Wqky+MsVEjpspj0vRKph23r/G9nNyY840qFTid6ELuZipdCZ/9uZrA/O2b8Pbvq3gcyAYn3hbN2Lqfi4EZkeg2V1Br6MUE4lopAeXGqD+qqdxnHpL9ZRPZuuLKwidejk1tfYPih3LLq2myx/ml48c5g9fu4pHnj8xGESQqW2oUNExE3Efk33NvWmVGIoM0QIKygL9BiV2JX1539D7If7e+umfD9LSGSr4MRvR07sxNpYw/L0EGvfmFUOsiE6gcS+eFVeOWMJSYpBFYec9Nrakfgpz1q9GcTk58PXfZjQWRpagwBuYxUR9ny2BSyAQCPIhRJtxhCRJrJ07mRUzqmg42kFTYIDOgQhBPZp0mVPttBGORgkZJoZpJV8CWaDsBrkJ5ISbSa3+EByFJ4+0MWehC6qIVf2fImrJOeemW2EOBLaw0HODaBMRCM5RihFAEk1xvSf+RDh0nHyCTb4Kk1xk85UZTuQ4pLc9FWvuG78LXcjFjCKnivSFJGylk+0cCMYnia9dhwXn+33MveSfqZq8mEN7fka3N/l1Ee1rw4qmCx0A8aKB1OoBjysWk53aNlRM60smIrrFia5Q2vKoWVhVhj9oYJ66aE+MBFeUod8q8feWqmT+/ZLtMavKxKmg8Da8WLA/TPRUS1DNuhsGl52OX1FibHsiWc/7qfbP/qZWmu9/gtnrVwNghiIoJXa82/YNDS5QsJFsWsFR32dT4BIIBIJ8CNFmHOK2a6y7YKjf+t6/H6S5d+jHT9dAdrNMeTcob4CUxe+vx6fzyrM+lHkQvXRouXRqg4WTruX6mevwhtrY2vYYe7u3Do4JRmOeN6J9RCA4NylWAAn3HS28PamA/WUjl6/McCLHc7U9FYpupF90ZLuYiZrJX9WFJGyl7TvHORCMT4p97coWSMrQl3+i2DGjpoSaCjv33rqABzcfH3x91lTY6QsZ6IaV1DZUbOuLLME3/+WipOXZKmoKrQCKv4PyRYLPrHXS1NZf8GOur3Vm3dd4I9TcBhRYvQKEm1qB04vqjpMY217IeZ8c8qftI+INsP2Wf0PzuIj2p4t8uVA8ZYOtTIVwugKXQCAQjCZCtJkAFGxxYwHO7ILNIEasEid6Xmw8gNPeNrhaNyPYFCf9evqXW3tYJJMIBOcqxV5Emqaeszpn99YvEzWCBe8vE/kElmIjx2XVzcwF9562+BG/C13IxUxbsJZp7pOD2xaSsJXISIhMgrFHsa9dUwKnu42QL3bTJ5/YATBnWilHW2PRyYltQ8W2vricalbxJedjzCJkApQ7VRRJylrxE39vlZeqbH/dT38omvcxe1wqKxflcGgeZ1h67Nxkql5JjcWGoZSl4UR1p7JyUQ07DwXw9xl5z3uZPsDiroMAlNTVUnfzDdir3Fx4zy0YfSEO/+IRzHABQr0iY59Wg2Pu9JhpcBGVMMMVuAQCgeBMIESbCUDBXmgSmNNhWq+T9R+dS6lL4Quf2sWXv3IBC6+o5NYPvkyPP/alKA+Ash+iC0FVAlS7Yy78u7u3sKNzM2+ZtpZlU2/kSCD5SzgqkkkEgnOWYi8i9XAbhu5PWpZYTZP64VaIoGKzTyrYVwaKjxwvq7xyRKpV4nehC7lwbjx+NRdPOYxNDuTdryTbsdmnYGEVfA4E45NiX7t+BWacv59wxyX09+c3pHaXqmiqPCiuJLYNFdv6IstSxuWZKETIBLDbZC6ZXZ4mLrzS8E0Gelp5EXjgh3kPlzB3iQqXxgf/lj0qfbwRam7DDMWqGNVdTpyb/5vgoRasR36O6rRTOmsKPfubBsfLO+yoLz9Mc/sARgHmQi/8j8xva51ZW8o6/RF8QR3LypGwZ0GZMcA+PVYNleuJUxw2nFOrkRSFvqZWXPOmEx0IE+0PEWqPif+qpwxbbSU89GMsw0DvDmCGImBZIEnIDhtaVTlSSqJUqKkVMxyBF0F99Bc4p1bHjnHgr1i6QcQfJNzdM3SutttwvPRQ3nM0lpg+fSY/+9l9Z3saAoFgGAjRZgJgpJTa5EqCogSaygZ44P5mbl0/G8uCf//mazy08eq0/cpesCSd8tJ9qErsbswVNddzcfUSym2V/K3592nbKCKZRCA4Zyn2ItIywxnbog7t/jHHXv8fZFkjsTCwEEGlWG+ZYiLHi/GEMSI+vK0bCfU1YZk6kqzhKK2ncsoqVFtF0l3ofGg2D55JSxnwbcrZRibJdjw1b6N6hjCEPxco5rXbb8rseGMBbVuWEyrRoALIbG8zSE+fwV+2DFUTJLYNFdv6Mm2SM+PyTMbDhQiZ8fmsWXYqoCGhjWegp7WIu1kxVEXCXaJR7bYVu+mYRnHasUIRFIeGc3Ilsk2ldNYUJCQkVSHi7UVKMDBUnHa8vXrsd6Uk4bApTKt2osgSR04GmTm5FFmKGT53+MMYpoW3V6e2wp7x+JM8diRJwtsbyehYppomJdEwlbKBpSpYRm6hyAzphNt9OKdVI0kSkgWyohA1rMHHYYUjgITR5cPo6cMyksvLo6EIZnAA1V2KWl0xJDTK0uA+JE69hIwova8fQzklcEW6h4RzSZbGXYJUS8uxsz0FgUAwTIRoMwFQ5eQvjRWza/jbwTZmuJ0Zk6CsSqCNvCgWzK3uwnI+P7hsa1sDW9sasm5TaxfJJALBuUoxF5H5iIS7ixo/XJPdQiPHC/WEsSyL7paHCHRvSTsP4b5DBH07BluVFl9YkbMFAcCmSSyeX8HUWe+jW1My7hdEC9S5SKGvXSQbh15byIkXlse26wMDMN1ApvssFklBBJDeNlRM6wvAvqMBbr9vb9ryadUO2nzholOo4vORJIm1yyezYmEVDds6aGofYLsmEzVjreNmhgoPWZKQpZhQI0kSDptMVbkNVZEwohbdgQihiIllWWnrxxtaVTnR3n6iIZ3g4ZM5x0qqglblJtQ95IsYikRp84aYVu3E7dLQDZOTnQPMry+nqyeCaVmEItmFFkmCSR4bfSGDkB4bJ0sSNlXGFg5RFupFsSxMQNZUkC2sAnv+Ld0g8FrzoKAyWAVjWTHBxtebdV+WEcXwxW5oapMqYvNy2DEHYgKXY3IlkqZSkihwdSdXOsqOzEKVQCAQjAZCtJkApP4m+dvBNtb9//buPDCust7/+OfMOTOTPZPJ1j0pi7LDla2BgtIWWk2lteWCt4ALFxWuCohXUURQ5Iq4XVEEuYrwE1BEKBRaZAtlaZsChRZaFqFLUrqkWSd7Zj2/P6ZJM5nJzKRN22n7fvmHzTnPOeeZAdLMJ9/n+xw/SQVZTr3fHF9O78wytODSChUXu3X5FYepuCRaCvzNbx2pX//8X+rpjv5WYkJhlr527Kl6YPOT6g6n/hCWZxZpipedSYBDleUqUp7nFLU31UhKY9/eUbKnTXb7g47RCERatjyc9EN0ONimtoYlioT7NO+sL0hSwmafUvSD6eBmnyUTL5JnzMwRby+Og1e6/+6a9WfL5WpRIGDLkORskuxWKVQi2VmSbUiyo0tV7NzYe/QHh/3bfUvRXaXSCR2T8eRZuupzFap5s1Ur3m1Ve3eqhnvDz6cw1zmws9VrD+fIMEYWwNh2dClPe08wbsvv3kBYnb2hEVfihOyQWoLN6ov4ZStaCZLlcKvYWSLL2Dc/fhuWJaswN2mAIUWrRqzCXEm2IsGQhqZ2digkd0e7jNaQyoJhdW/slCdoqN3Klp1id1FJynabA6FNxLbVFwzL4++ROegHWIfLksOdrUDr8M2A0wtUjGiFTYrwx47YCrV3yyoq2BlYjTzgAoB9hdDmIOAc8sOH03TIH47I1xvQw+u2xI0P9tm64brUpceTJ+cozyrSMQVTtcb3rIL28L/JcxpuHV0wle2+gUNUf4VJZ9vr2peBzUgrTEI7d/3oq2+QHQzJcFrKqhgjb/Vn9jgQSX8nrIjam56XDGneWV+IqRIIhW1ZpqHK8ui2uoM/mEqS5fSMeAkYDl7phnlzJkTLZ16vbZPPFw0IjbDk3LHzRk4plC+Fh/TgHRwcDpVoaVK6+oMXT54rplLmw63damgLDNukONl8hrJMQ+VFbv3pT/8n0zTl9XoVCoXV0dGu9vZ2XXPNtQNjm9ujvVcSVeZI0v333K4vffXbUntApZ7kPW8uueRinT/3s7IsS8ecd9zA8d/96Lea8m9T1N3TLdNw6HvfuV4tLSOrKNwdVkm0kiTRUiFJGjd5km794x36zwsvUV9dg2TlSWb040GW01RppFeBzc2ygtFrnZLCPWHlScoOBeS3s2TbOTFh1q5eMn7JtnXkxIkad/YpevypmoExftOSKxL996Y/jLnsiq+qYUO9Hr77Xg1eT3X2rBkaN3GCHvrjffrva67Vs489qRUvvKTf/u0+XfuFrygrO1tzL/m8Hn/gIcm2B16nmeWKLqUyHequa9jVA6c72gPHDoUVbGnXFd//tlpaWvTIn/5f2gGXYaVYX7jTmDFj9OMf36Svfe3KtMbvruuv/75qamr06quv7dXnANg/CG0OAhX52drYvmv7zZVbWrVyS+uw443hTw3weCzNqo7+9HZWcfTD0Hsdy9SVoOImzyzS0QVTB8YBOPSkqjAZzDAs2XbqD3kOh1uRQfdzmPlyZZXvVqBi27ZaFi5VR+26uG1d/Ru3qmv1ByqoOk6l876w230Khu6ElWJGam+skcORpZKJFw1UCQC7I1WYZxiG5s4fo3NmFOvpJY36qK5XwZAtp2VoYmW2zjzHq5ffbU0rOBx8z6FLk/qvDYVt+bqC6uiJDwkSBS+DK2Ukqb07mHaQmcrll39VknTZZV9WS0uLFi16IuZ8KGyrvXv4wEaS/uNLV0mSwmFDRfnOpEulnqt9Tr9/7E49/+Bzceeuu+06vbBiqRyGQ0VWkUqdpSN6LbvDMKJLgKyiAgVb2geClGhTXrfcE8pkKLqNtR2x5XKE5O8Pbbo7FQ71yhjmrTHtiHL8PQo1t8lZWiTbVlwvGYfDofFlZTp/1jl6Ysnziuz8/tphZSsnFJBpRwaqW/xNPoX7AhraAOflp59P+Pyr/uNLkqT8MeX63CUXadFD/4jpZxTuC6ivoVXZ40uiByK2DIcjpndOf6NmKXXAZVjmQC+cTOJwpK52AnBgI7Q5CFRPLtPqpg75/Kk/BGWFHTI/jCjZSJfL0KlVRSosjP5gZBiGzi65SCd7Zmpl6yLt8G9SOBKU6XCq3D1ZU7xzqLABDmHpV5hEDQ1sBm/zvWXDP9S0dakkxQQ2kuTMKtfEY360W3NsWbhUvppVsgOJd7gL+zrlq1klSSqZP223ntHXXTfCKyLqaFkmz5iZLG3CPlFY6NRFCxIHhAvG7l5wODRw6bcnwctw9xwtU6ZM0RVXfE0Oh6HF/6zRzT+/S1kuU2+/+oxefnmZjjn2OG3dukU/+vFP1NTapacXP6qq6fPk9wc0/bxP67IvfF62HdHLL7+iP//53oH7huyQlq9boVCKUDpiR9QealeRVRSzVMrtduv7379Okycfpu7ubt1666366KMtuuyyL6u8vFyTJ09Wfn6e7rjj91q+fIVM09Q3vvF1HXfcsbIsS3/60z1avnyFLrvsyyopKVFlZYWKi4v1y1/+Wq+//rqyx5Xqqqu+qZNOOkm2beuPf/yj1n/wgexwZKC6pCDYox4zWk2UG/LLsKWTz5yi//zWNyRJYyaM07OPPak/3Bbd4ek/v/VNzZz3Wckyddcvf6MXFy7WJ6pO1+XXflPhUEhOt1tOp1OHffxIvfjUX/XnO/+k7XX1+s7N1yvL7Vanr10/uOJqNe9olCQd/4mTNPeSi1TgLdKdv7tDzz34qOZ88T80cex4/fbmn8W8j4vfXKZ5VdP19R98R0ccfZT+tvQp/fPRx3XOzPN0w5VXa0vdZpmmqQce+psuPGPGsD1wJOmYY45RdXW18vPz9Lvbf6cXFz0lIxjSNT/8nk445RNyulz60z1/1oqVK4d9f03TjHt/N2zYKMty6sYbf6iPf/xjevPN1frVr34tSVq06DG99NLLOuWUk/Xuu+/qhReW6ktf+qLc7ixdd9331NDQoLPOmqpLL71ETqdTDQ07dPPNP1Fvb6+uv/778vv7dNRRR6mm5oWB98QwDF133Xe1ZcsWPfDAgyP7DwNAxiK0OQh43E5VjS1SzeZmBZKUdLochj5V4ZU1NbZEOuZeHkunVhVpzrz40uNcy6PpZZTlA4g1tMJkuBBmOIO3+Y5EEocqkmRHgil3ZUok5OtUR+26YQObgfsHguqoXSfPjNNkFeYlHTvc/BJJ9n6Eg21q3baIJU846Ozt4GV3uVwuffvb39LXv/5NtbS06Je//o1OP6VWr65aI6/XqxW1tbruhz/VD7//LZ0zo1ovPrdooMXLMUcdqQWfv0BXXvlf6unpUX5+fsy9W4LNSQObW779EwWuCuqfL/5Tt/3h52oJtmjeOfN01FEf1z33/Fnz589TW5tPP/rRlzRlyhR9+9vXDizjqqys0JVX/peKiop055136PXXV+nTn56lbdu26/bbf6ucnBzdffddWrnyVUnRZTnf+MZVOvLII3T11Vfr9ddf15w5c5SVlaUvfvFLkqT8/Dy5ekOSbccsJera7JMZDsm0dzYPdlk64dRP6NL/WKCtb/1Lf37qUb22bo1sf0ifnDVDF0+bLe+ksbrnH3/Vyn9Gl0AdfeLxmn/GdLU0NunkM6fogi9drO9/5ZuSpNy8PF3+mfmKRCI6d061vvjNr+lXN/xEkjT5Y0foy7PmqXTSOP3xsYf00iNPysrLkcPtlOFIXOH0+//5hSZWTtJ/fv4LivT51eXr0Gf+/XO653d36pOfq9Zbb78ta5xXzp09cPxNvoFr7UBIIV+nJn3iE7riK1+Vt7RUd955h1a9+aY+/elZauzq1Ne+/o2B9/fV118f0fubm5unysoK3XTTj7Rt2zbdc88fNWHCBG3ZskXFxcV69tnn9Otf/6/uueePOuWUTn31q1foggvma86c83X33f+nNWvW6JVXlkmSFiz4D82eXa1//OMRSVJeXp6+8pWvSYoujzIMh6677rvatm0bgQ1wkCG0OUjMO3zn2vJtbfIFEoQxbktVY4s07/ByGUcaw5ZIz6ouG6iwAYB0DK0wSTeE2cWh9W/fLn9vkwqLT1DL9mUJR4VD7dr87o0pd2UaurypdclyhX2dyqkcq8OvnCszL1vv/fhenXj71eresE0d79XpowefjT5jZ8+bsgUz0379/QxH4u+dqd4Pf/emET8LwO6ZNGmS6urq1dgYrex4csmzOu2UE/XqqjXq6enVsmUrJElPP/O8Lr744mhos9OZU07WE4ufUU9PjySpszN2qWVfgmpDp8PSxOwJ+su9f9FN229Sj9Gru//nD7po9kV64qkntHz5ci1fvlySdNxxx+n++x+QJK1cuVLXXfedgfu89NLLCofDam5uVn39Zk2aNEmnnnqqKisr9ZnPzJIk5eTkqKQkuhSotrZWkUhEH3zwocaOHSNJOvnkT+ivf/3rwD07O7tUFI4urRm8lKgo0qfQoGbEkUBIq19bpebmZoWCQb388ss68aSTFO4NqObJpxQMBNRY95Hef2udjjzhWGWPK9batWvV5mtTwbGVsvJ2bRcvSQWeQt3yh99o3KSJsixLDVu2DgRjLyx5WqFQSE07GrW5frMqKivV19Aiu6hEeUdOSPrPNuTrlOEw9MzCJ3XP4n/o/35xu6af/Sk99Id71b1xe8Jr7Ei0B84Li5aoe8NW+Zt9o/r+5ubmqb6+Xlu2RHtMbtiwQWPGjNGWLVvU0dGhdeuiu6pt2rRJb7zxpiRp48ZNOuaYYyRJ5eXl+slPblZRkVdZWW6tWvXGwP2XLn0p5rVcccXXVFtbq7/85f6k7xOAAw+hzUHCMAzNP2KMZkws1pJNjarrHFSOnJ+t6sllKnQP2mkhSYk0AIxEfIVJeiFMv3GTz5e3/HS5soq1ZcM/hh0XDnZouCbH4WCbfI3R4KVk4kUx5/rqGyRJPXXbVX//MzrsyrmSpEhfQFZulkLt3THj/XWJf7hPJSu3Uv7u9QnOJH8/0gu2AOwVO0PeLKcZ7f9iGcpymbJMQ9luhxp9fUN6rAzfz8Ye2oxFUrGrWG7TrbaWVkXsiPp6g3rkH09p6mln6JFtL2mz2ausLIe8xckbHNuDeu5E/xzdEetnP7tt4IP/YIFAYGBs0p4nCXr52MGQHPbQYfbAub4dbQorIndxocI7d3vqX14V8QcVaO1Un79v4Otwb1/Mva743rV6YfHTevKhR3T0ScfrWz/+wcB7bNu7GhPbhuQeVyx3iUdWfo6CQ75XJ3w5EVtdHR3a8P6/dOaMc3TE0R/X6pWvp77O3rUVeMQf0Ki9v5KCwV3f4yMRW6bpSHg8FAruvGdk4J5XX321/vznP2v16jX61Kc+qTPOOGPgGr8/9n197733dMIJx8vtdsvvT2+5MoADA52rDjKFbqcWHDVe1596hG6ccqSuP/UILThqfExgAwCjaWiFybjJ5+u4KbeqdPyn1NX+Ycrrt216XOtWfl9vvvhVNX4U37xzl+S7UtkRvzpalikU9MUeD8ZXHwZaO7Tqslu14a7HNOmS82KfEhrZTjj9vGPnyHTGL9FK9X44hqnQATD6Nm/erIqKaC8S0zT12c/M0Gur3lJfMKzs7GyNP+xEbW3u1alTpuqFV1apsW3Xh99XVryuuZ89T65sl3YEGtTu8qmur071ffXaEWhI+DxDhnrCvbLzDDnaPTIbyzXz7PP0r3frZAcs9fWG5WsLanNdj1599S1NmxbtqXX66aeprq5u4D5nn322TNNUcXGxKiomafPmj7Rq1SrNnTtnoLrwiCOOSPraV61apfPPP3/g67y8vIHQysxyasLxH9evf/db5UweKzNr1/clh8vSv51+qkrGlCv/iAmaMf+z+tfmTVq9/FWd85lZsixLxWWl+vjxx2rDvz4YuM4OhtS1fqu62zuVk7dryWluft5AD5vzP//vMXM85zMzZYRsZXWHNGHMOL3/4mvyN/kUaO1QX0PinTR6urpi7i9JT/7tEd14+8/13BNLYu79jRu+m/Ae53xm5sDrqKisUP3GutF5f/dQbm6OmptbZBiGZs5MXgH64osv6tlnn9PNN/9Yppne7lYADgxU2gAA9sjQCpNtmx7Xtk2PDzs+3d2jkhmuT0yiHjGGM/pXXU5FuSounSl3caGO+dFlMkxTTk+etj9VG3Nvh7V7fzVaruj2420NSzQ4YEr1frhzJ+/W8wCMXCAQ0K9//b/61a9+IYfDoRdeeFFvvPmWJKmxqUUzZ5ytG79/lTZsrNfPfvWHmGvXb9io+/9xv+686w6FImE9tfQp/fzuX0iSeiO9chgOXfuf39KXLviiSoqK9fY/1+iO+36vpUte0K9v/J0KCwplGIZqV7yp+//ymCRp5qyzddJJx+i2n/1Bd97xN/3u9zfpvvvuVU9Pj2699daBZ2/evFl33XWn8vJy9dvf3qFAIKBFi57QuHHjdN9998rhMLR580f6wQ9uGPa1P/HEk6qsrNT99/8/hcNh3X33/+mD19dIksJ9QWX3hhVo74pbShQJhLT29Tf139+8RmMnjtezjz2pVU9Ed3R65YST9NelT8m2bf3i+psUCAfl8ubLMAzlTB6rvm3N+vCd95WVlaWHXnpaf//7Q3r0icf13Z/dLH84qNdqV8rh3BUQ1a/foD8/9ajyCvL1qx/erECCihGHy1Le4eNkOC05XKbscR5tqq/Tw8uf0+K/PaK/3HG3Vr74ipyWpSUPLxy4bnzlJHV3diV8bwY/95c33Kzu7U2j8v5u2lQ37Ph03HffX/SrX/1C7e3tWrt2XcogaNGiJ+TxePS9712n//mfn+7RswFkDsO2k+xxKKmpqTPZaQDAIS4UaEvYayaZ1MGNQ6kqa4444WoVj6nS+rV3xCw5yso9ImaXqcYHn1b70jcS3CGxwmmn7FZPGylaKt9U/xe1Nz2vuH1rEzCdRZp07E/YPQoYJXPnfiaur1UqTb6A2rqCWvvaMzr21PMSjnEYhtw5QfmzGxWxk39vihM25Wgok8Kpqx8sy9DYXL+MwK6tub/2nW/J19ulRU8uHtlz02CHQuqra5AdCuuCL1+ixu0NcVtsD20kPJRhmTITLDVNxMrNUvb4EnXXNSjv8PGKBEMKtnXt2s0pTanuM/nII3TDb36mr13yZUX6/Ir4g/rxb3+p3/70F/JnO2SYjui1R05QuNevcHef+nbs+jvMke1SVsXYEc0p09m2rccff2p/TwPAIKWl+akHieVRAIA91F9hYjjcaV5h7AxsEn+wcpjZ8pScmOIe0T4x2zY9ocLiE2LODO0R460+U6Ynvb8UTU++vNVnpjU2EcMwVFb5RRWWzVCqv2INh1sFxVMJbID9rKTQpaI8p4bLeizTUGGeqWB288gDG0lGR/5AYJOVZWry4Xk64mP5kiFNqszVsccXyrKi3y9CIVtt7RFFegOK9AV3/r9fwZYOBZvaErWg2SOGZckqzJXhMPTIvQ/EBTYpr3cYsgpz5Sz1yLDSX5JjB0PqeL9evdua5R6TeOe/3b3P3Es+rzse/n/6w69ul6vcq6yKsXK4LN30jW+rZVtD7DKriC3D4ZAdGvLPdbTfaADYAyyPAgDsseIJF0qSOlqWpay4GTd5jrzlp2vDurvU27V54LjTXaR8z8c1/rD52rHl2RT3GL558dAeMZYnXwVVx8lXsyrptt+Gy6mCquN2a7vvoUonfUEOR9aw74fpLBrY7QrA/mUYUqnHpfPP/5yK8pzqC0Rk29FGtFkuh4oLXGoJ71BoSL+r/p2hZBjyBXxqDQyq1DAcAwGPEdjVZLivL6zGhj6NHZ8t2dLmum4de3xhzH0DQ348v/vnv4neZ+eW187S3Q85ErFKovcLtXfLDoXjzr+xYqXeWL4y7rhhmbIKc2WVFMkwJKswV6G2zoGmxEP1Nxg2nJZyJo+VsXML7kBLx4jmm+o+jz/wkB5/4KHYapkEiVx/4GNmu5U7eWxstc8Iq7UAYG8itAEApK0r1KaVrYvU2FenkB2UZThVllWpKd45Kpl4kTxjZqp12yL5uzcpEgnK4XAqHOlTsHfLwD2G6/ES9LepdcdKte6I/3AwVLI+MYl6xBTPO0eS1FG7VmFffE8Dc2ew0z9uTxmGMez74c6dLO+4OVTYABnGMg2VFyWuGOwLxvdW6d8ZKhgJxlXguAyXss1s9UX6FLAdaSyW3GW4sXbEVqi9W1ZRwYiqWlIxjGgQZBUVKNjSrkjfrqVZjiy3rMI8hdq74o47iwtj5pEq/An3BdW1YVvSeeRUjJHDZSVdupTqPv0cWe6YP0d6A2kHR4OvBYD9jdAGAJCSbdt6peVhvdexTF3h2MqR7f712tD1ho4umKqzii+MaQIs7V7Pm3iG0u0R4x03J/5qw1DJ/GnyzDhNrUuWy1+3XZFQSA7LkrtyrLzVZ45Khc1QltMT934AOPAk2s67f2eotoBPZe4S+YKxfVnKXeWSpM1mr/oUDTHcWabKxmTJ6TQ0dny2nM7osqjxE7O1ZXOPwmFbVpZL+ZMmJAwu7FBYwZZ2ucq9o/4aDcsc9r6urNTPGy78sUMR2eFwym/hti35m3zKHl8SPTDc0qV0GJKzeFcFk7O4QOHOnrQCH8MyY64FgP2N0AYAkNIrLQ9rje9ZBe343zZLUle4TWt80SVNZ5dcFHOuv+eNr/FZ2ZHE1ydjONxyZ02Uv++jpNen0yPGKszb7SbDAA5dRoIeXK3BNk2yJqg8q1TN/pZhx2dlOdTXGw1t/H1hbdqQeAejflY4IGlnpcfO4CIS2LU0K9zepb4+/85qlwIZu7nj3d4yNPyxbSnU3DZsBU4iyZcuKWUAZJhmTBVQf++eZMu3pF09ekazkgkA9lRmfZcHAGScrlCb3u1YNmxg0y9o+/VexzKd7JmpXMsTc66/d0tbw1OS0vuhPcqUp+w8ecf/u1q3/oMeMQCSmjBhkrZs2Zx64Ai5Dbd67d6YY/6QXx92bhh2fP8GrUVepzo7QwqnUTHiUESFTr9sO1+RYEjt79XJYZmSjIFqHztiS71+hXv9CnV2yyrIHfU+N6PNKvHI9OTvrMAJ7FxmpeifdzKzXHKXF8mwTGVXjhlYuuRvbh947YbpkDM/R6GuXkWSBEBmXraGbpBrlXhk27ZCHYnDI8MyZRbkDow72EyYMGl/TwHAbmLLbwBAUs833qe32odsAVs6TedOWqDWvgataHhK61pWDJw7qfBcTS9LvCSoft0NCvTWxRzLyZ+ssZWfVUfrWrU1valQYNdvVN3ZlZp03C0DX4eCPnrEANjnfCGfbtn8E/nCvpRjPaZHP5x0owqtXUtsHn+0QS/VNCsQGP7HbkshnVqwQ5f/4DTlVIxR1/ot2vHc62qtfUeRFE3UPdNPUcn8aSN6TftayNep1iXL1VffIDsYkuG0ojtjbWse3QeZDjnLi+XIcimrYkx0+eugHQRD7V0xy2QNw1AkFJZhmpJty3BaCa8DgNGW7pbfVNoAAJJq7KtLeDwYCchlZqsnGBvu7/BvGvZe2flHxIU2PZ2btGHtbxOOz8o/MuZresQA2B88lkdVBVWq8dUoYAeGHecyXKoqqIoJbCRpzrxof5vXa9vk84XirstVr07QJp3WsV5rr3tjRHOzA0F11K6TZ8Zpe6U3l5Q4cEk32LBtWy0Ll6qjdp3Cvn3wy+BwRMFtTZIk/8at6lr9wUCjecMwBpbJJptXousAYH8htAEAJBWy43/D+3bLMr3R9II+OX6+zhp3vjZ2rB04F44M/xth79g56mp7I62mxMM1FQaA/WFe8XxJUm1HbcKKG48ZDXb6xw1mGIbmzh+jc2YU6+kljfqorlfBkC2nZWjCGFMnrHpWzkBfwucapkMlZ52ocRd8Su/ffJ9OvP1qdW/Ypo736vTRg9FeYuGdocpo9+wajWCjZeFS+WpWyU5SLbQ3hX2d8tWskqSYaqRU8xruOgDY1whtAABJWYYz7tipZefq+JIzVeDy6p/1f4k5Zzrixw/cK82mxOk0FQaAfckwDM0vuUAzPOdqSeti1fnrFYoEZTmcqnRXqNo7O67CZqjCQqcuWjA+5ljzoy+oLTR89Y4djqjppTUynNEf2yN9AVm5WQq1d8eM89dt381XNrw9DTZCvk511K4bWWBjSI68HLlKixRo9inS0a2cyrE6/Mq5MvOy9e6N98hzysfV+W6dgh3dce9DIkOrkdKd176oYgKAVAhtAABJlWVVart/fcyxFQ1LtKJhScLx5e7JSe/X3yyYpsIADkSFVqEWlF08KvfqDw8USdGk2LbV+vp7CnX2aNVltyrvyAk69ubLtX3x8oEhkVD8sqvRmNueBButS5Yr7OtUTuVYTbr4XK2/49HUIYsd3f1p7Ncv0NbfPKRAR7d66rar/v5ndNiVc2WYDk36/AwFfV368DcPD9xvcLDz3o/vjatIGlyNNHheya6R9l4VEwCki9AGAJDUFO8cre96Q93h1Eua8swiTfEmX9JkGIZKJl4kz5iZNBUGcEjrDw+k1KFDyNelotOP0fi5Z8vpydP2p2pj7hXydWnzT+8bcc+ZVHPbk2Cjr75BktRTt10b7npsxAFLf3XRYIHWjoHgyuHadX5wsCMlrkjqr0YaPK9U1wy+DgD2B0IbAEBSeVaRjimYqjW+Z5Nu++003Dq6YGrcdt/DSdZUOBRoU+v2RerrrpMdCcpwOJWVWynv2DmyXJm9tS0ApKs/PJDSCxDaXn1Xba++m/BekY5u+TsGBRR72Ex3NIINO7ir+ifcu2sJWLoBS9akMfJv3KqcinJVXDpT7uJCHfOjy2SYppyePK27/u6Ecx8c7AyuSOqvRho8r1TXDL4OAPYHQhsAQEpnFUeXKr3XsUxdCSpu8swiHV0wdWDc7rJtWy1bHk64dMrfvV5dbW8MLJ1iNw8AB7pE4YGUPEAYiT1ppjsawUZ/pUxORbkiwZD6euOD/6QBy85v8z31O7T2uruSzne4YGdwRZLDsuLmleqawdcBwP7AdyAAQEqGYejskot0smemVrYu0g7/JoUjQZkOp8rdkzXFOyftCptkWrY8nLRJcTjYJl9jtBy/ZOJFe/w8ANifBi//SRQgWIW5eveW+/boGbvbTHekwUa4I75XTVZFtFKmp35HzPF07mkYhrpWf5D2fNMJdtyVY+PmleqawdcBwP5g2LZtJxvQ1NSZ7DQAAKMiFGjT5ndvTHs78EnH/oTeNwAOaI0PPq32pW/s8X1KPnWSJvz7tGF7zkhS4bRTRtRMd6RzM1xOVd76XzHBUMjXqc233Bu3XXg6nONLFdzapKzxpZJtq29HqxRO0bA5CdOTr0k/vGxg96h05zX4OgAYTaWl6fUcc+zleQAAkJbW7YviApsC77E6+tQf6d/OvlOl488ZOB4Otql126J9PUUAGFXe6jNl7maj4MFalq1VcGc/mNFqpuutPlOGy5n2eDsQVOuS2GVclidfBVXHjeg+UjQokSP6MaVva5P6tjXHBzYjWCJruJwqqDpuIHhJd15DrwOA/YHQBgCQEfq66+KOdbS+o6C/Ta4sryKR2G1n/d2b9tHMAGDvSDc8yKkcq+Nvu1In/f5aucuKdNrffqRjb/mqJl58niTJDoW14+lXB/rDbLjrMU265LyYe4y0ma7lyZeR40490LHr40SiYKh43jnyTD9Fpie94KM/KElZBTN0sYCZ+GON6cmXZ/opKp53TszxVPMa7joA2NfoaQMAyAj2kFAmyqH1b98uf2+TCotPUMv2ZQNnhoY4AHAg6g8FOmrXKuzrSjgmnd2W+rY3j3ozXTMvR5Fh5iRJhunQmNlnaPui6PfmhM2IDUMl86fJM+M0tSxepu7V/1K4syfhUidzZ4hVOO0UtT376ojm6h5fpqwjJshft12RUEgOy5K7cmx02/MElTKD59W6ZHna1wHAvkZoAwDICIYj/jfN4yafL2/56XJlFWvLhn/EnHMkGA8AB5rhwoNgQ4vsQPo7OHV9uEXv3PDHYZ+zO810HYMqgMz8bLmKCmQ4DNnhiLLHl2rc3LPV8e6uqsdkwZBVmKfyi2dJF89SqL0raVDS+ODTUjiinMqxOvzKuTLzspP265GkrCMmjKhnz+B57c51ALCvENoAADJCVm6l/N3rY45t2/S4tm16POF4d+7kfTArANg3hoYHm396n/wbt0pKfwen4ZiefHmrzxzxnPp3WZKkcGevejt7B871ftSo1pXvxIxPNxhKFZT01TdISq/CSJJkOnbr9QHAgYDQBgCQEbxj56ir7Y20d4/yjpuzD2YFAPvH4MAk3a2pE9mTZrre6jPVtfqDtHdZShSc+LqCWrKyUfWNvQqGbDktQxVl2aqeUiZPXuKKSTuYfoWRFF2mZRbkjuCVAcCBg9AGAJARLFeRCoqnytf4rOyIf9hxhsOtguKpbPcN4KDmrT5TXW+8r3BHd+rBw+jvEbO7zXT7GyX7albJDgzfRyxRMGTbtha+skO177XJ1xUbwmzc3qvVGzpUdXSR5p1VLmPITlCGM/oRJd0KIzsQUsvCpSqZP223XicAZDJCGwBAxiiecKEkqaNlWcKKG9MZDXb6xwHAwcry5KvgzBPU9syrUiS+aW8MhyH3hDIZljXqzXRTNUoeLhha+MoO1axpViBox10jSb6ukGrWNEuS5p89JuZcf5XRSCqMOmrXyTPjNJoHAzjoGLY9dL+8WE1NqcshAQAYTaGgT63bFsnfvUmRSFAOh1Pu3MnyjptDhQ2AQ4Zt22p+dKnal66S7U9c6WK4nSo852SVzJ8WV7EymlI1Dx7M1xXULQ+sl6879TbjnjxLP7zkCBXm7loqFfJ1avMt96a1LGuwwmmn0FQYwAGjtDQ/rXGENgAAAEAGC7V3qXnhi+peu152n1+2JDPLrZzjj1DJvE9lXHXJg89v1dK3WiVJlWNzdOXcw5WXbep7f1in7196lFyWQ6+916qHX9giSZp2klcLpo+PuUfzoy+o7elaKdknFYcjpgop67Dxmnj9l0b75QDAXpFuaMPyKAAAACCDWYV5GvPl2ft7Gmmrb9y1y1Td9h7d/0y9rpx7mM46sUTNPr/uemyDHrzpdD328lYFQ7bqdvTG3aN43jlqX/aWIp09CZ9hmA6NmX2Gti9aNnAsEkpd2QMABxpCGwAAAACjJhhKXB7Tv3pr6DKuUDh+vGEYcpYWyd/ZIzM/W66iAhkOQ3Y4ouzxpRo392x1vLsp5hqHxUcbAAcfvrMBAAAAGDVOa1coU1Geo0tnVqi40K2JZTkqK3LrJ185Vn9/4aOBcMcyE/fi6W9IHO7sVW/nrmqc3o8a1brynbjx7sqxo/xKAGD/I7QBAAAAMGoqyrK1cXs0ZKnf0aPr7lqbdHxleXbC497qM9W1+oO0GhKbnnx5q88c+WQBIMM59vcEAAAAABw8qqeUyZOb3u+GPXmWqqeUJTxn7dxO3HA5E57vZ7icKqg6LuMaMgPAaCC0AQAAADBqPHlOVR1TJJcz+RbkLqehqqOLYrb7Hqp43jnyTD9FpidxIGN68uWZfoqK552zR3MGgEzFlt8AAAAARpVt21r4yg7VvtcmX1f8rk6ePEtVRxdp3lnlcY2JEwm1d6l1yXL567YrEgrJYVlyV46Vt/pMKmwAHJDS3fKb0AYAAADAXtHeHdSSlY2q29GrUNiWZRqqLM9W9ZSypBU2AHCwI7QBAAAAAADIQOmGNvS0AQAAAAAAyECENgAAAAAAABmI0AYAAAAAACADEdoAAAAAAABkIEIbAAAAAACADERoAwAAAAAAkIEIbQAAAAAAADIQoQ0AAAAAAEAGIrQBAAAAAADIQIQ2AAAAAAAAGYjQBgAAAAAAIAMR2gAAAAAAAGQgQhsAAAAAAIAMRGgDAAAAAACQgQhtAAAAAAAAMhChDQAAAAAAQAYitAEAAAAAAMhAhDYAAAAAAAAZiNAGAAAAAAAgAxHaAAAAAAAAZCBCGwAAAAAAgAxEaAMAAAAAAJCBCG0AAAAAAAAyEKENAAAAAABABrL29wQAAABw8PGFfFrSulj1ffUK2iE5DUsVWRWq9s6Wx/Ls7+kBAHBAMGzbtpMNaGrq3FdzAQAAwAHOtm0tbHlUtR218oV9cec9pkdVBVWaVzxfhmHs+wkCAJABSkvz0xpHpQ0AAABGzcKWR1Xjq1HADiQ87wv7VOOrkSTNL7lgX04NAIADDj1tAAAAMCp8IZ9qO2qHDWz6BeyAajtq1R5q30czAwDgwERoAwAAgFGxpHVx3JIor7NItxx7k2497madVz594LgvHO15AwAAhkdoAwAAgFFR31cfd6x67CyNzx4np8NSX7gv5lydP348AADYhZ42AAAAGBVBOxR3zOlwan3XBtU0vqgLJszVy83LB86FIsGU92QXKgDAoYzQBgAAAKPCacT/aPnMjuf1nY9dowWTLtQT25bEnLMczmHvlWwXqo3+jVrdtZpdqAAABz1CGwAAAIyKiqwKbfRvjDm2tXebrnnruwnHV7orhr0Xu1ABAEBoAwAAgFFS7Z2t1V2r4ypjEvGYHlV7Zyc8N9JdqGZ4zlWhVchSKgDAQYfQBgAAAKPCY3lUVVCVtEJGklyGS1UFVSq0ChOeT7QL1XB8YZ8Wty5WlsPNUioAwEGH0AYAAACjZl7xfElKGKBI0Qqb/gBlOEN3ofI6i3Ttx66SaZha2vSSnt1RE3N+ddeb6on0sJQKAHDQIbQBAADAsEa65MgwDM0vuUAzPOdqSeti1fnrFYoEZTmcqnRHrxuuwqb/WXX+upjj/duGtwRa4rYNl6SOcIciiiR9HUOXUgEAcCAwbNu2kw1oaurcV3MBAABAhki2e5MUWzGzp0uOUj3rssovaGzWmIFtw//77euHvVeqqpxphdO0oOziPZovAAB7qrQ0P61xjr08DwAAAByA+ndvGq63TP+So4Utj+71Zz2z43mVuku0YNKFerrhuaT36q/KcTqshFU5df76BFcBAJCZWB4FAACAGLu7e9PeelaybcOHcjqcWt+1YaAq5+Xm5THnQ5Hgbs0TAID9gUobAAAAxBi6e5PXWaRbjr1Jtx53s84rnx4z1heO9qEZrWeZI/zx1DFkfKqqHMvh3K15AgCwP1BpAwAAgBhDd29K1Qh4uCVH6TQxHvqsIleRmgMtA1875EjaZDjHkauuyK4ejKmqcirdFcOeAwAg0xDaAAAAIEbQDsV8PdIlR8kaC2/0b9TqrtUDTYyHPqvEVRIT2qTaFerE3BP0Ts87w/bDGcxjelTtnZ1yHAAAmYLlUQAAAIjhNGJ/rzfSJUcjaWI89Fm+kE+FVkFa8/SYHs3wnKsCM/V4l+FSVUEV230DAA4obPkNAACAGA82PqCl7UvTHj+tcJo+463WktbF2tC7QVsCW1JWyEjR0OWYnGO0onPFiOfolFMTsyaqNdiasspmNLcnBwBgNKS75TfLowAAABCj2jtbq7tWp73kSJJu2fyThOO9ziJd+7GrZBqmlja9pGd31Ayc84V9MmTIY3rSetbgZ3qdXm3xb0m665QhQxNdE3X1+GuosAEAHJBYHgUAAIAYHitameIyXEnHuQyXvE6vlnUsGzZ06W9i7HRYCZsYr+papbAdTm9epkfTCqfp6nHXqDXYmnJLclu2OsIdad0bAIBMRGgDAACAOPOK52u6Z/pAJc1QHtOjMwumqiXQkjQ86W9i/MiWx3X+uOq4837br85I8uX4DjnklFO9kV692vmafrnlF/tsS3IAAPYnlkcBAAAgjmEYml9ygWZ4ztWS1sWq89crFAnKcjhV6Y5u27249Um1R9pjrjNlKqxdlTPP7Hhe3/nYNVow6UI9sW1J2s93yqmIIgorrMjO/8mOhjxD7e6W5AAAZDpCGwAAAAyr0CrUgrKLE56r74sPQw7PO0wfdH048PXW3m265q3vjvi5QQVTD9pppFuSAwBwoGB5FAAAAHZL0A7FHfuE50Tlm3lp3yPZ0qZ0jXRLcgAADhRU2gAAAGC3OI34HyVfaVmh07yn6JXm5QrYqStcUi1tSrb7VL9U1TyV7oqU8wAAIBNRaQMAAIDdUpEVH4Zs7d2mmqYX0wpspNSNilPtPpWKx/So2jt7xNcBAJAJCG0AAACwW6q9s+N2l7Jkq1xBVSigifIrX2FZisiUI+EW4qmWNqUKdZJxyKGqgioVWoUjug4AgExh2LZtJxvQ1JR8C0YAAAAcuh5tfkQ1vhoFbL9KFVKhIkrUQcY0stRnjdH64PYR3X989jh952PXyGE49MS2JXq+cWna13pMj34x+ZcyDGNEzwQAYG8rLc1Paxw9bQAAALDb5hXPlySt9T2rHDsgc5hxYbtPCm6WQ5YiSj9ESXf3qXwzT53hrphjBWYBgQ0A4IDG8igAAADsNsMwNNMzXeUO57CBTT+nIipQWFLSQu8RK7QKdZLnhLjj7BoFADjQEdoAAABgj6xsXaSecHtaY8corBxFRvX57aF2vdKyIu44u0YBAA50LI8CAADAHmnsq4v5+uTSaTp30gK19jVoRcNTWjcoUDEklSqs+pR1OXuGXaMAAAcDQhsAAADskVCC7b2DkYBcZrZ6gvGbWhg7l0eZMlXmLpXlsCTZ+qh3a9zYo/M/rraAT83+ZjkMUwE7kHI+LsPFrlEAgIMCoQ0AAAD2iGXE9o55u2WZ3mh6QZ8cP19njTtfGzvWxpy3dzYiDius7f6GpPfuCHXqe0d9O+3dowrNQp1RcMZAg2QAAA5khDYAAADYI2VZldruXz/w9all5+r4kjNV4PLqn/V/iRvfPUq7R+WaueoOd8ccC0fCWtf9jv7V8y9VZFWo2jtbHsuT9vMAAMgkhm3bSdv3NzXFl7QCAAAA/bpCbXpg843qDrclHWdLapApn0xpBMFNIoVWgY4u+LhWtr6edJzH9KiqoErziuez/TcAIGOUluanNY7dowAAALBH8qwiHVMwVU7DnXTcjlEKbBxyKNfK1QUTPpdyrC/sU42vRgtbHt2jZwIAsD8Q2gAAAGCPnVV8oU7ynKc8syjh+YBMtY9CYCNJlmHpysMu16Kti9MaH7ADqu2oVXsovW3JAQDIFCyPAgAAwKjpDvm0snWRdvg3KRwJynQ4Ve6erCc7VqnL7hkY53UW6dqPXSXTMLW06SU9u6Mm7l6nF52q7X3b1Rb0qTPUtcdzm1Y4TQvKLt7j+wAAsKfSXR5FI2IAAACMmlzLo+llX4w7vrDj1Zivq8fO0vjscWoJtKgv3Bc33pKpKw6/XC2BFj2xbYlebl6e8tmpgqA6f/0IXw0AAPsXoQ0AAAD2OqfhlN/27/ra4dT6rg2qaXxRF0yYGxfKmA5LH25do82P/l1ntbg0ucOvsGmoocxQ7emWunPjl1mlCoJCkeDovzAAAPYietoAAABgr/M6i2O+fmbH8yp1l2jBpAv1dMNzcePdHQHZP7tX41/brtCGeo1pksY32Dr57Yi+8NeAzl4WlIas8u8Pgh7Z8rjOH1cdd0/L4RzdFwUAwF5GpQ0AAAD2usOzDtPmQcuTtvZu0zVvfXfY8ZM3BBVpi6+WkaSCbunktyJyGaaePzMycPyZHc/rOx+7RgsmXagnti2Ju67SXbEHrwAAgH2P0AYAAAB7XbV3tlZ3rZYv7Es5NrcroqmvhpOOcQWlUz9w6Z2TndqeFd04I1kQ5DE9qvbOHvG8AQDYn1geBQAAgL3OY3lUVVAll+FKOs4RsnX8uxHl7dpoSjkVlTr+ltt00v/+PmZspL1dn34zP+U9XYZLVQVVKrQKd3v+AADsD4Q2AAAA2CfmFc/XdM90eUxPwvMe06OTPnTq7BWxVTY99XWq/+v9Ca+Z0GSmvOd0z3TNK56/J1MHAGC/YHkUAAAA9gnDMDS/5ALN8JyrJa2LVeevVygSlOVwqtJdoWrvbPn+/nMF1J32Pe1gMOU9qbABAByoCG0AAACwTxVahVpQdnHCc+1W/A5PORMrVLHgUrmLi3XY5Vdo45/+MHDO4XSmvCcAAAcqQhsAAABkjKxJlfLXrY851vNRvdbecF3C8e6Jk/fFtAAA2C/oaQMAAICM4Z01R2ZhUVpjTU+RvLPm7OUZAQCw/1BpAwAAgL3GF/JpSeti1ffVK2iH5DQsVWRFe814LE/ceKuwSAWnTZXvpWdlB/zD3tdwuVVw6lRZhfH3AADgYGHYtm0nG9DU1Lmv5gIAAICDhG3bWtjyqGo7auUL++LOe8zoFuDziufLMIy4a1sWPayO15cp7GuLu9b0FKng1KkqnnNh3LUAABwISkvz0xpHaAMAAIBR92jzI6rx1ShgB4Yd4zJcmu6ZrvklFyQ8H2r3qfXpRfJ/tEmRYFAOp1PuiZPlnTWHChsAwAEt3dCG5VEAAAAYVb6QT7UdtUkDG0kK2AHVdtRqhufchNtyW4UelV30xb01TQAAMh6NiAEAADCqlrQujlkS5XUW6ZZjb9Ktx92s88qnx4z1haM9bwAAQDxCGwAAAIyq+r76mK+rx87S+Oxxcjos9YX74sbX+evjjgEAAEIbAAAAjLKgHYr52ulwan3XBj2y5XGdP646bnwoEtxXUwMA4IBCaAMAAIBR5TRi2yY+s+N5lbpLtGDShXq64bm48ZbDua+mBgDAAYVGxAAAABhVFVkV2ujfOPD11t5tuuat7w47vtJdsS+mBQDAAYdKGwAAAIyqau9seUxPWmM9pkfV3tl7d0IAABygCG0AAAAwqjyWR1UFVXIZrqTjXIZLVQVVCbf7BgAALI8CAADAXjCveL4kqbajNmb7734eMxrs9I8DAADxDNu27WQDmpo699VcAAAAcJBpD7VrSeti1fnrFYoEZTmcqnRXqNo7mwobAMAhq7Q0P61xhDYAAAAAAAD7ULqhDT1tAAAAAAAAMhChDQAAAAAAQAYitAEAAAAAAMhAhDYAAAAAAAAZiNAGAAAAAAAgAxHaAAAAAAAAZCBCGwAAAAAAgAxEaAMAAAAAAJCBCG0AAAAAAAAyEKENAAAAAABABiK0AQAAAAAAyECENgAAAAAAABmI0AYAAAAAACADEdoAAAAAAABkIEIbAAAAAACADERoAwAAAAAAkIEIbQAAAAAAADIQoQ0AAAAAAEAGIrQBAAAAAADIQIQ2AAAAAAAAGcja3xMAAAA4WPlCPi1pXaz6vnoF7ZCchqWKrApVe2fLY3n29/QAAECGM2zbtpMNaGrq3FdzAQAAOCjYtq2FLY+qtqNWvrAv7rzH9KiqoErziufLMIx9P0EAALBflZbmpzWOShsAAIAhfF1BLVnZqPrGXgVDtpyWoYqybFVPKZMnz5ny+oUtj6rGV6OAHUh8/7BPNb4aSdL8kgtGde4AAODgQWgDAACwk23bWvjKDtW+1yZfVyjm3MbtvVq9oUNVRxdp3lnlw1bI+EI+1XbUDhvY9AvYAdV21GqG51wVWoWj9hoAAMDBg0bEAAAAOy18ZYdq1jTHBTb9fF0h1axp1sJXdgx7jyWti+OWRHmdRbrl2Jt063E367zy6bvuF472vAEAAEiE0AYAAEDRJVG177YpEEza7k+BoK3a99rU3h1MeL6+rz7uWPXYWRqfPU5Oh6W+cF/MuTp//HgAAACJ0AYAAECStGRlo3zdIVWOzdFtVx6v3197kvJzLP30a8fpl18/QRdOmzAw1tcV0pKVjQnvE7Tjq3ScDqfWd23QI1se1/njqmPOhSKJwx8AAABCGwAAcMjzdQX1xoftkqS67T26/5lo9ctZJ5ao2efXD/+4Tp+fPlFOa1cfm1fWv6c/vvJTtbRsibmX04hvGfjMjudV6i7RgkkX6umG52LOWY7UjY0BAMChiUbEAADgkDW48XBHTzjufH+v4URNh4MO6dW87Xr7/peUs2OSPFnlspwOhUvPkE5pkPJ6BsZu7d2ma976bsI5VLorRufFAACAg45h23bShdtNTZ37ai4AAAD71KMvN6hmTXNMH5uK8hz917zDVTEmRy+ublLlmBw5LYdee69Vf6/ZWVVjS2ZHpxydkqMzP/7G+d0KHfuOwmevkBJvMiVJ8pge/XDSjeweBQDAIaa0NMHPDwlQaQMAAA5JwzUert/Ro+vuWpv0WrNRMn05MiJm4gGduTLfOEmSFP7kioRDXIZLVQVVBDYAAGBY9LQBAACHpKGNh3/61WOTFcXsEpSsTg0f2OxkBF2y3jlW6sqJO+cxPZruma55xfN3b/IAAOCQQKUNAAA4JNU39kra1Xj4yrmHafK4HH20o1fB8PCrx12tktLd8KkzVxVvfE7mzJUKRYKyHE5VuitU7Z1NhQ0AAEiJ0AYAABySgqH4YOaoinzlFwX0luNZqbBRcoSliCm1l0kfnK4cK0tuh6n+FsMVlTn6ypWHKzfP1LXfWKP/uuoIrf+wS88906DIzr7G3e+M0fcv+I4KPewSBQAARobQBgAAHJL6t++uKM/RpTMr5C1waVtpjTaVr5IivtjB3gZp/PuSK0eFD12unuaQJKm+rkd/vb9el18xWbYt/f729XHP6ewM6+e3rNepVUWaM6884U5UAAAAiRDaAACAQ1JFWbY2bu/d1Xj4qGXSYWskK5T4AldAPQpoa3CzHBoXc2rJou1Jn+XzhfRSTbMkae78MaMxfQAAcAigETEAADgkVU8pkyd35++v3N3SxHeGD2wGiZQ3Dvx5YkWOPjtnnN5c1ZbyukDA1uu1bWpvT7chDgAAONQR2gAAgEOSJ8+pqmOK5HRKOu1xKbs34Ti3wx3zdfiM1xTJ65QkfVTfo9v+5321tQVVUZmjW247Xv/7+5NkGNJ1NxylhxedEdPLxucL6ekljQIAAEgHoQ0AADhkzTurXBOnvil5moYd44/4Yw/k9Shy3HuynYGYw/39bSTJtqXbbnk/4f0+qkscDgEAAAxFaAMAAA5Z7eF2tXrelkbYG7jguBU63r1GOY6uET8z0a5VAAAAidCIGAAAHLKWtC6WL+yLOeZ1Funaj10l0zC1tOklLd/4vKpeDWlMoy0zbCtsGurMk44KLlW39ZoeDHxJPcrTxIocLbi0QsXFbl1+xWEqLnFJkr75rSP165//Sz3d0T3A+3etAgAASIXQBgAAHLLq++rjjlWPnaXx2ePU7G9W2VPr9IU3AyroHjxiV6VMrtGtIxzv6+3IKfqovkc3XLc25TMnVmaPwswBAMChgOVRAADgkBW043eLcjqcWt+1QW/e9xuNf3X7kMAm3lTrZeWqI63neTyWZlWX7c5UAQDAIYjQBgAAHLKcRnzR8TM7npe316nKtZ1SIPX23C4jqBMcq2UpkHycy9CpVUUqLHQmHQcAANCP0AYAAByyKrIq4o5t7d2mf977I0V87Wnf5zRrpU5yvDFsxY3HY+mT00s0Z175bs8VAAAceuhpAwAADlnV3tla3bU6rhnxmMb4HZ5yKip1+FeulJmbpzXf+nrMOcOQpjpf1r/Zb2hV1nnylZyoYMiW0zI0sTJbs6rLqLABAAAjRmgDAAAOWR7Lo6qCKtX4ahSwdy1vMsPxoU1PfZ3q/3q/DvvKlcPeL9fo1sxxazXxv+fvlfkCAIBDC6ENAAA4pM0rjgYstR21AxU3YdPQ4F2iRsI9cfIozQwAABzq6GkDAAAOaYZhaH7JBfrhpBs1rXCaDss6XN1jC+LG5UysUMWCS+UuLtZhl1+R8F6mp0jeWXP29pQBAMAhwrBtO+mvkZqaOvfVXAAAADJCqL1Nm2+7UeH2trSvMVxueT55nkrmXrQXZwYAAA4GpaX5aY2j0gYAAGAIq7BIBadNleFypzXe9BTJ88nzVDznwr08MwAAcCihpw0AAEAC/QFMx+vLFPYlqLhxmDLz85V7wikq/vRcWYWefTtBAABw0GN5FAAAQBKhdp9an14k/0ebFAkG5XA65Z44Wd5ZcwhqAADAbkl3eRShDQAAAAAAwD5ETxsAAAAAAIADGKENAAAAAABABiK0AQAAAAAAyECENgAAAAAAABmI0AYAAAAAACADEdoAAAAAAABkIEIbAAAAAACADERoAwAAAAAAkIEIbQAAAAAAADIQoQ0AAAAAAEAGIrQBAAAAAADIQIQ2AAAAAAAAGYjQBgAAAAAAIAMR2gAAAAAAAGQgQhsAAAAAAIAMRGgDAAAAAACQgQhtAAAAAAAAMhChDQAAAAAAQAYitAEAAAAAAMhAhDYAAAAAAAAZiNAGAAAAAAAgAxHaAAAAAAAAZCBCGwAAAAAAgAxEaAMAAAAAAJCBCG0AAAAAAAAyEKENAAAAAABABiK0AQAAAAAAyECENgAAAAAAABmI0AYAAAAAACADEdoAAAAAAABkIEIbAAAAAACADERoAwAAAAAAkIEIbQAAAAAAADIQoQ0AAAAAAEAGIrQBAAAAAADIQIQ2AAAAAAAAGciwbdve35MAAAAAAABALCptAAAAAAAAMhChDQAAAAAAQAYitAEAAAAAAMhAhDYAAAAAAAAZiNAGAAAAAAAgAxHaAAAAAAAAZKD/D/96iYiJubpeAAAAAElFTkSuQmCC\\n\",\n      \"text/plain\": [\n       \"<Figure size 1440x1440 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(20, 20))\\n\",\n    \"litstudy.plot_embedding(corpus, topic_model);\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Advanced topic modeling\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"We can combine the results of topic modeling with the plotting of statistics. Here we show we a simple example.\\n\",\n    \"\\n\",\n    \"One of the topics appears to be on \\\"deep_learning\\\". First, we find the topic id for the topic that most strongly belongs to \\\"deep_learning\\\". \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 24,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"topic_id = topic_model.best_topic_for_token('deep_learning')\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Let's print the top 10 papers that most stongly belong to this topic to check the results. We see that these are indeed documents on the topic of deep learning.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 25,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"High performance networked computing in media, services and information management\\n\",\n      \"What do Programmers Discuss about Deep Learning Frameworks\\n\",\n      \"Sparse evolutionary deep learning with over one million artificial neurons on commodity hardware\\n\",\n      \"Deep learning for intelligent traffic sensing and prediction: recent advances and future challenges\\n\",\n      \"SOLAR: Services-oriented learning architectures: Deep learning as a service\\n\",\n      \"Reveal training performance mystery between TensorFlow and PyTorch in the single GPU environment\\n\",\n      \"Network Management 2030: Operations and Control of Network 2030 Services\\n\",\n      \"SOLAR: Services-Oriented Deep Learning Architectures-Deep Learning as a Service\\n\",\n      \"DLPlib: A Library for Deep Learning Processor\\n\",\n      \"Machine Learning and Deep Learning frameworks and libraries for large-scale data mining: a survey\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"for doc_id in topic_model.best_documents_for_topic(topic_id, limit=10):\\n\",\n    \"    print(docs[int(doc_id)].title)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Next, we annotate the document set with a \\\"dl_topic\\\" tag for document that strongly belong to this topic (i.e., weight above a certain threshold).\\n\",\n    \"\\n\",\n    \"After this, we define two groups: documents that have the tag \\\"dl_topic\\\" and documents that do not have this tag. Now we can, for instance, print the publications over the years to see if interest in deep learning has increased or decreased over the years.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 26,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAlsAAAGBCAYAAABRiHSlAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAABKqUlEQVR4nO3df1zV9d3/8cfhgHDIDkgZRZaakrrKbUCX5CpgleYc6oKmNPHKFGyJEWuRFsPal67pldea6ZyWDkYCXf2wWlSWXTnoMnMw2HL9MipbVi6WwDke6MCBz/cPrk6Z4jkhx/NBn/fbbbfb+fF+fz6v9+ucyav3+30+H4thGAYiIiIiEhAhwQ5ARERE5ESmYktEREQkgFRsiYiIiASQii0RERGRAFKxJSIiIhJAKrZEREREAkjFloh8YzfddBPPPvus93lFRQXFxcUBP++f//xnpk+fznXXXXdMx9m3bx8//vGPj/je9773PQB2797NqlWr+nXsrVu3ep9XVVUd8lxETj6hwQ5ARAafZcuWsXDhQr7//e/jdrspLy/n4Ycf7vfxuru7sVqtPttVV1dTUFDAlVde2e9z+euiiy7ioosu+sb9PvroI55//nmuvvpqALKysgY6NBEZZFRsicg3ds455zB9+nQefPBBWltbuf766xkyZAi33XYb7733HgC/+MUv+M53vsOLL77Ihg0b6OzsJC4ujlWrVnHKKaewdOlSIiIi2L17N9OnT+eGG27wHv+DDz5g2bJlOJ1OzjvvPH71q1/xwgsvsHXrVl555RV27NjB8uXLve23bNnCn/70J5qbmzlw4ADz589nzpw57Nq1i4cffpj77rsPgOzsbO666y7Cw8Pp7OxkyZIlNDU1kZSUxN13301IyJeT/V/te/DgQZYvX86ePXsICQmhpKSE0aNHc9NNN+F0OjEMg6KiIpKSkrjvvvt49913mTlzJgsWLOCDDz7g9NNPJysri9dee4277rqLrq4uEhISKC4uxmq18v3vf59Zs2bx4osvcuqpp7JhwwaGDh3KypUr2b59O0OGDGHGjBksXLjwOH3CIjKgDBGRfujo6DCuvvpqIzMz0+ju7jbuvfdeY9u2bYZhGMYnn3xi/OhHPzIMwzBaW1u9fR544AGjrKzMMAzDuP32242f/exnRk9Pz2HHXrhwofH8888bhmEYK1euNH772996+9TU1BzW/vHHHzfS0tIMp9NpOJ1OY8qUKcb+/fuNV1991bjlllu87ebOnWs0NTUZH374oTF+/HjjjTfeMHp6eozFixcbzz33nGEYhjF58mTDMIxD+q5YscK4//77DcMwjK6uLsPpdBqdnZ2G0+n0jjczM/OwfoZhGPfff79RWVlpGIZhTJ8+3di9e7dhGIaRn59vPPnkk4ZhGEZaWprxxBNPGIZhGL/85S+N//7v/zYOHDhgpKWlGd3d3YZhGIbD4Tj6ByIipqWZLRHpl4iICK6++mpOP/10QkJCeOWVV6itrWXNmjUAtLa24vF4+OSTT8jPz+ezzz6jo6ODyZMne48xdepULBbLYcd+8803mTJlCgAzZszwa+/U5ZdfztChQwG45JJL2L17N6eeemqf7UePHs2ECRMA+MEPfsBf/vIX79Lf17366qs88MADAISGhjJ06FA6Ozu59957aWhoICQkhH/84x9Hjc/hcNDT08OFF14IQHp6OrW1tcycOROAK664AoAJEybw4Ycfcuqpp3LKKadw5513cuWVV5KamuozByJiTiq2RKTfQkJCvEtvhmHw4IMPEhsbe0ibkpISlixZwqRJk9i6dSt/+tOfvO9FREQMWCxfLdq+eGy1Wunp6fG+3tnZ2Wf7IxV9R/P000/T1dXFk08+idVq5bvf/W5/QwdgyJAhQG9Ou7u7CQ0N5fHHH+fll1/m6aefZtu2baxYseKYziEiwaFfI4rIgLjkkkuorKz0Pn/rrbcAOHjwIMOHD6enp4ennnrKr2NNmDCBl156CejdFJ+YmOizT21tLQcPHuTgwYPs3LmTiy66iLPOOoumpiY8Hg8fffQRb7/9trf9e++9x1tvvYVhGDz33HNHPccll1zi/QGAx+Pxnue0007DarWydetW2tvbATjllFNwuVyHHcNut2O1Wr15eeaZZ456TpfLhdPp5IorruC2227jzTff9JkDETEnzWyJyIBYvHgxJSUlpKen093dzSWXXMIvfvELbrrpJnJycoiOjiYhIQGn0+nzWEVFRSxbtoz77rvPu0HelwsuuICcnBzvBvkvZtguueQSpk+fzrhx44iPj/e2HzduHL/97W955513uPjii7nqqqv6PPZNN93E8uXLSU9Px2q1ese5aNEi0tPTmTRpEqeffrr3uJ9//rl3g/xX3XPPPdxxxx10dXXx3e9+l+nTp/d5TpfLxU9/+lO6urqwWCzk5+f7zIGImJPFMAwj2EGIiByLLVu28N577/Hzn/882KGIiBxGy4giIiIiAaSZLREREZEA0syWiIiISACp2BIREREJIBVbIiIiIgFk6ks/NDf7/on4yS46OpLW1vZgh2FqypF/lCf/KE/+UZ78ozz5ZzDkafjwvu9YYepiK2qI2/u4xxKK020NYjQiIiIi35ypi619axd5H4/I2wCo2BIREZHBRXu2RERERALI1DNbIiIiZudyOenoONivvq2tIXg8Pb4bnuTMliebbSinnNL3Hq2vU7ElIiJyDDo6DnLaaWdisVi+cV+rNYTubvMUEWZlpjwZhsFnn+3/RsWWz2XExsZGZs+ezdy5c8nNzcXhcHDgwAEWLlxIVlYWa9as8bbdvn07s2fPZs6cObz22msA7Nq1i8suu4zs7Gyys7Npbm7ux9BERETMqz+FlgxO/fmsfc5sxcXFUVZWhs1mo6qqioqKChwOBxkZGUybNo3c3FyampoYPXo0q1evZvPmzbhcLm655RaqqqoAuOqqqyguLv7mIxIREREZ5HzObMXGxmKz2QAICwvDarXS0NBAWloaAKmpqdTV1bF3715GjRrF0KFDiY2NxePx4Hb3XrrhT3/6E1lZWdx3333oVowiInKisg4JhVCr3//rtliO+Lp1iP+7fLKzfzzg49i0aQPbt7844Md95523eeSRqgE/7ld98snHFBbectQYdu/+m9/He/bZp6msfOiYYvL702xpaaGyspKNGzfy9NNPExERAYDdbmffvn20tbVht9u97e12O62trVx44YVs3bqV0NBQ7rzzTp599lmmT59+TEGLiIiYUXePwQ0l2475OL8vumoAogme7u5urNbDL9cUHz+O+PhxAT2HL++8s4fW1lYuuujbAxKHP/wqtjo6OsjPz6eoqIiYmBhsNhtut5vw8HCcTidRUVFERUXhdH55xXen00l0dDTh4eHe166++mr+/Oc/q9gSERHpp56eHkpKlvPpp/9k3LgJ3tf37/+EVat+RWdnJ3Z7FL/4xS8JDw/nt79dzZtvvk53dzdLlhTwrW9dyNy5PyYhIZF33tnDhAnf4uabb+3zfP/93xXU1Gynu7ubefNu4Hvfu4yHH97MK6/8LwcPOpk5M4OZM6/h2Wef5tVXX6Gz082ll17Oww9XMmlSMq+//ncmTLiA/PxbaWio509/+h9+9rPbmTv3x4e973IdpLj4Drq7PYwePYaPPvqQ//zP3xwSz+zZs0hISKKjo4Mbb8w7bMxfdaQ4H320CpfLxSuvvMyKFb/m1Vd3sGXLo/T09DB9+gzS02fx/vvv8R//cTdRUVFERNj41rcuPKbPzOcyosfjoaCggOzsbBISEgBITEykpqYGgNraWpKSkhg5ciR79+6lvb2d5uZmrFartxj7wp///GdGjRp1TAGLiIiczF5+uYZTTz2VtWsf4NJLL/e+vm7d/dx44xLuv3893/nOd3nuuWp27txBT083a9c+wH/8xyp+97veH7V9/nkHP/zhTH73u0188snHvP32W0c81/vvv8fu3X9j3bqN3H//en7/+wcAmDkzg/vvX8+GDWU8+mgVPT29vxTs6upkxYpf88MfzsLt/pyZMzNYv/73NDTU43IdenmMI73/xz8+yaRJyfzmN+s4//wjz4A1NzezYMGN3HXXPUcc81cdKc5rr81i1qxM1q59gJ6ebp588nHWrNnAunUbee65alyug2zYsJZbb13KqlX3ExkZ2b8P6it8zmxVV1dTX1+Py+WivLyclJQUcnJyKCwspLS0lOTkZOLj4wHIy8tj/vz5WCwWli1bBsAzzzzDI488QkREBOeeey633HLLMQctIiJysvrwww+44IKLAA6Zcdm79z1+85t7Aejs7GTy5Etpb3exa9ervP12LgDt7b33FwwNDeX888cDMH78t9i37x+MGzf+sHO9//577NnzNnl5vf07Otppb3fx0ksv8txz1VgsFv71r2acTgeANy6A8PAIzj13JNC7//urky99vb9v3z+YOvUH3rEdad/YWWedxemnn97nmL/qf/7nhSPG+YWPPtrHvn0fkp//UwCcTgfNzc188snHjB8/4f/iuID29o7D4vgmfBZbs2bNYtasWYe9vnHjxsNeu+KKK7jiiisOeW3OnDnMmTOn/xGKiIiI1znnnEtjYwNTpkzjzTdf975+7rmjyM39KeeeOwqArq4u6up2cemll3PjjXne16B31eqdd/YQH38+b731JpMmTT7iuUaOHMUFF1zE8uUl3v5hYWE89FApmzc/imEYXHddBl/89i0k5Ms9VF+/QsLXfyB3pPfPPvsc3nrrTSZO/M4hY/uqkJAvF+WONOZ//evLS0wdKc7Q0DC6u7sBiIs7m5EjR3PffWsJCQnB4/EQGhrKmWeexZ49b3H++eN5443XGTXqvCPG4i9d1FRERGSAWEMsA7K53RpiobuP9y69NIXt2/+HvLzcQ2aS8vJu4de//k8+/7x3Fubf/30Bkydfyt/+1kheXi4Wi4UJEy7gpptuJiLCxnPPPc2vf/0648ZN8M7ifN2YMWOZMOECFi/OISQkhNjYMykqupt/+7dL+OlPF3DeeWM49VT/L+7py4wZP6K4eCk7drzMOeecS2ho2FHbH2nMcXFne98/UpwXXTSRJ554hLfffoM77ljOjBmzWLJkESEhIQwZEs699/6GRYsW86tf/RK7PZqoqKhjHpfFMPG1GN67J8P7eETeBto6w4/S+uQUHR1Ja2t7sMMwNeXIP8qTf5Qn/5xMefrXvz7h9NPP6lffYF0ZPTv7xzz00CPH/by+GIZBd3c3oaGhPPdcNe+//x433XSzqa4gD0f+zIcP77voNPXM1oi8Dd7HPRZThyoiIiLHqLu7m5tvvhGLxUJISIh3+XKwM3UFo5ksERGRgWfGWS3o3bi/bt3he8IHO5+XfhARERGR/jP1zFbUEHe/+vVYQnG6v/lVZUVEREQGmqmLrX1rF/WrX+9eLxVbIiIiEnymLrZEREQGk1PDuwkxPN+ghwWsh18UQCs0JxYVWyIiIgMkxPD0e1Xmq77pCs2WLY9yzTXXArBp0wbOO28MaWlXHnMcMjC0QV5ERGSQe+KJR4/5GF/c31AGns+ZrcbGRlasWEFYWBiRkZGsWrUKj8dDYWEhLpeLyZMns2TJEgC2b9/O+vXrsVgs3HHHHUycOBGARx99lGeeeYbu7m5uvPFGvve97wV2VCIiIieonp4eVq4sYd++D7FYLCQnT+aTTz4mLy+Xyy9PA3pvVv3cc8/Q0vIZK1feR0zMabz44vNs2fIoPT09TJ8+g/T0Wdxzz12Eh0ewf//HLFq0mPj4I9/8WY6Nz2IrLi6OsrIybDYbVVVVVFRU4HA4yMjIYNq0aeTm5tLU1MTo0aNZvXo1mzdvxuVyccstt1BVVcXbb7/N7t27KSsrOw7DERERObG9/HINERER/Pa3D/LGG3/noYfKOOusONaufQDoXUaMjT2T4uLFPPzwZl56aRtTpkzjyScfZ82aDVgsFvLycvn+93uXGc8991x+/vOlwRzSCc9nsRUbG+t9HBYWhtVqpaGhgfz8fABSU1Opq6vDYrEwatQohg4dytChQ/F4PLjdbrZt20ZISAjXX389p512GsXFxQNynyEREZGT0YcffuC9J+K3vnUhH3+877A2X8xQxcaeyfvvv8dHH+1j374Pyc//KQBOp4Pm5t4bNl9wwcTjFPnJy+89Wy0tLVRWVpKZmUl7ezsREREA2O122traaGtrw263e9vb7XZaW1v59NNP6ejooKysjOTkZB544IGBH4WIiMhJ4pxzzuX113cD8MYbfycu7mxCQg79c26xfPnYMAzi4s5m5MjR3H//etaufYDS0kpGjRoN9N6fUQLLr18jdnR0kJ+fT1FRETExMdhsNtxuN+Hh4TidTqKiooiKisLpdHr7OJ1OoqOjsdvtnH/++QBcdtllvPDCC4EZiYiISJD1WEIPua+vbxbgyJd+6Mtll6Xyv/9by003LcRisVBYeCfPPVfNbbflk5KSdsQ+UVHRzJgxiyVLFhESEsKQIeHce+9vvkGccix8Flsej4eCggKys7NJSEgAIDExkZqaGqZMmUJtbS0/+9nPGDlyJHv37qW9vR2Xy4XVaiU8PJyLL76YV155hRkzZvD3v/+dc889N+CDEhERCYbea2P5f8kGqzWE7u5v9ivAkJAQ7rzzrkNeu/HGvCO2TUu70nsJiCuumMIVV0w55P2vH0cCw2exVV1dTX19PS6Xi/LyclJSUsjJyaGwsJDS0lKSk5OJj48HIC8vj/nz52OxWFi2bBnQO5tVU1NDdnY2VquVlStXBnZEIiIiIiZiMQzj8PlLk3jvnox+9RuRt4G2zvABjsacoqMjaW1tD3YYpqYc+Ud58o/y5J+TKU//+tcnnH76Wf3q25+ZrZOR2fJ0pM98+PBT+2yvXXEiIiLHwGKx0N39TW7RI4NZd7cHy1d/geAH3a5HRETkGAwdGkVLS3O/+oaGhuDxmGfGxqzMlqdTT43+Ru1NXWx9s190fOlov+IQEREZSOHhNsLDbf3qezIttx6LwZ4nU1clJ8u+KxERETlxac+WiIiISACZemYraoh7wI/ZYwn9v+ugiIiIiASeqYutfWsXDfgxe/eBqdgSERGR40PLiCIiIiIBpGJLREREJIBUbImIiIgEkM89W42NjaxYsYKwsDAiIyNZtWoVHo+HwsJCXC4XkydPZsmSJQBs376d9evXY7FYuOOOO5g4cSJPP/00jzzyCAD79+/n+9//vve+iSIiIiInOp/FVlxcHGVlZdhsNqqqqqioqMDhcJCRkcG0adPIzc2lqamJ0aNHs3r1ajZv3ozL5eKWW26hqqqK9PR00tPTAbj55puZMmWKjzOKiIiInDh8LiPGxsZis/VeGTcsLAyr1UpDQwNpaWkApKamUldXx969exk1ahRDhw4lNjYWj8eD2/3lpRsOHjzIO++8Q0JCQoCGIiIiImI+fu/ZamlpobKykszMTNrb24mIiADAbrfT1tZGW1sbdrvd295ut9Pa2up9vm3bNq644opvfPNGERERkcHMr2Kro6OD/Px8ioqKiImJwWazeWetnE4nUVFRREVF4XQ6vX2cTifR0dHe59XV1fzwhz8c2OhFRERETM5nseXxeCgoKCA7O9u7BJiYmEhNTQ0AtbW1JCUlMXLkSPbu3Ut7ezvNzc1YrVbCw3vvbfjZZ5/R3NzM+PHjAzgUEREREfPxuUG+urqa+vp6XC4X5eXlpKSkkJOTQ2FhIaWlpSQnJxMfHw9AXl4e8+fPx2KxHPKLw61bt3L11VcHbhQiIiIiJmUxDMMIdhB9ee+ejAE/5oi8DbR1hg/4cYMlOjqS1tb2YIdhasqRf5Qn/yhP/lGe/KM8+Wcw5Gn48FP7fE8XNRUREREJIBVbIiIiIgHkc89WMI3I2zDgx+yxmHrIIiIicoIxdeVxIu2tEhERkZOTlhFFREREAkjFloiIiEgAmXoZkVCr96E9tAtLT1cQgwmcHksoTrfVd0MREREZdExdbN1Qss37+PHiS9m3dlEQowmc3h8CqNgSERE5EWkZUURERCSAVGyJiIiIBJDPZcTGxkZWrFhBWFgYkZGRrFq1Co/HQ2FhIS6Xi8mTJ7NkyRIAtm/fzvr167FYLNxxxx1MnDgRh8PBLbfcQldXFxaLhXvvvZfY2NiAD0xERETEDHzObMXFxVFWVsbmzZtJS0ujoqKCBx98kIyMDKqqqti9ezdNTU10d3ezevVqNm3axOrVq/nVr34F9N6EOjExkYceeohrrrmGhx9+OOCDEhERETELn8VWbGwsNpsNgLCwMKxWKw0NDaSlpQGQmppKXV0de/fuZdSoUQwdOpTY2Fg8Hg9ut5vzzjsPl8sFgNPpJCYmJoDDERERETEXv/dstbS0UFlZSWZmJu3t7URERABgt9tpa2ujra0Nu93ubW+322ltbeX888+noaGB9PR0Nm/ezIwZMwZ+FCIiIiIm5Vex1dHRQX5+PkVFRcTExGCz2XC73UDvbFVUVBRRUVE4nU5vH6fTSXR0NBs3biQ9PZ2nn36aO+64g3vvvTcwIxERERExIZ/FlsfjoaCggOzsbBISEgBITEykpqYGgNraWpKSkhg5ciR79+6lvb2d5uZmrFYr4eHh9PT0MGzYMACio6NxOBwBHI6IiIiIufj8NWJ1dTX19fW4XC7Ky8tJSUkhJyeHwsJCSktLSU5OJj4+HoC8vDzmz5+PxWJh2bJlAGRnZ1NYWEhVVRVdXV0sX748sCMSERERMRGfxdasWbOYNWvWYa9v3LjxsNeuuOIKrrjiikNei42N5Q9/+EP/IxQREREZxHRRUxEREZEAUrElIiIiEkCmvhH174uu8j42Qrr+74bNJ54ei6k/BhERETkG5v4r7+n2PnR4QoDw4MUiIiIi0g9aRhQREREJIBVbIiIiIgFk6mXEqCHuYIdgfh2dRA0xgh2F6fRYQnG6rcEOQ0RExNzF1r61i4IdggxSvT+mULElIiLBp2VEERERkQBSsSUiIiISQD6XERsbG1mxYgVhYWFERkayatUqPB4PhYWFuFwuJk+ezJIlSwDYvn0769evx2KxcMcddzBx4kSam5tZunQpnZ2djBs3jjvvvBOLxRLwgYmIiIiYgc+Zrbi4OMrKyti8eTNpaWlUVFTw4IMPkpGRQVVVFbt376apqYnu7m5Wr17Npk2bWL16Nb/61a8A2LBhA9dddx0PPfQQVquVl19+OeCDEhERETELn8VWbGwsNpsNgLCwMKxWKw0NDaSlpQGQmppKXV0de/fuZdSoUQwdOpTY2Fg8Hg9ut5u9e/dy4YUXAvCtb32Lurq6AA5HRERExFz83rPV0tJCZWUlmZmZtLe3ExERAYDdbqetrY22tjbsdru3vd1up7W1lfPPP5///d//BeCVV16hra1tgIcgIiIiYl5+FVsdHR3k5+dTVFRETEwMNpsNt7v3GlhOp5OoqCiioqJwOp3ePk6nk+joaBYtWsQrr7zC9ddfj81m44wzzgjMSERERERMyGex5fF4KCgoIDs7m4SEBAASExOpqakBoLa2lqSkJEaOHMnevXtpb2+nubkZq9VKeHg4UVFR/Nd//RdlZWX09PRw5ZVXBnZEIiIiIibi89eI1dXV1NfX43K5KC8vJyUlhZycHAoLCyktLSU5OZn4+HgA8vLymD9/PhaLhWXLlgGwY8cO7y8Uf/CDHzB+/PjAjkhERETERCyGYZj2Xi/v3ZMR7BBkkBqRt4G2znAAoqMjaW1tD3JE5qc8+Ud58o/y5B/lyT+DIU/Dh5/a53u6qKmIiIhIAKnYEhEREQkgU9+IuvdmwnI0FosFE68EB02PxdRfbREROYmY+i/SF3tupG/R0ZG0mXwdW0RE5GSmZUQRERGRAFKxJSIiIhJApl5GJNTqfWgP7cLS0xXEYEyqo5OoIdqzdVTHKUc9llCcbqvvhiIiclIxdbF1Q8k27+PHiy9l39pFQYxG5Oh6f9ChYktERA6lZUQRERGRAFKxJSIiIhJAPoutxsZGZs+ezdy5c8nNzcXhcHDgwAEWLlxIVlYWa9as8bZdvHgxkyZNYtOmTd7XPv/8c2655Rauu+46li9fTk9PT2BGIiIiImJCPoutuLg4ysrK2Lx5M2lpaVRUVPDggw+SkZFBVVUVu3fvpqmpCYDi4mJuv/32Q/o//vjjXHjhhVRWVhISEsLLL78cmJGIiIiImJDPYis2NhabzQZAWFgYVquVhoYG0tLSAEhNTaWurs7b9uvq6+uP2FZERETkZOD3nq2WlhYqKyvJzMykvb2diIgIAOx2O21tbX32a2trw263+9VWRERE5ETjV7HV0dFBfn4+RUVFxMTEYLPZcLvdADidTqKiovrsa7fbcTgcfrUVEREROdH4LLY8Hg8FBQVkZ2eTkJAAQGJiIjU1NQDU1taSlJTUZ/+LL76Y2tpav9qKiIiInGh8XtS0urqa+vp6XC4X5eXlpKSkkJOTQ2FhIaWlpSQnJxMfHw9ASUkJO3fuxOPxsGfPHlauXMk111zD0qVL+clPfsKYMWO4/PLLAz4oEREREbPwWWzNmjWLWbNmHfb6xo0bD3utqKjosNdsNhurV6/uX3QiIiIig5wuaioiIiISQCq2RERERALI1Dei/n3RVd7HRkjX/93oV77KYrFgGEawwzC145WjHoup/+8kIiJBYu6/Dp5u70OHJwQID14sJhUdHUlba3uwwzA15UhERIJJy4giIiIiAaRiS0RERCSAzL2MGGr1q5k9tAtLT1eAgzGpjk6ihmjP1lEpR/5RnvwTpDz1WEJxuv37N1FEzMXUxdYNJdv8avd48aXsW7sowNGIiARP7w+EVGyJDEZaRhQREREJIBVbIiIiIgHks9hqbGxk9uzZzJ07l9zcXBwOBwcOHGDhwoVkZWWxZs0ab9vFixczadIkNm3a5H2ttraWH/zgB7oBtYiIiJyUfO7ZiouLo6ysDJvNRlVVFRUVFTgcDjIyMpg2bRq5ubk0NTUxduxYiouL2bFjBy0tLd7+EydOZMuWLWRmZgZ0ICIiIiJm5HNmKzY2FpvNBkBYWBhWq5WGhgbS0tIASE1Npa6uztv266Kjo4mIiBjImEVEREQGDb/3bLW0tFBZWUlmZibt7e3eAsput9PW1hawAEVEREQGM7+KrY6ODvLz8ykqKiImJgabzYbb7QbA6XQSFRUV0CBFREREBiufxZbH46GgoIDs7GwSEhIASExMpKamBujdAK/N7yIiIiJH5nODfHV1NfX19bhcLsrLy0lJSSEnJ4fCwkJKS0tJTk4mPj4egJKSEnbu3InH42HPnj2sXLmS3bt381//9V989NFHXH/99SxatIhLLrkk4AMTERERMQOLYRimvT9H+q1P+dWu9wryuQGORkQkeEbkbaCtMzzYYfgtOjqS1tb2YIdhesqTfwZDnoYPP7XP93RRUxEREZEAUrElIiIiEkCmXkZsbvFvytAe2oWlpyvA0ZiTxWLBxB+hKShH/lGe/BOsPPVYQnG6B8+NqAfDso8ZKE/+GQx5Otoyos8N8kHl6farmcMTAgyevQwDKTo6kjaTfwGDTTnyj/LkH+VJRL4pLSOKiIiIBJCKLREREZEAMvcyYqh/+xNO5j1bdHQSNUT7bI5KOfKP8uQf5ck/R8nTYNt/JnKsTF1s3VCyza92vdfZWhTgaEREZCCMyNsAqNiSk4eWEUVEREQCSMWWiIiISACp2BIREREJIJ97thobG1mxYgVhYWFERkayatUqPB4PhYWFuFwuJk+ezJIlSwBYvHgx9fX15ObmsmDBAgDWrFnDyy+/DMBVV11FTk5OAIcjIiIiYi4+i624uDjKysqw2WxUVVVRUVGBw+EgIyODadOmkZubS1NTE2PHjqW4uJgdO3bQ0tLi7Z+ens6SJUswDIOsrCzS09M588wzAzooEREREbPwuYwYGxuLzWYDICwsDKvVSkNDA2lpaQCkpqZSV1fnbft1o0aNAnpvcREaGkpIiFYuRURE5OThd+XT0tJCZWUlmZmZtLe3ExERAYDdbqetrc1n/61bt3LOOedwxhln9D9aERERkUHGr+tsdXR0kJ+fT1FRETExMdhsNtxuN+Hh4TidTqKioo7a/y9/+QuVlZU88MADAxK0iIiIyGDhc2bL4/FQUFBAdnY2CQkJACQmJlJTUwNAbW0tSUlJffZ/5513WLlyJb/5zW+8s2EiIiIiJwufM1vV1dXU19fjcrkoLy8nJSWFnJwcCgsLKS0tJTk5mfj4eABKSkrYuXMnHo+HPXv2sHLlSkpKSnA4HOTn5wNQVFTEuHHjAjsqEREREZOwGIZh2pt8pd/6lF/tem/XkxvgaEREZCCMyNtAW2d4sMMwhejoSFpb24MdhukNhjwNH35qn+/pp4EiIiIiAWTqma3mFv+qWHtoF5aergBHY04WiwUTf4SmoBz5R3nyj/Lkn6PlqccSitOtG1HD4JixMYPBkKejzWz59WvEoPF0+9XM4QkBTs4p6ejoSNpM/gUMNuXIP8qTf5Qn/yhPIl/SMqKIiIhIAKnYEhEREQkgcy8jhvZvTf+k2sPV0UnUEO0fOSrlyD/Kk3+UJ/8cpzxp/5cMBqYutm4o2davfr2Xglg0wNGIiIjZjMjbAKjYEnPTMqKIiIhIAKnYEhEREQkgFVsiIiIiAeRzz1ZjYyMrVqwgLCyMyMhIVq1ahcfjobCwEJfLxeTJk1myZAkAixcvpr6+ntzcXBYsWADAY489xpYtWzAMg5EjR3LPPfdgtWp9XURERE4OPoutuLg4ysrKsNlsVFVVUVFRgcPhICMjg2nTppGbm0tTUxNjx46luLiYHTt20NLS4u0/Y8YMMjMzAVi6dCm7du1i8uTJgRuRiIiIiIn4XEaMjY3FZrMBEBYWhtVqpaGhgbS0NABSU1Opq6vztv26IUOGAGAYBj09PZxzzjkDFryIiIiI2fm9Z6ulpYXKykoyMzNpb28nIiICALvdTltb21H7lpaWcvXVV9PW1sbpp59+bBGLiIiIDCJ+FVsdHR3k5+dTVFRETEwMNpsNt9sNgNPpJCoq6qj958+fz/PPP8/o0aPZsmXLsUctIiIiMkj4LLY8Hg8FBQVkZ2eTkJAAQGJiIjU1NQDU1taSlJTUZ//Ozk7v46FDh3pnxEREREROBj43yFdXV1NfX4/L5aK8vJyUlBRycnIoLCyktLSU5ORk4uPjASgpKWHnzp14PB727NnDypUrWbduHX/5y1/o6elhxIgR5ObmBnxQIiIiImZhMQzDtDf5Sr/1qX71671dj4o6EZET3Yi8DbR1hgc7jH6Ljo6ktbU92GGY3mDI0/Dhp/b5ni5qKiIiIhJAKrZEREREAsjUy4jNLf2bMrSHdmHp6RrgaMzJYrFg4o/QFJQj/yhP/lGe/HO88tRjCcXpHrx3JRkMy2NmMBjydLRlRJ8b5IPK092vbg5PCDB41/C/iejoSNpM/gUMNuXIP8qTf5Qn/yhPIl/SMqKIiIhIAGkZcZDTkoZvypF/lCf/KE/+UZ7889U8DfYl0UDSMmIA3VCyrV/9ei/9sGiAoxEREQmcEXkbABVbJyItI4qIiIgEkIotERERkQBSsSUiIiISQD6LrcbGRmbPns3cuXPJzc3F4XBw4MABFi5cSFZWFmvWrPG2Xbx4MZMmTWLTpk2HHaeoqIhFi7SPSkRERE4uPjfIx8XFUVZWhs1mo6qqioqKChwOBxkZGUybNo3c3FyampoYO3YsxcXF7Nixg5aWlkOO8d577/HZZ58FbBAiIiIiZuVzZis2NhabzQZAWFgYVquVhoYG0tLSAEhNTaWurs7b9kjWr19PTk7OQMUsIiIiMmj4vWerpaWFyspKMjMzaW9vJyIiAgC73U5bW1uf/Xbv3s1pp53GGWeccezRioiIiAwyfhVbHR0d5OfnU1RURExMDDabDbfbDYDT6SQqKqrPvprVEhERkZOZz2LL4/FQUFBAdnY2CQkJACQmJlJTUwNAbW0tSUlJffb/xz/+wW233cbSpUt57bXXKCsrG5jIRURERAYBnxvkq6urqa+vx+VyUV5eTkpKCjk5ORQWFlJaWkpycjLx8fEAlJSUsHPnTjweD3v27GHlypU8/fTTAOzbt4//9//+H9dff31AByQiIiJiJqa+N2L6rU/1q1/v7XpyBzgaERGRwBmRt4G2zvBgh2FKg/3eiLqoqYiIiEgAqdgSERERCSBTLyM2t/RvytAe2oWlp2uAozEni8WCiT9CU1CO/KM8+Ud58o/y5J+v5qnHEorTbQ1yROY02JcRfW6QDypPd7+6OTwhwMmx7h0dHUmbyb+AwaYc+Ud58o/y5B/lyT/K08lBy4giIiIiAWTuma1Q806nmmapsqOTqCGaqj8q5cg/ypN/lCf/nMB50nKffFOmLrZuKNkW7BD61Ht5iUXBDkNERI6zEXkbABVb4j8tI4qIiIgEkIotERERkQBSsSUiIiISQD6LrcbGRmbPns3cuXPJzc3F4XBw4MABFi5cSFZWFmvWrPG2Xbx4MZMmTWLTpk3e17Zs2cKVV15JdnY22dnZgRmFiIiIiEn53CAfFxdHWVkZNpuNqqoqKioqcDgcZGRkMG3aNHJzc2lqamLs2LEUFxezY8cOWlpaDjlGVlYWCxYsCNggRERERMzK58xWbGwsNpsNgLCwMKxWKw0NDaSlpQGQmppKXV2dt+2RPProo2RlZVFWVjZAYYuIiIgMDn7v2WppaaGyspLMzEza29uJiIgAwG6309bW1me/K6+8kmeeeYY//OEP1NbW8te//vWYgxYREREZLPwqtjo6OsjPz6eoqIiYmBhsNhtutxsAp9NJVFRUn33tdjtWq5UhQ4ZwxRVX8MYbbwxM5CIiIiKDgM9iy+PxUFBQQHZ2NgkJCQAkJiZSU1MDQG1tLUlJSX32dzqdABiGQX19PaNGjRqAsEVEREQGB58b5Kurq6mvr8flclFeXk5KSgo5OTkUFhZSWlpKcnIy8fHxAJSUlLBz5048Hg979uxh5cqV/P73v2fHjh1YLBaSkpKYPHlywAclIiIiYhYWwzBMe/Oq9FufCnYIfeq9XU9usMMQEZHjbETeBto6wwfkWNHRkbS2tg/IsU5kgyFPw4ef2ud7uqipiIiISACp2BIREREJIFMvIza3mHfK0B7ahaWnK9hhYLFYMPFHaArKkX+UJ/8oT/45kfPUYwnF6bYOyLEGw/KYGQyGPB1tGdHnBvmg8nQHO4I+OTwhwMCs2R+L6OhI2kz+BQw25cg/ypN/lCf/KE8iX9IyooiIiEgAmXtmK3Rgpmn9ZZalwW+ko5OoISfmVP2AUY78ozz5R3nyjwnzNJDLfyLfhKmLrRtKth3X8/VezmHRcT2niIgcHyPyNgAqtuT40zKiiIiISACp2BIREREJIBVbIiIiIgHks9hqbGxk9uzZzJ07l9zcXBwOBwcOHGDhwoVkZWWxZs0ab9vFixczadIkNm3adMgx1q1bx/z588nOzubtt98e+FGIiIiImJTPDfJxcXGUlZVhs9moqqqioqICh8NBRkYG06ZNIzc3l6amJsaOHUtxcTE7duygpaXF23/79u2EhIRQWloa0IGIiIiImJHPma3Y2FhsNhsAYWFhWK1WGhoaSEtLAyA1NZW6ujpv26974YUXaG1tZd68eRQXF9PZ2TmQ8YuIiIiYmt97tlpaWqisrCQzM5P29nYiIiIAsNvttLW19dnv008/JTIykvLycoYNG8Zjjz127FGLiIiIDBJ+FVsdHR3k5+dTVFRETEwMNpsNt9sNgNPpJCoqqs++drud733vewBcdtll7NmzZwDCFhERERkcfBZbHo+HgoICsrOzSUhIACAxMZGamhoAamtrSUpK6rP/xRdfzOuvvw7A3//+d84999yBiFtERERkUPC5Qb66upr6+npcLhfl5eWkpKSQk5NDYWEhpaWlJCcnEx8fD0BJSQk7d+7E4/GwZ88eVq5cyTXXXMOdd95JdnY2Q4cOZdWqVQEflIiIiIhZWAzDMNfNq74i/danjuv5em/Xk3tczykiIsfHiLwNtHWGBzuMQ0RHR9La2h7sMExvMORp+PBT+3xPFzUVERERCSAVWyIiIiIBZOplxOaW4ztlaA/twtLTdVzPeawsFgsm/ghNQTnyj/LkH+XJP2bMU48lFKfbGuwwDjEYlsfMYDDk6WjLiD43yAeVp/u4ns7hCQHMtZ7vS3R0JG0m/wIGm3LkH+XJP8qTf5QnkS9pGVFEREQkgFRsiYiIiASQuZcRQ/u3tj4Y9171W0cnUUPMtS/CdJQj/yhP/lGe/HMS5cmMe8HEXExdbN1Qsq1f/Xqvl7VogKMRERE53Ii8DYCKLemblhFFREREAkjFloiIiEgA+VxGbGxsZMWKFYSFhREZGcmqVavweDwUFhbicrmYPHkyS5YsAWDx4sXU19eTm5vLggULACgtLeWll14C4IMPPmDhwoXMmzcvgEMSERERMQ+fxVZcXBxlZWXYbDaqqqqoqKjA4XCQkZHBtGnTyM3NpampibFjx1JcXMyOHTtoaWnx9p8/fz7z588H4Nprr2XKlCmBG42IiIiIyfhcRoyNjcVmswEQFhaG1WqloaGBtLQ0AFJTU6mrq/O27cvevXsJDw/nzDPPHIi4RURERAYFv/dstbS0UFlZSWZmJu3t7URERABgt9tpa2vz2b+6uprp06f3P1IRERGRQcivYqujo4P8/HyKioqIiYnBZrPhdrsBcDqdREVF+TzG888/z9SpU48tWhEREZFBxmex5fF4KCgoIDs7m4SEBAASExOpqakBoLa2lqSkpKMe4/XXX+ess84iJiZmAEIWERERGTx8bpCvrq6mvr4el8tFeXk5KSkp5OTkUFhYSGlpKcnJycTHxwNQUlLCzp078Xg87Nmzh5UrV3qPoSVEERERORlZDMMw7f0U0m99ql/9eq8gnzvA0YiIiBxuRN4G2jrD+9U3OjqS1tb2AY7oxDMY8jR8+Kl9vqeLmoqIiIgEkIotERERkQAy9TJic0v/pgztoV1YeroGOBpzslgsmPgjNAXlyD/Kk3+UJ/+cTHnqsYTidPfvRtSDYXnMDAZDno62jOhzg3xQebr71c3hCQH6t34+2ERHR9Jm8i9gsClH/lGe/KM8+Ud5EvmSlhFFREREAkjFloiIiEgAnZB7tgbKYNj7dTLti+gv5cg/ypN/lCf/KE/+Gag8Hcu+scFAe7YC6IaSbUE9f+/1uhYFNQYRERFfRuRtAE7cYmuw0zKiiIiISACp2BIREREJIJ/LiI2NjaxYsYKwsDAiIyNZtWoVHo+HwsJCXC4XkydPZsmSJQAsXryY+vp6cnNzWbBgAQD79u3j9ttvJyQkhMjISO677z4iIyMDOyoRERERk/A5sxUXF0dZWRmbN28mLS2NiooKHnzwQTIyMqiqqmL37t00NTUBUFxczO23335I/0cffZRrr72Whx56iIkTJ/Lss88GZiQiIiIiJuSz2IqNjcVmswEQFhaG1WqloaGBtLQ0AFJTU6mrq/O2/bqxY8fidDoBcDqdxMTEDFjwIiIiImbn956tlpYWKisryczMpL29nYiICADsdjttbW199ktKSqKqqor09HQaGxu57LLLjj1qERERkUHCr2Kro6OD/Px8ioqKiImJwWaz4Xa7gd7ZqqioqD77rlq1ittvv52nn36aGTNmsHHjxoGJXERERGQQ8FlseTweCgoKyM7OJiEhAYDExERqamoAqK2tJSkpqc/+PT09DBs2DIBhw4bhcDgGIm4RERGRQcHnrxGrq6upr6/H5XJRXl5OSkoKOTk5FBYWUlpaSnJyMvHx8QCUlJSwc+dOPB4Pe/bsYeXKldx4443cddddhIb2nmrlypWBHZGIiIiIiZj6dj3ptz4V1PP3XkE+N6gxiIiI+DIibwNtneHBDiNgBvvtenRRUxEREZEAUrElIiIiEkCmXkZsbgnulKE9tAtLT1dQY/BloO4YfyJTjvyjPPlHefKP8uSfgcpTjyUUp/vEvRH1YF9G9LlBPqg83UE9vcMTAph7DTw6OpI2k38Bg0058o/y5B/lyT/Kk3+Up5ODlhFFREREAkjFloiIiEgAac9WgByv/V7aF+GbcuQf5ck/ypN/lCf/KE/+6W+ejudetkG7Z+uGkm3BDqHfeq/RtSjYYYiIiJy0RuRtAIL/wwEtI4qIiIgEkIotERERkQDyWWw1NjYye/Zs5s6dS25uLg6HgwMHDrBw4UKysrJYs2aNt+3ixYuZNGkSmzZt8r727rvvMnfuXObOncv69esDMwoRERERk/K5ZysuLo6ysjJsNhtVVVVUVFTgcDjIyMhg2rRp5Obm0tTUxNixYykuLmbHjh20tLR4+997770UFRUxfvx4lixZwrvvvsuYMWMCOigRERERs/A5sxUbG4vNZgMgLCwMq9VKQ0MDaWlpAKSmplJXV+dt+3UfffQR48ePB2DChAnetiIiIiInA7/3bLW0tFBZWUlmZibt7e1EREQAYLfbaWtr67Pfeeedx6uvvorH42HXrl04HI5jj1pERERkkPCr2Oro6CA/P5+ioiJiYmKw2Wy43W4AnE4nUVFRffa9/fbbKSsrIzc3l7POOovhw4cPTOQiIiIig4DPYsvj8VBQUEB2djYJCQkAJCYmUlNTA0BtbS1JSUl99o+Li2P9+vU8+OCDuFwuLr/88gEKXURERMT8fG6Qr66upr6+HpfLRXl5OSkpKeTk5FBYWEhpaSnJycnEx8cDUFJSws6dO/F4POzZs4eVK1fy5JNP8vjjj2OxWJg3bx6nnXZawAclIiIiYhamvl1P+q1PBTuEfuu9gnxusMMQERE5aY3I20BbZ/hxOdfRbteji5qKiIiIBJCKLREREZEAMvUyYnNLe7BD6Dd7aBeWnq6An0d3jPdNOfKP8uQf5ck/ypN/lCf/9DdPPZZQnO7jcyPqoy0j+twgH1Se7mBH0G8OTwgQ+HXi6OhI2loHb1F6PChH/lGe/KM8+Ud58o/y5J/BnictI4qIiIgEkIotERERkQAy9zJi6PFZZ+2P47Uny6eOTqKGaL3/qJQj/yhP/lGe/DPI83Q89/rIic/UxdYNJduCHUKfeq+jtSjYYYiISACMyNsAqNiSgaFlRBEREZEAUrElIiIiEkAqtkREREQCyOeercbGRlasWEFYWBiRkZGsWrUKj8dDYWEhLpeLyZMns2TJEj744AOWLVuGxWIhNDSUe+65hxEjRvD555+zdOlSPv30U+Lj41m+fDkhIarxRERE5OTgs+qJi4ujrKyMzZs3k5aWRkVFBQ8++CAZGRlUVVWxe/dumpqasNvtrFu3joqKChYsWMD69esBePzxx7nwwguprKwkJCSEl19+OeCDEhERETELn8VWbGwsNpsNgLCwMKxWKw0NDaSlpQGQmppKXV0dw4YNIzo6+pB2APX19Ye1FRERETlZ+L2e19LSQmVlJZmZmbS3txMREQGA3W6nra3N287tdrN27VrmzZsHQFtbG3a7/YhtRURERE50fhVbHR0d5OfnU1RURExMDDabDbfbDYDT6SQqKgqA7u5ubrvtNubNm8eYMWOA3gLL4XAc1lZERETkZOCz2PJ4PBQUFJCdnU1CQgIAiYmJ1NTUAFBbW0tSUhIAd999N0lJSUydOtXb/+KLL6a2tvawtiIiIiInA5/FVnV1NfX19ZSXl5Odnc3GjRvJycnhkUceISsri/HjxxMfH099fT1PPPEE27ZtIzs7mxUrVgBwzTXX8Ne//pWf/OQndHZ2cvnllwd8UCIiIiJmYTEMw7Q3r0q/9algh9Cn3tv15AY7DBERCYAReRto6wwP+HmioyNpbW0P+HkGu8GQp+HDT+3zPV3wSkRERCSATD2z1dxi3irWHtqFpacr2GFgsVgw8UdoCsqRf5Qn/yhP/hnseeqxhOJ0B/5G1INhxsYMBkOejjaz5fMK8kHl6Q52BH1yeEKAwE8x+xIdHUmbyb+AwaYc+Ud58o/y5B/lSeRLWkYUERERCSAVWyIiIiIBpD1bJvRN9oMN9n0Rx4Ny5B/lyT/Kk3+UJ/8MVJ6O1x6zYNGerQC6oWRbsEMIit7LSiwKdhgiIjJIjMjbAJy4xdZgp2VEERERkQBSsSUiIiISQCq2RERERALI556txsZGVqxYQVhYGJGRkaxatQqPx0NhYSEul4vJkyezZMkSPvjgA5YtW4bFYiE0NJR77rmHESNGUFtby4oVK/j000+pr68/HmMSERERMQ2fxVZcXBxlZWXYbDaqqqqoqKjA4XCQkZHBtGnTyM3NpampidNOO41169YRHR1NbW0t69evp6SkhIkTJ7JlyxYyMzOPx3hERERETMXnMmJsbCw2mw2AsLAwrFYrDQ0NpKWlAZCamkpdXR3Dhg0jOjr6kHYA0dHRREREBCh8EREREXPze89WS0sLlZWVZGZm0t7e7i2g7HY7bW1t3nZut5u1a9cyb968gY9WREREZJDxq9jq6OggPz+foqIiYmJisNlsuN1uAJxOJ1FRUQB0d3dz2223MW/ePMaMGRO4qEVEREQGCZ/FlsfjoaCggOzsbBISEgBITEykpqYGgNraWpKSkgC4++67SUpKYurUqQEMWURERGTw8FlsVVdXU19fT3l5OdnZ2WzcuJGcnBweeeQRsrKyGD9+PPHx8dTX1/PEE0+wbds2srOzWbFiBQC7d+/m+uuv56OPPuL6669n586dAR+UiIiIiFmY+t6I6bc+FewQgqL3dj25wQ5DREQGiRF5G2jrDA92GAEz2O+NqIuaioiIiASQii0RERGRADL1MmJzi7mnDAPFHtqFpafLr7YWiwUTf4SmoBz5R3nyj/LkH+XJPwOVpx5LKE63dQAiMqfBvozo8wryQeXpDnYEQeHwhAD+rb1HR0fSZvIvYLApR/5RnvyjPPlHefKP8nRy0DKiiIiISACZe2Yr9Msp0W+ytPZNnOhTryIiIhJcpi62bijZ5n3cezmERQN+jhF5GwAVWyIiIhIYWkYUERERCSAVWyIiIiIBpGJLREREJIB87tlqbGxkxYoVhIWFERkZyapVq/B4PBQWFuJyuZg8eTJLlizhgw8+YNmyZVgsFkJDQ7nnnnsYMWIEa9as4eWXXwbgqquuIicnJ+CDEhERETELn8VWXFwcZWVl2Gw2qqqqqKiowOFwkJGRwbRp08jNzaWpqYnTTjuNdevWER0dTW1tLevXr6ekpIT09HSWLFmCYRhkZWWRnp7OmWeeeTzGJiIiIhJ0PpcRY2NjsdlsAISFhWG1WmloaCAtLQ2A1NRU6urqGDZsGNHR0Ye0Axg1ahSAd8YrJEQrlyIiInLy8LvyaWlpobKykszMTNrb24mIiADAbrfT1tbmbed2u1m7di3z5s07pP/WrVs555xzOOOMMwYodBERERHz8+s6Wx0dHeTn51NUVERMTAw2mw232014eDhOp5OoqCgAuru7ue2225g3bx5jxozx9v/LX/5CZWUlDzzwQGBGISIiImJSPme2PB4PBQUFZGdnk5CQAEBiYiI1NTUA1NbWkpSUBMDdd99NUlISU6dO9fZ/5513WLlyJb/5zW+8s2EiIiIiJwufM1vV1dXU19fjcrkoLy8nJSWFnJwcCgsLKS0tJTk5mfj4eOrr63niiSf4zne+w7Zt27jgggtYunQpJSUlOBwO8vPzASgqKmLcuHEBH5iIiIiIGfgstmbNmsWsWbMOe33jxo2HPE9KSmL37t2HtfvDH/7Q/+hEREREBjn9NFBEREQkgFRsiYiIiASQX79GDJbfF13lfWyEdDEib8OAn6PHYuoUiIiIyCBn7krD0+196PCEAOHBi0VERESkHyyGYRjBDkJERETkRKU9WyIiIiIBpGJLREREJIBUbImIiIgEkIotERERkQBSsSUiIiISQCq2RERERAJIxZaIiIhIAKnYEhEREQkgUxZbjzzyCHPmzCE7O5sPP/ww2OGYRmNjI7Nnz2bu3Lnk5ubicDg4cOAACxcuJCsrizVr1gQ7RNOor69n3LhxHDhwQDnqw2uvvcYNN9xAdnY2GzduVJ768Mtf/pI5c+bw4x//mF27dvH5559zyy23cN1117F8+XJ6enqCHWLQdHV1MWfOHJKSkti6dStAn9+j7du3M3v2bObMmcNrr70WrJCPuyPlqKioiNmzZ3Pttdfy5JNPetuezH/7jpSnL8yfP59f/vKX3ueDMk+GybS0tBiZmZlGV1eX8be//c24+eabgx2Saezfv99ob283DMMwKisrjXXr1hkrVqwwnn32WcMwDCMnJ8d45513ghmiaeTl5RnXXHON8dlnnylHR+B2u42cnBzv98kwDOXpCN5//31j3rx5hmEYxscff2xcd911xubNm40HH3zQMAzDuOuuu4w//elPwQwxqHp6eox//vOfxv33328899xzhmEc+Xvk8XiMmTNnGk6n09i/f78xZ86cYIZ9XB0pR++//75hGL3/P5w6darR1dV10v/tO1KeDMMwduzYYeTk5Bh33323YRiDt0Yw3czWa6+9xr/9278RGhrKxIkTef/994MdkmnExsZis9kACAsLw2q10tDQQFpaGgCpqanU1dUFM0RT2L59O4mJiURGRgIoR0fw17/+lYiICG6++WZuuOEG3nrrLeXpCE4//XQiIiLweDw4HA5iYmKor69Xnv6PxWLhjDPOOOS1I32P9u7dy6hRoxg6dCixsbF4PB7cbncwQj7ujpSjUaNGAV/+O26xWE76v31HyhNAeXk5P/nJT7zPB2ueTFdstbW1ERUV5X1u6NaNh2lpaaGyspLMzEza29uJiIgAwG6309bWFuTogqunp4fKykqysrK8rylHh/v0009pampi9erV3Hnnndx9993K0xGccsopxMXFcfXVV7NgwQIWLFhAW1sbdrsdUJ6O5Ejfo6/m7IvXW1tbgxShefz+979n2rRpWK1W/e07gq1bt3LppZd6v08weGsE0xVbdrsdh8PhfR4SYroQg6qjo4P8/HyKioqIiYnBZrN5/wvR6XQe8iU8GT399NN8//vfJzw83PuacnQ4u91OQkICkZGRjBkzhoMHDypPR7Bjxw5aW1t54YUX2LJlC7/85S8P+TdKeTrckb5HUVFROJ1Obxun00l0dHSQIjSHrVu38re//Y2bbroJ0N++r+vu7ubRRx/lxz/+8SGvD9Y8mS7Kb3/729TV1dHd3c3rr7/OyJEjgx2SaXg8HgoKCsjOziYhIQGAxMREampqAKitrSUpKSmYIQbdnj17eP7551mwYAFvv/02P//5z5WjI/j2t7/N+++/T09PD83NzQwZMkR5OoKenh6ioqIICQlh6NChtLe3c/HFF1NbWwsoT0dypO/RyJEj2bt3L+3t7TQ3N2O1Wg/5D6KTza5du6isrOQ///M/vcWC/vYd6l//+hcHDhzgpz/9Kffeey/bt2+nurp60ObJYphwDq6qqoqnnnqK0NBQ7rnnnkGTzEB78sknKSkpYcKECQCkpKRwzTXXUFhYiMvlIjk5mfz8/CBHaR7Z2dmsXr0aQDk6gscee4wtW7bg8Xi47bbbGDNmjPL0Nd3d3SxdupSPPvoIt9vNv//7v3PVVVexdOlS/vWvfzFmzBjuuuuuQfNf14GQn5/P3//+dyIjI7nssstYuHDhEb9H//M//8MDDzyAxWJh2bJlfPvb3w5y5MfP13P0wgsvcMopp3iXVlevXk1MTMxJ/7fv63kqLCwEeovT559/nuLiYmBw1gimLLZEREREThQn73+OiYiIiBwHKrZEREREAkjFloiIiEgAqdgSERERCSAVWyIiIiIBpGJLRAbEuHHjWLt2rff50qVLvdejGij5+fnMmDGDP/7xj322qaqqMv2NtB0OB48++miwwxCR40TFlogMiKFDh/LEE0/Q0dERkON/+umn7N27lz/+8Y/MmDEjIOc4XlRsiZxcVGyJyICIiIhgypQpPPbYY4e9V1NTQ3p6Oj/84Q/9mnVat24dP/zhD0lPT+ell14C4MYbb+SDDz5g5syZvP3224e0f/HFF5k6dSqZmZm89tpr3tdfe+01rrnmGtLT01m+fDnd3d1A782SMzMzmTFjBgsXLgQOnYnbt2+f9zYha9asYdmyZcyZM4crr7ySP//5z9x6661MnTqV+++/33uuxx57jIyMDGbMmOGd4du1axcLFizgxhtvZMqUKfzud78D4L777mPPnj3MnDmTjRs38uqrr5Kens7MmTOZM2eOfwkXkcHDEBEZAJMnTzb2799vTJkyxejq6jJuv/12o6amxujo6DDS0tKMjz/+2Ojs7DRmz55t1NXV9Xmcv/3tb0ZGRobhdruNf/7zn0ZaWppx8OBB48MPPzSuvfbaw9p/cfz9+/cbbrfbyMzMNO6//37DMAxj+vTpxu7duw3DMIz8/HzjySefNNxut3HllVcaTU1NhmEYRktLi2EYhjdewzAOOdf9999vLFiwwOju7ja2bdtmXHzxxcY//vEPw+12GykpKcbBgweNd955x7j55psNj8djdHd3G4sWLTJee+0149VXXzWSk5ONAwcOGO3t7cbll19uuFyuw8ayaNEiY+fOnYZhGIbD4TjGT0JEzEYzWyIyYGJjY0lMTOTZZ5/1vvb+++8zZswYzjrrLMLCwvjBD35AQ0NDn8doaGhg6tSpDBkyhDPOOINvfetbNDU19dn+i+PHxsYyZMgQpkyZAvQu1fX09HDhhRcCkJ6eTkNDA++99x7nnnsuY8aMAfDrhsiXX345ISEhjBs3jrPPPptzzjmHIUOGcPbZZ9Pc3MzOnTv561//yjXXXMOPfvQj3n33XT744AMAEhISGDZsGDabjREjRvDpp58edvzvfve73HvvvWzevJnOzk6f8YjI4BIa7ABE5MSyYMECbr31VsaPH3/czmmxWI74+JsICQnB+L+7l3294AkLC/Me+4vHX/Tp7u7GMAyysrK48cYbD+m3a9cuhgwZclj70NBD/+ldtGgRl19+OS+99BLXXnstjz/+OMOGDevXOETEfDSzJSIDasyYMZx99tns3LkTgNGjR/Puu+/yz3/+E4/Hw9atW0lISOizf0JCAi+++CJdXV00NzfzxhtvMHbs2D7bjx49mqamJv75z3/S1dXFtm3bALDb7VitVt566y0AnnnmGRITEznvvPP48MMPeffddwFobW0FIC4ujjfffBPAu0/MX8nJyTzzzDM4HA4A9u/fT0tLS5/tTznlFFwul/f5hx9+yIQJE1i8eDFnn302+/fv/0bnFxFz08yWiAy4nJwcZs+eDfRunF++fDk5OTn09PQwdepUkpKSAJg5cyZPPfXUIX0nTpxISkoKP/rRj7BYLBQVFXHKKaf0WbxERERwxx13MG/ePOx2+yGF2T333MMdd9xBV1cX3/3ud5k+fTpWq5WVK1dSWFhIV1cXZ511Fhs2bODaa6/lpz/9KVu3buV73/veNxrv+eefz4IFC5g7dy6GYXDKKafw61//us/2w4YNY9y4cd5N8R9//DG7du0iJCSEhISE4zorKCKBZzG+mDcXERERkQGnZUQRERGRAFKxJSIiIhJAKrZEREREAkjFloiIiEgAqdgSERERCSAVWyIiIiIBpGJLREREJID+P1kC62P2PZfIAAAAAElFTkSuQmCC\\n\",\n      \"text/plain\": [\n       \"<Figure size 720x432 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"threshold = 0.2\\n\",\n    \"dl_topic = topic_model.doc2topic[:, topic_id] > threshold\\n\",\n    \"\\n\",\n    \"docs = docs.add_property('dl_topic', dl_topic)\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"groups = {\\n\",\n    \"    'deep learning related': 'dl_topic',\\n\",\n    \"    'other': 'not dl_topic', \\n\",\n    \"}\\n\",\n    \"\\n\",\n    \"litstudy.plot_year_histogram(docs, groups=groups, stacked=True);\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"The histogram shows that interest in deep learning has clearly risen over the years. We can even calculate the exact amount by calculating the percentage of documents on deep learning each year. The example below shows that this percentage has increased from just 3.4% in 2011 to 13.6% in 2021.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 27,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>deep learning related</th>\\n\",\n       \"      <th>other</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2005</th>\\n\",\n       \"      <td>0.000000</td>\\n\",\n       \"      <td>100.000000</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2006</th>\\n\",\n       \"      <td>0.000000</td>\\n\",\n       \"      <td>100.000000</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2007</th>\\n\",\n       \"      <td>0.000000</td>\\n\",\n       \"      <td>100.000000</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2008</th>\\n\",\n       \"      <td>6.250000</td>\\n\",\n       \"      <td>93.750000</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2009</th>\\n\",\n       \"      <td>0.000000</td>\\n\",\n       \"      <td>100.000000</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2010</th>\\n\",\n       \"      <td>2.127660</td>\\n\",\n       \"      <td>97.872340</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2011</th>\\n\",\n       \"      <td>3.409091</td>\\n\",\n       \"      <td>96.590909</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2012</th>\\n\",\n       \"      <td>2.941176</td>\\n\",\n       \"      <td>97.058824</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2013</th>\\n\",\n       \"      <td>3.738318</td>\\n\",\n       \"      <td>96.261682</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2014</th>\\n\",\n       \"      <td>3.305785</td>\\n\",\n       \"      <td>96.694215</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2015</th>\\n\",\n       \"      <td>9.565217</td>\\n\",\n       \"      <td>90.434783</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2016</th>\\n\",\n       \"      <td>7.272727</td>\\n\",\n       \"      <td>92.727273</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2017</th>\\n\",\n       \"      <td>3.448276</td>\\n\",\n       \"      <td>96.551724</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2018</th>\\n\",\n       \"      <td>7.200000</td>\\n\",\n       \"      <td>92.800000</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2019</th>\\n\",\n       \"      <td>9.027778</td>\\n\",\n       \"      <td>90.972222</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2020</th>\\n\",\n       \"      <td>9.734513</td>\\n\",\n       \"      <td>90.265487</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2021</th>\\n\",\n       \"      <td>13.600000</td>\\n\",\n       \"      <td>86.400000</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2022</th>\\n\",\n       \"      <td>14.285714</td>\\n\",\n       \"      <td>85.714286</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"      deep learning related       other\\n\",\n       \"2005               0.000000  100.000000\\n\",\n       \"2006               0.000000  100.000000\\n\",\n       \"2007               0.000000  100.000000\\n\",\n       \"2008               6.250000   93.750000\\n\",\n       \"2009               0.000000  100.000000\\n\",\n       \"2010               2.127660   97.872340\\n\",\n       \"2011               3.409091   96.590909\\n\",\n       \"2012               2.941176   97.058824\\n\",\n       \"2013               3.738318   96.261682\\n\",\n       \"2014               3.305785   96.694215\\n\",\n       \"2015               9.565217   90.434783\\n\",\n       \"2016               7.272727   92.727273\\n\",\n       \"2017               3.448276   96.551724\\n\",\n       \"2018               7.200000   92.800000\\n\",\n       \"2019               9.027778   90.972222\\n\",\n       \"2020               9.734513   90.265487\\n\",\n       \"2021              13.600000   86.400000\\n\",\n       \"2022              14.285714   85.714286\"\n      ]\n     },\n     \"execution_count\": 27,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"table = litstudy.compute_year_histogram(docs, groups=groups)\\n\",\n    \"table.div(table.sum(axis=1), axis=0) * 100\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Alternatively, we can plot the two groups for the publications source. We can see that some journals/conferences have a strong focus on deep learning (e.g. \\\"Neural Computing and Applications\\\"), while others have no or few publications on deep learning (e.g. \\\"Journal of Real Time Image Processing\\\").\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 28,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAA+YAAAJbCAYAAABpQ444AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAEAAElEQVR4nOzdeWCM5/7//+dkFUuQihBUQpDYVQ+tQ1VRToO21kQMtdROrRVLtai1QZVa42ilQa2nx1LqUNX2o3Faa45Quw4VTSUhEtlmfn/kl/mKJESbGElfj39M7vu6r/t93dekzXuuZQwWi8WCiIiIiIiIiNiEna0DEBEREREREfkrU2IuIiIiIiIiYkNKzEVERERERERsSIm5iIiIiIiIiA0pMRcRERERERGxISXmIiIiIiIiIjakxFxEREREClydOnV49dVXeeWVV5g8eTJmsznXshEREYwePTrbcZPJRPfu3QHYt28fa9eufeQ4oqKi+L//+z/rz4sWLeLIkSOPXI+ISH5ysHUAIiIiIlL0lSlThi+++IL09HTeeOMN9u7dS7t27f5wfa1bt/5D10VFRXHhwgWaNWsGwFtvvfWHYyhI6enp2Nvb2zoMEXlMNGIuIiIiIo+Nvb09DRo04MqVK2zdupWQkBDruZdeeonk5GQA4uLi6Nu3L+3ateOjjz7KVs+910ZHRzNw4EA6depE586d+fXXX7ly5QqBgYG8/vrr9OjRg/Pnz5Oens5HH33E1q1befXVV/nhhx8IDg7m4MGDAHzzzTd07NiRDh06sHjxYuu9/v73v/P+++/j7+/PkCFDSE9PzxJLeno648aNw9/fn44dO7J9+/aH1pdp8eLFrF+/3tr++fPn8+qrr3L06FE2btxIx44d6dSpk/UZnDhxgp49e/L6668zcuRIkpKS/nhniMgTQyPmIiIiIvLY3L17l4iICIYNG8bNmzdzLXfs2DF2795N2bJl6dWrF61ataJs2bI5lp05cybt27enc+fO3L17FwCLxcKnn36Kk5MTJ06cYMGCBXz88ceMHDmSCxcuMG7cOAD+9a9/WeOaNm0a4eHhlCtXDqPRyPPPP8+zzz5LTEwM7dq1Y8qUKQwePJgffvghS3IdFRXF9evX2blzJwC3b99+YH0PUqlSJb744gtOnz5NeHg469evp2TJksTFxZGSksK8efNYtmwZpUuXJjQ0lHXr1tG/f/88P38ReTIpMRcRERGRAhcXF8err76KwWCgZcuWvPjii2zdujXX8s8++yweHh4AtG3blp9++ok2bdrkWPbo0aMsWrQIgGLFigEQHx/P9OnTOXPmDHZ2dtaR+NxcvHiR6tWrU7FiRQBeeeUVjhw5wrPPPourqyt/+9vfAPDz8+Pq1atZrq1SpQrXrl1jxowZtGnThueff56oqKhc63uQ9u3bA3D48GH8/f0pWbIkkLEU4MyZM5w5c4bevXsDkJqayvPPP//A+kSkcFBiLiIiIiIFLnON+b3s7OyybAKXkpJifW0wGLK8vvfnvPj000/x9vYmJCSE2NhYunbt+gcjBycnpywx3z+VvXTp0vz73//m4MGDrFq1ih9//DHXDxEga9vubTOAi4tLrtdZLBbq1avHP//5z0dtgog84bTGXERERERsolKlSpw5cwbIWDsdExNjPffjjz8SHR1Namoqe/fu5Zlnnsm1nmeeeYZt27YBkJyczN27d0lISKBcuXIYDAbrOYASJUpw586dbHV4e3tz/vx5oqOjSUtLY/fu3Q+8570yp+S/8sorDB48mKioqAfW5+LiwvXr10lJSeH777/Psc7nnnuOnTt3kpCQAGTMOKhWrRomk8n6zBITE7l8+XKeYhSRJ5tGzEVERETEJho3bkzx4sV55ZVXePbZZ63TvgEaNGjAxIkTuXr1Kv7+/tSrVw+TyZRjPZMnT2by5MmsWbMGR0dHli5dSkBAAG+99Rbr16/PsoN706ZNWblyJa+99hrBwcHW48WKFePdd9/lzTffxGw2065du4dOO88UHR3NxIkTsVgs2NvbM3Xq1AfWN2LECHr16kWFChXw9vbOsc6aNWvSq1cvAgICsLOzo23btowYMYKQkBDeffddEhMTsVgsjB8/nqpVq+YpThF5chksFovF1kGIiIiIiIiI/FVpKruIiIiIiIiIDSkxFxEREREREbEhJeYiIiIiIiIiNqTEXERERERERMSGlJiLiIiIiIiI2JAScxEREREREREb0veYi4hIofbbb7dtHYLkszJlihMXl2jrMKQAqG+LJvVr0aR+zX/u7qVyPafvMRcRkULtt9jC+0eDq0MqBnOqrcN44hgMBvTnSdGkvi2a1K9F01+pX80GB24n2xf4fR6UmGvEXERECrV+7++1dQh/2JapzTEtGWTr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x2vz5s3s2rWLhIQEunfvXmSScsjYxO6TTz4hMTGRZs2a/amvvxMREREpTDRiLiIihZpGzCUnGjF/MmkErmhSvxZN6tf896ARc7vHGIeIiIiIiIiI3EeJuYiIiIiIiIgNaY25iIgUapWHr7B1CJLPDAYDf3alndmgP3FERKTw0P+1RESkUNM64qKnTJnixGtdo4iI/IVoKruIiIiIiIiIDSkxFxEREREREbEhTWUXEZHCzcE+x8OuDqkYzKmPORjJF0kplHbK+xpzs8GB28k5vw9EREQKAyXmIiJSqPV7f2+Ox7dMbY5pyaDHHI3YQsYGgErMRUSk8NJUdhEREREREREbUmIuIiIiIiIiYkNKzEVERERERERsSIm5iIiIiIiIiA0pMRcRKSAnT56kb9++9OrVi8DAQPbuzdikrEOHDo9UT0REBOfOnfvDcXz33Xf06tWLXr16YTQa+fHHH/9wXY/i/rgnTpz4WO4rIiIiUthoV3YRkQJw69YtJk2axIoVK/D09CQlJYVjx479oboOHz5MjRo18PHxeWhZiyXjK6YMBgMAV65cYeHChaxevZoyZcqQkJDwp5L8R3F/3LNnz34s9xUREREpbJSYi4gUgAMHDtC6dWs8PT0BcHJyokmTJlnKBAcHExQURL169Vi9ejVly5aldevWDB8+3Fpm6dKlbNu2DRcXFzZv3kxoaCiffPIJX331Fenp6QwePJhWrVphNBqpW7cuUVFRLFiwADc3NwB27txJQEAAZcqUAaBkyZI0bNgQs9nMlClTuHz5MnZ2dkyfPh1vb2/8/f1p1qwZR44coVWrVsTFxXH06FFatmzJyJEjWbx4MRcuXOD27dskJiaycOFCPDw86NChAzt27AAyZgSsX78+W9yZZYKDg3FycuLatWskJycTGhqKs7MzM2fO5OTJk9SqVYuIiAh27979GHpKRERExPY0lV1EpABcv36dChUqPPJ1p06dolatWoSFhbF27VpKlizJ66+/zogRIwgNDeXcuXMcOXKEdevWsXbtWhYvXmy9tnHjxnzyySfWpPxBcezbtw8XFxfCw8MZP348ISEhACQlJdGzZ08+//xzwsPDef3119m8eTO7du2yjsY/9dRThIaG0rdvX1atWpVjO0qVKpUl7vvVqVOH0NBQatWqxffff09kZCRXr15lw4YNDBgwgJiYmEd+diIi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nTvHyJEjGT9+vLVst27dmDx5MkFBQdjb2/PBBx8QFhbG0aNHSUtLo2vXro98fxEREZHCyGC5f9hERESkEOk49ossP2+Z2hzTkoE2iib/VR6+gviUh+9BUJSUKVOcuLhEW4chBUB9WzSpX4sm9Wv+c3cvles5TWUXERERERERsSEl5iIiIiIiIiI2pMRcRERERERExIaUmIuIiIiIiIjYkDZ/ExGRQu232Kwb07g6pGIwp9oomvxnNjhwO9ne1mE8VtpwqOhS3xZN6teiSf2a/x60+Zu+Lk1ERAq3tPQsP95KswP+WruYi4iISOGmqewiIiIiIiIiNqTEXERERERERMSGNJVdREQKN4ec118XlbXmf8U15iIiIn81SsxFRKRQ6/f+3hyPb5naHNOSQY85mvxXefgKQIm5iIhIUaap7CIiIiIiIiI2pMRcRERERERExIaUmIuIiIiIiIjYkBJzERERERERERtSYi7yBDKZTAwa9Hg2rdq6dSurV6/OU9nvv/+eLl26MH/+/CzHY2JiGD16NL169SIgIIDFixcXRKjZ3Lp1i+3bt//h68PDw+nWrRtBQUG88cYbuZY7ePAgu3bt+sP3eRw6dOiQ5edly5ZhNBpp3749bdq0wWg0Mm/evDzVZTQauXnz5h+OJSIigunTp//h60VERET+arQru0gRk56ejr19wezgvGfPHqZMmUKjRo2yHB8/fjwDBgzg73//OwDfffddgdz/frdu3WLHjh107NgxT+XvfTYJCQls2rSJLVu2YG9vT1xcXK7XvfDCC/kR7mM1ZMgQhgwZwtatW4mNjaV///62DklEREREcqHEXOQJ9tNPPzFv3jwMBgPNmjVj5MiRWRKtkydPEh4ezpw5c/D39+eFF14gKiqKTp068fXXX5Oeno7JZGLBggX4+Pgwb948Tp48yZ07dxg2bBitW7fO8b5ms5kpU6Zw+fJl7OzsmD59Or/88gv79u0jMjKSXr160blzZwCio6NJTk62JuUAzZs3B2Dv3r2sXLkSgC5dulhH0y9dusTt27e5desWAQEBfPHFFyQlJREaGkpcXByjRo3C09OTX375hf79+9OhQweCg4MJCgqiXr16rF69mrJly3L69GmOHTuG0WhkxIgRuLq6Mnv2bMxmM97e3kybNo1t27Zx8OBBkpOTeemll+jWrRsA9vb2JCYmcvz4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btGjRw++/PLLPF3XcewXOR7fMrU5piUD8zPEh6o8fAXxKc6P9Z5FUZkyxYmLS7R1GFIA1LdFk/q1aFK/5j9391K5ntOIuYiIPBGWL1/O4cOHSUhI4K233rJ1OCIiIiKPjRJzERHJs86dOxdY3SNGjCiwukVERESeZNr8TURERERERMSGlJiLiIiIiIiI2JA2fxMRkULtt9icN6ZxdUjFYE59rLGYDQ7cTrZ/rPcsirThUNGlvi2a1K9Fk/o1/2nzNxERKbrScv6u9FtpdoB2SBcREZEnn6ayi4iIiIiIiNiQEnMRERERERERG9JUdhERKdwcMtZ0P6415VpHLiIiIvlNibmIiBRq/d7fC8CWqc0xLRlU4PerPHwFoMRcRERE8o+msouIiIiIiIjYkBJzERERERERERtSYi4iIiIiIiJiQ0rMRURERERERGxIibmISAExmUwMGlTwm5EBbN26ldWrV+ep7Pfff0+XLl2YP39+luNt2rTBaDQSFBTEsGHDSElJAWDixIl5jqNhw4YYjUb69OnDyJEjuXTp0gPLh4eH57luERERkaJKibmIyBMoPT29wOres2cPU6ZMYezYsVmOFytWjLCwMMLDw6lYsSIHDx4EYPbs2Xmuu3LlyoSFhfHpp58yYMAARowYYU3wc7J+/fo/1ggRERGRIkRflyYiUsB++ukn5s2bh8FgoFmzZowcOZKtW7cSGxtL//79OXnyJOHh4cyZMwd/f39eeOEFoqKi6NSpE19//TXp6emYTCYWLFiAj48P8+bN4+TJk9y5c4dhw4bRunXrHO9rNpuZMmUKly9fxs7OjunTp/PLL7+wb98+IiMj6dWrF507d87x2jt37lCiRAkAOnTowI4dO7h+/TpjxozBxcUFT09PHB0dmTp1aq7trl+/PrVq1eLEiROUKVOGadOmYTabcXV1ZdGiRaxfvx6TyYTRaCQwMJD09HQ2btxIUlISLVq04K233vrzD19ERESkEFBiLiJSwGbPns3HH3+Mh4cHAwcOJCoqKteySUlJdOrUiQkTJrB161acnJyYP38+X331FZs3byY4OJjhw4dTvHhx4uPj6du3b66J+b59+3BxcSE8PJwTJ04QEhLCxx9/TIsWLQgKCqJevXpZyt+9exej0citW7ewt7encePGWc6vWrWKfv360aZNG5YsWcLNmzcf2vYKFSpw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\\n\",\n      \"text/plain\": [\n       \"<Figure size 720x720 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(10, 10))\\n\",\n    \"litstudy.plot_source_histogram(docs, groups=groups, limit=25, stacked=True);\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"We can even calculate the most popular publication venues for deep learning in our dataset using some simple Panda functions. It appears that \\\"Neural Computing and Applications\\\" is the most popular publication venue.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 29,\n   \"metadata\": {\n    \"scrolled\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>deep learning related</th>\\n\",\n       \"      <th>other</th>\\n\",\n       \"      <th>total</th>\\n\",\n       \"      <th>ratio</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Neural Computing and Applications</th>\\n\",\n       \"      <td>3</td>\\n\",\n       \"      <td>3</td>\\n\",\n       \"      <td>6</td>\\n\",\n       \"      <td>50.000000</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Computing</th>\\n\",\n       \"      <td>3</td>\\n\",\n       \"      <td>12</td>\\n\",\n       \"      <td>15</td>\\n\",\n       \"      <td>20.000000</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>IEEE International Symposium on Workload Characterization IISWC</th>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>4</td>\\n\",\n       \"      <td>5</td>\\n\",\n       \"      <td>20.000000</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Science China Information Sciences</th>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>8</td>\\n\",\n       \"      <td>10</td>\\n\",\n       \"      <td>20.000000</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>IEEE High Performance Extreme Computing Conference HPEC</th>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>7</td>\\n\",\n       \"      <td>8</td>\\n\",\n       \"      <td>12.500000</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>European Physical Journal C</th>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>7</td>\\n\",\n       \"      <td>8</td>\\n\",\n       \"      <td>12.500000</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Journal of Grid Computing</th>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>7</td>\\n\",\n       \"      <td>8</td>\\n\",\n       \"      <td>12.500000</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Journal of Computer Science and Technology</th>\\n\",\n       \"      <td>3</td>\\n\",\n       \"      <td>21</td>\\n\",\n       \"      <td>24</td>\\n\",\n       \"      <td>12.500000</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Multimedia Tools and Applications</th>\\n\",\n       \"      <td>3</td>\\n\",\n       \"      <td>25</td>\\n\",\n       \"      <td>28</td>\\n\",\n       \"      <td>10.714286</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Journal of Supercomputing</th>\\n\",\n       \"      <td>20</td>\\n\",\n       \"      <td>205</td>\\n\",\n       \"      <td>225</td>\\n\",\n       \"      <td>8.888889</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>BMC Bioinformatics</th>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>22</td>\\n\",\n       \"      <td>24</td>\\n\",\n       \"      <td>8.333333</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Journal of Big Data</th>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>11</td>\\n\",\n       \"      <td>12</td>\\n\",\n       \"      <td>8.333333</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Cluster Computing</th>\\n\",\n       \"      <td>3</td>\\n\",\n       \"      <td>52</td>\\n\",\n       \"      <td>55</td>\\n\",\n       \"      <td>5.454545</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>International Journal of Parallel Programming</th>\\n\",\n       \"      <td>5</td>\\n\",\n       \"      <td>87</td>\\n\",\n       \"      <td>92</td>\\n\",\n       \"      <td>5.434783</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>IEEE International Parallel and Distributed Processing Symposium Workshops IPDPSW</th>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>21</td>\\n\",\n       \"      <td>22</td>\\n\",\n       \"      <td>4.545455</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Journal of Signal Processing Systems</th>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>42</td>\\n\",\n       \"      <td>43</td>\\n\",\n       \"      <td>2.325581</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Soft Computing</th>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>16</td>\\n\",\n       \"      <td>16</td>\\n\",\n       \"      <td>0.000000</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>BMC Research Notes</th>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>6</td>\\n\",\n       \"      <td>6</td>\\n\",\n       \"      <td>0.000000</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Journal of the Brazilian Society of Mechanical Sciences and Engineering</th>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>5</td>\\n\",\n       \"      <td>5</td>\\n\",\n       \"      <td>0.000000</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>IEEE International Conference on Cluster Computing CLUSTER</th>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>5</td>\\n\",\n       \"      <td>5</td>\\n\",\n       \"      <td>0.000000</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>IEEE International Symposium on High Performance Computer Architecture HPCA</th>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>5</td>\\n\",\n       \"      <td>5</td>\\n\",\n       \"      <td>0.000000</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>IEEE International Conference on Parallel and Distributed Systems ICPADS</th>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>5</td>\\n\",\n       \"      <td>5</td>\\n\",\n       \"      <td>0.000000</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Journal of Real Time Image Processing</th>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>57</td>\\n\",\n       \"      <td>57</td>\\n\",\n       \"      <td>0.000000</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Journal of Scientific Computing</th>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>5</td>\\n\",\n       \"      <td>5</td>\\n\",\n       \"      <td>0.000000</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Computing and Visualization in Science</th>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>5</td>\\n\",\n       \"      <td>5</td>\\n\",\n       \"      <td>0.000000</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Visual Computer</th>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>7</td>\\n\",\n       \"      <td>7</td>\\n\",\n       \"      <td>0.000000</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>IEEE ACM International Symposium on Cluster Cloud and Grid Computing CCGrid</th>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>6</td>\\n\",\n       \"      <td>6</td>\\n\",\n       \"      <td>0.000000</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Euromicro International Conference on Parallel Distributed and Network Based Processing PDP</th>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>6</td>\\n\",\n       \"      <td>6</td>\\n\",\n       \"      <td>0.000000</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>IEEE Transactions on Parallel and Distributed Systems</th>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>7</td>\\n\",\n       \"      <td>7</td>\\n\",\n       \"      <td>0.000000</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>International Conference for High Performance Computing Networking Storage and Analysis SC</th>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>7</td>\\n\",\n       \"      <td>7</td>\\n\",\n       \"      <td>0.000000</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Frontiers of Computer Science</th>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>8</td>\\n\",\n       \"      <td>8</td>\\n\",\n       \"      <td>0.000000</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>VLDB Journal</th>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>8</td>\\n\",\n       \"      <td>8</td>\\n\",\n       \"      <td>0.000000</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Computer Science Research and Development</th>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>10</td>\\n\",\n       \"      <td>10</td>\\n\",\n       \"      <td>0.000000</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>IEEE International Parallel and Distributed Processing Symposium IPDPS</th>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>11</td>\\n\",\n       \"      <td>11</td>\\n\",\n       \"      <td>0.000000</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>International Conference on High Performance Computing and Simulation HPCS</th>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>5</td>\\n\",\n       \"      <td>5</td>\\n\",\n       \"      <td>0.000000</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"                                                    deep learning related  \\\\\\n\",\n       \"Neural Computing and Applications                                       3   \\n\",\n       \"Computing                                                               3   \\n\",\n       \"IEEE International Symposium on Workload Charac...                      1   \\n\",\n       \"Science China Information Sciences                                      2   \\n\",\n       \"IEEE High Performance Extreme Computing Confere...                      1   \\n\",\n       \"European Physical Journal C                                             1   \\n\",\n       \"Journal of Grid Computing                                               1   \\n\",\n       \"Journal of Computer Science and Technology                              3   \\n\",\n       \"Multimedia Tools and Applications                                       3   \\n\",\n       \"Journal of Supercomputing                                              20   \\n\",\n       \"BMC Bioinformatics                                                      2   \\n\",\n       \"Journal of Big Data                                                     1   \\n\",\n       \"Cluster Computing                                                       3   \\n\",\n       \"International Journal of Parallel Programming                           5   \\n\",\n       \"IEEE International Parallel and Distributed Pro...                      1   \\n\",\n       \"Journal of Signal Processing Systems                                    1   \\n\",\n       \"Soft Computing                                                          0   \\n\",\n       \"BMC Research Notes                                                      0   \\n\",\n       \"Journal of the Brazilian Society of Mechanical ...                      0   \\n\",\n       \"IEEE International Conference on Cluster Comput...                      0   \\n\",\n       \"IEEE International Symposium on High Performanc...                      0   \\n\",\n       \"IEEE International Conference on Parallel and D...                      0   \\n\",\n       \"Journal of Real Time Image Processing                                   0   \\n\",\n       \"Journal of Scientific Computing                                         0   \\n\",\n       \"Computing and Visualization in Science                                  0   \\n\",\n       \"Visual Computer                                                         0   \\n\",\n       \"IEEE ACM International Symposium on Cluster Clo...                      0   \\n\",\n       \"Euromicro International Conference on Parallel ...                      0   \\n\",\n       \"IEEE Transactions on Parallel and Distributed S...                      0   \\n\",\n       \"International Conference for High Performance C...                      0   \\n\",\n       \"Frontiers of Computer Science                                           0   \\n\",\n       \"VLDB Journal                                                            0   \\n\",\n       \"Computer Science Research and Development                               0   \\n\",\n       \"IEEE International Parallel and Distributed Pro...                      0   \\n\",\n       \"International Conference on High Performance Co...                      0   \\n\",\n       \"\\n\",\n       \"                                                    other  total      ratio  \\n\",\n       \"Neural Computing and Applications                       3      6  50.000000  \\n\",\n       \"Computing                                              12     15  20.000000  \\n\",\n       \"IEEE International Symposium on Workload Charac...      4      5  20.000000  \\n\",\n       \"Science China Information Sciences                      8     10  20.000000  \\n\",\n       \"IEEE High Performance Extreme Computing Confere...      7      8  12.500000  \\n\",\n       \"European Physical Journal C                             7      8  12.500000  \\n\",\n       \"Journal of Grid Computing                               7      8  12.500000  \\n\",\n       \"Journal of Computer Science and Technology             21     24  12.500000  \\n\",\n       \"Multimedia Tools and Applications                      25     28  10.714286  \\n\",\n       \"Journal of Supercomputing                             205    225   8.888889  \\n\",\n       \"BMC Bioinformatics                                     22     24   8.333333  \\n\",\n       \"Journal of Big Data                                    11     12   8.333333  \\n\",\n       \"Cluster Computing                                      52     55   5.454545  \\n\",\n       \"International Journal of Parallel Programming          87     92   5.434783  \\n\",\n       \"IEEE International Parallel and Distributed Pro...     21     22   4.545455  \\n\",\n       \"Journal of Signal Processing Systems                   42     43   2.325581  \\n\",\n       \"Soft Computing                                         16     16   0.000000  \\n\",\n       \"BMC Research Notes                                      6      6   0.000000  \\n\",\n       \"Journal of the Brazilian Society of Mechanical ...      5      5   0.000000  \\n\",\n       \"IEEE International Conference on Cluster Comput...      5      5   0.000000  \\n\",\n       \"IEEE International Symposium on High Performanc...      5      5   0.000000  \\n\",\n       \"IEEE International Conference on Parallel and D...      5      5   0.000000  \\n\",\n       \"Journal of Real Time Image Processing                  57     57   0.000000  \\n\",\n       \"Journal of Scientific Computing                         5      5   0.000000  \\n\",\n       \"Computing and Visualization in Science                  5      5   0.000000  \\n\",\n       \"Visual Computer                                         7      7   0.000000  \\n\",\n       \"IEEE ACM International Symposium on Cluster Clo...      6      6   0.000000  \\n\",\n       \"Euromicro International Conference on Parallel ...      6      6   0.000000  \\n\",\n       \"IEEE Transactions on Parallel and Distributed S...      7      7   0.000000  \\n\",\n       \"International Conference for High Performance C...      7      7   0.000000  \\n\",\n       \"Frontiers of Computer Science                           8      8   0.000000  \\n\",\n       \"VLDB Journal                                            8      8   0.000000  \\n\",\n       \"Computer Science Research and Development              10     10   0.000000  \\n\",\n       \"IEEE International Parallel and Distributed Pro...     11     11   0.000000  \\n\",\n       \"International Conference on High Performance Co...      5      5   0.000000  \"\n      ]\n     },\n     \"execution_count\": 29,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Compute histogram by publication venue\\n\",\n    \"table = litstudy.compute_source_histogram(docs, groups=groups)\\n\",\n    \"\\n\",\n    \"# Add column 'total'\\n\",\n    \"table['total'] = table['deep learning related'] + table['other']\\n\",\n    \"\\n\",\n    \"# Remove rare venues that have less than 5 publications\\n\",\n    \"table = table[table['total'] >= 5]\\n\",\n    \"\\n\",\n    \"# Add column 'ratio'\\n\",\n    \"table['ratio'] = table['deep learning related'] / table['total'] * 100\\n\",\n    \"\\n\",\n    \"# Sort by ratio in descending order\\n\",\n    \"table.sort_values(by='ratio', ascending=False)\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.9.2\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "pyproject.toml",
    "content": "[build-system]\nrequires = [\"setuptools\", \"wheel\"]\nbuild-backend = \"setuptools.build_meta\"\n\n[tool.black]\nline-length = 100\n"
  },
  {
    "path": "requirements.txt",
    "content": "bibtexparser\ngensim\nmatplotlib\nnetworkx\nnumpy\npandas\npybliometrics\npyvis\nrequests\nseaborn\nscikit-learn\nunidecode\nwordcloud\nfeedparser\n"
  },
  {
    "path": "setup.cfg",
    "content": "[metadata]\nname = litstudy\nversion = 1.0.6\nauthor = Stijn Heldens\nauthor_email = s.heldens@esciencecenter.nl\ndescription =  Using the power of Python and Jupyter notebooks to automate analysis of scientific literature\nlong_description = file: README.md\nlong_description_content_type = text/markdown\nurl = https://github.com/nlesc/litstudy\nproject_urls =\n    Bug Tracker = https://github.com/nlesc/litstudy/issues\nlicense = Apache 2.0\nlicense_files = LICENSE\n\n\n[options]\npython_requires = >=3.7\npackages = find:\ninstall_requires =\n    bibtexparser\n    gensim\n    matplotlib\n    networkx\n    numpy\n    pandas\n    pybliometrics\n    pyvis\n    requests\n    seaborn\n    scikit-learn\n    unidecode\n    wordcloud\n    feedparser\n\n[options.extras_require]\ndoc = sphinx_rtd_theme; nbsphinx; wheel\n\n[options.packages.find]\ninclude = litstudy, litstudy.*\n"
  },
  {
    "path": "setup.py",
    "content": "#!/usr/bin/env python\nfrom setuptools import setup\n\n\n# see setup.cfg\nsetup()\n"
  },
  {
    "path": "sonar-project.properties",
    "content": "sonar.organization=nlesc\nsonar.projectKey=nlesc_litstudy\nsonar.host.url=https://sonarcloud.io\nsonar.sources=litstudy/\nsonar.tests=tests/\nsonar.links.homepage=https://github.com/nlesc/litstudy\nsonar.links.scm=https://github.com/nlesc/litstudy\nsonar.links.issue=https://github.com/nlesc/litstudy/issues\nsonar.links.ci=https://github.com/nlesc/litstudy/actions\nsonar.python.coverage.reportPaths=coverage.xml\nsonar.python.xunit.reportPath=xunit-result.xml\nsonar.python.pylint.reportPaths=pylint-report.txt\n"
  },
  {
    "path": "tests/__init__.py",
    "content": ""
  },
  {
    "path": "tests/common.py",
    "content": "import hashlib\nimport json\nimport os\nimport pickle\nimport requests\nfrom litstudy.types import Document, DocumentIdentifier, DocumentSet\n\n\nclass MockResponse:\n    def __init__(self, data):\n        self.data = data\n\n    @property\n    def status_code(self):\n        return self.data[\"status_code\"]\n\n    @property\n    def content(self):\n        return self.data[\"content\"]\n\n    def json(self):\n        return json.loads(self.content)\n\n\nclass MockSession:\n    def __init__(self, directory=None, allow_requests=None):\n        if directory is None:\n            directory = os.path.dirname(os.path.realpath(__file__)) + \"/requests/\"\n\n        if allow_requests is None:\n            allow_requests = bool(os.environ.get(\"LITSTUDY_ALLOW_REQUESTS\", False))\n\n        self.directory = directory\n        self.allow_requests = allow_requests\n\n    def _clean_url(self, url):\n        return hashlib.sha1(url.encode(\"utf8\")).hexdigest()\n\n    def get(self, url):\n        filename = os.path.join(self.directory, self._clean_url(url) + \".pickle\")\n\n        if not os.path.exists(filename):\n            if self.allow_requests:\n                response = requests.get(url)\n                data = dict(\n                    url=url,\n                    status_code=response.status_code,\n                    content=response.content,\n                )\n\n                with open(filename, \"wb\") as f:\n                    f.write(pickle.dumps(data))\n            else:\n                raise KeyError(f\"URL not registered with MockSession: {url}\")\n\n        with open(filename, \"rb\") as f:\n            return MockResponse(pickle.loads(f.read()))\n\n\nclass ExampleDocument(Document):\n    def __init__(self, id: DocumentIdentifier):\n        super().__init__(id)\n\n    @property\n    def title(self):\n        return self.id.title\n\n    @property\n    def authors(self):\n        return None\n\n\ndef example_docs() -> DocumentSet:\n    a = DocumentIdentifier(\n        \"The European Approach to the Exascale Challenge\", doi=\"10.1109/MCSE.2018.2884139\"\n    )\n\n    b = DocumentIdentifier(\n        \"this document should not exists since the title is long\",\n    )\n\n    return DocumentSet([ExampleDocument(a), ExampleDocument(b)])\n"
  },
  {
    "path": "tests/resources/example.ris",
    "content": "TY  - JOUR\r\nTI  - The European Approach to the Exascale Challenge\r\nT2  - Computing in Science & Engineering\r\nSP  - 42\r\nEP  - 47\r\nAU  - G. Kalbe\r\nAU  - G. Kalbe\r\nPY  - 2019\r\nKW  - Exascale computing\r\nKW  - Industries\r\nKW  - Investment\r\nKW  - Technological innovation\r\nKW  - Ecosystems\r\nKW  - High performance computing\r\nDO  - 10.1109/MCSE.2018.2884139\r\nJO  - Computing in Science & Engineering\r\nIS  - 1\r\nSN  - 1558-366X\r\nVO  - 21\r\nVL  - 21\r\nJA  - Computing in Science & Engineering\r\nY1  - 1 Jan.-Feb. 2019\r\nAB  - An integrated European exascale computing and data infrastructure and ecosystem are key to building a vibrant data economy and enabling Europe to stay at the forefront of scientific discovery and industrial leadership. An ambitious legal and funding framework at the European level, the European High-Performance Computing (HPC) joint undertaking, has been agreed upon between EU countries and will be operational by the end of 2018. Its purpose is to stimulate investment in the area of HPC, with two objectives: making Europe one of the top three HPC powers in the world and acquiring two exascale systems by 2023, with at least one based on European technology. The joint undertaking will combine public and private investments to develop innovative European exascale hardware and software technology components, integrate them into prototype systems co-designed with extreme scale applications, and use public procurement at the European level to invest in operational HPC technologies.\r\nER  - \r\n\n\rTY  - CONF\r\nTI  - Reference Exascale Architecture\r\nT2  - 2019 15th International Conference on eScience (eScience)\r\nSP  - 479\r\nEP  - 487\r\nAU  - M. Bobák\r\nAU  - L. Hluchy\r\nAU  - A. S. Z. Belloum\r\nAU  - R. Cushing\r\nAU  - J. Meizner\r\nAU  - P. Nowakowski\r\nAU  - V. Tran\r\nAU  - O. Habala\r\nAU  - J. Maassen\r\nAU  - B. Somosköi\r\nAU  - M. Graziani\r\nAU  - M. Heikkurinen\r\nAU  - M. Höb\r\nAU  - J. Schmidt\r\nPY  - 2019\r\nKW  - exascale computing\r\nKW  - architecture\r\nKW  - functional design\r\nKW  - qualitative analysis\r\nDO  - 10.1109/eScience.2019.00063\r\nJO  - 2019 15th International Conference on eScience (eScience)\r\nIS  - \r\nSN  - \r\nVO  - \r\nVL  - \r\nJA  - 2019 15th International Conference on eScience (eScience)\r\nY1  - 24-27 Sept. 2019\r\nAB  - While political commitments for building exascale systems have been made, turning these systems into platforms for a wide range of exascale applications faces several technical, organisational and skills-related challenges. The key technical challenges are related to the availability of data. While the first exascale machines are likely to be built within a single site, the input data is in many cases impossible to store within a single site. Alongside handling of extreme-large amount of data, the exascale system has to process data from different sources, support accelerated computing, handle high volume of requests per day, minimize the size of data flows, and be extensible in terms of continuously increasing data as well as increase in parallel requests being sent. These technical challenges are addressed by the general reference exascale architecture. It is divided into three main blocks: virtualization layer, distributed virtual file system, and manager of computing resources. Its main property is modularity which is achieved by containerization at two levels: 1) application containers - containerization of scientific workflows, 2) micro-infrastructure - containerization of extreme-large data service-oriented infrastructure. The paper also presents an instantiation of the reference architecture - the architecture of the PROCESS project (PROviding Computing solutions for ExaScale ChallengeS) and discuss its relation to the reference exascale architecture. The PROCESS architecture has been used as an exascale platform within various exascale pilot applications. This work will present the requirements and the derived architecture as well as the 5 use cases pilots that it made possible.\r\nER  - \r\n\n\rTY  - JOUR\r\nTI  - Brief introduction of TianHe exascale prototype system\r\nT2  - Tsinghua Science and Technology\r\nSP  - 361\r\nEP  - 369\r\nAU  - R. Wang\r\nAU  - K. Lu\r\nAU  - J. Chen\r\nAU  - W. Zhang\r\nAU  - J. Li\r\nAU  - Y. Yuan\r\nAU  - P. Lu\r\nAU  - L. Huang\r\nAU  - S. Li\r\nAU  - X. Fan\r\nPY  - 2021\r\nKW  - Monitoring\r\nKW  - Computer architecture\r\nKW  - Optical switches\r\nKW  - Prototypes\r\nKW  - Supercomputers\r\nKW  - Microprocessors\r\nKW  - Network topology\r\nKW  - TianHe exascale system\r\nKW  - prototype\r\nKW  - proprietary CPU\r\nKW  - Matrix-2000+\r\nDO  - 10.26599/TST.2020.9010009\r\nJO  - Tsinghua Science and Technology\r\nIS  - 3\r\nSN  - 1007-0214\r\nVO  - 26\r\nVL  - 26\r\nJA  - Tsinghua Science and Technology\r\nY1  - June 2021\r\nAB  - Facing the challenges of the next generation exascale computing, National University of Defense Technology has developed a prototype system to explore opportunities, solutions, and limits toward the next generation Tianhe system. This paper briefly introduces the prototype system, which is deployed at the National Supercomputer Center in Tianjin and has a theoretical peak performance of 3.15 Pflops. A total of 512 compute nodes are found where each node has three proprietary CPUs called Matrix-2000+. The system memory is 98.3 TB, and the storage is 1.4 PB in total.\r\nER  - \r\n\n\rTY  - CONF\r\nTI  - Challenges for Benchmarking, profiling and performance evaluation in the era of Exascale\r\nT2  - 2014 International Conference on High Performance Computing & Simulation (HPCS)\r\nSP  - 1035\r\nEP  - 1036\r\nAU  - D. R. C. Hill\r\nPY  - 2014\r\nKW  - Benchmark testing\r\nKW  - Monitoring\r\nKW  - High performance computing\r\nKW  - Educational institutions\r\nKW  - Computer architecture\r\nKW  - Power demand\r\nKW  - Hardware\r\nKW  - Exascale\r\nKW  - resiliency\r\nKW  - benchmarking\r\nKW  - monitoring\r\nKW  - energy profiling\r\nDO  - 10.1109/HPCSim.2014.6903809\r\nJO  - 2014 International Conference on High Performance Computing & Simulation (HPCS)\r\nIS  - \r\nSN  - \r\nVO  - \r\nVL  - \r\nJA  - 2014 International Conference on High Performance Computing & Simulation (HPCS)\r\nY1  - 21-25 July 2014\r\nAB  - New challenges will arise with the emergence or Exascale systems. Such challenges are linked power consumption, Input/Ouput and memory performances, scalability of highly concurrent and hierarchical systems and the major one could be reliability. Codesign of software tools for Exascale machines and disruptive technologies will help to face the current challenges. In this talk we will focus on benchmarking profiling and performance analysis tools which could be the basis of scalable tool support on Exascale class machines.\r\nER  - \r\n\n\rTY  - CONF\r\nTI  - Monitoring of Exascale data processing\r\nT2  - 2019 IEEE International Conference on Advanced Scientific Computing (ICASC)\r\nSP  - 1\r\nEP  - 5\r\nAU  - G. Iuhasz\r\nAU  - D. Petcu\r\nPY  - 2019\r\nKW  - Monitoring\r\nKW  - Measurement\r\nKW  - Tools\r\nKW  - Event detection\r\nKW  - Hardware\r\nKW  - Computer architecture\r\nKW  - Task analysis\r\nKW  - monitoring\r\nKW  - exascale\r\nKW  - event processing\r\nKW  - anomaly detection\r\nDO  - 10.1109/ICASC48083.2019.8946279\r\nJO  - 2019 IEEE International Conference on Advanced Scientific Computing (ICASC)\r\nIS  - \r\nSN  - \r\nVO  - \r\nVL  - \r\nJA  - 2019 IEEE International Conference on Advanced Scientific Computing (ICASC)\r\nY1  - 12-14 Sept. 2019\r\nAB  - Exascale systems are a hot topic of research in computer science. These systems in contrast to current Cloud, Big Data and HPC systems will routinely contain hundreds of thousand of nodes generating millions of events. At this scale of hardware fault and anomalous behaviour is not only more likely but to be expected. In this paper we describe the architecture of and Exascale monitoring solution coupled with an event detection component. The latter component is extremely important in order to handle the multitude of potential events. We describe the major lacking research that needs to be done, which will make event detection freezable in real world Exascale systems.\r\nER  - \r\n\n\rTY  - JOUR\r\nTI  - Novel Hybrid Bonding Technology Using Ultra-High Density Cu Nano-Pillar for Exascale 2.5D/3D Integration\r\nT2  - IEEE Electron Device Letters\r\nSP  - 81\r\nEP  - 83\r\nAU  - K. Lee\r\nAU  - J. Bea\r\nAU  - T. Fukushima\r\nAU  - S. Ramalingam\r\nAU  - X. Wu\r\nAU  - T. Tanaka\r\nAU  - M. Koyanagi\r\nPY  - 2016\r\nKW  - Electrodes\r\nKW  - Bonding\r\nKW  - Anisotropic conductive films\r\nKW  - Stacking\r\nKW  - Resistance\r\nKW  - Surface topography\r\nKW  - Surface treatment\r\nKW  - hybrid bonding\r\nKW  - Cu nano-pillar (CNP)\r\nKW  - extruded electrode\r\nKW  - exascale 2.5D/3D integration\r\nKW  - Hybrid bonding\r\nKW  - Cu nano-pillar (CNP)\r\nKW  - extruded electrode\r\nKW  - exascale 2.5D/3D integration\r\nDO  - 10.1109/LED.2015.2502584\r\nJO  - IEEE Electron Device Letters\r\nIS  - 1\r\nSN  - 1558-0563\r\nVO  - 37\r\nVL  - 37\r\nJA  - IEEE Electron Device Letters\r\nY1  - Jan. 2016\r\nAB  - We propose a novel hybrid bonding technology with a high stacking yield using ultra-high density Cu nanopillar (CNP) for exascale 2.5D/3D integration. To solve the critical issues of a current standard hybrid bonding technology, we developed scaled electrodes with slightly extruded structure and unique adhesive layer of anisotropic conductive film composed of ultra-high density CNP. Test element group (TEG) dies with 7-mm × 23-mm size are bonded to interposer wafer by a new hybrid bonding technology. Scaled electrodes with 3-μm diameter and 6-μm pitch are formed in each TEG chip. We confirmed for the first time that a huge number of electrodes of 4309200 are successfully connected in series with the joining yield of 100% due to the ultra-high density CNP.\r\nER  - \r\n\n\rTY  - CONF\r\nTI  - Performance Estimation for Exascale Reconfigurable Dataflow Platforms\r\nT2  - 2018 International Conference on Field-Programmable Technology (FPT)\r\nSP  - 314\r\nEP  - 317\r\nAU  - R. Yasudo\r\nAU  - J. Coutinho\r\nAU  - A. Varbanescu\r\nAU  - W. Luk\r\nAU  - H. Amano\r\nAU  - T. Becker\r\nPY  - 2018\r\nKW  - Kernel\r\nKW  - Computational modeling\r\nKW  - Random access memory\r\nKW  - Bandwidth\r\nKW  - Acceleration\r\nKW  - Pricing\r\nKW  - Estimation\r\nKW  - Performance modelling\r\nKW  - exascale computing\r\nKW  - heterogeneous systems\r\nKW  - reconfigurable platforms\r\nKW  - FPGAs\r\nDO  - 10.1109/FPT.2018.00062\r\nJO  - 2018 International Conference on Field-Programmable Technology (FPT)\r\nIS  - \r\nSN  - \r\nVO  - \r\nVL  - \r\nJA  - 2018 International Conference on Field-Programmable Technology (FPT)\r\nY1  - 10-14 Dec. 2018\r\nAB  - The next generation high-performance computing platforms will need to support exascale computing. A promising path in achieving exascale is to embrace heterogeneity and specialised computing in the form of reconfigurable accelerators. However, assessing the feasibility of heterogeneous exascale systems requires fast and accurate performance prediction. This paper proposes PERKS, a novel performance estimation frame-work for reconfigurable dataflow platforms (RDPs). PERKS uses machine and application parameters to build an analytical model for predicting the performance of multi-accelerator systems. Moreover, model calibration is automatic, making the model flexible and usable for different machine configurations and applications. Our experimental results demonstrate that PERKS can predict the performance of current workloads and RDPs with an accuracy above 95%. We also demonstrate how the modelling scales to exascale workloads and exascale platforms.\r\nER  - \r\n\n\rTY  - CONF\r\nTI  - Abstract: An Exascale Workload Study\r\nT2  - 2012 SC Companion: High Performance Computing, Networking Storage and Analysis\r\nSP  - 1463\r\nEP  - 1464\r\nAU  - P. Balaprakash\r\nAU  - D. Buntinas\r\nAU  - A. Chan\r\nAU  - A. Guha\r\nAU  - R. Gupta\r\nAU  - S. H. K. Narayanan\r\nAU  - A. A. Chien\r\nAU  - P. Hovland\r\nAU  - B. Norris\r\nPY  - 2012\r\nKW  - heterogeneous architectures\r\nKW  - accelerators\r\nKW  - exascale\r\nKW  - energy efficiency\r\nDO  - 10.1109/SC.Companion.2012.261\r\nJO  - 2012 SC Companion: High Performance Computing, Networking Storage and Analysis\r\nIS  - \r\nSN  - \r\nVO  - \r\nVL  - \r\nJA  - 2012 SC Companion: High Performance Computing, Networking Storage and Analysis\r\nY1  - 10-16 Nov. 2012\r\nAB  - Amdahl's law has been one of the factors influencing speedup in high performance computing over the last few decades. While Amdahl's approach of optimizing (10% of the code is where 90% of the execution time is spent) has worked very well in the past, new challenges related to emerging exascale heterogeneous architectures, combined with stringent power and energy limitations, require a new architectural paradigm. The 10x10 approach is an effort in this direction. In this poster, we describe our initial steps and methodologies for defining and actualizing the 10x10 approach.\r\nER  - \r\n\n\rTY  - CONF\r\nTI  - TEXTAROSSA: Towards EXtreme scale Technologies and Accelerators for euROhpc hw/Sw Supercomputing Applications for exascale\r\nT2  - 2021 24th Euromicro Conference on Digital System Design (DSD)\r\nSP  - 286\r\nEP  - 294\r\nAU  - G. Agosta\r\nAU  - D. Cattaneo\r\nAU  - W. Fornaciari\r\nAU  - A. Galimberti\r\nAU  - G. Massari\r\nAU  - F. Reghenzani\r\nAU  - F. Terraneo\r\nAU  - D. Zoni\r\nAU  - C. Brandolese\r\nAU  - M. Celino\r\nAU  - F. Iannone\r\nAU  - P. Palazzari\r\nAU  - G. Zummo\r\nAU  - M. Bernaschi\r\nAU  - P. D’Ambra\r\nAU  - S. Saponara\r\nAU  - M. Danelutto\r\nAU  - M. Torquati\r\nAU  - M. Aldinucci\r\nAU  - Y. Arfat\r\nAU  - B. Cantalupo\r\nAU  - I. Colonnelli\r\nAU  - R. Esposito\r\nAU  - A. R. Martinelli\r\nAU  - G. Mittone\r\nAU  - O. Beaumont\r\nAU  - B. Bramas\r\nAU  - L. Eyraud-Dubois\r\nAU  - B. Goglin\r\nAU  - A. Guermouche\r\nAU  - R. Namyst\r\nAU  - S. Thibault\r\nAU  - A. Filgueras\r\nAU  - M. Vidal\r\nAU  - C. Alvarez\r\nAU  - X. Martorell\r\nAU  - A. Oleksiak\r\nAU  - M. Kulczewski\r\nAU  - A. Lonardo\r\nAU  - P. Vicini\r\nAU  - F. L. Cicero\r\nAU  - F. Simula\r\nAU  - A. Biagioni\r\nAU  - P. Cretaro\r\nAU  - O. Frezza\r\nAU  - P. S. Paolucci\r\nAU  - M. Turisini\r\nAU  - F. Giacomini\r\nAU  - T. Boccali\r\nAU  - S. Montangero\r\nAU  - R. Ammendola\r\nPY  - 2021\r\nKW  - Exascale computing\r\nKW  - Digital systems\r\nKW  - Computational modeling\r\nKW  - Software algorithms\r\nKW  - Europe\r\nKW  - Tools\r\nKW  - Programming\r\nKW  - High Performance Computing\r\nKW  - exascale\r\nKW  - thermal management\r\nKW  - power management\r\nKW  - run time resource management\r\nKW  - computing architectures\r\nKW  - hardware accelerators\r\nDO  - 10.1109/DSD53832.2021.00051\r\nJO  - 2021 24th Euromicro Conference on Digital System Design (DSD)\r\nIS  - \r\nSN  - \r\nVO  - \r\nVL  - \r\nJA  - 2021 24th Euromicro Conference on Digital System Design (DSD)\r\nY1  - 1-3 Sept. 2021\r\nAB  - To achieve high performance and high energy efficiency on near-future exascale computing systems, three key technology gaps needs to be bridged. These gaps include: energy efficiency and thermal control; extreme computation efficiency via HW acceleration and new arithmetics; methods and tools for seamless integration of reconfigurable accelerators in heterogeneous HPC multi-node platforms. TEXTAROSSA aims at tackling this gap through a co-design approach to heterogeneous HPC solutions, supported by the integration and extension of HW and SW IPs, programming models and tools derived from European research.\r\nER  - \r\n\n\rTY  - CONF\r\nTI  - Exascale computing and data architectures for brownfield applications\r\nT2  - 2018 14th International Conference on Natural Computation, Fuzzy Systems and Knowledge Discovery (ICNC-FSKD)\r\nSP  - 450\r\nEP  - 457\r\nAU  - M. Bobák\r\nAU  - A. S. Z. Belloum\r\nAU  - P. Nowakowski\r\nAU  - J. Meizner\r\nAU  - M. Bubak\r\nAU  - M. Heikkurinen\r\nAU  - O. Habala\r\nAU  - L. Hluchý\r\nPY  - 2018\r\nKW  - exascale computing\r\nKW  - exascale data management\r\nKW  - architecture\r\nKW  - functional design\r\nKW  - brownfield applications\r\nDO  - 10.1109/FSKD.2018.8686900\r\nJO  - 2018 14th International Conference on Natural Computation, Fuzzy Systems and Knowledge Discovery (ICNC-FSKD)\r\nIS  - \r\nSN  - \r\nVO  - \r\nVL  - \r\nJA  - 2018 14th International Conference on Natural Computation, Fuzzy Systems and Knowledge Discovery (ICNC-FSKD)\r\nY1  - 28-30 July 2018\r\nAB  - Despite the recent dramatic advances in the computational and data processing capacities of the commodity solutions, a numerous scientific, socioeconomic and industrial “grand challenges” exists that could be solved only through capabilities that exceed the current solutions by orders of magnitude. To demonstrate the feasibility of addressing these problems necessitating processing of exascale data sets, novel architectural approaches are needed. These architectures need to support efficient service composition and balancing infrastructure- and user-centric points of view of exascale infrastructures and services. This combination of bottom-up and top-down approaches aims at narrowing the gap between infrastructure services and paving the way towards future high capacity generations einfrastructure. The resulting architecture will help us provide computing solutions to exascale challenges within the H2020 project PROCESS<sup>1</sup><sup>1</sup>PROCESS project homepage https://www.process-project.eu/.\r\nER  - \r\n\n\rTY  - JOUR\r\nTI  - Silicon Photonics for Exascale Systems\r\nT2  - Journal of Lightwave Technology\r\nSP  - 547\r\nEP  - 562\r\nAU  - S. Rumley\r\nAU  - D. Nikolova\r\nAU  - R. Hendry\r\nAU  - Q. Li\r\nAU  - D. Calhoun\r\nAU  - K. Bergman\r\nPY  - 2015\r\nKW  - Bandwidth\r\nKW  - Silicon photonics\r\nKW  - Supercomputers\r\nKW  - Random access memory\r\nKW  - Parallel processing\r\nKW  - Optical waveguides\r\nKW  - Computer architecture\r\nKW  - Exascale high performance computing\r\nKW  - optical interconnects\r\nKW  - interconnection networks silicon photonics\r\nKW  - Exascale high performance computing\r\nKW  - interconnection networks silicon photonics\r\nKW  - optical interconnects\r\nDO  - 10.1109/JLT.2014.2363947\r\nJO  - Journal of Lightwave Technology\r\nIS  - 3\r\nSN  - 1558-2213\r\nVO  - 33\r\nVL  - 33\r\nJA  - Journal of Lightwave Technology\r\nY1  - 1 Feb.1, 2015\r\nAB  - With the extraordinary growth in parallelism at all system scales driven by multicore architectures, computing performance is increasingly determined by how efficiently high-bandwidth data is communicated among the numerous compute resources. High-performance systems are especially challenged by the growing energy costs dominated by data movement. As future computing systems aim to realize the Exascale regime-surpassing 10<sup>18</sup> operations per second-achieving energy efficient high-bandwidth communication becomes paramount to scaled performance. Silicon photonics offers the possibility of delivering the needed communication bandwidths to match the growing computing powers of these highly parallel architectures with extremely scalable energy efficiency. However, the insertion of photonic interconnects is not a one-for-one replacement. The lack of practical buffering and the fundamental circuit switched nature of optical data communications require a holistic approach to designing system-wide photonic interconnection networks. New network architectures are required and must include arbitration strategies that incorporate the characteristics of the optical physical layer. This paper reviews the recent progresses in silicon photonic based interconnect devices along with the system level requirements for Exascale. We present a co-design approach for building silicon photonic interconnection networks that leverages the unique optical data movement capabilities and offers a path toward realizing future Exascale systems.\r\nER  - \r\n\n\rTY  - CONF\r\nTI  - ESiWACE: On European Infrastructure Efforts for Weather and Climate Modeling at Exascale\r\nT2  - 2019 15th International Conference on eScience (eScience)\r\nSP  - 498\r\nEP  - 501\r\nAU  - P. Neumann\r\nAU  - J. Biercamp\r\nPY  - 2019\r\nKW  - Meteorology\r\nKW  - Computational modeling\r\nKW  - Atmospheric modeling\r\nKW  - Europe\r\nKW  - Predictive models\r\nKW  - Data models\r\nKW  - Throughput\r\nKW  - high-performance computing\r\nKW  - exascale computing\r\nKW  - weather\r\nKW  - climate\r\nKW  - infrastructure\r\nDO  - 10.1109/eScience.2019.00065\r\nJO  - 2019 15th International Conference on eScience (eScience)\r\nIS  - \r\nSN  - \r\nVO  - \r\nVL  - \r\nJA  - 2019 15th International Conference on eScience (eScience)\r\nY1  - 24-27 Sept. 2019\r\nAB  - Kilometer-scale ensemble simulations are expected to significantly boost and impact weather and climate predictions in the future. However, these simulations will only be enabled by exascale compute power and corresponding data capacity. In the following, we discuss a European effort in terms of the e-infrastructure Centre of Excellence in Simulation of Weather and Climate in Europe (ESiWACE). ESiWACE provides infrastructural means to prepare the weather and climate communities for simulations at the exascale. We give an overview of several ESiWACE infrastructure components and discuss their role in reaching the goal of kilometer-scale ensemble predictions. We particularly review the outcomes of the ESiWACE demonstrators, that is community-driven kilometer-scale models that have been developed throughout the last years.\r\nER  - \r\n\n\rTY  - JOUR\r\nTI  - The Optimist, the Pessimist, and the Global Race to Exascale in 20 Megawatts\r\nT2  - Computer\r\nSP  - 95\r\nEP  - 97\r\nAU  - M. Tolentino\r\nAU  - K. W. Cameron\r\nPY  - 2012\r\nKW  - Technological innovation\r\nKW  - Supercomputers\r\nKW  - Power system planning\r\nKW  - supercomputing\r\nKW  - exascale computing\r\nKW  - Green500\r\nDO  - 10.1109/MC.2012.34\r\nJO  - Computer\r\nIS  - 1\r\nSN  - 1558-0814\r\nVO  - 45\r\nVL  - 45\r\nJA  - Computer\r\nY1  - Jan. 2012\r\nAB  - Multiple innovations will be required to navigate the challenging road to developing exascale systems. The stage is set for a global race to design and build the first exascale system within a 20-megawatt (MW) power envelope. Perhaps not since the race to the moon have we seen a worldwide competition of this scale and complexity.\r\nER  - \r\n\n\rTY  - JOUR\r\nTI  - Standardizing Power Monitoring and Control at Exascale\r\nT2  - Computer\r\nSP  - 38\r\nEP  - 46\r\nAU  - R. E. Grant\r\nAU  - M. Levenhagen\r\nAU  - S. L. Olivier\r\nAU  - D. DeBonis\r\nAU  - K. T. Pedretti\r\nAU  - J. H. Laros III\r\nPY  - 2016\r\nKW  - Power measurement\r\nKW  - Energy management\r\nKW  - Monitoring\r\nKW  - Exascale computing\r\nKW  - Power aware computing\r\nKW  - Frequency measurement\r\nKW  - Power system management\r\nKW  - Power system measurement\r\nKW  - Energy efficiency\r\nKW  - exascale computing\r\nKW  - power-aware computing\r\nKW  - control interfaces\r\nKW  - energy management\r\nKW  - power management\r\nKW  - high-performance computing\r\nKW  - power measurement\r\nKW  - power monitoring\r\nKW  - energy-efficient computing\r\nDO  - 10.1109/MC.2016.308\r\nJO  - Computer\r\nIS  - 10\r\nSN  - 1558-0814\r\nVO  - 49\r\nVL  - 49\r\nJA  - Computer\r\nY1  - Oct. 2016\r\nAB  - Power API-the result of collaboration among national laboratories, universities, and major vendors-provides a range of standardized power management functions, from application-level control and measurement to facility-level accounting, including real-time and historical statistics gathering. Support is already available for Intel and AMD CPUs and standalone measurement devices.\r\nER  - \r\n\n\rTY  - CONF\r\nTI  - Novel W2W/C2W Hybrid Bonding Technology with High Stacking Yield Using Ultra-Fine Size, Ultra-High Density Cu Nano-Pillar (CNP) for Exascale 2.5D/3D Integration\r\nT2  - 2016 IEEE 66th Electronic Components and Technology Conference (ECTC)\r\nSP  - 350\r\nEP  - 355\r\nAU  - K. W. Lee\r\nAU  - C. Nagai\r\nAU  - J. C. Bea\r\nAU  - T. Fukushima\r\nAU  - T. Tanaka\r\nAU  - M. Koyanagi\r\nAU  - R. Suresh\r\nAU  - X. W. Xilinx\r\nPY  - 2016\r\nKW  - Electrodes\r\nKW  - Bonding\r\nKW  - Resistance\r\nKW  - Anisotropic conductive films\r\nKW  - Surface treatment\r\nKW  - Stacking\r\nKW  - Field programmable gate arrays\r\nKW  - Hybrid bonding\r\nKW  - Cu nano-pillar (CNP)\r\nKW  - extruded electrode\r\nKW  - exascale 2.5D/3D integration\r\nDO  - 10.1109/ECTC.2016.10\r\nJO  - 2016 IEEE 66th Electronic Components and Technology Conference (ECTC)\r\nIS  - \r\nSN  - \r\nVO  - \r\nVL  - \r\nJA  - 2016 IEEE 66th Electronic Components and Technology Conference (ECTC)\r\nY1  - 31 May-3 June 2016\r\nAB  - We propose a novel hybrid bonding technology with a high stacking yield using ultra-high density Cu nano-pillar (CNP) for exascale 2.5D/3D integration. To solve the critical issues of current standard hybrid bonding technology, we developed scaled electrodes with slightly extruded structure and unique adhesive layer of anisotropic conductive film composed of untra-fine size, ultra-high density CNP. Multi-number of TEG dies with 7mm x 23mm size are bonded to an interposer wafer by a new hybrid bonding technology. A huge number of electrodes of 4,309,200 composed of scaled electrodes with 3μm diameter and 6μm pitch are formed in each TEG die. We confirmed for the first time that 4,309,200 electrodes per die are successfully connected in series with the joining yield of 100% due to ultra-high density CNP.\r\nER  - \r\n\n\rTY  - CONF\r\nTI  - The role of photonics in future exascale data systems\r\nT2  - 2016 21st OptoElectronics and Communications Conference (OECC) held jointly with 2016 International Conference on Photonics in Switching (PS)\r\nSP  - 1\r\nEP  - 3\r\nAU  - S. J. Ben Yoo\r\nPY  - 2016\r\nKW  - Optical switches\r\nKW  - Data systems\r\nKW  - Network topology\r\nKW  - Topology\r\nKW  - Arrayed waveguide gratings\r\nKW  - Optical transmitters\r\nKW  - exascale computing\r\nKW  - data systems\r\nKW  - optical interconnects\r\nKW  - high radix switch\r\nDO  - \r\nJO  - 2016 21st OptoElectronics and Communications Conference (OECC) held jointly with 2016 International Conference on Photonics in Switching (PS)\r\nIS  - \r\nSN  - \r\nVO  - \r\nVL  - \r\nJA  - 2016 21st OptoElectronics and Communications Conference (OECC) held jointly with 2016 International Conference on Photonics in Switching (PS)\r\nY1  - 3-7 July 2016\r\nAB  - We discuss the role of photonics in our pursuit for future exascale data systems. High-throughput, low-latency, low-contention, and high-radix switching together with energy-efficient silicon photonics intimately integrated with electronics will be vitally important.\r\nER  - \r\n\n\rTY  - CONF\r\nTI  - Torus Networking for Exascale Cloud Storage System\r\nT2  - 2015 9th International Conference on Future Generation Communication and Networking (FGCN)\r\nSP  - 37\r\nEP  - 40\r\nAU  - J. Park\r\nAU  - H. Kim\r\nAU  - Y. Kim\r\nPY  - 2015\r\nKW  - Network topology\r\nKW  - Routing\r\nKW  - Topology\r\nKW  - Routing protocols\r\nKW  - IP networks\r\nKW  - Servers\r\nKW  - Torus networking\r\nKW  - Exascale storage\r\nKW  - IP routing\r\nKW  - distributed file system\r\nDO  - 10.1109/FGCN.2015.16\r\nJO  - 2015 9th International Conference on Future Generation Communication and Networking (FGCN)\r\nIS  - \r\nSN  - 2153-1463\r\nVO  - \r\nVL  - \r\nJA  - 2015 9th International Conference on Future Generation Communication and Networking (FGCN)\r\nY1  - 25-28 Nov. 2015\r\nAB  - Rapid growth of data volume has been requiring consequent expansion of storage size. There have been research topics about various technologies for Exascale storage implementation. The implementation may be a challenge topic because size and speed have to be satisfied at the same time. In this paper, we designed a cloud file system based on IP Torus networking and tested the feasibility with Quagga in respect of reachability and network performance in 4X4 2D Torus topology. The result showed that OSPF is applicable to Torus networking and it has good reachability and performance.\r\nER  - \r\n\n\rTY  - CONF\r\nTI  - Resilience Challenges for Exascale Systems\r\nT2  - 2009 24th IEEE International Symposium on Defect and Fault Tolerance in VLSI Systems\r\nSP  - 379\r\nEP  - 379\r\nAU  - N. P. Jouppi\r\nPY  - 2009\r\nKW  - Resilience\r\nKW  - Microprocessors\r\nKW  - Computer architecture\r\nKW  - Very large scale integration\r\nKW  - Technological innovation\r\nKW  - Timing\r\nKW  - CMOS technology\r\nKW  - Fault tolerant systems\r\nKW  - Power system reliability\r\nKW  - Cloud computing\r\nKW  - Resilience\r\nKW  - exascale systems\r\nKW  - isolation\r\nKW  - duplication\r\nKW  - checkpointing\r\nDO  - 10.1109/DFT.2009.52\r\nJO  - 2009 24th IEEE International Symposium on Defect and Fault Tolerance in VLSI Systems\r\nIS  - \r\nSN  - 2377-7966\r\nVO  - \r\nVL  - \r\nJA  - 2009 24th IEEE International Symposium on Defect and Fault Tolerance in VLSI Systems\r\nY1  - 7-9 Oct. 2009\r\nAB  - The combination of decreasing device reliability due to deep submicron scaling, increasing integration, and the size of future exascale high-performance computers and cloud datacenters pose significant challenges for system resilience. Furthermore, with power and cost being of critical importance, resilience must be provided efficiently and economically. Although providing resilience will require a range of approaches at all levels of the system stack, the final responsibility rests at the system level. In addition to highlighting challenges, this talk reviews and introduces promising system-level techniques such as configurable isolation, duplication caching, multicore DIMMs, CoVeRT, and 3D checkpointing.\r\nER  - \r\n\n\rTY  - CONF\r\nTI  - VEF3 Traces: Towards a Complete Framework for Modelling Network Workloads for Exascale Systems\r\nT2  - 2018 IEEE 4th International Workshop on High-Performance Interconnection Networks in the Exascale and Big-Data Era (HiPINEB)\r\nSP  - 32\r\nEP  - 39\r\nAU  - J. Cano-Cano\r\nAU  - F. J. Andujar\r\nAU  - F. J. Alfaro\r\nAU  - J. L. Sanchez\r\nPY  - 2018\r\nKW  - Tools\r\nKW  - Multiprocessor interconnection\r\nKW  - Computational modeling\r\nKW  - Libraries\r\nKW  - System-on-chip\r\nKW  - Protocols\r\nKW  - Coherence\r\nKW  - Interconnection networks\r\nKW  - Modeling and simulation tool\r\nKW  - Exascale workloads\r\nKW  - Performance evaluation\r\nDO  - 10.1109/HiPINEB.2018.00013\r\nJO  - 2018 IEEE 4th International Workshop on High-Performance Interconnection Networks in the Exascale and Big-Data Era (HiPINEB)\r\nIS  - \r\nSN  - \r\nVO  - \r\nVL  - \r\nJA  - 2018 IEEE 4th International Workshop on High-Performance Interconnection Networks in the Exascale and Big-Data Era (HiPINEB)\r\nY1  - 24-24 Feb. 2018\r\nAB  - To meet the expected performance requirements of applications running on future exascale systems, the number of processing nodes included in such systems will have to increase and, according to the current trend, also the number of cores in each node. In these systems, the networks, both off- and on-chip, interconnecting these nodes and cores inside nodes, respectively, will have to be much more efficient than current ones. In order to develop and research on interconnection networks, simulation is the most common technique used. Simulators traditionally have used synthetic traffic as network workload which does not represent the network workload that real applications generate. The use of application communication trace files is a best strategy for this purpose. In this paper, we extend an existing tool including functionality related to communication within each node. In this way, the tool will allow interconnection network simulators to model traffic due to all the communications generated in the exascale systems.\r\nER  - \r\n\n\rTY  - CONF\r\nTI  - Exascale computing - A fact or a fiction?\r\nT2  - 2013 IEEE 27th International Symposium on Parallel and Distributed Processing\r\nSP  - 3\r\nEP  - 3\r\nAU  - S. Borkar\r\nPY  - 2013\r\nKW  - Computer architecture\r\nKW  - Physics\r\nKW  - Parallel processing\r\nKW  - Programming\r\nKW  - Educational institutions\r\nKW  - Distributed processing\r\nDO  - 10.1109/IPDPS.2013.121\r\nJO  - 2013 IEEE 27th International Symposium on Parallel and Distributed Processing\r\nIS  - \r\nSN  - 1530-2075\r\nVO  - \r\nVL  - \r\nJA  - 2013 IEEE 27th International Symposium on Parallel and Distributed Processing\r\nY1  - 20-24 May 2013\r\nAB  - Summary form only given. Compute performance increased by orders of magnitude in the last few decades, made possible by continued technology scaling, increasing frequency, providing integration capacity to realize novel architectures, and reducing energy to keep power dissipation within limit. The technology treadmill will continue, and one would expect to reach Exascale level performance this decade; however, it's the same Physics that helped you in the past will now pose some barriers-Business as usual will not be an option. The energy and power will pose as a major challenge-an Exascale machine would consume in excess of a Giga-watt! Memory &amp; communication bandwidth with conventional technology would be prohibitive. Orders of magnitude increased parallelism, let alone explosion of parallelism created by energy saving techniques, would increase unreliability. And programming system will be posed with even severe challenge of harnessing the performance with concurrency. This talk will discuss potential solutions in all disciplines, such as circuit design, test, architecture, system design, programming system, and resiliency to pave the road towards Exascale performance.\r\nER  - \r\n\n\rTY  - JOUR\r\nTI  - Achieving Exascale Capabilities through Heterogeneous Computing\r\nT2  - IEEE Micro\r\nSP  - 26\r\nEP  - 36\r\nAU  - M. J. Schulte\r\nAU  - M. Ignatowski\r\nAU  - G. H. Loh\r\nAU  - B. M. Beckmann\r\nAU  - W. C. Brantley\r\nAU  - S. Gurumurthi\r\nAU  - N. Jayasena\r\nAU  - I. Paul\r\nAU  - S. K. Reinhardt\r\nAU  - G. Rodgers\r\nPY  - 2015\r\nKW  - Graphics processing units\r\nKW  - Random access memory\r\nKW  - Bandwidth\r\nKW  - Memory management\r\nKW  - Energy efficiency\r\nKW  - Supercomputers\r\nKW  - Computer programs\r\nKW  - exascale computing\r\nKW  - heterogeneous computing\r\nKW  - energy efficiency\r\nKW  - data-parallel computing\r\nKW  - hardware\r\nDO  - 10.1109/MM.2015.71\r\nJO  - IEEE Micro\r\nIS  - 4\r\nSN  - 1937-4143\r\nVO  - 35\r\nVL  - 35\r\nJA  - IEEE Micro\r\nY1  - July-Aug. 2015\r\nAB  - This article provides an overview of AMD's vision for exascale computing, and in particular, how heterogeneity will play a central role in realizing this vision. Exascale computing requires high levels of performance capabilities while staying within stringent power budgets. Using hardware optimized for specific functions is much more energy efficient than implementing those functions with general-purpose cores. However, there is a strong desire for supercomputer customers not to have to pay for custom components designed only for high-end high-performance computing systems. Therefore, high-volume GPU technology becomes a natural choice for energy-efficient data-parallel computing. To fully realize the GPU's capabilities, the authors envision exascale computing nodes that compose integrated CPUs and GPUs (that is, accelerated processing units), along with the hardware and software support to enable scientists to effectively run their scientific experiments on an exascale system. The authors discuss the hardware and software challenges in building a heterogeneous exascale system and describe ongoing research efforts at AMD to realize their exascale vision.\r\nER  - \r\n\n\rTY  - JOUR\r\nTI  - Increasing Scientific Data Insights about Exascale Class Simulations under Power and Storage Constraints\r\nT2  - IEEE Computer Graphics and Applications\r\nSP  - 8\r\nEP  - 11\r\nAU  - J. Ahrens\r\nAU  - T. Rhyne\r\nPY  - 2015\r\nKW  - Simulation\r\nKW  - High performance computing\r\nKW  - Scientific computing\r\nKW  - VIsualization\r\nKW  - Energy storage\r\nKW  - Costs\r\nKW  - computer graphics\r\nKW  - visualization\r\nKW  - high-performance computing\r\nKW  - exascale computing\r\nKW  - scientific visualization\r\nKW  - in situ visualization and analysis\r\nKW  - power costs\r\nKW  - storage costs\r\nDO  - 10.1109/MCG.2015.35\r\nJO  - IEEE Computer Graphics and Applications\r\nIS  - 2\r\nSN  - 1558-1756\r\nVO  - 35\r\nVL  - 35\r\nJA  - IEEE Computer Graphics and Applications\r\nY1  - Mar.-Apr. 2015\r\nAB  - Creating the next-generation high-performance simulation and analysis environment will be a significant challenge because of power and storage technology trends. Responding to these challenges will require rethinking and reframing how we approach visualization and analysis. A key difference is the need to keep track of a cost per insight in terms of power and storage used. To reduce power and storage costs, an emerging community consensus is that significantly more visualization and analysis should occur in situ--that is, during the simulation run while the data is resident in memory. Using this approach, we need to consider what scientific insights are sought, balanced by power and storage constraints, and then output only the minimal analysis data needed during the simulation run. Emerging research challenges include exploring what types of analysis questions can be answered during postprocessing with compact data products that are generated in situ and what mathematical or statistical techniques will best support this process.\r\nER  - \r\n\n\rTY  - CONF\r\nTI  - Highly scalable checkpointing for exascale computing\r\nT2  - 2010 IEEE International Symposium on Parallel & Distributed Processing, Workshops and Phd Forum (IPDPSW)\r\nSP  - 1\r\nEP  - 4\r\nAU  - C. Karlsson\r\nAU  - Z. Chen\r\nPY  - 2010\r\nKW  - Checkpointing\r\nKW  - Computational modeling\r\nKW  - High performance computing\r\nKW  - Application software\r\nKW  - Scalability\r\nKW  - Encoding\r\nKW  - Computer architecture\r\nKW  - Earthquakes\r\nKW  - Large-scale systems\r\nKW  - Delay\r\nKW  - diskless checkpointing\r\nKW  - exascale\r\nKW  - multi failure\r\nKW  - topology aware\r\nDO  - 10.1109/IPDPSW.2010.5470810\r\nJO  - 2010 IEEE International Symposium on Parallel & Distributed Processing, Workshops and Phd Forum (IPDPSW)\r\nIS  - \r\nSN  - \r\nVO  - \r\nVL  - \r\nJA  - 2010 IEEE International Symposium on Parallel & Distributed Processing, Workshops and Phd Forum (IPDPSW)\r\nY1  - 19-23 April 2010\r\nAB  - A consequence of the fact that the number of processors in High Performance Computers (HPC) continues to increase is demonstrated by the correlation between Mean-Time-To-Failure(T<sub>MTTF</sub> ) and application execution time. The T<sub>MTTF</sub> is becoming shorter than the expected execution time for many next generation HPC applications. There is an ability to handle failure without a system-wide breakdown in most architecture, but many of the applications do not have a built-in ability to survive node failures. The purpose of this paper is to present an approach to develop a highly scalable technique to allow the next generation applications to survive node and/or link failure without aborting the computation. We will develop several strategies to improve the scalability of diskless checkpointing. The technique is scalable in the sense that when the number of processes increases, the overhead to handle k failures on p processes should remain as constant as possible. We will present the proposed technique, initial results together with remaining objectives and challenges.\r\nER  - \r\n\n\rTY  - CONF\r\nTI  - Cost-Effective Optics: Enabling the Exascale Roadmap\r\nT2  - 2009 17th IEEE Symposium on High Performance Interconnects\r\nSP  - 133\r\nEP  - 137\r\nAU  - A. F. Benner\r\nPY  - 2009\r\nKW  - Optical receivers\r\nKW  - Optical transmitters\r\nKW  - Optical fiber networks\r\nKW  - Optical sensors\r\nKW  - Telecommunication traffic\r\nKW  - Optical interconnections\r\nKW  - LAN interconnection\r\nKW  - Delay\r\nKW  - Large-scale systems\r\nKW  - Network servers\r\nKW  - Optics\r\nKW  - Optical Interconnect\r\nKW  - Petascale\r\nKW  - Exascale\r\nDO  - 10.1109/HOTI.2009.26\r\nJO  - 2009 17th IEEE Symposium on High Performance Interconnects\r\nIS  - \r\nSN  - 2332-5569\r\nVO  - \r\nVL  - \r\nJA  - 2009 17th IEEE Symposium on High Performance Interconnects\r\nY1  - 25-27 Aug. 2009\r\nAB  - The biggest disruptive impact of cost-effective optics will simply be that if it succeeds, the interconnect will be able to (barely) keep up with the increased system-level performance demands.\r\nER  - \r\n\n\rTY  - CONF\r\nTI  - Trends in High Performance Computing: Exascale Systems and Facilities Beyond the First Wave\r\nT2  - 2019 18th IEEE Intersociety Conference on Thermal and Thermomechanical Phenomena in Electronic Systems (ITherm)\r\nSP  - 167\r\nEP  - 176\r\nAU  - L. A. Parnell\r\nAU  - D. W. Demetriou\r\nAU  - V. Kamath\r\nAU  - E. Y. Zhang\r\nPY  - 2019\r\nKW  - Conferences\r\nKW  - exascale\r\nKW  - high performance computing\r\nKW  - energy efficiency\r\nDO  - 10.1109/ITHERM.2019.8757229\r\nJO  - 2019 18th IEEE Intersociety Conference on Thermal and Thermomechanical Phenomena in Electronic Systems (ITherm)\r\nIS  - \r\nSN  - 2577-0799\r\nVO  - \r\nVL  - \r\nJA  - 2019 18th IEEE Intersociety Conference on Thermal and Thermomechanical Phenomena in Electronic Systems (ITherm)\r\nY1  - 28-31 May 2019\r\nAB  - The demand for computing at extreme scale continues to drive the performance of high-performance computing systems to exascale and has recently resulted in plans worldwide to field such systems, including an acquisition of three such systems planned by the United States in 2021 to 2023. China, Japan, and Europe also have programs leading to deployment of exascale systems in the next decade. Vendor response to this continuing demand for more computing power has led to unabated increases in performance that are enabling the fielding of exascale systems featuring a combination of traditional processors and, now prominently, co-processors, such as graphics processing units. The first exascale systems are currently expected to necessitate facilities that can provide massive resources: as much as 40 MW of electrical power; up to 13,000 tons of liquid cooling; 250 thousand to 1 million CFM of forced air cooling; and 15,000 square feet of facility space. As the historic trend in HPC has long indicated, the advent of the first exascale systems in the early 2020's will be just the initial wave of systems at such scale, followed later in the decade by others in increasing numbers that will be continually more efficient and compact, requiring less power, cooling and space. This paper addresses the trends which will characterize such systems and facilities beyond the first wave of exascale, enabling the deployment of leading-edge computer systems to the larger communities of organizations and sites that cannot provide the huge facilities that will be required for the first-wave of exascale computers. These trends are now discernable from the data published in recent TOP500 and Green500 semiannual lists, as well as from developments evident in the processors, systems, and facilities slated to characterize the newest and highest performing systems worldwide. Extension of exascale beyond the first wave will require power and cooling needs, and thus facilities cost of operation, that can be sustained by a growing community of sites and organizations who heretofore have fielded the now-dominant architecture staple of data center facilities - air-cooled designs based on commodity-processor rack clusters. The balance between custom hardware designs along with acquisition and operational costs for the compute/network/storage racks requires an evolutionary approach where the solution deployed can leverage existing infrastructure and allow for enhancements with a TCO mindset. As compute silicon power increases with no reduction in rack power in sight, the migration path from traditional air cooled or liquid assisted cooling to a more direct liquid-to-node approach requires planning and standardization of deployment and validation of the solution. Infrastructure compatibility across vendors of cooling equipment and systems could be needed to ensure success for new cooling approaches to be consumed in the data center. Highlighted in this paper are the challenges and opportunities these second wave of exascale facilities operators need to be cognizant of while developing a data center strategy over the next decade.\r\nER  - \r\n\n\r\n"
  },
  {
    "path": "tests/resources/ieee.csv",
    "content": "\"Document Title\",Authors,\"Author Affiliations\",\"Publication Title\",Date Added To Xplore,\"Publication Year\",\"Volume\",\"Issue\",\"Start Page\",\"End Page\",\"Abstract\",\"ISSN\",ISBNs,\"DOI\",Funding Information,PDF Link,\"Author Keywords\",\"IEEE Terms\",\"INSPEC Controlled Terms\",\"INSPEC Non-Controlled Terms\",\"Mesh_Terms\",Article Citation Count,Patent Citation Count,\"Reference Count\",\"License\",Online Date,Issue Date,\"Meeting Date\",\"Publisher\",Document Identifier\n\"Exascale Computing Trends: Adjusting to the \"\"New Normal\"\"' for Computer Architecture\",\"P. Kogge; J. Shalf\",University of Notre Dame; Lawrence Berkeley National Laboratory,\"Computing in Science & Engineering\",\"4 Feb 2014\",\"2013\",\"15\",\"6\",\"16\",\"26\",\"We now have 20 years of data under our belt about the performance of supercomputers against at least a single floating-point benchmark from dense linear algebra. Until about 2004, a single model of parallel programming, bulk synchronous using the MPI model, was sufficient to permit translation into reasonable parallel programs for more complex applications. Starting in 2004, however, a confluence of events changed forever the architectural landscape that underpinned MPI. The first half of this article goes into the underlying reasons for these changes, and what they mean for system architectures. The second half then addresses the view going forward in terms of our standard scaling models and their profound implications for future programming and algorithm design.\",\"1558-366X\",\"\",\"10.1109/MCSE.2013.95\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6634083\",\"Computer architecture;Market research;Transistors;Programming;Computational modeling;Memory management;Systems engineering and theory;scientific computing;exascale;HPC;computer architecture;programming models\",\"Computer architecture;Market research;Transistors;Programming;Computational modeling;Memory management;Systems engineering and theory\",\"application program interfaces;computer architecture;floating point arithmetic;linear algebra;mainframes;message passing;parallel machines;parallel programming\",\"standard scaling models;system architectures;MPI model;bulk synchronous;parallel programming;linear algebra;single floating-point benchmark;supercomputer;computer architecture;exascale computing\",\"\",\"51\",\"\",\"13\",\"\",\"16 Oct 2013\",\"\",\"\",\"IEEE\",\"IEEE Magazines\"\n\"European HPC Landscape\",\"F. Berberich; J. Liebmann; J. -P. Nominé; O. Pineda; P. Segers; V. Teodor\",\"PRACE aisbl and Jülich Supercomputing Center, Forschungszetrum Juelich GmbH; Jülich Supercomputing Center, Forschungszetrum Juelich GmbH; ETP4HPC and Commissariat à l'énergie atomique et aux énergies alternatives; PRACE aisbl and Barcelona Supercomputing Center; Grand équipement national de calcul intensif; Jülich Supercomputing Center, Forschungszetrum Juelich GmbH; another affiliation\",\"2019 15th International Conference on eScience (eScience)\",\"19 Mar 2020\",\"2019\",\"\",\"\",\"471\",\"478\",\"This paper provides an overview on the European HPC landscape supported by a survey, designed by the PRACE-5IP project, accessing more than 80 of the most influential stakeholders of HPC in Europe. It focuses on Tier-0 systems on a European level providing high-end computing and data analysis resources. The different actors are presented and their provided services are analyzed in order to identify overlaps and gaps, complementarity and opportunities for collaborations. A new pan-European HPC portal is proposed in order to get all information on one place and access the different services.\",\"\",\"978-1-7281-2451-3\",\"10.1109/eScience.2019.00062\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9041695\",\"European;High Performance Computing;HPC;Ecosystem;Exascale;services;platform\",\"Europe;Ecosystems;Industries;Investment;Artificial intelligence;Supercomputers;Technological innovation\",\"data analysis;energy conservation;mainframes;parallel processing;portals;power aware computing\",\"provided services;pan-European HPC portal;European HPC landscape;PRACE-5IP project;European level;high-end computing;data analysis resources;tier-0 systems\",\"\",\"\",\"\",\"27\",\"\",\"19 Mar 2020\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Tracking Performance Portability on the Yellow Brick Road to Exascale\",\"T. Deakin; A. Poenaru; T. Lin; S. McIntosh-Smith\",\"University of Bristol,Department of Computer Science,UK; University of Bristol,Department of Computer Science,UK; University of Bristol,Department of Computer Science,UK; University of Bristol,Department of Computer Science,UK\",\"2020 IEEE/ACM International Workshop on Performance, Portability and Productivity in HPC (P3HPC)\",\"1 Jan 2021\",\"2020\",\"\",\"\",\"1\",\"13\",\"With Exascale machines on our immediate horizon, there is a pressing need for applications to be made ready to best exploit these systems. However, there will be multiple paths to Exascale, with each system relying on processor and accelerator technologies from different vendors. As such, applications will be required to be portable between these different architectures, but it is also critical that they are efficient too. These double requirements for portability and efficiency begets the need for performance portability. In this study we survey the performance portability of different programming models, including the open standards OpenMP and SYCL, across the diverse landscape of Exascale and pre-Exascale processors from Intel, AMD, NVIDIA, Fujitsu, Marvell, and Amazon, together encompassing GPUs and CPUs based on both x86 and Arm architectures. We also take a historical view and analyse how performance portability has changed over the last year.\",\"\",\"978-1-6654-2287-1\",\"10.1109/P3HPC51967.2020.00006\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9309052\",\"performance portability;programming models\",\"Graphics processing units;Kernel;Biological system modeling;Computer architecture;Bandwidth;Parallel programming;Performance evaluation\",\"application program interfaces;coprocessors;graphics processing units;library automation;microprocessor chips;multiprocessing systems;parallel architectures;parallel processing;parallel programming;power aware computing\",\"performance portability;different programming models;pre-Exascale processors;yellow brick road;Exascale machines;processor;accelerator technologies\",\"\",\"5\",\"\",\"18\",\"\",\"1 Jan 2021\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Predicting the Energy Consumption of CUDA Kernels using SimGrid\",\"D. Boughzala; L. Lefèvre; A. -C. Orgerie\",\"Univ Lyon, EnsL, UCBL, CNRS, Inria, LIP; Univ Lyon, EnsL, UCBL, CNRS, Inria, LIP; CNRS, IRISA\",\"2020 IEEE 32nd International Symposium on Computer Architecture and High Performance Computing (SBAC-PAD)\",\"22 Oct 2020\",\"2020\",\"\",\"\",\"191\",\"198\",\"Building a sustainable Exascale machine is a very promising target in High Performance Computing (HPC). To tackle the energy consumption challenge while continuing to provide tremendous performance, the HPC community have rapidly adopted GPU-based systems. Today, GPUs have became the most prevailing components in the massively parallel HPC landscape thanks to their high computational power and energy efficiency. Modeling the energy consumption of applications running on GPUs has gained a lot of attention for the last years. Alas, the HPC community lacks simple yet accurate simulators to predict the energy consumption of general purpose GPU applications. In this work, we address the prediction of the energy consumption of CUDA kernels via simulation. We propose in this paper a simple and lightweight energy model that we implemented using the open-source framework SimGrid. Our proposed model is validated across a diverse set of CUDA kernels and on two different NVIDIA GPUs (Tesla M2075 and Kepler K20Xm). As our modeling approach is not based on performance counters or detailed-architecture parameters, we believe that our model can be easily approved by users who take care of the energy consumption of their GPGPU applications.\",\"2643-3001\",\"978-1-7281-9924-5\",\"10.1109/SBAC-PAD49847.2020.00035\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9235065\",\"GPGPU computing, CUDA kernels, Energy modeling, Simulation\",\"Graphics processing units;Kernel;Energy consumption;Computational modeling;Instruction sets;Computer architecture;Scheduling\",\"application program interfaces;coprocessors;graphics processing units;grid computing;parallel architectures;parallel processing;power aware computing;public domain software\",\"high performance computing;energy consumption challenge;CUDA kernels;lightweight energy model;massively parallel HPC;GPU-based system;SimGrid;NVIDIA GPU;Tesla M2075 GPU;Kepler K20Xm GPU;GPGPU applications;exascale machine\",\"\",\"\",\"\",\"33\",\"\",\"22 Oct 2020\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Towards HPC and Big Data Analytics Convergence: Design and Experimental Evaluation of a HPDA Framework for eScience at Scale\",\"D. Elia; S. Fiore; G. Aloisio\",\"Euro-Mediterranean Centre on Climate Change (CMCC) Foundation, Lecce, Italy; Department of Information Engineering and Computer Science, University of Trento, Trento, Italy; Euro-Mediterranean Centre on Climate Change (CMCC) Foundation, Lecce, Italy\",\"IEEE Access\",\"21 May 2021\",\"2021\",\"9\",\"\",\"73307\",\"73326\",\"Over the last two decades, scientific discovery has increasingly been driven by the large availability of data from a multitude of sources, including high-resolution simulations, observations and instruments, as well as an enormous network of sensors and edge components. In such a dynamic and growing landscape where data continue to expand, advances in Science have become intertwined with the capacity of analysis tools to effectively handle and extract valuable information from this ocean of data. In view of the exascale era of supercomputers that is rapidly approaching, it is of the utmost importance to design novel solutions that can take full advantage of the upcoming computing infrastructures. The convergence of High Performance Computing (HPC) and data-intensive analytics is key to delivering scalable High Performance Data Analytics (HPDA) solutions for scientific and engineering applications. The aim of this paper is threefold: reviewing some of the most relevant challenges towards HPDA at scale, presenting a HPDA-enabled version of the Ophidia framework and validating the scalability of the proposed framework through an experimental performance evaluation carried out in the context of the Centre of Excellence in Simulation of Weather and Climate in Europe (ESiWACE). The experimental results show that the proposed solution is capable of scaling over several thousand cores and hundreds of cluster nodes. The proposed work is a contribution in support of scientific large-scale applications along the wider convergence path of HPC and Big Data followed by the scientific research community.\",\"2169-3536\",\"\",\"10.1109/ACCESS.2021.3079139\",\"European Union’s Horizon 2020 Research and Innovation Programme through the Project ESiWACE2(grant numbers:823988); European Union’s Horizon 2020 Research and Innovation Programme through the Project EXDCI-2(grant numbers:800957); \",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9428012\",\"Extreme-scale data challenges;HPC and big data convergence;high performance data analytics (HPDA);performance evaluation;scientific data analysis\",\"Big Data;Data analysis;Convergence;Data models;Europe;Ecosystems;Software\",\"Big Data;data analysis;natural sciences computing;parallel processing;Web services\",\"scientific research community;wider convergence path;large-scale applications;experimental performance evaluation;Ophidia framework;HPDA-enabled version;scientific engineering applications;scalable High Performance Data Analytics solutions;data-intensive analytics;HPC;High Performance Computing;upcoming computing infrastructures;dynamic growing landscape;edge components;high-resolution simulations;scientific discovery;HPDA framework;experimental evaluation\",\"\",\"\",\"\",\"105\",\"CCBY\",\"11 May 2021\",\"\",\"\",\"IEEE\",\"IEEE Journals\"\n\"Parallel Dynamic Data Driven Approaches for Synthetic Aperture Radar\",\"A. Wijayasiri; T. Banerjee; S. Ranka; S. Sahni; M. Schmalz\",\"Dept. of Comput. & Inf. Sci. & Eng., Univ. of Florida, Gainesville, FL, USA; Dept. of Comput. & Inf. Sci. & Eng., Univ. of Florida, Gainesville, FL, USA; Dept. of Comput. & Inf. Sci. & Eng., Univ. of Florida, Gainesville, FL, USA; Dept. of Comput. & Inf. Sci. & Eng., Univ. of Florida, Gainesville, FL, USA; Dept. of Comput. & Inf. Sci. & Eng., Univ. of Florida, Gainesville, FL, USA\",\"2017 IEEE 24th International Conference on High Performance Computing (HiPC)\",\"8 Feb 2018\",\"2017\",\"\",\"\",\"193\",\"202\",\"Hybrid multicore processors (HMPs) are poised to dominate the landscape of the next generation of computing on the desktop as well as on exascale systems. HMPs consist of general purpose CPU cores along with specialized co-processors and can provide high performance for a wide spectrum of applications at significantly lower energy requirements per FLOP. In this paper, we develop parallel algorithms and software for constructing multi-resolution SAR images on HMPs. We develop several load balancing algorithms for optimizing time performance and energy on HMPs. We also present a systematic approach for deriving the energy-time performance trade-offs on HMPs in the presence of Dynamic Voltage Frequency Scaling. Pareto-optimal curves are presented on a system consisting of 24 traditional cores and a GPU.\",\"\",\"978-1-5386-2293-3\",\"10.1109/HiPC.2017.00031\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8287750\",\"Synthetic Aperture Radar;MultiResolution images;HMP;GPU;Load Balancing;List Assignment;DVFS;Power and Energy Evaluation\",\"Graphics processing units;Synthetic aperture radar;Image reconstruction;Image resolution;Multicore processing;Partitioning algorithms;Load management\",\"coprocessors;multiprocessing systems;parallel algorithms;radar computing;radar imaging;resource allocation;synthetic aperture radar\",\"multiresolution SAR images;HMPs;energy-time performance trade-offs;Dynamic Voltage Frequency Scaling;parallel Dynamic data driven approaches;synthetic aperture radar;hybrid multicore processors;exascale systems;specialized co-processors;parallel algorithms;load balancing algorithms;Pareto-optimal curves;GPU;general purpose CPU cores\",\"\",\"3\",\"\",\"22\",\"\",\"8 Feb 2018\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Pre-exascale accelerated application development: The ORNL Summit experience\",\"L. Luo; T. P. Straatsma; L. E. A. Suarez; R. Broer; D. Bykov; E. F. D'Azevedo; S. S. Faraji; K. C. Gottiparthi; C. De Graaf; J. A. Harris; R. W. A. Havenith; H. J. A. Jensen; W. Joubert; R. K. Kathir; J. Larkin; Y. W. Li; D. I. Lyakh; O. E. B. Messer; M. R. Norman; J. C. Oefelein; R. Sankaran; A. F. Tillack; A. L. Barnes; L. Visscher; J. C. Wells; M. Wibowo\",NA; NA; NA; NA; NA; NA; NA; NA; NA; NA; NA; NA; NA; NA; NA; NA; NA; NA; NA; NA; NA; NA; NA; NA; NA; NA,\"IBM Journal of Research and Development\",\"13 May 2020\",\"2020\",\"64\",\"3/4\",\"11:1\",\"11:21\",\"High-performance computing (HPC) increasingly relies on heterogeneous architectures to achieve higher performance. In the Oak Ridge Leadership Facility (OLCF), Oak Ridge, TN, USA, this trend continues as its latest supercomputer, Summit, entered production in early 2019. The combination of IBM POWER9 CPU and NVIDIA V100 GPU, along with a fast NVLink2 interconnect and other latest technologies, pushes system performance to a new height and breaks the exascale barrier by certain measures. Due to Summit's powerful GPUs and much higher GPU–CPU ratio, offloading to accelerators becomes a requirement for any application, which intends to effectively use the system. To facilitate navigating a complex landscape of competing heterogeneous architectures, a collection of applications from a wide spectrum of scientific domains is selected for early adoption on Summit. In this article, the experience and lessons learned are summarized, in the hope of providing useful guidance to address new programming challenges, such as scalability, performance portability, and software maintainability, for future application development efforts on heterogeneous HPC systems.\",\"0018-8646\",\"\",\"10.1147/JRD.2020.2965881\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8960361\",\"\",\"Graphics processing units;Supercomputers;Memory management;Task analysis;Kernel\",\"\",\"\",\"\",\"\",\"\",\"59\",\"IBM\",\"15 Jan 2020\",\"\",\"\",\"IBM\",\"IBM Journals\"\n\"A Community Roadmap for Scientific Workflows Research and Development\",\"R. F. da Silva; H. Casanova; K. Chard; I. Altintas; R. M. Badia; B. Balis; T. Coleman; F. Coppens; F. Di Natale; B. Enders; T. Fahringer; R. Filgueira; G. Fursin; D. Garijo; C. Goble; D. Howell; S. Jha; D. S. Katz; D. Laney; U. Leser; M. Malawski; K. Mehta; L. Pottier; J. Ozik; J. L. Peterson; L. Ramakrishnan; S. Soiland-Reyes; D. Thain; M. Wolf\",\"Oak Ridge National Laboratory,TN,USA; University of Hawaii,Honolulu,HI,USA; The University of Chicago,Chicago,IL,USA; University of California,La Jolla,CA,USA; Barcelona Supercomputing Center,Spain; AGH University of Science and Technology,Krakow,Poland; University of Southern California,Marina Del Rey,CA,USA; Ghent University,Ghent,Belgium; Lawrence Livermore National Lab,Livermore,CA,USA; Lawrence Berkeley National Lab,Berkeley,CA,USA; University of Innsbruck,Innsbruck,Austria; Heriot-Watt University,Edinburgh,UK; OctoML,USA; Universidad Politécnica de Madrid,Spain; The University of Manchester,Manchester,UK; Tweag,Zürich,Switzerland; Brookhaven National Laboratory,Upton,NY,USA; University of Illinois,Urbana-Champaign,USA; Lawrence Livermore National Lab,Livermore,CA,USA; Humboldt-Universität zu Berlin,Berlin,Germany; Oak Ridge National Laboratory,TN,USA; Oak Ridge National Laboratory,TN,USA; University of Southern California,Marina Del Rey,CA,USA; The University of Chicago,Chicago,IL,USA; Lawrence Livermore National Lab,Livermore,CA,USA; Lawrence Livermore National Lab,Livermore,CA,USA; The University of Manchester,Manchester,UK; University of Notre Dame,Indiana,USA; Oak Ridge National Laboratory,TN,USA\",\"2021 IEEE Workshop on Workflows in Support of Large-Scale Science (WORKS)\",\"28 Dec 2021\",\"2021\",\"\",\"\",\"81\",\"90\",\"The landscape of workflow systems for scientific applications is notoriously convoluted with hundreds of seemingly equivalent workflow systems, many isolated research claims, and a steep learning curve. To address some of these challenges and lay the groundwork for transforming workflows research and development, the WorkflowsRI and ExaWorks projects partnered to bring the international workflows community together. This paper reports on discussions and findings from two virtual “Workflows Community Summits” (January and April, 2021). The overarching goals of these workshops were to develop a view of the state of the art, identify crucial research challenges in the workflows community, articulate a vision for potential community efforts, and discuss technical approaches for realizing this vision. To this end, participants identified six broad themes: FAIR computational workflows; AI workflows; exascale challenges; APIs, interoperability, reuse, and standards; training and education; and building a workflows community. We summarize discussions and recommendations for each of these themes.\",\"\",\"978-1-6654-1136-3\",\"10.1109/WORKS54523.2021.00016\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9652570\",\"Scientific workflows;community roadmap;data management;AI workflows;exascale computing;interoperability\",\"Training;Conferences;Buildings;Stakeholders;Artificial intelligence;Research and development;Standards\",\"\",\"\",\"\",\"1\",\"\",\"63\",\"\",\"28 Dec 2021\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n\"Multiobjective Optimization of SAR Reconstruction on Hybrid Multicore Systems\",\"A. Wijayasiri; T. Banerjee; S. Ranka; S. Sahni; M. Schmalz\",\"Department of Computer, and Information Science, and Engineering, University of Florida, Gainesville, FL, USA; Department of Computer, and Information Science, and Engineering, University of Florida, Gainesville, FL, USA; Department of Computer, and Information Science, and Engineering, University of Florida, Gainesville, FL, USA; Department of Computer, and Information Science, and Engineering, University of Florida, Gainesville, FL, USA; Department of Computer, and Information Science, and Engineering, University of Florida, Gainesville, FL, USA\",\"IEEE Journal of Selected Topics in Applied Earth Observations and Remote Sensing\",\"27 Aug 2020\",\"2020\",\"13\",\"\",\"4674\",\"4688\",\"Hybrid multicore processors (HMPs) are poised to dominate the landscape of the next generation of computing on the desktop as well as on exascale systems. HMPs consist of general purpose CPU cores along with specialized coprocessors and can provide high performance for a wide spectrum of applications at significantly lower energy requirements per floating-point operations per second (FLOP). In this article, we develop parallel algorithms and software for constructing multiresolution synthetic aperture radar images on HMPs. We develop several load balancing algorithms for optimizing time performance and energy on HMPs. We also present a systematic approach for deriving the energy-time performance tradeoffs on HMPs in the presence of dynamic voltage frequency scaling. Pareto-optimal curves are presented on a system consisting of 24 traditional cores and a GPU.\",\"2151-1535\",\"\",\"10.1109/JSTARS.2020.3014531\",\"Air Force Office of Scientific Research(grant numbers:FA9550-15-1-0047); \",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9159855\",\"Dynamic voltage frequency scaling (DVFS);GPU;hybrid multicore processors (HMP);load balancing;list assignment;multiresolution images;power and energy evaluation;synthetic aperture radar\",\"Graphics processing units;Synthetic aperture radar;Image reconstruction;Image resolution;Multicore processing;Partitioning algorithms;Load management\",\"image reconstruction;multiprocessing systems;optimisation;parallel algorithms;power aware computing;radar imaging;resource allocation;synthetic aperture radar\",\"multiobjective optimization;SAR reconstruction;hybrid multicore systems;hybrid multicore processors;HMPs;exascale systems;floating-point operations;parallel algorithms;multiresolution synthetic aperture radar images;energy-time performance tradeoffs;Pareto-optimal curves;load balancing algorithms\",\"\",\"\",\"\",\"30\",\"CCBY\",\"5 Aug 2020\",\"\",\"\",\"IEEE\",\"IEEE Journals\"\n\"Methodology and Application of HPC: I/O Characterization with MPIProf and IOT\",\"Y. -T. S. Chang; H. Jin; J. Bauer\",\"NASA Adv. Supercomput. Div., NASA Ames Res. Center, Moffett Field, CA, USA; NASA Adv. Supercomput. Div., NASA Ames Res. Center, Moffett Field, CA, USA; I/O Doctors, LLC, Hanska, MN, USA\",\"2016 5th Workshop on Extreme-Scale Programming Tools (ESPT)\",\"26 Jan 2017\",\"2016\",\"\",\"\",\"1\",\"8\",\"Combining the strengths of MPIProf and IOT, an efficient and systematic method is devised for I/O characterization at the per-job, per-rank, per-file and per-call levels of programs running on the high-performance computing resources at the NASA Advanced Supercomputing (NAS) facility. This method is applied to four I/O questions in this paper. A total of 13 MPI programs and 15 cases, ranging from 24 to 5968 ranks, are analyzed to establish the I/O landscape from answers to the four questions. Four of the 13 programs use MPI I/O, and the behavior of their collective writes depends on the specific implementation of the MPI library used. The SGI MPT library, the prevailing MPI library for NAS systems, was found to automatically gather small writes from a large number of ranks in order to perform larger writes by a small subset of collective buffering ranks. The number of collective buffering ranks invoked by MPT depends on the Lustre stripe count and the number of nodes used for the run. A demonstration of varying the stripe count to achieve double-digit speedup of one program's I/O was presented. Another program, which concurrently opens private files by all ranks and could potentially create a heavy load on the Lustre servers, was identified. The ability to systematically characterize I/O for a large number of programs running on a supercomputer, seek I/O optimization opportunity, and identify programs that could cause a high load and instability on the filesystems is important for pursuing exascale in a real production environment.\",\"\",\"978-1-5090-3918-0\",\"10.1109/ESPT.2016.005\",\"\",\"https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7830461\",\"MPI I/O;POSIX I/O;Lustre;Stripe count\",\"Internet of Things;Instruments;NASA;Libraries;Optimization;Supercomputers;Bridges\",\"application program interfaces;message passing;parallel processing;software libraries\",\"I/O optimization opportunity;supercomputer;Lustre servers;private files;double-digit speedup;Lustre stripe count;collective buffering ranks;NAS systems;SGI MPT library;MPI library;I/O landscape;MPI programs;I/O questions;NAS facility;NASA advanced supercomputing;high performance computing resources;per-call levels;per-file;per-rank;per-job;IOT;MPIProf;I/O characterization;HPC\",\"\",\"\",\"\",\"17\",\"\",\"26 Jan 2017\",\"\",\"\",\"IEEE\",\"IEEE Conferences\"\n"
  },
  {
    "path": "tests/resources/retraction_watch.csv",
    "content": "Record ID,Title,Subject,Institution,Journal,Publisher,Country,Author,URLS,ArticleType,RetractionDate,RetractionDOI,RetractionPubMedID,OriginalPaperDate,OriginalPaperDOI,OriginalPaperPubMedID,RetractionNature,Reason,Paywalled,Notes\n4242,Reflections on Research Software,(B/T) Computer Science;(B/T) Data Science;(B/T) Technology;,\"Netherlands fScience Center, Nieuw-Amsterdam, Netherlands\",Journal of Prominent Things,Prominence Inc,Netherlands,Patrick Bos,,Fake Research Article;,7/31/2024 14:00,10.4242/2024/01,0,7/31/2024 13:59,10.4242/2024/00,0,Retraction,+Concerns/Issues About Reality;+Randomly Generated Content;,No,This is a made-up dummy entry.\n"
  },
  {
    "path": "tests/resources/scopus.csv",
    "content": "﻿Authors,Author(s) ID,Title,Year,Source title,Volume,Issue,Art. No.,Page start,Page end,Page count,Cited by,DOI,Link,Affiliations,Authors with affiliations,Abstract,Author Keywords,Index Keywords,Molecular Sequence Numbers,Chemicals/CAS,Tradenames,Manufacturers,Funding Details,Funding Text 1,References,Correspondence Address,Editors,Sponsors,Publisher,Conference name,Conference date,Conference location,Conference code,ISSN,ISBN,CODEN,PubMed ID,Language of Original Document,Abbreviated Source Title,Document Type,Publication Stage,Open Access,Source,EID\n\"Phillips J.C., Braun R., Wang W., Gumbart J., Tajkhorshid E., Villa E., Chipot C., Skeel R.D., Kalé L., Schulten K.\",\"57202138757;7402220509;56948551400;8553717000;6701753117;8412476700;7003715790;7005206020;7005862685;7102415947;\",\"Scalable molecular dynamics with NAMD\",2005,\"Journal of Computational Chemistry\",\"26\",\"16\",,\"1781\",\"1802\",,13169,\"10.1002/jcc.20289\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-27344436659&doi=10.1002%2fjcc.20289&partnerID=40&md5=f900b7ec25bef86a2619de438f99ae32\",\"Beckman Institute, University of Illinois at Urbana-Champaign, Urbana, IL 61801, United States; UMR CNRS/UHP 7565, Université Henri Poincaré, 54506 Vandaeuvre-les-Nancy, Cedex, France; Department of Computer Science, Beckman Institute, University of Illinois at Urbana-Champaign, Urbana, IL 61801, United States\",\"Phillips, J.C., Beckman Institute, University of Illinois at Urbana-Champaign, Urbana, IL 61801, United States; Braun, R., Beckman Institute, University of Illinois at Urbana-Champaign, Urbana, IL 61801, United States; Wang, W., Beckman Institute, University of Illinois at Urbana-Champaign, Urbana, IL 61801, United States; Gumbart, J., Beckman Institute, University of Illinois at Urbana-Champaign, Urbana, IL 61801, United States; Tajkhorshid, E., Beckman Institute, University of Illinois at Urbana-Champaign, Urbana, IL 61801, United States; Villa, E., Beckman Institute, University of Illinois at Urbana-Champaign, Urbana, IL 61801, United States; Chipot, C., UMR CNRS/UHP 7565, Université Henri Poincaré, 54506 Vandaeuvre-les-Nancy, Cedex, France; Skeel, R.D., Department of Computer Science, Beckman Institute, University of Illinois at Urbana-Champaign, Urbana, IL 61801, United States; Kalé, L., Department of Computer Science, Beckman Institute, University of Illinois at Urbana-Champaign, Urbana, IL 61801, United States; Schulten, K., Beckman Institute, University of Illinois at Urbana-Champaign, Urbana, IL 61801, United States\",\"NAMD is a parallel molecular dynamics code designed for high-performance simulation of large biomolecular systems. NAMD scales to hundreds of processors on high-end parallel platforms, as well as tens of processors on low-cost commodity clusters, and also runs on individual desktop and laptop computers. NAMD works with AMBER and CHARMM potential functions, parameters, and file formats. This article, directed to novices as well as experts, first introduces concepts and methods used in the NAMD program, describing the classical molecular dynamics force field, equations of motion, and integration methods along with the efficient electrostatics evaluation algorithms employed and temperature and pressure controls used. Features for steering the simulation across barriers and for calculating both alchemical and conformational free energy differences are presented. The motivations for and a roadmap to the internal design of NAMD, implemented in C++ and based on Charm++ parallel objects, are outlined. The factors affecting the serial and parallel performance of a simulation are discussed. Finally, typical NAMD use is illustrated with representative applications to a small, a medium, and a large biomolecular system, highlighting particular features of NAMD, for example, the Tel scripting language. The article also provides a list of the key features of NAMD and discusses the benefits of combining NAMD with the molecular graphics/sequence analysis software VMD and the grid computing/collaboratory software BioCoRE. NAMD is distributed free of charge with source code at www.ks.uiuc.edu. © 2005 Wiley Periodicals, Inc.\",\"Biomolecular simulation; Molecular dynamics; Parallel computing\",\"Algorithms; C (programming language); Computer simulation; Equations of motion; Free energy; Molecular graphics; Biomolecular simulation; Biomolecular systems; NAMD; Molecular dynamics\",,,,,\"National Center for Research Resources, NCRR: P41RR005969\",,\"Kalé, L., Skeel, R., Bhandarkar, M., Brunner, R., Gursoy, A., Krawetz, N., Phillips, J., Schulten, K., (1999) J Comp Phys, 151, p. 283; Humphrey, W., Dalke, A., Schulten, K., (1996) J Mol Graphics, 14, p. 33; Nelson, M., Humphrey, W., Gursoy, A., Dalke, A., Kale, L., Skeel, R., Schulten, K., Kufrin, R., (1995) Comput Phys Commun, 91, p. 111; Nelson, M., Humphrey, W., Gursoy, A., Dalke, A., Kalé, L., Skeel, R.D., Schulten, K., (1996) Int J Supercomp Appl High Perform Comp, 10, p. 251; Kosztin, D., Bishop, T.C., Schulten, K., (1997) Biophys J, 73, p. 557; Villa, E., Balaeff, A., Schulten, K., (2005) Proc Natl Acad Sci USA, 102, p. 6783; MacKerell Jr., A.D., Bashford, D., Bellott, M., Dunbrack Jr., R.L., Evanseck, J., Field, M.J., Fischer, S., Karplus, M., (1998) J Phys Chem B, 102, p. 3586; Weiner, S.P., Kollman, P.A., Case, D.A., Singh, U.C., Ohio, C., Alagona, G., Profeta, J., Weiner, P., (1984) J Am Chem Soc, 106, p. 765; Berendsen, H.J.C., Van Der Spoel, D., Van Drunen, R., (1995) Comput Phys Commun, 91, p. 43; Weiner, P.K., Kollman, P.A., (1981) J Comp Chem, 2, p. 287; Ewald, P., (1921) Ann Phys, 64, p. 253; De Leeuw, S.W., Perram, J.W., Smith, E.R., (1980) Proc R Soc Lond A, 373, p. 27; Grubmüller, H., Heller, H., Windemuth, A., Schulten, K., (1991) Mol Simulat, 6, p. 121; Loncharich, R.J., Brooks, B., (1989) R. Proteins Struct Funct Genet, 6, p. 32; Feller, S.E., Pastor, R.W., Rojnuckarin, A., Bogusz, S., Brooks, B.R., (1996) J Phys Chem, 100, p. 17011; Bergdorf, M., Peter, C., Hünenberger, P.H., (2003) J Chem Phys, 119, p. 9129; Kastenholz, M.A., Hünenberger, P.H., (2004) J Phys Chem B, 108, p. 774; Weber, W., Hünenberger, P.H., McCammon, J.A., (2000) J Phys Chem B, 104, p. 3668; Perram, J.W., Petersen, H.G., De Leeuw, S.W., (1988) Mol Phys, 65, p. 875; Darden, T.A., York, D.M., Pedersen, L.G., (1993) J Chem Phys, 98, p. 10089; Essmann, U., Perera, L., Berkowitz, M.L., Darden, T., Lee, H., Pederson, L., (1995) J Chem Phys, 103, p. 8577; Hairer, E., Lubich, C., Wanner, G., (2002) Geometric Numerical Integration, 31. , Springer Series in Computational Mathematics; Springer-Verlag: Berlin; Aksimentiev, A., Schulten, K., (2005) Biophys J, 88, p. 3745; Hockney, R.W., Eastwood, J.W., (1981) Computer Simulation Using Particles, , McGraw-Hall: New York; Skeel, R.D., Tezcan, I., Hardy, D.J., (2002) J Comput Chem, 23, p. 673; Brandt, A., Lubrecht, A.A., (1990) J Comput Phys, 90, p. 348; Arnol'd, V.I., (1989) Mathematical Methods of Classical Mechanics, , Springer-Verlag: New York, 2nd ed; Reich, S., (1999) SIAM J Numer Anal, 36, p. 1549; Harvey, S.C., (1989) Proteins Struct Funct Genet, 5, p. 78; Dahlquist, G., Björck, Å., (1974) Numerical Methods, , Prentice Hall: Englewood Cliffs, NJ; Frenkel, D., Smit, B., (2002) Understanding Molecular Simulation from Algorithms to Applications, , Academic Press: San Diego, CA; Gear, C.W., (1971) Numerical Initial Value Problems in Ordinary Differential Equations, , Prentice-Hall: Englewood Cliffs, NJ; Tuckerman, M., Berne, B.J., Martyna, G.J., (1992) J Chem Phys, 97, p. 1990; Grubmüller, H., (1989), Master's thesis, Physik-Dept. der Tech. Univ., Munich, Germany; Bishop, T.C., Skeel, R.D., Schulten, K., (1997) J Comp Chem, 18, p. 1785; Ma, Q., Izaguirre, J.A., Skeel, R.D., (2003) SIAM J Sci Comput, 24, p. 1951; Kubo, R., Toda, M., Hashitsume, N., (1991) Statistical Physics II: Nonequilibrium Statistical Mechanics, , Springer: New York, 2nd ed; Brünger, A., Brooks, C.B., Karplus, M., (1984) Chem Phys Lett, 105, p. 495; Mishra, B., Schlick, T., (1996) J Chem Phys, 105, p. 299; Wang, W., Skeel, R.D., (2003) Mol Phys, 101, p. 2149; Park, S., Schulten, K., (2004) J Chem Phys, 120, p. 5946; Tuckerman, M., Liu, Y., Ciccotti, G., Martyna, G.J., (2001) J Chem Phys, 115, p. 1678; Bhandarkar, M., Brunner, R., Chipot, C., Dalke, A., Dixit, S., Grayson, P., Gullingsrud, J., Zhu, F., NAMD User's Guide Version 2.5, , http://www.ks.uiuc.edu/Research/namd/2.5/ug/ug.html; Feller, S.E., Zhang, Y., Pastor, R.W., Brooks, B.R., (1995) J Chem Phys, 103, p. 4613; Hoover, W.G., (1985) Phys Rev A, 31, p. 1695; Hoover, W.G., (1986) Phys Rev A, 34, p. 2499; Hoover, W.G., (1991) Computational Statistical Mechanics, , Elsevier: Amsterdam; Quigley, D., Probert, M.I.J., (2004) J Chem Phys, 120, p. 11432; Izrailev, S., Stepaniants, S., Isralewitz, B., Kosztin, D., Lu, H., Molnar, F., Wriggers, W., Schulten, K., (1998) Computational Molecular Dynamics: Challenges, Methods, Ideas, 4, p. 39. , Lecture Notes in Computational Science and Engineering; Deuflhard, P.; Hermans, J.; Leimkuhler, B.; Mark, A. E.; Reich, S.; Skeel, R. D., Eds.; Springer-Verlag: Berlin; Isralewitz, B., Baudry, J., Gullingsrud, J., Kosztin, D., Schulten, K., (2001) J Mol Graph Model, 19, p. 13. , Also in Protein Flexibility and Folding, Kuhn, L. A.; Thorpe, M. F., Eds.; Elsevier: New York; Isralewitz, B., Gao, M., Schulten, K., (2001) Curr Opin Struct Biol, 11, p. 224; Stone, J., Gullingsrud, J., Grayson, P., Schulten, K., (2001) 2001 ACM Symposium on Interactive 3D Graphics, p. 191. , Hughes, J. F.; Séquin, C. H., Eds.; ACM SIGGRAPH: New York; Grayson, P., Tajkhorshid, E., Schulten, K., (2003) Biophys J, 85, p. 36; Gullingsrud, J., Braun, R., Schulten, K., (1999) J Comp Phys, 151, p. 190; Sotomayor, M., Corey, D.P., Schulten, K., (2005) Structure, 13, p. 669; Craig, D., Gao, M., Schulten, K., Vogel, V., (2004) Structure, 12, p. 2049; Aksimentiev, A., Balabin, I.A., Fillingame, R.H., Schulten, K., (2004) Biophys J, 86, p. 1332; Zhu, F., Tajkhorshid, E., Schulten, K., (2004) Biophys J, 86, p. 50; Gullingsrud, J., Schulten, K., (2003) Biophys J, 85, p. 2087; Bayas, M.V., Schulten, K., Leckband, D., (2003) Biophys J, 84, p. 2223; Gao, M., Wilmanns, M., Schulten, K., (2002) Biophys J, 83, p. 3435; Jensen, M.Ø., Park, S., Tajkhorshid, E., Schulten, K., (2002) Proc Natl Acad Sci USA, 99, p. 6731; Kosztin, D., Izrailev, S., Schulten, K., (1999) Biophys J, 76, p. 188; Lu, H., Schulten, K., (1999) Proteins Struct Funct Genet, 35, p. 453; Stepaniants, S., Izrailev, S., Schulten, K., (1997) J Mol Mod, 3, p. 473; Izrailev, S., Crofts, A.R., Berry, E.A., Schulten, K., (1999) Biophys J, 77, p. 1753; Izrailev, S., Stepaniants, S., Baisera, M., Oono, Y., Schulten, K., (1997) Biophys J, 72, p. 1568; Isralewitz, B., Izrailev, S., Schulten, K., (1997) Biophys J, 73, p. 2972; Grubmüller, H., Heymann, B., Tavan, P., (1996) Science, 271, p. 997; Kosztin, D., Izrailev, S., Schulten, K., (1999) Biophys J, 76, p. 188; Torrie, G.M., Valleau, J.P., (1977) J Comput Phys, 23, p. 187; Roux, B., (1995) Comput Phys Commun, 91, p. 275; Schulten, K., Schulten, Z., Szabo, A., (1981) J Chem Phys, 74, p. 4426; Lu, H., Krammer, A., Isralewitz, B., Vogel, V., Schulten, K., (2000) Elastic Filaments of the Cell, p. 143. , Pollack, J.; Granzier, H., Eds.; Kluwer Academic/Plenum Publishers: New York, chap 1; Lu, H., Schulten, K., (2000) Biophys J, 79, p. 51; Jarzynski, C., (1997) Phys Rev Lett, 78, p. 2690; Jarzynski, C., (1997) Phys Rev e, 56, p. 5018; Liphardt, J., Dumont, S., Smith, S., Tinoco, I., Bustamante, C., (2002) Science, 296, p. 1832; Hummer, G., Rasaiah, J.C., Noworyta, J.P., (2001) Nature, 414, p. 188; Marcinkiewicz, J., (1939) Math Z, 44, p. 612; Park, S., Khalili-Araghi, F., Tajkhorshid, E., Schulten, K., (2003) J Chem Phys, 119, p. 3559; Kumar, S., Bouzida, D., Swendsen, R.H., Kollman, P.A., Rosenberg, J.M., (1992) J Comp Chem, 13, p. 1011; Boczko, E.M., Brooks III, C.L., (1993) J Phys Chem, 97, p. 4509; Shea, J.E., Brooks III, C.L., (2001) Annu Rev Phys Chem, 52, p. 499; Aksimentiev, A., Balabin, I.A., Fillingame, R.H., Schulten, K., (2004) Biophys J, 86, p. 1332; Villa, E., Balaeff, A., Mahadevan, L., Schulten, K., (2004) Multiscale Model Simul, 2, p. 527; Taylor II, R.M., (1998) VRPN: Virtual Reality Peripheral Network, , http://www.cs.unc.edu/Research/vrpn; Dachille, F., Qin, H., Kaufman, A., El-Sana, J., (1999) 1999 Symposium on Interactive 3D Graphics, p. 103; Cohen, J., Grayson, P., (2003) AutoIMD User's Guide, , http://www.ks.uiuc.edu/Research/vmd/plugins/autoimd; Den Otter, W.K., Briels, W.J., (1998) J Chem Phys, 109, p. 4139; Zwanzig, R.W., (1954) J Chem Phys, 22, p. 1420; Darve, E., Pohorille, A., (2001) J Chem Phys, 115, p. 9169; Hénin, J., Chipot, C., (2004) J Chem Phys, 121, p. 2904; Gao, J., Kuczera, K., Tidor, B., Karplus, M., (1989) Science, 244, p. 1069; Fleming, K.G., Ackerman, A.L., Engelman, D.M., (1997) J Mol Biol, 272, p. 266; Hénin, J., Pohorille, A., Chipot, C., (2005) J Am Chem Soc, 127, p. 8478; Allen, M.P., Tildesley, D.J., (1987) Computer Simulation of Liquids, , Oxford University Press: New York; Kalé, L.V., Krishnan, S., (1996) Parallel Programming Using C+ +, p. 175. , Wilson, G. V.; Lu, P., Eds.; MIT Press: Cambridge, MA; Kalé, L.V., (2002) LACSI, , Albuquerque, 2002; Brunner, R.K., Kalé, L.V., (2000) Parallel and Distributed Computing for Symbolic and Irregular Applications, p. 167. , World Scientific Publishing: Singapore; Phillips, J.C., Brunner, R., Shinozaki, A., Bhandarkar, M., Krawetz, N., Kale, L., Skeel, R.D., Schulten, K., (1998) Computational Molecular Dynamics: Challenges, Methods, Ideas, 4, p. 472. , Lecture Notes in Computational Science and Engineering; Deuflhard, P.; Hermans, J.; Leimkuhler, B.; Mark, A.; Reich, S.; Skeel, R. D., Eds.; Springer-Verlag: Berlin; Ousterhout, J., (1994) Tel and the Tk Toolkit, , Addison-Wesley: Reading, MA; Sugita, Y., Okamoto, Y., (1999) Chem Phys Lett, 314, p. 141; Kale, L.V., Zheng, G., Lee, C.W., Kumar, S., Future Generation Computer Systems Special Issue On: Large-Scale System Performance Modeling and Analysis, , in press; Petrini, F., Kerbyson, D.J., Pakin, S., (2003) Proceedings of the IEEE/ACM SC2003 Conference, , Technical Paper 301; IEEE Press: Piscataway, NJ; Phillips, J., Zheng, G., Kumar, S., Kale, L., (2002) Proceedings of the IEEE/ACM SC2002 Conference, , Technical Paper 277; IEEE Press: Piscataway, NJ; Hershko, A., Heller, H., Elias, S., Ciechanover, A., (1983) J Biol Chem, 258, p. 8206; Haas, A.L., Rose, I.A., (1982) J Biol Chem, 257, p. 10329; Hershko, A., Ciechanover, A., (1998) Annu Rev Biochem, 67, p. 425; Carrion-Vazquez, M., Li, H., Lu, H., Marszalek, P.E., Oberhauser, A.F., Fernandez, J.M., (2003) Nat Struct Biol, 10, p. 738; Fernandez, J.M., Li, H., (2004) Science, 303, p. 1674; Zhu, F., Tajkhorshid, E., Schulten, K., (2001) FEBS Lett, 504, p. 212; Jensen, M.Ø., Tajkhorshid, E., Schulten, K., (2001) Structure, 9, p. 1083; Tajkhorshid, E., Nollert, P., Jensen, M.Ø., Miercke, L.J.W., O'Connell, J., Stroud, R.M., Schulten, K., (2002) Science, 296, p. 525; Zhu, F., Tajkhorshid, E., Schulten, K., (2002) Biophys J, 83, p. 154; Roux, B., Schulten, K., (2004) Structure, 12, p. 1343; Tajkhorshid, E., Cohen, J., Aksimentiev, A., Sotomayor, M., Schulten, K., (2005) Bacterial Ion Channels and Their Eukaryotic Homologues, p. 153. , Martinac, B.; Kubalski, A., Eds.; ASM Press: Washington, DC; Jensen, M.Ø., Tajkhorshid, E., Schulten, K., (2003) Biophys J, 85, p. 2884; Zhu, F., Tajkhorshid, E., Schulten, K., (2004) Phys Rev Lett, 93, p. 224501; Lewis, M., Chang, G., Horton, N.C., Kercher, M.A., Pace, H.C., Schumacher, M.A., Brennan, R.G., Lu, P., (1996) Science, 271, p. 1247; Friedman, A.M., Fischmann, T.O., Steitz, T.A., (1995) Science, 268, p. 1721; Ptashne, M., (1992) A Genetic Switch, , Cell Press & Blackwell Scientific Publications: Cambridge, MA, 2nd ed; Müller-Hill, B., (1996) The Lac Operon, , Walter de Gruyter: New York; Balaeff, A., Koudella, C.R., Mahadevan, L., Schulten, K., (2004) Philos Trans R Soc Lond A, 362, p. 1355; Balaeff, A., Mahadevan, L., Schulten, K., (2004) Structure, 12, p. 123; http://www.rcsb.org/pdb; Edelman, L.M., Cheong, R., Kahn, J.D., (2003) Biophys J, 84, p. 1131; Bhandarkar, M., Budescu, G., Humphrey, W., Izaguirre, J.A., Izrailev, S., Kaié, L.V., Kosztin, D., Schulten, K., (1999) Proceedings of the SCS International Conference on Web-Based Modeling and Simulation, p. 242. , Bruzzone, A. G.; Uchrmacher, A.; Page, E. H., Eds.; SCS International, San Francisco: San Francisco, CA\",\"Schulten, K.; Beckman Institute, , Urbana, IL 61801, United States; email: kschulte@ks.uiuc.edu\",,,\"John Wiley and Sons Inc.\",,,,,01928651,,JCCHD,,\"English\",\"J. Comput. Chem.\",Review,\"Final\",\"All Open Access, Green\",Scopus,2-s2.0-27344436659\n\"Murata T.\",\"7402736947;\",\"Petri Nets: Properties, Analysis and Applications\",1989,\"Proceedings of the IEEE\",\"77\",\"4\",,\"541\",\"580\",,8097,\"10.1109/5.24143\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-0024645936&doi=10.1109%2f5.24143&partnerID=40&md5=28bca5d94299465032a93fced698f138\",\"Department of Electrical Engineering and Computer Science, University of Illinois, Chicago, IL 60680, United States\",\"Murata, T., Department of Electrical Engineering and Computer Science, University of Illinois, Chicago, IL 60680, United States\",\"This is an invited tutorial-review paper on Petri nets-a graphical and mathematical modeling tool. Petri nets are a promising tool for describing and studying information processing systems that are characterized as being concurrent, asynchronous, distributed, parallel, nondeterministic, and/or stochastic. The paper starts with a brief review of the history and the application areas considered in the literature. It then proceeds with introductory modeling examples, behavioral and structural properties, three methods of analysis, subclasses of Petri nets and their analysis. In particular, one section is devoted to marked graphs- the concurrent system model most amenable to analysis. In addition, the paper presents introductory discussions on stochastic nets with their application to performance modeling, and on highlevel nets with their application to logic programming. Also included are recent results on reachability criteria. Suggestions are provided for further reading on many subject areas of Petri nets. © 1989 IEEE\",,\"Mathematical Models; Systems Analysis; Concurrent System Model; Logic Programming; Petri Nets; Reachability Criteria; Stochastic Nets; Mathematical Techniques\",,,,,\"National Science Foundation, NSF: DMC-8510208\",\"Manuscript received May 20, 1988; revised November 4, 1988. This work was supported by the National Science Foundation under Grant DMC-8510208. The author is with the Department of Electrical Engineering and Computer Science, University of Illinois, Chicago, IL 60680, USA. IEEE Log Number 8926700.\",\"Petri, C.A., Kommunikation mitAutomaten (1962) Bonn:lnsti-tut fiir Instrumentelle Mathematik, Schriften des MM, (3). , Also, English translation, “Communication with Automata.” New York: Griffiss Air Force Base. Tech. Rep. RADC-TR-65–377, vol. 1, Suppl. 1, 1966; Petri, C.A., Fundamentals of a theory of asynchronous information flow (1963) Proc. IFIP Congress, 62, pp. 386-390; Holt, A.W., Saint, H., Shapiro, R., Warshall, S., (1968) Final Report of the Information Systems Theory Project, Tech. Rep. RADC-TR-68–305., , New York: Griffiss Air Force Base, Sept; Holt, A.W., Commoner, F., Events and conditions (1970) Princeton, pp. 3-52. , N.J., Applied Data Research Inc., Information System Theory Project, Also, Record Project MAC Conf. Concurrent Systems Parallel Computation, 1970; Holt, A.W., Introduction to occurrence systems (1971) In-4sso-ciative Information Techniques, pp. 175-203. , L. Jacks, Ed. New York: American Elsevier; Shapiro, R.M., Saint, H., A new approach to optimization of sequencing decisions (1970) Ann. Rev. Automatic Programming, 6 (5), pp. 257-288; Commoner, F., Holt, A.W., Even, S., Pnueli, A., Marked directed graphs (1971) J. Comput. Syst. Sci., 5, pp. 511-523; Commoner, F., (1972) Deadlocks in Petri nets, , Wakefield, Applied Data Research, Inc., Report #CA-7206–2311; Dennis, J.B., (1970) Record Project MAC Conf. Concurrent Systems and Parallel Computation, p. 199. , June; Peterson, J.L., (1981) Petri Net Theory and the Modeling of Systems., , Englewood Cliffs, N): Prentice-Hall, Inc; Reisig, W., Nets, P., (1985) EATCS Monographs on Theoretical Computer Science, 4. , New York: Springer-Verlag; Agerwala, T., Putting Petri nets to work (1979) Computer, 12 (12), pp. 85-94. , Dec; Johnsonbaugh, R., Murata, T., Petri nets and marked graphs-mathematical models of concurrent computation (1982) The American Math. Monthly, 89 (8), pp. 552-566. , Oct; Peterson, J.L., Petri nets (1977) ACM Computing Surveys, 9 (3), pp. 223-252. , Sept; Brauer, W., (1980) Net Theory and Applications, Lecture Notes in Computer Science (LNCS), 84. , New York: Springer-Verlag, out of print; Brauer, W., Reisig, W., Rozenberg, G., (1987) Petri Nets: Central Models and Their Properties, Lecture Notes in Computer Science (LNCS), 254. , New York: Springer-Verlag; Brauer, W., Reisig, W., Rozenberg, G., (1987) Petri Nets: Applications and Relationships to Other Models of Concurrency, Lecture Notes in Computer Science (LNCS), 255. , New York: Springer-Verlag; Petri, C.A., Concurrency theory LNCS, 254. , [16]; Petri, C.A., Forgotten topics” of net theory LNCS, 255. , [17]; Girault, C., Reisig, W., (1982) Application and Theory of Petri Nets, Selected Papers from the First and Second European Workshop on Applications and Theory of Petri Nets, Informatik-Fachberichte, Band 52., , New York: Springer-Verlag; Pagnoni, A., Rozenberg, G., (1982) Applications and Theory of Petri Nets, , Selected Papers from the 3rd European Workshop on Applications and Theory of Petri Nets, Varenna, Italy, Sept. Informatik-Fachberichte, Band 66. New York: Springer-Verlag, 1983, out of print; Rozenberg, G., Advances in Petri Nets 1984 (1985) Lecture Notes in Computer Science, 188. , New York: Springer-Verlag; Rozenberg, G., Advances in Petri Nets 1985 (1986) Lecture Notes in Comptuer Science, 222. , New York: Springer-Verlag; Rozenberg, G., Advances in Petri Nets 1987 (1987) Lecture Notes in Computer Science, 266. , New York: Springer-Verlag; Voss, K., Genrich, H.J., Rozenberg, G., Advances in Petri Nets (1987) Concurrency, Nets, Special volume in the series, , New York: Springer-Verlag; Dress, S., Gomm, D., Plunneke, H., Reisig, W., Walter, R., Bibliography of Petri Nets LNCS, 266, pp. 319-451. , [24]; Petri Net Newsletters, , (published three times a year by Gesellschaft fiir Informatik, Postfach 1669, D-5300 Bonn 1, W. Germany, from which subscription applications forms can be obtainedJ; (1985) Proc. Int. Workshop Timed Petri Nets, , Torino, Italy, July 1–3, 1985, 307 pages; (1987) Proc. Int. Workshop Petri Nets and Performance Models, p. 184. , Madison, Wl, August 24–26, 1987; Ajmone Marsan, M., Balbo, G., Conte, G., (1987) Performance Models of Multiprocessor Systems., , Cambridge MA: The MIT Press; Ajmone Marsan, M., Conte, G., Balbo, G., A class of generalized Petri nets for the performance evaluation of multiprocessor systems (1984) ACM Trans. Comput. Sys., 2 (2), pp. 93-122. , May; Ajmone Marsan, M., Chiola, G., On Petri nets with deterministic and exponential transition firing times (1987) LNCS, 266, pp. 132-145. , [24]; Ammar, H.H., Huang, Y.F., Liu, R.W., Hierarchical models for systems reliability, maintainability, and availability (1987) IEEE Trans. Circuits Syst, 34 (6), pp. 629-638. , June; Dugan, J.B., Trivedi, K.S., Geist, R.M., Nicola, V.F., Extended stochastic Petri nets: Applications and analysis (1984) PERFORMANCE ′84, pp. 507-519. , Models of Comput. System Performance, in Proc. 10th Int. Symp., Paris, E. Gelenbe, Ed. Amsterdam: Elsevier; Garg, K., An approach to performance specification of communication protocols using timed Petri nets (1985) IEEE Trans. Software Eng., 11 SE (10), pp. 1216-1225. , Oct; Holiday, M.A., Venon, M.K., A generalized timed Petri net model for performance analysis (1987) IEEE Trans. Software Eng., 13 SE (12), pp. 1297-1310. , Dec; Hass, P.J., Shedler, G.S., Stochastic Petri net representation of discrete event simulation (1989) the special section in Petri net performance models in IEEE Trans. Software Eng., 15 (4), pp. 381-393. , Apr. an earlier version in [29]; Magott, J., Performance evaluation of concurrent systems using Petri nets (1984) Inform. Processing Lett., 18 (1), pp. 7-13; Meyer, J.F., Movaghar, A., Sanders, W.H., Stochastic activity networks: structure behaviour and application (1985) Proc. Int. Workshop Timed Petri Nets, pp. 106-115. , Torino, Italy, July 1-3, 1985; Molloy, M.K., Performance analysis using stochastic Petri nets IEEE Trans. Computers, 31 C (9), pp. 913-917; Molloy, M.K., Discrete time stochastic Petri nets (1985) IEEE Trans. Software Eng., 11 SE (4), pp. 417-423. , April; Murata, T., Use of resource-time product concept to derive a performance measure of timed Petri nets (1985) Proc. 1985 Midwest Symp. Circuits Systems, , Aug. 19–20; Noe, J.D., Nutt, G.J., Macro E-nets for representation of parallel systems (1973) IEEE Trans. Comp., 22 TC (8), pp. 718-727. , Aug; Onaga, K., Tani, K., Chan, S.P., Modeling and scheduling of resource-sharing concurrent processes in networks of recurrent multiprograms and multi-PERTs (1981) Proc. 14th Asilomar Conf. Circuits, pp. 168-172. , Systems, Computers, D.E. Kirk, Ed; Ramamoorthy, C.V., Ho, G.S., Performance evaluation of asynchronous concurrent systems using Petri nets (1980) IEEE Trans. Software Eng., 6 SE (5), pp. 440-449. , Sept; Ramchandani, C., (1974) Analysis of asynchronous concurrent systems by timed Petri nets, , Cambridge, MA: MIT, Project MAC, Tech. Rep. 120, Feb; Shapiro, S.D., A stochastic Petri net with applications to modelling occupancy times for concurrent task systems (1979) Networks, 9 (4), pp. 375-379; Sifakis, J., Use of Petri nets for performance evaluation (1978) Acta Cybernet., 4 (2), pp. 185-202; Tani, K., Murata, T., Scheduling parallel computations with storage constraints (1978) Proc. 12th Annual Asilomar Conf. Circuits, pp. 736-743. , Systems, Computers, Nov; Zuberek, W.M., M-timed Petri nets, priorities, preemptions, and performance evaluation of systems (1986) Lecture Notes in Computer Science, 222, pp. 478-498. , New York: Springer-Verlag; Berthelot, G., Terrat, R., Petri nets theory for the correctness of protocols (1982) IEEE Trans. Commun., 30 COM (12), pp. 2497-2505. , Dec; Bochmann, G., Gecsel, J., A unified method for the specification and verification of protocols (1977) Information Processing 77, pp. 229-234. , IFIP, B. Gilchrist, Ed. Amsterdam: North-Holland; Diaz, M., Azema, P., Petri net based models for the specification and validation of protocols (1985) Lecture Notes in Computer Science, 188, pp. 101-121. , New York: Springer-Verlag; Diaz, M., Modeling and analysis of communication and cooperation protocols using Petri net based models (1982) Corn-put Networks, 6, pp. 419-441. , Dec; Florin, G., Natkin, S., Evaluation based upon stochastic Petri nets of the maximum throughput of a full duplex protocol (1982) Informatik-Fachberichte 52 [20]., pp. 208-288. , New York: Springer-Verlag; Juanole, G., Algayres, B., Dufau, J., On communication protocol modeling and design LNCS, 188, pp. 267-287. , [22]; Lopez, I., The use of GALI LEO to represent and analyze telecommunications protocols (1981) Proc. 2nd Europ. Workshop Appl. Theory Petri Nets, pp. 377-410. , Sept; Merlin, P.M., A methodology for the design and implementation of communication protocols (1976) IEEE Trans. Commun., 24 COM (6), pp. 614-621. , June; Merlin, P.M., Farber, D.J., Recoverability of communication protocols: I mplications of a theoretical study (1976) IEEE Trans. Communs., 24 COM (9), pp. 1036-1043. , Sept; Razouk, R., Estrin, G., Modeling and verification of communication protocols in SARA: The X.21 interface (1980) IEEE Trans. Comput., 29 C (12), pp. 1038-1052. , Dec; Symons, F.J.W., Development and application of Petri net based techniques in Australia (1987) Concurrency and Nets [25], pp. 497-510; Wheeler, G.R., Wilbur-Ham, M.C., Billington, J., Gil- mour, J.A., Protocol analysis using numerical Petri nets (1986) lecture Notes in Computer Science, 222, pp. 435-452. , [23]; Azema, P., Berthomieu, B., The design and validation by Petri nets of a mechanism for the invocation of remote servers (1980) Information Processing, 80, pp. 599-604. , S.H. Lavington, Ed; Azema, P., Juanole, G., Sanchis, E., Montbernard, M., Specification and verification of distributed systems using PROLOG interpreted Petri nets (1984) Proc. 7th Int. Conf. Software Eng., pp. 510-518. , Orlando, USA, 1984; Estrin, G., Fenchel, R.S., Razouk, R.R., Vernon, M.K., SARA (System ARchitects Apprentice): Modeling, analysis, and simulation support for design of concurrent systems (1986) IEEE Trans. Software Eng., 12 SE, pp. 293-311. , Feb; Kramer, B., Stepwise construction of non-sequential software system using a net-based specification language LNCS, 188, pp. 307-330. , [22]; Mandrioli, D., Zicari, R., Ghezzi, C., Tisato, F., Modeling the Ada task system by Petri nets (1985) Comput. Lang., 10 (1), pp. 43-61; Mekly, L.J., Yau, S.S., Software design representation using abstract process networks (1980) IEEE Trans. Software Eng., 6 SE (5), pp. 420-435. , Sept; Murata, T., Shenker, B., Shatz, S.M., Detection of Ada static deadlocks using Petri net invariants (1989) IEEE Trans. Software Eng., 15 (3), pp. 314-326. , Mar; Shatz, S.M., Cheng, W.K., Static analysis of Ada programs using the Petri net model (1985) Proc. ISCAS 85, pp. 719-746; Yau, S.S., Caglayan, M.U., Distributed software system design representation using modified Petri nets (1983) IEEE Trans. Software Eng., 9 SE (6), pp. 733-745. , Nov; Dugan, J.B., Ciardo, G., Stochastic Petri net analysis of a replicated file system (1989) [29], also in the special section of Petri net performance models in IEEE Trans. Software Eng., 15 (4), pp. 394-401. , Apr; Genrich, H.J., Lautenbach, K., The analysis of distributed systems by means of predicate/transition-nets (1979) lecture Notes in Computer Science, 70, pp. 123-146. , Semantics of Concurrent Computation. New York: Springer-Verlag; Ozsu, M.T., Modeling and analysis of distributed database concurrency control algorithms using an extended Petri net formalism (1985) IEEE Trans. Software Eng., 11 SE (10), pp. 1225-1240. , Oct; Voss, K., Using predicate/transition-nets to model and analyze distributed database systems (1980) IEEE Trans. Software Eng., 6 SE (6), pp. 539-544. , Nov; Best, E., COSY: Its relation to nets and to CSP LNCS, 255. , [17]; Baranov, S.I., Zhuravina, L.N., Peshanskii, V.A., Method of representing parallel flow charts of algorithms by sets of sequential flowcharts (1984) (in Russian), English translation in Autom. Control Comput. Sci, 18 (5), pp. 71-78; Genrich, H.J., Thiagarajan, P.S., A theory of bipolar synchronization schemes (1984) Theoret. Comput. Sci., 30, pp. 241-318; Goltz, U., Mycroft, A., On the relationship of CCS and Petri nets (1984) Lecture Notes in Computer Science, 172, pp. 196-208. , Automata, Languages and Programming, J. Paredaens, Ed. New York: Springer-Verlag; Goltz, U., Reisig, W., CSP-programs as nets with individual tokens (1985) Lecture Notes in Computer Science, 188, pp. 169-196. , [22]; Karp, R.M., Miller, R.E., Properties of a model for parallel computations: Determinancy, term i nation, queuing (1966) S/AM I. Applied Math., 14 (6), pp. 1390-1411. , Nov; Karp, R.M., Parallel program schemata (1969) J. Comput. Syst. Sci., 3 (2), pp. 147-195. , May; Kasai, T., Miller, R.E., Homomorpisms between models of parallel computation (1982) 7. Comput. Sys. Sci., 25, pp. 285-331. , Dec; Keller, R.M., Parallel program schemata and maximal parallelism, I. Fundamental results (1973) J. ACM, 20 (3), pp. 514-537. , July; Keller, R.M., Parallel program schemata and maximal parallelism, II. Construction of closures (1973) J. ACM, 20 (4), pp. 696-710. , Oct; Keller, R.M., Formal verification of parallel programs (1976) Comm. ACM, 19 (7), pp. 371-384; Lauer, P.E., Campbell, R.H., Formal semantics of a class of highlevel primitives for coordinating concurrent processes (1975) Acta Informatica, 5 (4), pp. 297-332; Lautenbach, K., Schmid, H.A., Use of Petri nets for proving correctness of concurrent process systems (1974) Proc. IFIP Congress 74, pp. 187-191; Lautenbach, K., Thiagarajan, P.S., Analysis of a resource allocation problem using Petri nets (1979) Proc. 1st European Conf. Parallel Distributed Processing, pp. 260-266. , J.C. Syre, Ed; Miller, R.E., A comparison of some theroretical models of parallel computation (1973) IEEE Trans. Comp., 22 TC (8), pp. 710-717; Miller, R.E., Some relationships between various models of parallelism and synchronization (1974) Yorktown Heights, , New York, IBM T.J. Watson Research Center, Rep. RC-5074, Oct; Murata, T., Relevance of network theory to models of distributed/parallel processing (1980) J. Franklin Institute, 310 (1), pp. 41-50; Alia, H., Ladet, P., Martinez, J., Silva-Suarez, M., Modelling and validation of complex systems by coloured Petri nets; application to a flexible manufacturing system (1985) Lecture Notes in Computer Science, 188, pp. 15-31. , New York: Springer-Verlag; Bruno, G., Marchetto, G., Process-translatable Petri nets for the rapid prototyping of process control systems (1986) IEEE Trans. SoftwareEng., 12 SE (2), pp. 346-357. , Feb; Crockett, D., Desrochers, A., Dicesare, F., Ward, T., Implementation of a Petri net controller for a machine workstation (1987) Proc. 1987 IEEE Int. Conf. Robotics Automat, pp. 1861-1867; Demmou, H., Courvoisier, M., Thuriot, E., Valette, R., A new synchronization scheme for microprocessor based realtime control systems (1983) Proc. 1983 Conf. Ind. Electron., pp. 237-242; Lipp, H.P., Application of a fuzzy Petri net for controlling complex industrial processes (1983) IFAC Proc, pp. 471-477. , Series 6, Pergamon Press, July; Martinez, J., Alia, H., Silva, M., Petri nets for the specification of flexible manufacturing systems (1986) Modeling and Design of Flexible Manufacturing Systems., pp. 389-406. , New York: Elsevier Science Publ; Murata, T., Komoda, N., Matsumoto, K., Haruna, K., A Petri net-based controller for flexible and maintainable sequence control and its application in factory automation (1986) IEEE Trans. Ind. Electron, 33 (1), pp. 1-8; Murata, T., Silva (organizers), M., (1987) IEEE Int. Conf. Robotics Automat, pp. 999-1018. , special sessions on Petri Nets and Flexible Manufacturing in Proc. 1987, and 1160-1185; Ichikawa, A., Hiraishi, K., Analysis and control of discrete event systems represented by Petri nets (1987) Lecture Notes in Control and Information Sciences, 103, pp. 115-134. , Discrete Event Systems: Models and Applications, New York: Springer-Verlag; Kodama (organizer), S., (1985) Proc. 1985 IEEE Int. Symp. Circuits Syst., pp. 471-498. , special sessions on Modeling, Analysis, and Control of Discrete Event Systems: Net Theoretical Approach, in, Kyoto, Japan, pp. 719-746, 917-940, June; Krogh, B.H., Controlled Petri nets and maximally permissive feedback logic (1987) Proc. 25 Allerton Conf. Communication, pp. 317-326. , Control and Computing, Oct; Holiday, M.A., Vernon, M.K., Performance estimates for multiprocessor memory and bus interference (1987) IEEE Trans. Comput., 36 C, pp. 76-85. , Jan; Kluge, W.E., Lautenbach, K., The orderly resolution of memory access conflicts among competing channel processes (1982) IEEE Trans. Comput, 31 C (3), pp. 194-207. , March; Kluge, W., Reduction, data flow and control flow models of computation (1987) LNCS, 255, pp. 466-498. , [17]; Kung, S.Y., Lo, S.C., Lewis, P.S., Timing analysis and design optimization of VLSI dataflow arrays,” in Proc. 1986 Int. Conf. Parallel Processing, also, a revised version, “Performance analysis and optimization of VLSI dataflow arrays (1987) 7. Parallel and Distributed Computing, 4 (6), pp. 592-618. , Dec; Smigelski, T., Murata, T., Sowa, M., A timed Petri net model and simulation of dataflow computer (1985) Proc. Int. Workshop Timed Petri Nets, pp. 56-63. , Torino, Italy, July 1-3, 1985; Leveson, N.G., Stolzy, J.L., Safety analysis using Petri nets (1987) IEEE Trans. Software Eng., 13 SE (3), pp. 386-397. , March; Lu, M., Zhang, D., Murata, T., Stochastic net model for self-stability measures of fault-tolerant clock synchronization (1987) Proc. Int. Workshop Petri Nets and Performance Models, pp. 104-110; Kumagai, S., Shiizuka, H., Kodama, S., Optimal realization of fault-tolerant decision-free concurrent systems (1985) Proc. 28th Midwest Symposium Circuits and Systems, pp. 253-256; Paranjpe, S.K., Ektare, A.B., Mital, D.P., Fault diagnosis of alignment networks using Petri nets (1984) Int. J. Electron, (GB), 56 (3), pp. 365-370. , March; Sifakis, J., Realization of fault-tolerant systems by coding Petri nets (1979) J. Design Automation and Fault Tolerant Computing, Ill (1), pp. 93-107; Silva, M., Velilla, S., Error detection and correction on Petri net models of discrete events control systems (1985) Proc. 1985 IEEE Int. Symposium Circuits and Systems, pp. 921-924; Courvoisier, M., Valette, R., Bigou, J.M., Esteban, P., A programmable logic controller based on a high level specification tool (1983) Proc. 1983 Conf. Ind. Electron., pp. 174-179; Distante, F., A Petri net matrix approach in VLSI functional testing (1985) Microprocessing and Microprogramming, 16 (2), p. 194; Ramming, F.J., Hierarchical modulator description of VLSI systems (1983) Workshop Report, pp. 112-116. , VLSI and Software Eng. Workshop, Silver Spring, MD, USA, IEEE Computer Society Press; Sheridan, P.B., Haibt, L.M., Nelson, R.A., (1983) Casting Boolean logic arrays into Petri nets, , IBM Research Rep., RC 10130, (45036), IBM T.J. Watson Research Center, New York, Aug; Silva, M., Velilla, S., Programmable logic controllers and Petri nets: A comparative study (1982) IFAC Software for Computer Control, pp. 83-88. , Madrid, Spain, G. Ferrate, E.A. Puente, Eds. Oxford, England, Pergamon; Valette, R., Courvoisier, M., Begou, J.M., Albukerque, J., Petri net based programmable logic controllers (1983) Proc. 1st Int. IFIP Conf.: Comp. Appl. in Production and Engineering, pp. 103-116; Dennis, J.B., Modular, asynchronous control structures for a high performance processor (1970) Proc. Project MAC Conference, pp. 55-80; Dennis, J.B., Patil, S.S., Speed independent asynchronous circuits (1971) Proc. 4th Hawaii Int. Conf. Syst. Sci., pp. 55-58; Jump, J.R., Thiagarajan, P.S., On the equivalence of asynchronous control structures (1972) Proc. 13th Annual Switching and Automata Theory Symp., pp. 212-223. , Oct; Jump, J.R., Asynchronous Control Arrays (1974) IEEE Trans. Comput, 23 TC (10), pp. 1020-1029. , Oct; Jump, J.R., Thiagarajan, P.S., On the interconnection of asynchronous control structures (1975) J. ACM, 22 (4), pp. 596-612. , Oct; Misunas, D.P., Petri nets and speed independent design (1973) Comm. ACM, 76 (8), pp. 474-481; Patil, S.S., Coordination of asynchronous events (1970) Mass. Inst, , of Tech., Project MAC, Tech. Rep. 72, June; Patil, S.S., An asynchronous logic array (1975) Mass. Inst, of Tech., , Project MAC, Comp. Struct. Group Memo 111–1, Feb; Yoeli, M., Specification and verification of asynchronous circuits using marked graphs (1987) Concurrency and Nets [25], pp. 605-622; Baer, J.L., Ellis, C.A., Model design and evaluation of a compiler for a parallel processing environment (1977) IEEE Trans. Software Eng., 3 SE (6), pp. 394-405. , Nov; Noe, J.D., A Petri net model of the CDC 6400 (1971) Proc. ACM/ SIGOPS Workshop on Systems Performance Evaluation, pp. 362-378; De Cindio, F., De Michelis, G., Simone, C., GAMERU: A language for the analysis and design of human communication pragmatics within organizational systems (1987) LNCS, 266, pp. 21-44. , [24]; Ellis, C.A., Nutt, G.J., Office information systems and computer science (1980) Computing Surveys, 12 (1), pp. 27-60. , March; Holt, A.W., Coordination technology and Petri nets (1986) Lecture Notes in Computer Science, 222, pp. 278-296. , [23]; Zisman, M.D., (1977) Representation, specification and automation of office procedures, , Philadelphia, PA.: University of Pennsylvania, Wharton School, Department of Decision Sciences, Ph.D. Thesis, Sept; Crespi-Reghizzi, S., Mandrioli, D., Petri nets and szilard languages (1977) Information and Control, 33 (2), pp. 177-192. , Feb; Crespi-Reghizzi, S., Some algebraic properties of Petri nets (1976) Alta Frequenza, 45 (2), pp. 130-137. , Feb; Hack, M., Petri net languages (1975) Comp. Struct. Group Memo 124, , Project MAC, MIT; Mandrioli, D., A note on Petri net languages (1977) Information and Control, 34 (2), pp. 169-171; Peterson, J.L., Computation sequence sets (1976) J. Comput. Syst. Sci., 13 (1), pp. 1-24. , Aug; Mazurkiewicz, A., Trace theory (1987) LNCS, 255, pp. 279-324. , [17]; Rozenberg, G., Verraedt, R., Subset languages of Petri nets part II: the relationship to string languages and normal forms (1983) Theoret. Comput. Sci., 26, pp. 301-326; Darlington, J.L., A net based theorem prover for program verification and synthesis (1979) Gesellschaft fur Math, und DatenverarbeitungmbH Bonn, , Interner Berichtdes 1ST3/79 Dez; Genrich, H.J., Thieler-Mevissen, G., The calculus of facts (1976) Mathematical Foundations of Computer Science 7976, pp. 588-595. , A. Mazurkiewicz, Ed. New York: Springer-Verlag; Giordana, A., Saitta, L., Modeling production rules by means of predicate transition networks (1985) Inform. Sci., 35, pp. 1-41; Lautenbach, K., On logical and linear dependencies (1985) Gesellschaft fur Math, und Datenverarbeitung mbH Bonn, , Arbeitspapiere der GMD Nr. 147, March; Murata, T., Matsuyama, K., Inconsistency check of a set of clauses using Petri net reductions (1988) J. Franklin Institute, 325 (1), pp. 73-93; Murata, T., Zhang, D., A predicate-transition net model for parallel interpretation of logic programs (1988) IEEE Trans. Software Eng., 14 (4), pp. 481-497. , April; Peterka, G., Murata, T., Proof procedure and answer extraction in Petri net model of logic programs (1989) IEEE Trans. Software Eng., 15 (2), pp. 209-217. , Feb; Thieler-Mevissen, G., The Petri net calculus of predicate logic (1976) St. Augustin: Gesellschaft fur Mathematik und Datenverarbeitung Bonn, , Interner Bericht ISF-76–09; Ajmone Marsan, M., Chiola, G., Fumagali, A., An accurate performance model of CSMA/CD bus LAN (1987) LNCS, 266, pp. 146-161. , [24]; Gressier, E., A stochastic Petri net model for Ethernet (1985) Proc. Int. Workshop on Timed Petri Nets, pp. 296-303. , Torino, Italy, July 1-3, 1985; Voss, K., A net model of a local area network protocol (1984) Lecture Notes in Computer Science, 188, pp. 413-437. , Advances in Petri Nets New York: Springer-Verlag, 1985; Meldman, J.A., A Petri-net representation of civil procedure (1978) IDEA: J. LawTechnol., 19 (2), pp. 123-148; van Biljon, W.R., Extending Petri nets for specifying man-machine dialogues (1988) Int. J. Man-Machine Studies, 28 (4), pp. 437-455; Oberquelle, H., Kupka, I., Maass, H., A view of human-machine communication and cooperation (1983) Int. I. Man-Machine Studies, 19, pp. 309-333; Stoica, N., Roth, G., Neuronal networks modelled by Petri type nets with controllers (1986) Proc. 12th IFIP Conf, pp. 923-932. , Budapest, in tecture Nofes in Control Inf. Sci; Zargham, M.R., Tyman, M., Neural Petri nets (1985) Proc. Int. Workshop Timed Petri Nets, pp. 72-77. , Torino, Italy; Brofferio, S.C., A Petri net control unit for highspeed modular signal processors (1987) IEEE Trans. Commun., 35 C (6), pp. 577-583. , June; Nouta, R., Simula, O., On the use of modified Petri nets for multiprocessor realization of digital filters (1978) Circuit Theory and Design, pp. 315-319. , G.S. Moschytz, J. Nierynch, Eds., St. Saphorin, Georgi; Zuberek, W.M., Application of timed Petri nets to analysis of multiprocessor realizations of digital filters (1982) Proc. 25th Midwest Symp. Circuits and Systems, pp. 134-139; Tabak, D., Levis, A.H., Petri net representation of decision models (1985) IEEE Trans. Syst. Man, Cybern., 15 SMC (6), pp. 812-818. , Nov-Dec; Feldbrugge, F., Jensen, K., Petri net tool overview (1986) LNCS, 255, pp. 20-61; Billington, J., Wheeler, G.R., Wilbur-Ham, M.C., PROTEAN: A High-level Petri net tool for the specification and verification of communication protocols (1988) IEEE Trans. Software Eng., 14 (3), pp. 301-316. , March; Chiola, G., A software package for the analysis of generalized stochastic Petri net models (1985) Proc. Int. Workshop Timed Petri Nets, pp. 136-143. , Torino, Italy, July 1-3, 1985; Dugan, J.B., Bobbio, A., Ciardo, G., Trivedi, K.S., The design of a unified package for the solution of stochastic Petri net models (1985) Proc. Workshop Timed Petri Nets, pp. 6-13. , Torino, Italy, July 1-3, 1985; Le Mer, E., OVIDE: A software package for verifying and validating Petri nets (1983) Software for Computer Control, pp. 255-260. , (Proc. Third IFAC/IFIP Symposium, Madrid), G. Ferrate, E.A. Puente, Eds. Oxford: Pergamon Press; Martinez, J., Silva, M., A package for computer design of concurrent logic control systems (1982) Software for Computer Control (Proc. Third IFAC/IFIP Symposium, pp. 243-248. , Madrid, Oct. 5-8, C. Ferrate, E.A. Puente, Eds. Oxford: Pergamon Press, 1983; Molloy, M.K., A CAD tool for stochastic Petri nets (1986) Proc. 1986 Fall Joint Comp. Conf., pp. 1082-1091; Holliday, M.A., Vernon, M.K., The GTPN analyzer: numerical methods and user interface (1986) Proc. 1986 Fall joint Computer Conf., pp. 1099-1105; Devillers, R., The semantics of capacities in P/T nets: A first look (1985) Proc. 6th European Workshop Appli. Theory Petri Nets, pp. 171-190. , Espoo, Finland; Petri, C.A., Concurrency as a basis of systems thinking (1978) St. Augustin: Gesellschaft fur Mathematik und Datenverarbeitung Bonn, , Interner Bericht ISF-78–06, Sept; Agerwala, T., A complete model for representing the coordination of asynchronous processes (1974) Baltimore: John Hopkins University, , Hopkins Computer Science Program, Res. Rep. No. 32, July; Kosaraju, S.R., Decidability of reachability in vector addition systems (1982) Proc. 14th Annual ACM Symp. Theory Computing, pp. 267-281. , San Francisco, May 5-7, 1982; Mayr, E.W., An algorithm for the general Petri net reachability problem (1984) SIAM, J. Comput., 13 (3), pp. 441-460. , Aug; Hack, M., (1975) Decidability questions for Petri nets, , Cambridge, Mass., MIT, Dept. Electrical Engineering, Ph.D. Thesis, Dec; Hack, M., The equality problem for vector addition systems is undecidable (1976) Theoret. Comput. Sci., 2, pp. 77-95; Lautenbach, K., Liveness in Petri nets (1975) St. Augustin, , Gesellschaft fur Mathematik und Datenverarbeitung Bonn, Interner Bericht ISF-75–02.1; Silva, M., (1985) Petri Nets in Automation and Computer Engineering., , Madrid, Spain, Editorial AC, (in Spanish) English translation to be published by Kluwer Academic Press, Hingham, MA, 1990 (plannedJ; Landweber, L.H., Robertson, E.L., Properties of conflict free and persistent Petri nets (1978) J. ACM, 25 (3), pp. 352-364. , July; Petri, C.A., Interpretations of net theory (1976) St. Augustin: Gesellschaft fur Mathematik und Datenverarbeitung Bonn, , Interner Bericht ISF-75–07, Second Edition Dez; Murata, T., Wu, Z., Fair relation and modified synchronic distances in a Petri net (1985) J. Franklin Inst., 320 (2), pp. 63-82. , Aug; Genrich, H.J., Lautenbach, K., Thiagarajan, P.S., Elements of general net theory (1980) Lecture Notes in Computer Science, 84, pp. 21-163. , [15]; Goltz, U., Chong-Yi, Y., Synchronic structure-A tutorial (1986) Lecture Notes in Computer Science, 222, pp. 233-252. , [23]; Silva, M., Toward a synchrony theory for P/T nets (1987) Concurrency and Nets [25], pp. 435-460; Suzuki, I., Kasami, T., Three measures for synchronic dependence in Petri nets (1983) Acta Informatica, 19 (4), pp. 325-338; Leu, D., Silva, M., Colom, J.M., Murata, T., Interrelationships among various concepts of fairness for Petri nets (1988) Proc. 31th Midwest Symposium Circuits and Systems; Best, E., Fairness and conspiracies (1984) Inform. Process. Lett. W., pp. 215-220. , New York: North-Holland; Carstensen, H., Valk, R., Infinite behaviour and fairness in Petri nets (1985) Lecture Notes, in Computer Science, 188, pp. 83-100. , [22]; Francez, N., (1986) Fairness., , New York: Springer-Verlag; Pagnoni, A., A fair competition between two or more partners (1982) Informatik-Fachberichte 52 [20], pp. 327-337; Queille, J.P., Sifakis, J., Fairness and related properties in transition systems-A temporal logic to deal with fairness (1983) Acta Informatica, 19, pp. 195-220; Silva, M., Murata, T., (1986) B-fairness and structural B-fairness in Petri net models of concurrent systems, , Tech. Rep. No. UIC-EECS-86–10, Univ. of Illinois at Chicago, June; Wu, Z., Murata, T., Use of Petri nets for distributed control of fairness in concurrent systems (1984) Proc. First Conf. Computers Applications, pp. 84-91. , Peking, 1984; Wu, Z., A Petri net model of a starvation-free solution to the dining philosopher's problem (1983) IEEE Workshop on Languages for Automation, pp. 192-195. , Chicago, November 7-9, 1983; Valk, R., Infinite behaviour and fairness (1987) LNCS, 254, pp. 377-396. , [16]; Leu, D., Murata, T., Silva, M., Maximum firing deviation and fair relations in Petri nets (1986) Proc. 1986 IEEE Int. Symp. Circuits Syst., pp. 1008-1010. , May; Murata, T., State equation, controllability, and maximal marchings of Petri nets (1977) IEEE Trans. Automat. Contr., 22 AC (3), pp. 412-416. , Jun; Hohn, F.E., (1958) Elementary Matrix Algebra., , Macmillan: New York; Berthelot, G., Roucairol, G., Valk, R., Reduction of nets and parallel programs (1980) Lecture Notes in Computer Science, 84, pp. 277-290. , [15]; Berthelot, G., Checking properties of nets using transformations (1986) Lecture Notes in Computer Science, 222, pp. 19-40. , [23]; Johnsonbaugh, R., Murata, T., Additional methods for reduction and expansion of marked graphs (1981) IEEE Trans. Circuit Syst., 28 CAS (10), pp. 1009-1014. , Oct; Murata, T., Koh, J.Y., Reduction and expansion of live and safe marked graphs (1980) lEEETrans. Circuits Syst., 27 CAS (1), pp. 68-70. , Jan; Suzuki, I., Murata, T., A method for stepwise refinements and abstractions of Petri nets (1983) 7. Comput. Syst. Sci., 27 (1), pp. 51-76. , Aug; Chu, T.A., A method of abstraction for Petri nets, pp. 164-173. , in [29]; Hack, M., (1972) Analysis of production schemata by Petri nets, , Cambridge, Mass., MIT, Dept. Electrical Engineering, MS Thesis; Best, E., Structural theory of Petri nets: The free choice hiatus (1987) Lecture Notes in Computer Science. New York: Springer-Verlag, 254, pp. 168-206; Best, E., Thiagarajan, P.S., Some classes of live and safe Petri nets (1987) Concurrency and Nets [25], pp. 71-94; Amin, A.T., Murata, T., A characterization of live and safe markings of a directed graph (1976) Proc. 10th Conf. Inform. Sci. Syst., pp. 295-299; Kinuyama, M., Murata, T., Generating siphons and traps by Petri-net representation of logic equations (1986) Proc. 2nd IECE (Japan) Conference on Net Theory, pp. 93-100. , Dec; Thiagarajan, P.S., Voss, K., A fresh look at free choice nets (1984) Inform. Contr., 61 (2), pp. 85-113. , May; Ichikawa, A., Hiraishi, K., A class of Petri nets that a necessary and sufficient condition for reachability is obtainable (1988) Trans. Society of Instrument and Control Engineers (SICE) (in Japanese), 24 (6); Kodama, S., Murata, T., (1988) On necessary and sufficient reachability conditions for some subclasses of Petri nets, , Tech. Rep. #UIC-EECS 88–8, Univ. of Illinois at Chicago, June; Jantzen, M., Valk, R., Formal properties of place/transition nets (1980) Lecture Notes in Computer Science, 84. , [15]; Murata, T., Circuit theoretic analysis and synthesis of marked graphs (1977) IEEE Trans. Circuits Syst., 24 CAS (7), pp. 400-405. , July; Kumagai, S., Kodama, S., Kitagawa, M., Submarking reachability of marked graphs (1984) IEEE Trans. Circuits Syst., 31 CAS (2), pp. 159-164; Comeau, M.A., Thulasiraman, K., Structure of the sub-marking-reachability problem and network programming (1988) IEEE Trans. Circuits Syst., 35 (1), pp. 89-100. , Jan; Commoner, F., Final report for the project-development of theoretical foundations for description and analysis of discrete information systems (2011) Mathematics, 2. , CADD-7405- Mass. Comp. Assoc, Inc., Wakefield, MA 01880, May 1974; Murata, T., Synthesis of decision-free concurrent systems for prescribed resources and performance (1980) IEEE Trans. Software Eng., 6 SE (6), pp. 525-530. , Nov; Murata, T., Le, V.B., Leu, D.J., Method for realizing the synchronic distance matrix as a marked graph (1982) Proc. IEEE Int. Symp. Circuits Syst., Rome, Italy, 2, pp. 609-612. , May; Leu, D.J., Murata, T., Properties and applications of the token distance matrix of a marked graph (1984) Proc. 1984 IEEE Int. Symp. Circuits Syst., 3, pp. 1381-1385; Leu, D.J., On maximum concurrency in a decision-free concurrent system (1984) Proc. Int. Conput. Symp., , Tamkang Univ., Taipei, Rep. of China, Dec. 12-14, 1984, vol. 2, pp. 1065-1071, 1985; Genrich, H.J., Lautenbach, K., Synchronisationsgraphen (1973) Acta Informatica, 2, pp. 143-161; Memmi, G., Roucairol, G., Linear algebra in net theory (1980) Lecture Notes in Computer Science, 84, pp. 213-223. , [15]; Silva, M., Colom, J.M., On the computation of structural synchronic invariants in P/T nets (1989) Advances in Petri Nets 1988, , to appear in, Lecture Notes in Computer Science, New York: Springer-Verlag; Sifakis, J., Structural properties of Petri nets (1978) Mathetical Foundations of Computer Science, pp. 474-483. , J. Winkowski, Ed. New York: Springer-Verlag, 1978; Genrich, H.J., Lautenbach, K., System modelling with highlevel Petri nets (1981) Theoret. Comp. Sci., 13, pp. 109-136; Huber, P., Jensen, A.M., Jepsen, L.O., Jensen, K., Towards reachability trees for highlevel Petri nets (1986) Theoret. Comput. Sci., 45, pp. 261-292; Jensen, K., Coloured Petri nets and the invariant-method (1981) Theoret. Comput. Sci., 14, pp. 317-336; Jensen, K., How to find invariants for coloured Petri nets (1981) Lecture Notes in Computer Science, 118, pp. 327-338. , Math. Found, of Computer Science, 10th Symp. New York: Springer-Verlag, 1981; Lautenbach, K., Pagnoni, A., Invariance and duality in predicate/transition nets and in coloured nets (1985) Gesellschaft fur Math, , und Datenverarbeitung mbH Bonn, Arbeitspapiere der GMD Nr. 132, Feb; Mizuba, H., Herath, J., Ueda, K., Saito, N., Predicate/transition net simulation based on concurrent PROLOG (1985) Software Science and Eng., pp. 23-34. , (Proc. Symp. Kyoto 1984, RIMS Kokyuroku 547); Narahari, Y., Viswanadham, N., On the invariants of coloured Petri nets (1986) Lecture Notes in Computer Science, 222, pp. 330-345. , [23]; Peterson, J.L., A note on colored Petri nets (1980) Inform. Process. Lett., 11 (1), pp. 40-43. , Aug; Silva, M., Martinez, J., Ladet, P., Alia, H., Generalized inverses and the calculation of symbolic invariants for colored Petri nets (1985) TSI-Technique et Science Informatiques, 4 (1), pp. 113-126. , G. Memmi, Ed; Vautherin, J., Nonlinear invariants for coloured Petri nets with interdependent token; Application to the proof of parallel programs (1986) Lecture Notes in Computer Science, 222, pp. 418-434. , [23]; Zervos, C.R., Irani, K.B., Colored Petri nets: Their properties and applications (1977) Ann Arbor, , Michigan, Michigan University, Systems Eng. Lab., Rep. RADC-TR-77–246, Aug; Zenie, A., Colored stochastic Petri nets (1985) Proc. Int. Workshop Timed Petri Nets, pp. 262-271. , Torino, Italy, July 1-3, 1985; David, R., Alia, H., Continuous Petri nets (1987) Proc. 8th European Workshop Application and Theory of Petri Nets, pp. 275-294. , Zaragoza, Spain; Finkel, A., Memmi, G., An introduction to FIFO nets- Monogeneous nets: A subclass of FIFO nets (1985) Theoret. Corn-put. Sci., 35, pp. 191-214; Fuss, H., Numerical simulations with place/transactor nets (1987) Concurrency and Nets [25], pp. 187-199; Valk, R., Self-modifying nets, a natural extension of Petri nets (1978) Lecture Notes in Computer Science, 62, pp. 464-476. , Automata, Languages and Programming, G. Ausiello, C. Bohm, Eds. Berlin, New York: Springer-Verlag; Valk, R., Generalizations of Petri nets (1981) Lecture Notes in Computer Science, 118, pp. 140-155. , Math. Found, of Computer Science, 10th Symp. New York: Springer-Verlag, 1981; Porat, S., Yoeli, M., Towards a hierarchy of nets (1984) J. Corn-put. Sys. Sci., 29 (2), pp. 198-206. , Oct; Kwong, Y.S., On reduction of asynchronous systems (1977) Theoret. Comput. Sci., 5, pp. 25-50; Valette, R., Analysis of Petri nets by stepwise refinements (1979) I. Comput. Syst. Sci., 18, pp. 35-46; Kuhn, H.W., Tucker, A.W., (1956) Linear Inequalities and Related Systems, , Annals of Mathematics Study, No. 38, Princeton, NJ: Princeton Univ. Press; Reisig, W., Petri nets with individual tokens (1983) Informatik-Fachberichte, 66, pp. 229-249. , [21]; Hu, T.C., (1970) Integer Programming and Network Flows., , Reading, MA: Addison Wesley Pub. Co; Lien, Y.E., Termination properties of generalized Petri nets (1976) SIAMj. Computing, 5 (2), pp. 251-265. , June; Lien, Y.E., A note on transition systems (1976) J. Inform. Sci., 10 (4), pp. 347-362; Martinez, J., Silva, M., A simple and fast algorithm to obtain all invariants of a generalized Petri net (1982) Informatik-Fachberichte 52, pp. 301-310. , Application andlheory oi Petri Nets. New York: Springer-Verlag; Genrich, H.J., Predicate/transition nets LNCS, 254, pp. 207-247. , [16]; Jensen, K., Coloured Petri nets LNCS, 254, pp. 248-299. , [16]; Roucairol, G., FIFO-Nets LNCS, 254, pp. 436-459. , [16]; Andre, C., Use of the behaviour equivalence in place-tran- sition net analysis (1982) Informatik-Fachberichte 52 [20], pp. 241-250. , Additional Bibliography; Araki, T., Kasami, T., Some undecidable problems for Petri nets (1976) Syst. Comput. Contr., 7 (1), pp. 20-28. , Jan.-Feb; Araki, T., Decidable problems on the strong connectivity of Petri net reachability sets (1977) Theoret. Comput. Sci., 4 (1), pp. 99-119. , Feb; Auguin, M., Boeri, F., Andre, C., Systematic method of realization of interpreted Petri nets (1980) Digital Processes, 6, pp. 55-68; Ammar, H.H., Liu, R.W., (1985) Analysis of the generalized stochastic Petri nets by state aggregation, pp. 88-95. , in [28]; Baer, J.L., A survey of some theoretical aspects of multiprocessing (1973) ACM Computing Surveys, 5 (1), pp. 31-80; Best, E., Schmid, H.A., Systems of open paths in Petri nets (1975) Lecture Notes in Computer Science, 32, pp. 186-193. , New York: Springer-Verlag; Datta, A., Ghosh, S., Synthesis of a class of deadlock-free Petri nets (1984) J. Assoc. Comput. Machinery, 31 (3), pp. 486-506. , July; De Cindio, F., De Michelis, G., Pomello, L., Simone, C., Superposed automata nets (1982) Informatik-Fachberichte, pp. 269-279. , 52 [20]. New York: Springer-Verlag; Grabowski, J., The decidability of persistence for vector addition systems (1980) Inform. Process. Lett., 11 (1), pp. 20-23. , Aug; Girault, C., Chatelain, C., Haddad, S., Specification and properties of a cache coherence protocol model (1987) LNCS, 266, pp. 1-20. , [24]; Hack, M., The recursive equivalence of the reachability problem and the liveness problem for Petri nets and vector addition systems (1974) Proc. 15th Ann. Symp. Switching Automata Theory, pp. 156-164; Hura, G.S., Atwood, J.W., Program verification for microprocessors through Petri net modeling (1985) Microelectron. Reliab., 25 (5), pp. 1001-1010; Johnson, J.L., Murata, T., Structure matrices for Petri nets and their applications (1985) J. Franklin Inst, 319 (3), pp. 299-309. , March; Khan, A.A., Hura, G.S., Singh, H., Nanda, N.K., On the determination of the solution of a class of Murata's state equation of Petri nets (1981) Proc. IEEE, 69 (4), pp. 466-467. , April; Kriickeberg, F., Jaxy, M., Mathematical methods for calculating invariants in Petri nets (1987) LNCS, 266, pp. 104-131. , [24]; Largen, C.L., Murata, T., Use of prime numbers for computer-aided analysis of colored Petri nets (1983) Proc. 26th Midwest Symp. Circuits Syst., pp. 124-128. , Instituto Nacional de Astrofisica, Optica y Electronica (I NAOE), Puebla, Mexico, August 15-16, E.S. Sinencio, Ed., 1983; Van Leeuwen, J., A partial solution to the reachability-problem for vector addition systems (1974) Proc. 6th Annual ACM Symp. Theory Computing, pp. 303-309; Lin, T.Y., Petri net models for computer security (1983) Bull. Inst. Math. Acad. Sinica, 11 (3), pp. 439-457; Lipton, R.J., The reachability problem requires exponential space (1976) New Haven, , CT, Yale University, Department of Computer Science, Res. Rep. 62, Jan; Liu, R., Huang, Q., Lin, C., Ammar, H., Huang, Y.F., Petri net application to functional fault diagnosis (1986) Proc. 7986 IEEE Int. Symp. Circuits Sys., pp. 1323-1327. , San Jose, Calif. May; Liu, A.C., Lin, H.C., Modeling nuclear power plant by Petri nets (1986) Computers in Engrg. (AMSE Pressure Vessel and Piping Conf., pp. 151-156. , Chicago), 1986; Murata, T., Shah, T., On liveness, deadlock, and reachability of E-nets (1976) Proc. 14th Allerton Conf. Circuit Syst. Theory, pp. 597-605. , Oct., 1976; Murata, T., State equation for E-net interpreted marked graphs (1976) Proc. 19th MidwestSymp. Circuits Syst., pp. 152-157; Murata, T., Petri nets, marked graphs, and circuit-system theory: A recent CAS application (1977) Circuits and Systems, 11 (3), pp. 2-12. , June; Murata, T., Petri nets (1987) Systems & Control Encyclopedia: Theory, pp. 3665-3670. , Technology, Applications, M.G. Singh (Editor-in-Chief), New York: Pergamon Press; Murata, T., Modeling and analysis of concurrent systems (1984) Handbook of Software Engineering, pp. 39-63. , Ch. 3 in, C.R. Vick and C.V. Ramamoorthy Eds. New York: Van Nostrand, Reinhold; Nelson, R.A., Haibt, L.M., Sheridan, P.B., Casting Petri nets into programs (1983) IEEE Trans. Software Eng., 9 SE (5), pp. 590-602. , Sept; Petri, C.A., Concepts of net theory (1973) Mathematical Foundations on Computer Science: in Proc. Symp. and Summer School, pp. 137-146. , High Tatras, Sept. 3-8, Math. Inst, of the Slovak Acad, of Sciences, 1973; Petri, C.A., Communication disciplines (1976) Computing System Design: Proc. Joint IBM-University of Newcastle-upon-Tyne Seminar, pp. 171-183. , Sept. B. Shaw, Ed., 1977; Petri, C.A., Modelling as a communication discipline (1977) Measuring, Modelling and Evaluating Computer Systems, pp. 435-449. , H. Beilner, E. Gelenbe, Eds. Amsterdam: North-Holland; Petri, C.A., Introduction to general net theory (1980) Lecture Notes in Computer Science, 84, pp. 1-19. , Net Theory and Applications. New York: Springer-Verlag; Petri, C.A., Concurrency (1980) Lecture Notes in Computer Science, 84, pp. 251-260. , Net Theory and Applications. New York: Springer-Verlag; Petri, C.A., State-transition structures in physics and in computation (1982) Int. J. Theoret. Physics, 21 (12), pp. 979-992; Pomello, L., Some equivalence notions for concurrent systems (1985) Lecture Notes in Computer Science, 222, pp. 381-400. , Advances in Petri Nets G. Rozenberg, Ed. New York: Springer-Verlag, 1986; Reisig, W., Deterministic buffer synchronization of sequential processes (1982) Acta Informatica, 18, pp. 117-134; Sacerdote, G.S., L Tenney, R., The decidability of the reachability problem for vector addition systems (1977) Proc. 9th Ann. Symp. Theory Computing, pp. 61-76. , Boulder, Colorado, May 2-4, 1977; Schmid, H.A., Best, E., (1978) A step towards a solution of the liveness problem in Petri nets, , University of Newcastle-upon-Tyne, Computing Laboratory, Tech. Rep. 114, Feb; Schnieder, E., (1986) Proze Informatik., , Braunschweig, Wiesbaden: Vieweg Verlag; Seitz, C.L., (1971) Graph representations for logical machines, , Cambridge, MA: MIT, Department of Electrical Engineering, Ph.D. Thesis, Jan; Sifakis, J., A unified approach for studying the properties of transition systems (1982) Theoret. Comput. Sci., 18, pp. 227-258; Starke, P.H., (1980) Petri netze, Berlin, DDR: Deutscher Verlag der Wissenschaften; Tagahashi, K., Hasegawa, K., Banaszak, Z., Synthesis method for a Petri net with prescribed firing sequence (1985) Trans. Soc. Instrum. Control Eng. (Japan), 21 (3), pp. 277-283. , March; Tsuji, K., Kumagai, S., Kodama, S., Yamada, T., Modelling and verification of sequential control systems by Petri nets (1986) Proc. IEEE Int. Symp. Circuits Syst., San Jose, 3, pp. 988-991; Viswanadham, N., Narahari, Y., Coloured Petri net models for automated manufacturing systems (1987) Proc. 7987 IEEE Int. Conf. Robot. Automat, pp. 1985-1990; Winskel, G., Petri nets, morphisms and compositionality (1986) Lecture Notes in Computer Science, 222, pp. 453-477. , New York: Springer-Verlag; Yamasaki, H., Normal Petri nets (1984) Theoret. Comput. Sci., 31 (3), pp. 307-315. , June; Yu, S.H., Murata, T., PT-marked graphs: a reduced model of Petri nets (1978) Proc. 16th Ann. Allerton Conf. Commun., pp. 175-184. , Cont. Comput, Oct., 1978; Han, Y.W., Performance evaluation of a digital system using a Petri net-like approach (1978) Proc. Nat. Electron. Conf., 32, pp. 166-172. , Oct. 16-18, W.H. Tranter, Ed., 1978; Shapiro, R.M., Millstein, R.E., Failure recovery in a distributed database system (1978) Proc. IEEE COMPCON Spring, pp. 66-70. , 1978; Bandman, O.L., The correctness of asynchronous parallel-flow systems of data reduction (1986) (in Russian), English translation in Program. Comput. Software, 12 (1), pp. 9-17; Kotov, V.E., Cherkasova, L.A., From nets to logic and back in the specification of processes (1987) Concurrency and Nets, Special volume in the series “Advances in Petri Nets., pp. 253-268. , New York: Springer-Verlag; Lee-Kwang, H., Favrel, J., Baptiste, P., Generalized Petri net reduction method (1987) IEEE Trans Syst. Man, Cybernet, 17 SMC (2), pp. 297-303. , March/April; Silva, M., Sur le concept de macroplace et son utilisation pour I'analyse des reseaux de Petri (1981) RAIRO-Automatique, 15 (4), pp. 57-67; Martinez, J., Silva, M., A language of description of concurrent systems modeled by colored Petri nets: Application to the control of flexible manufacturing systems (1985) Languages for Automation, pp. 369-388. , S.K. Chang, Ed. New York: Plenum Press; Colom, J.M., Martinez, J., Silva, M., Packages for validating discrete production systems modelled with Petri nets (1987) Applied Modelling and Simulation of Technological Systems, pp. 529-536. , (P. Borne and S. Tzafestas, Eds.), Amsterdam and New York: North-Holland; Meldman, J.A., Holt, A.W., Petri nets and legal systems (1971) JurimetricsJ., 12 (2), pp. 65-75; Looney, C.G., Fuzzy Petri nets for rule-based decisionmaking (1988) IEEE Trans. Syst, Man, Cybernet., 18 (1), pp. 178-183. , Feb./Mar; Ushio, T., Matsumoto, R., State feedback and modular control synthesis in controlled Petri nets (1988) Proc. 27th IEEE Conf. Decision Contr., pp. 1502-1507. , Austin, TX, Dec; Lin, C., Marinescu, D.C., Stochastic highlevel Petri nets and applications (1988) IEEE Trans. Comput, 37 (7), pp. 815-825. , July\",\"Murata, T.; Department of Electrical Engineering and Computer Science, University of Illinois, Chicago, IL 60680, United States\",,,,,,,,00189219,,,,\"English\",\"Proc. IEEE\",Article,\"Final\",\"\",Scopus,2-s2.0-0024645936\n\"Gutowska K., Kogut D., Kardynska M., Formanowicz P., Smieja J., Puszynski K.\",\"57204582693;57201420436;55827692600;6701605646;6602196127;23986467200;\",\"Petri nets and ODEs as complementary methods for comprehensive analysis on an example of the ATM–p53–NF- κ B signaling pathways\",2022,\"Scientific Reports\",\"12\",\"1\",\"1135\",\"\",\"\",,3,\"10.1038/s41598-022-04849-0\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-85123480963&doi=10.1038%2fs41598-022-04849-0&partnerID=40&md5=8cbc841b1ad816efac68c4f3098a1c51\",\"Institute of Computing Science, Poznan University of Technology, Piotrowo 2, Poznan, 60-965, Poland; Department of Biosensors and Processing of Biomedical Signals, Silesian University of Technology, Roosevelta 40, Zabrze, 41-800, Poland; Department of Systems Biology and Engineering, Silesian University of Technology, Akademicka 16, Gliwice, 44-100, Poland; Institute of Bioorganic Chemistry, Polish Academy of Sciences, Noskowskiego 12/14, Poznan, 61-704, Poland\",\"Gutowska, K., Institute of Computing Science, Poznan University of Technology, Piotrowo 2, Poznan, 60-965, Poland; Kogut, D., Department of Systems Biology and Engineering, Silesian University of Technology, Akademicka 16, Gliwice, 44-100, Poland; Kardynska, M., Department of Biosensors and Processing of Biomedical Signals, Silesian University of Technology, Roosevelta 40, Zabrze, 41-800, Poland, Department of Systems Biology and Engineering, Silesian University of Technology, Akademicka 16, Gliwice, 44-100, Poland; Formanowicz, P., Institute of Computing Science, Poznan University of Technology, Piotrowo 2, Poznan, 60-965, Poland, Institute of Bioorganic Chemistry, Polish Academy of Sciences, Noskowskiego 12/14, Poznan, 61-704, Poland; Smieja, J., Department of Systems Biology and Engineering, Silesian University of Technology, Akademicka 16, Gliwice, 44-100, Poland; Puszynski, K., Department of Systems Biology and Engineering, Silesian University of Technology, Akademicka 16, Gliwice, 44-100, Poland\",\"Intracellular processes are cascades of biochemical reactions, triggered in response to various types of stimuli. Mathematical models describing their dynamics have become increasingly popular in recent years, as tools supporting experimental work in analysis of pathways and regulatory networks. Not only do they provide insights into general properties of these systems, but also help in specific tasks, such as search for drug molecular targets or treatment protocols. Different tools and methods are used to model complex biological systems. In this work, we focus on ordinary differential equations (ODEs) and Petri nets. We consider specific methods of analysis of such models, i.e., sensitivity analysis (SA) and significance analysis. So far, they have been applied separately, with different goals. In this paper, we show that they can complement each other, combining the sensitivity of ODE models and the significance analysis of Petri nets. The former is used to find parameters, whose change results in the greatest quantitative and qualitative changes in the model response, while the latter is a structural analysis and allows indicating the most important subprocesses in terms of information flow in Petri net. Ultimately, both methods facilitate finding the essential processes in a given signaling pathway or regulatory network and may be used to support medical therapy development. In the paper, the use of dual modeling is illustrated with an example of ATM/p53/NF-κB pathway. Each method was applied to analyze this system, resulting in finding different subsets of important processes that might be prospective targets for changing this system behavior. While some of the processes were indicated in each of the approaches, others were found by one method only and would be missed if only that method was applied. This leads to the conclusion about the complementarity of the methods under investigation. The dual modeling approach of comprehensive structural and parametric analysis yields results that would not be possible if these two modeling approaches were applied separately. The combined approach, proposed in this paper, facilitates finding not only key processes, with which significant parameters are associated, but also significant modules, corresponding to subsystems of regulatory networks. The results provide broader insight into therapy targets in diseases in which the natural control of intracellular processes is disturbed, leading to the development of more effective therapies in medicine. © 2022, The Author(s).\",,,,,,,\"2016/23/B/ST6/03455; 2012/07/B/ ST6/01537; Politechnika Poznańska, PUT; Silesian University of Technology, SUT: 02/040/BKM20/1003, 02/040/BKM21/1016, BKM 02/040/BKM21/1015; Sahand University of Technology, SUT: 02/040/BK_21/1010\",\"The presented work was partially supported by the Grant funded by National Science Centre Poland No. 2016/23/B/ST6/03455 (KP), partially supported the Polish National Science Centre Grant No. 2012/07/B/ ST6/01537 (PF), statutory funds of Poznan University of Technology (KG, PF), an internal Grant of Silesian University of Technology BKM 02/040/BKM21/1015 (MK) and 02/040/BKM20/1003 (DK), 02/040/BKM21/1016 (DK), and by SUT internal research Grant 02/040/BK_21/1010 (JS) and SUT internal grant for young researchers in 2022 (DK).\",,\"Edelstein-Keshet, L., (2005) Mathematical Models in Biology, , SIAM; Hoppensteadt, F.C., Peskin, C.S., (2012) Modeling and Simulation in Medicine and the Life Sciences, 10. , Springer; Gratie, D.E., Iancu, B., Petre, I., ODE analysis of biological systems (2013) International School on Formal Methods for the Design of Computer, Communication and Software Systems, pp. 29-62. , Springer; Hardy, S., Robillard, P.N., Modeling and simulation of molecular biology systems using petri nets: Modeling goals of various approaches (2004) J. Bioinform. Comput. Biol., 2, pp. 619-637; Heiner, M., Gilbert, D., Donaldson, R., Petri nets for systems and synthetic biology (2008) International School on Formal Methods for the Design of Computer, Communication and Software Systems, pp. 215-264. , Springer; Koch, I., Petri nets in systems biology (2015) Softw. Syst. Model., 14, pp. 703-710; Gilbert, D., Heiner, M., From Petri nets to differential equations-an integrative approach for biochemical network analysis (2006) International Conference on Application and Theory of Petri Nets, pp. 181-200. , Springer; Heiner, M., Sriram, K., Structural analysis to determine the core of hypoxia response network (2010) PLoS One, 5; Soliman, S., Heiner, M., A unique transformation from ordinary differential equations to reaction networks (2010) PLoS One, 5; Hassane, A., René, D., Continuous and hybrid Petri nets (1998) J. Circ. Syst. Comput., 8, pp. 159-188; Kogut, D., Petri nets and ODE as complementary tools in analysis of signaling pathways (2019) In Proceedings of 11Th International Conference on Bioinformatics and Computational Biology, 60, pp. 150-160. , https://doi.org/10.29007/542h; Jonak, K., A novel mathematical model of ATM/p53/NF- κ B pathways points to the importance of the DDR switch-off mechanisms (2016) BMC Syst. Biol., 10, p. 75; Toufektchan, E., Toledo, F., The guardian of the genome revisited: p53 downregulates genes required for telomere maintenance, DNA repair, and centromere structure (2018) Cancers, 10, p. 135; Norbury, C.J., Zhivotovsky, B., DNA damage-induced apoptosis (2004) Oncogene, 23, pp. 2797-2808. , COI: 1:CAS:528:DC%2BD2cXivFKmsLY%3D; Puszynski, K., Hat, B., Lipniacki, T., Oscillations and bistability in the stochastic model of p53 regulation (2008) J. Theor. Biol., 254, pp. 452-465; Airley, R., (2009) Cancer Chemotherapy: Basic Science to the Clinic, , Wiley; Hayden, M., West, A., Ghosh, S., NF- κ B and the immune response (2006) Oncogene, 25, pp. 6758-6780. , COI: 1:CAS:528:DC%2BD28XhtFektL7P; Lipniacki, T., Puszynski, K., Paszek, P., Brasier, A.R., Kimmel, M., Single TNFalpha trimers mediating NF- κ B activation: Stochastic robustness of NF- κ B signaling (2007) BMC Bioinform., 9, p. 376; Perkins, N.D., Integrating cell-signalling pathways with NF- κ B and IKK function (2007) Nat. Rev. Mol. Cell Biol., 8, pp. 49-62. , COI: 1:CAS:528:DC%2BD28XhtlCjt7bK; Hayden, M.S., Ghosh, S., Shared principles in NF- κ B signaling (2008) Cell, 132, pp. 344-362. , COI: 1:CAS:528:DC%2BD1cXivVahtbY%3D; Vallabhapurapu, S., Karin, M., Regulation and function of NF- κ B transcription factors in the immune system (2009) Annu. Rev. Immunol., 27, pp. 693-733. , COI: 1:CAS:528:DC%2BD1MXlsFSlt7o%3D; Perkins, N.D., NF- κ B: Tumor promoter or suppressor? (2004) Trends Cell Biol., 14, pp. 64-69. , COI: 1:CAS:528:DC%2BD2cXhtVOrt7c%3D; Ashall, L., Pulsatile stimulation determines timing and specificity of NF- κ B-dependent transcription (2009) Science, 324, pp. 242-246. , COI: 1:CAS:528:DC%2BD1MXktFals78%3D; Kellogg, R.A., Tay, S., Noise facilitates transcriptional control under dynamic inputs (2015) Cell, 160, pp. 381-392. , COI: 1:CAS:528:DC%2BC2MXitFyls7o%3D; Tay, S., Single-cell NF- κ B dynamics reveal digital activation and analogue information processing (2010) Nature, 466, pp. 267-271. , COI: 1:CAS:528:DC%2BC3cXnvFykt7w%3D; Pommier, Y., Sordet, O., Antony, S., Hayward, R.L., Kohn, K.W., Apoptosis defects and chemotherapy resistance: Molecular interaction maps and networks (2004) Oncogene, 23, pp. 2934-2949. , COI: 1:CAS:528:DC%2BD2cXivFKms7s%3D; Puszynski, K., Bertolusso, R., Lipniacki, T., Crosstalk between p53 and nuclear factor- κ B systems: Pro-and anti-apoptotic functions of NF- κ B (2009) IET Syst. Biol., 3, pp. 356-367. , COI: 1:STN:280:DC%2BC3cbivFCntA%3D%3D; Wong, K.-K., Telomere dysfunction and Atm deficiency compromises organ homeostasis and accelerates ageing (2003) Nature, 421, pp. 643-648; Roberts, N.J., ATM mutations in patients with hereditary pancreatic cancer (2012) Cancer Discov., 2, pp. 41-46; Liu, C., Computational network biology: Data, models, and applications (2020) Phys. Rep., 846, pp. 1-66; Kozlowska, E., Puszynski, K., Application of bifurcation theory and siRNA-based control signal to restore the proper response of cancer cells to DNA damage (2016) J. Theor. Biol., 408, pp. 213-221; Gutowska, K., Formanowicz, D., Formanowicz, P., Selected aspects of tobacco-induced prothrombotic state, inflammation and oxidative stress: Modeled and analyzed using petri nets (2019) Interdiscip. Sci., 11, pp. 373-386; Radom, M., Holmes: A graphical tool for development, simulation and analysis of Petri net based models of complex biological systems (2017) Bioinformatics, 33, pp. 3822-3823; Heiner, M., Herajy, M., Liu, F., Rohr, C., Schwarick, M., Snoopy—a unifying petri net tool (2012) In Proceedings of PETRI NETS 2012, Hamburg, Springer, LNCS, 7347, pp. 398-407. , https://doi.org/10.1007/978-3-642-31131-4_22; Kardynska, M., Smieja, J., Sensitivity analysis of signaling pathways in the frequency domain (2016) Conference of Information Technologies in Biomedicine, pp. 275-285; Gutowska, K., Formanowicz, P., A tabu search algorithm for the problem of finding subsets of crucial transitions in Petri net based models of biological systems (in Polish) (2018) Automatyzacja Procesów Dyskretnych. Teoria i Zastosowania, 2, pp. 67-74. , Swierniak A, Krystek J, (eds), Wydaw Politechniki Śląskiej; Rand, D.A., Mapping global sensitivity of cellular network dynamics: Sensitivity heat maps and a global summation law (2008) J. R. Soc. Interface, 5, pp. S59-S69. , COI: 1:CAS:528:DC%2BD1cXpvVGntLw%3D; Daniels, B.C., Chen, Y.-J., Sethna, J.P., Gutenkunst, R.N., Myers, C.R., Sloppiness, robustness, and evolvability in systems biology (2008) Curr. Opin. Biotechnol., 19, pp. 389-395. , COI: 1:CAS:528:DC%2BD1cXhtValsLzO; Saltelli, A., (2008) Global Sensitivity Analysis: The Primer, , Wiley; Kim, K.A., Systematic calibration of a cell signaling network model (2010) BMC Bioinform., 11, pp. 1-14; Marin-Sanguino, A., Gupta, S.K., Voit, E.O., Vera, J., Biochemical pathway modeling tools for drug target detection in cancer and other complex diseases (2011) Methods Enzymol., 487, pp. 319-369. , COI: 1:CAS:528:DC%2BC3MXjtFCgt78%3D; Gutowski, L., Gutowska, K., Piorunska-Stolzmann, M., Formanowicz, P., Formanowicz, D., Systems approach to study associations between OxLDL and abdominal aortic aneurysms (2019) Int. J. Mol. Sci.\",\"Gutowska, K.; Institute of Computing Science, Piotrowo 2, Poland; email: kaja.gutowska@cs.put.poznan.pl\nKogut, D.; Department of Systems Biology and Engineering, Akademicka 16, Poland; email: daria.kogut@polsl.pl\",,,\"Nature Research\",,,,,20452322,,,\"35064163\",\"English\",\"Sci. Rep.\",Article,\"Final\",\"All Open Access, Gold, Green\",Scopus,2-s2.0-85123480963\n\"Amstein L.K., Ackermann J., Hannig J., Ikić I., Fulda S., Koch I.\",\"55893768400;57189026922;57207200423;7006551228;57205552366;7006792171;\",\"Mathematical modeling of the molecular switch of TNFR1-mediated signaling pathways applying Petri net formalism and in silico knockout analysis\",2022,\"PLoS Computational Biology\",\"18\",\"8\",\"e1010383\",\"\",\"\",,1,\"10.1371/journal.pcbi.1010383\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-85138069321&doi=10.1371%2fjournal.pcbi.1010383&partnerID=40&md5=6a446a6c231ba7dc04d13c4cf5372bff\",\"Goethe University Frankfurt, Institute of Computer Science, Department of Molecular Bioinformatics, Frankfurt am Main, Germany; Cognitive Information Systems, Kompetenzzentrum für Informationstechnologie, Technische Hochschule Mittelhessen, Friedberg, Germany; Goethe University Frankfurt, Institute of Biochemistry II, Medical Faculty, Frankfurt am Main, Germany\",\"Amstein, L.K., Goethe University Frankfurt, Institute of Computer Science, Department of Molecular Bioinformatics, Frankfurt am Main, Germany; Ackermann, J., Goethe University Frankfurt, Institute of Computer Science, Department of Molecular Bioinformatics, Frankfurt am Main, Germany; Hannig, J., Cognitive Information Systems, Kompetenzzentrum für Informationstechnologie, Technische Hochschule Mittelhessen, Friedberg, Germany; Ikić, I., Goethe University Frankfurt, Institute of Biochemistry II, Medical Faculty, Frankfurt am Main, Germany; Fulda, S., Goethe University Frankfurt, Institute of Biochemistry II, Medical Faculty, Frankfurt am Main, Germany; Koch, I., Goethe University Frankfurt, Institute of Computer Science, Department of Molecular Bioinformatics, Frankfurt am Main, Germany\",\"The paper describes a mathematical model of the molecular switches of cell survival, apoptosis, and necroptosis in cellular signaling pathways initiated by tumor necrosis factor 1. Based on experimental findings in the literature, we constructed a Petri net model based on detailed molecular reactions of the molecular players, protein complexes, post-translational modifications, and cross talk. The model comprises 118 biochemical entities, 130 reactions, and 299 edges. We verified the model by evaluating invariant properties of the system at steady state and by in silico knockout analysis. Applying Petri net analysis techniques, we found 279 pathways, which describe signal flows from receptor activation to cellular response, representing the combinatorial diversity of functional pathways.120 pathways steered the cell to survival, whereas 58 and 35 pathways led to apoptosis and necroptosis, respectively. For 65 pathways, the triggered response was not deterministic and led to multiple possible outcomes. We investigated the in silico knockout behavior and identified important checkpoints of the TNFR1 signaling pathway in terms of ubiquitination within complex I and the gene expression dependent on NF-κB, which controls the caspase activity in complex II and apoptosis induction. Despite not knowing enough kinetic data of sufficient quality, we estimated system’s dynamics using a discrete, semi-quantitative Petri net model. Copyright: © 2022 Amstein et al. This is an open access article distributed under the terms of the Creative Commons Attribution License, which permits unrestricted use, distribution, and reproduction in any medium, provided the original author and source are credited.\",,\"Activation analysis; Cell death; Cell signaling; Gene expression; Signaling; Cell survival; Cellular signalling; In-silico; Mediated signaling pathways; Model-based OPC; Molecular reactions; Molecular switches; Petri net models; Signalling pathways; Tumor necrosis factors; Petri nets; apoptosome; caspase; caspase 3; caspase 8; caspase 9; cycloheximide; protein bcl 2; transcription factor; tumor necrosis factor; tumor necrosis factor receptor 1; X linked inhibitor of apoptosis; immunoglobulin enhancer binding protein; apoptosis; Article; cell survival; dynamics; enzyme activity; gene expression; hierarchical clustering; human; kinetics; knockout gene; mathematical model; mouse; necroptosis; NF kB signaling; nonhuman; Petri net; principal component analysis; protein degradation; protein expression; protein protein interaction; reliability; signal transduction; stoichiometry; ubiquitination; biological model; genetics; metabolism; signal transduction; theoretical model; Apoptosis; Models, Biological; Models, Theoretical; NF-kappa B; Receptors, Tumor Necrosis Factor, Type I; Signal Transduction; Tumor Necrosis Factor-alpha\",,\"caspase, 186322-81-6; caspase 3, 169592-56-7; caspase 8; caspase 9, 180189-96-2; cycloheximide, 642-81-9, 66-81-9; protein bcl 2, 219306-68-0; X linked inhibitor of apoptosis, 391965-84-7; NF-kappa B; Receptors, Tumor Necrosis Factor, Type I; Tumor Necrosis Factor-alpha\",,,,,,\"Walczak, H, Kantari, C., Death Domain-Containing Receptors–Decision between Suicide and Death (2011) Apoptosis: Physiology and Pathology, pp. 23-36. , Reed JC, Green DR, editors. Cambridge University Press; Walczak, H., TNF and ubiquitin at the crossroads of gene activation, cell death, inflammation, and cancer (2011) Immunol Rev, 244, pp. 9-28. , https://doi.org/10.1111/j.1600-065X.2011.01066.x, PMID: 22017428; Pasparakis, M, Vandenabeele, P., Necroptosis and its role in inflammation (2015) Nature, 517, pp. 311-320. , https://doi.org/10.1038/nature14191, PMID: 25592536; Reed, JC, Green, DR, (2011) Apoptosis: Physiology and Pathology, , (editors). Cambridge, UK: Cambridge University Press; Taylor, RC, Cullen, SP, Martin, SJ., Apoptosis: controlled demolition at the cellular level (2008) Nat Rev Mol Cell Biol, 9 (3), pp. 231-241. , https://doi.org/10.1038/nrm2312, PMID: 18073771; Galluzzi, L, Vitale, I, Aaronson, SA, Abrams, JM, Adam, D, Agostinis, P, Molecular mechanisms of cell death: Recommendations of the nomenclature committee on cell death (2008) Cell Death Differ, 25 (3), pp. 1-56; Dhuriya, YK, Sharma, D., Necroptosis: a regulated inflammatory mode of cell death (2018) J Neuroinflamm, 15, p. 199. , https://doi.org/10.1186/s12974-018-1235-0, PMID: 29980212; Degterev, A, Huang, Z, Boyce, M, Li, Y, Jagtap, P, Mizushima, N, Chemical inhibitor of nonapoptotic cell death with therapeutic potential for ischemic brain injury (2005) Nat Chem Biol, 1, pp. 112-119. , https://doi.org/10.1038/nchembio711, PMID: 16408008; Vandenabeele, P, Galluzzi, L, Berghe, TV, Kroemer, G, Molecular mechanisms of necroptosis: an ordered cellular explosion (2010) Nat Rev Mol Cell Biol, 11, pp. 700-714; Schwabe, RF, Luedde, T., Apoptosis and necroptosis in the liver: a matter of life and death (2018) Nat Rev Gastroenterol Hepatol, 15 (12), pp. 738-752. , https://doi.org/10.1038/s41575-018-0065-y, PMID: 30250076; DiDonato, JA, Mercurio, F, Karin, M., NF-κB and the link between inflammation and cancer (2012) Immun Rev, 246, pp. 379-400. , https://doi.org/10.1111/j.1600-065X.2012.01099.x, PMID: 22435567; Fulda, S, Galluzzi, L, Kroemer, G., Targeting mitochondria for cancer therapy (2010) Nat Rev Drug Discovery, 9 (6), pp. 447-464. , https://doi.org/10.1038/nrd3137, PMID: 20467424; Fulda, S., Targeting Apoptosis Signaling in Pancreatic Cancer (2011) Cancers, 3, pp. 241-251. , https://doi.org/10.3390/cancers3010241, PMID: 24212616; Fulda, S, Rajalingam, K, Dikic, I., Ubiquitylation in immune disorders and cancer: from molecular mechanisms to therapeutic implications (2012) EMBO Mol Med, 4, pp. 545-556. , https://doi.org/10.1002/emmm.201100707, PMID: 22730341; Fulda, S, Vukic, D., Targeting IAP proteins for therapeutic interventions in cancer (2012) Nat Rev Drug Discovery, 11, pp. 109-124; Fulda, S., Alternative Cell Death Pathways and Cell Metabolism (2013) Internat J Cell Biol, 2013, p. 463637. , https://doi.org/10.1155/2013/463637, PMID: 23401689; Fulda, S., Therapeutic exploitation of necroptosis for cancer therapy (2014) Seminars Cell & Dev Biol, 35, pp. 51-56. , https://doi.org/10.1016/j.semcdb.2014.07.002, PMID: 25065969; Peltzer, N, Darding, M, Walczak, H., Holding RIPK1 on the Ubiquitin Leash in TNFR1 Signaling (2016) Trends Cell Biol, 26, pp. 445-461. , https://doi.org/10.1016/j.tcb.2016.01.006, PMID: 26877205; Ikeda, F, Dikic, I., Atypical ubiquitin chains: new molecular signals (2008) EMBO, 9, pp. 536-542; Grabbe, C, Husnjak, K, Dikic, I., The spatial and temporal organization of ubiquitin networks (2011) Nat Rev Mol Cell Biol, 12, pp. 295-307. , https://doi.org/10.1038/nrm3099, PMID: 21448225; Walczak, H, Iwai, K, Dikic, I., Generation and physiological roles of linear ubiquitin chains (2012) BMC Biol, 10, p. 23. , https://doi.org/10.1186/1741-7007-10-23, PMID: 22420778; Kensche, T, Tokunaga, F, Ikeda, F, Goto, E, Iwai, K, Dikic, I., Analysis of Nuclear Factor- κB (NF-κB) essential modulator (NEMO) binding to linear and lysine-linked ubiquitin chains and its role in the activation of NF-κB (2012) J Biol Chem, 287, pp. 23626-23634. , https://doi.org/10.1074/jbc.M112.347195, PMID: 22605335; Declercq, W, Berghe, TV, Vandenabeele, P., RIP Kinases at the Crossroads of Cell Death and Survival (2009) Cell, 138, pp. 229-232. , https://doi.org/10.1016/j.cell.2009.07.006, PMID: 19632174; Hoeller, D, Dikic, I., Targeting the ubiquitin system in cancer therapy (2009) Nature, 458, pp. 438-444. , https://doi.org/10.1038/nature07960, PMID: 19325623; Kitano, H., Systems Biology: A Brief Overview (2002) Science, 295, pp. 1662-1664. , https://doi.org/10.1126/science.1069492, PMID: 11872829; Kitano, H., Biological Robustness (2004) Nature, 5, pp. 826-837. , https://doi.org/10.1038/nrg1471, PMID: 15520792; Saez-Rodriguez, J, MacNamara, A, Cook, S., Modeling Signaling Networks to advance New Cancer Therapies (2015) Ann Rev Biomed Engin, 17, pp. 143-163. , https://doi.org/10.1146/annurev-bioeng-071813-104927, PMID: 26274601; Heinrich, R, Rapoport, TA., A Linear Steady-State Treatment of Enzymatic Chains General Properties, Control and Effector Strength (1974) Eur J Biochem, 42, pp. 89-95; Aldridge, BB, Burke, JM, Luffenburger, DA, Sorger, PK., Physicochemical modelling of cell signaling pathways (2006) Nat Cell Biol, 8, pp. 1195-1203; Wang, R-S, Saadatpour, A, Albert, R., Boolean modeling in systems biology: an overview of methodology and applications (2012) Phys Biol, 9, p. 055001. , https://doi.org/10.1088/1478-3975/9/5/055001, PMID: 23011283; Reisig, W., Petri Nets: An Introduction (1985) EATCS, Monographs on Theoretical Computer Science, , Brauer W, Rozenberg G, Salomaa A, editors. Berlin: Springer Verlag; Murata, T, Petri nets: Properties, analysis and applications (1989) Proc IEEE 1989, 77 (4), pp. 541-580; Koch, I, Junker, BH, Heine, M., Application of Petri net theory for modelling and validation of the sucrose breakdown pathway in the potato tuber (2005) Bioinformatics, 21, pp. 1219-1226. , https://doi.org/10.1093/bioinformatics/bti145, PMID: 15546934; Formanowicz, D, Sackmann, A, Formanowiczb, P, Błażewicz, J., Petri net based model of the body iron homeostasis (2006) J Biomed Inform, 40, pp. 476-485. , https://doi.org/10.1016/j.jbi.2006.12.001, PMID: 17258508; Sackmann, A, Formanowicz, D, Formanowicz, P, Koch, I, Blazewicz, J., An analysis of the Petri net based model of the human body iron homeostasis process (2007) Comput Biol Chem, 31, pp. 1-10. , https://doi.org/10.1016/j.compbiolchem.2006.09.005, PMID: 17097351; Koch, I, Reisig, W, Schreiber, F., (2011) Modeling in Systems Biology, , (editors) Springer Berlin/Heidelberg, Berlin Heidelberg New York; Minervini, G, Panizzoni, E, Giollo, M, Masiero, A, Ferrari, C, Tosatto, SCE., Design and Analysis of a Petri Net Model of the Von Hippel-Lindau (VHL) Tumor Suppressor Interaction Network (2014) PLoS ONE, 9 (6), p. e96986. , https://doi.org/10.1371/journal.pone.0096986, PMID: 24886840; Koch, I, Nöthen, J, Schleiff, E., Modeling the metabolism of Arabidopsis thaliana: application of network decomposition and network reduction in the context of Petri nets (2017) Front Genetics, 8, pp. 85-107; Jacobsen, A, Ivanova, O, Amini, S, Heringa, J, Kemmeren, P, Feenstra, KA., A framework for exhaustive modelling of genetic interaction patterns using Petri nets (2020) Bioinformatics, 36, pp. 2142-2149. , https://doi.org/10.1093/bioinformatics/btz917, PMID: 31845959; Einloft, J, Ackermann, J, Nöthen, J, Koch, I., MonaLisa—visualization and analysis of functional modules in biochemical networks (2013) Bioinformatics, 29, pp. 1469-1470. , https://doi.org/10.1093/bioinformatics/btt165, PMID: 23564846; Balazki, P, Lindauer, K, Einloft, J, Ackermann, J, Koch, I., MONALISA for stochastic simulations of Petri net models of biochemical systems (2015) BMC Bioinformatics, 16, p. 215. , https://doi.org/10.1186/s12859-015-0596-y, PMID: 26156221; Mitchell, S, Vargas, J, Hoffmann. A Signaling via the NF-κB system (2016) WIREs Systems Biol Med, 8, pp. 227-241; Basak, S, Behar, M, Hoffmann, A., Lessons from mathematically modeling the NF-κB pathway (2012) Immun Rev, 246, pp. 221-238. , https://doi.org/10.1111/j.1600-065X.2011.01092.x, PMID: 22435558; Cheng, TMK, Gulati, S, Agius, R, Bates, PA., Understanding cancer mechanisms through network dynamics (2012) Brief Funct Genomics, 11, pp. 543-560. , https://doi.org/10.1093/bfgp/els025, PMID: 22811516; Hoffmann, A, Levchenko, A, Scott, M, Baltimore, D., The IκB-NF-κB Signaling Module: Temporal Control and Selective Gene Activation (2002) Science, 298, pp. 1241-1245; Lipniacki, T, Paszek, P, Brasier, AR, Luxon, B, Kimmel, M., Mathematical model of NF-κB regulatory module (2004) J Theor Biol, 228, pp. 195-215; Kearns, JD, Basak, S, Werner, SL, Huang, CS, Hoffmann, A., IκBε provides negative feedback to control NF-κB oscillations, signaling dynamics, and inflammatory gene expression (2006) J Cell Biol, 173, pp. 659-664; Rangamani, P, Sirovich, L., Survival and apoptotic pathways initiated by TNF-α: Modeling and predictions (2007) Biotech & Bioengin, 97, pp. 1216-1229; Tay, S, Hughey, JJ, Lee, TK, Lipniacki, T, Quake, SR., Covert MW Single-cell NF-κB dynamics reveal digital activation and analogue information processing (2010) Nature, 466, pp. 267-271; Sheppard, PW, Sun, X, Emery, JF, Giffard, RG, Khammash, M., Quantitative characterization and analysis of the dynamic NF-κB response in microglia (2011) BMC Bioinformatics, 12, p. 276. , https://doi.org/10.1186/1471-2105-12-276, PMID: 21729324; Mothes, J, Busse, D, Kofahl, B, Wolf, J., Sources of dynamic variability in NF-κB signal transduction: A mechanistic model (2015) BioEssays, 37, pp. 452-462. , https://doi.org/10.1002/bies.201400113, PMID: 25640005; Inoue, K, Shinohara, H, Behar, M, Yumoto, N, Tanaka, G, Hoffmann, A, Aihara, K, Okada-Hatakeyama, M., Oscillation dynamics underlie functional switching of NF-κB for B-cell activation (2016) npj Syst Biol and Appl, 2, p. 16024. , https://doi.org/10.1038/npjsba.2016.24, PMID: 28725478; Wang, Z, Potoyan, DA, Wolynes, PG., Modeling the therapeutic efficacy of NFκB synthetic decoy oligodeoxynucleotides (ODNs) (2018) BMC Syst Biol, 12, p. 4. , https://doi.org/10.1186/s12918-018-0525-6, PMID: 29382384; Peng, SC, Wong, DSH, Tung, KC, Chen, YY, Chao, CC, Peng, CH, Computational modeling with forward and reverse engineering links signaling network and genomic regulatory responses: NF-κB signaling-induced gene expression responses in inflammation (2010) BMC Bioinformatics, 11, p. 308. , https://doi.org/10.1186/1471-2105-11-308; Calzone, L, Tournier, L, Fourquet, S, Thieffry, D, Zhivotovsky, B, Barillot, E, Zinovyev, A., Mathematical Modelling of Cell-Fate Decision in Response to Death Receptor Engagement (2010) PLoS Comput Biol, 6, p. e1000702. , https://doi.org/10.1371/journal.pcbi.1000702, PMID: 20221256; Schlatter, R, Schmich, K, Vizcarra, IA, Scheurich, P, Sauter, T, Borner, C, ON/OFF and Beyond–A Boolean Model of Apoptosis (2009) PLoS Comput Biol, 5, p. e1000595. , https://doi.org/10.1371/journal.pcbi.1000595, PMID: 20011108; Schliemann, M, Bullinger, E, Borchers, S, Allgöwer, F, Findeisen, R, Scheurich, P, Heterogeneity reduces sensitivity of cell death for TNF-stimuli (2011) BMC Syst Biol, 5, p. 204. , https://doi.org/10.1186/1752-0509-5-204; Melas, I, Mitsos, A, Messinis, DE, Weiss, TS, Alexopoulos, LG., Combined logical and data-driven models for linking signalling pathways to cellular response (2011) BMC Syst Biol, 5, p. 107. , https://doi.org/10.1186/1752-0509-5-107, PMID: 21729292; Mothes, J, Ipenberg, I, Arslan, SÇ, Benary, U, Scheidereit, C, Wolf, J., A Quantitative Modular Modeling Approach Reveals the Effects of Different A20 Feedback Implementations for the NF-kB Signaling Dynamics (2020) Front Physiol, 11, p. 896. , https://doi.org/10.3389/fphys.2020.00896, PMID: 32848849; Yao, S, Shatz, SM., Consistency Checking of UML Dynamic Models Based on Petri Net Techniques (2006) 15th Int Conf Comp, pp. 289-297. , https://doi.org/10.1109/CIC.2006.32; Heiner, M, Koch, I., Petri Net Based Model Validation in Systems Biology (2004) Proc 25th Int Conf Appl Theory of Petri Nets, LCNS, 3099, pp. 216-237. , https://doi.org/10.1007/978-3-540-27793-4_13; (2020) Inkscape, , https://inkscape.org; Amstein, L, Ackermann, J, Scheidel, J, Fulda, S, Dikic, I, Koch, I., Manatee invariants reveal functional pathways in signaling networks (2017) BMC Syst Biol, 11, p. 72. , https://doi.org/10.1186/s12918-017-0448-7, PMID: 28754124; Hannig, J, Giese, H, Schweizer, B, Amstein, L, Ackermann, J, Koch, I., isiKnock: in silico knockouts in biochemical pathways (2019) Bioinformatics, 5, pp. 892-894; Giese, H, Ackermann, J, Heide, H, Bleier, L, Dröse, S, Wittig, I, NOVA: a software to analyze complexome profiling data (2015) Bioinformatics, 31, pp. 440-441. , https://doi.org/10.1093/bioinformatics/btu623, PMID: 25301849; Sokal, R, Michener, C., A statistical method for evaluating systematic relationships (1958) Univ Kansas Sci Bull; Pearson, K., Notes on regression and inheritance in the case of two parents (1895) Proc R Soc Lond, 58, pp. 240-242; Ting, AT, Bertrand, MJM., More to Life than NF-κB in TNFR1 Signaling (2016) Trends Immunol, 37 (8), pp. 535-545; Karin, M, Lin, A., NF-κB at the crossroads of life and death (2002) Nat Immunol, 3, pp. 221-227; Wallach, D., The cybernetics of TNF: Old views and newer ones (2016) Seminars in Cell & Developmental Biol, 50, pp. 105-114. , https://doi.org/10.1016/j.semcdb.2015.10.014, PMID: 26474540; Wajant, H, Scheurich, P., TNFR1-induced activation of the classical NF-κB pathway (2011) FEBS J, 278 (6), pp. 862-876. , https://doi.org/10.1111/j.1742-4658.2011.08015.x, PMID: 21232017; Wertz, I, Dixit, VM., Ubiquitin-mediated regulation of TNFR1 signaling (2008) Cytokine and Growth Factor Rev, 19 (3–4), pp. 313-324. , https://doi.org/10.1016/j.cytogfr.2008.04.014, PMID: 18515172; Lockshin, RA, Zekeri, Z., Cell death in health and disease (2007) J Cellular & Mol Med, 11, pp. 1214-1224. , https://doi.org/10.1111/j.1582-4934.2007.00150.x, PMID: 18031301; Schmidt, N, Haydn, T, Schneider, I, Busch, H, Boerries, M, Fulda, S., Smac mimetic induces an early wave of gene expression via NF-κB and AP-1 and a second wave via TNFR1 signaling (2018) Cancer Letters, 421 (1), pp. 170-185. , https://doi.org/10.1016/j.canlet.2018.01.082, PMID: 29421152; Bertrand, MJM, Milutinovic, S, Dickson, KM, Ho, WC, Boudreault, A, Durkin, J, cIAP1 and cIAP2 falicitate cancer cell survival by functioning as E3 ligases that promote RIP1 ubiquitination (2008) Mol Cell, 30 (6), pp. 689-700; Jaco, I, Annibaldi, A, Lalaoui, N, Wilson, R, Tenev, T, Laurien, L, MK2 Phosphorylates RIPK1 to Prevent TNF-induced Cell Death (2017) Mol Cell, 66 (5), pp. 698-710. , https://doi.org/10.1016/j.molcel.2017.05.003, PMID: 28506461; Oberst, A., MK2 balances inflammation and cell death (2017) Nat Cell Biol, 9 (10), pp. 1150-1152. , https://doi.org/10.1038/ncb3619, PMID: 28960200; Tenev, T, Bianchi, K, Darding, M, Broemer, M, Langlais, C, Wallberg, F, The Ripoptosome, a Signaling Platform that Assembles in Response to Genotoxic Stress and Loss of IAPs (2011) Mol Cell, 43 (3), pp. 432-448. , https://doi.org/10.1016/j.molcel.2011.06.006, PMID: 21737329; Feokistova, M, Geserick, P, Kellert, B, Dimitrova, DP, Langlais, C, Hupe, M, cIAPs Block Ripoptosome Formation, a RIP1/Caspase-8 Containing Intracellular Cell Death Complex Differentially Regulated by cFLIP Isoforms (2011) Mol Cell, 43 (3), pp. 449-463. , https://doi.org/10.1016/j.molcel.2011.06.011, PMID: 21737330; Dondelinger, Y, Aguileta, MA, Goossens, V, Dubuisson, C, Grootjans, S, Dejardin, E, RIPK3 contributes to TNFR1-mediated RIPK1 kinase-dependent apoptosis in condition of cIAP1/2 depletion or TAK1 kinase inhibition (2013) Cell Death & Differ, 20 (10), pp. 1381-1392; Dondelinger, Y, Jouan-Lanhouet, S, Divert, T, Theatre, E, Bertin, J, Gough, PJ, NF-κB-Independent Role of IKKα/IKKβ in Preventing RIPK1 Kinase-Dependent Apoptotic and Necroptotic Cell Death during TNF Signaling (2015) Mol Cell, 60 (1), pp. 63-76. , https://doi.org/10.1016/j.molcel.2015.07.032, PMID: 26344099; Dondelinger, Y, Delanghe, T, Rojas-Rivera, D, Priem, D, Delvaeye, T, Bruggeman, I, MK2 phosphorylation of RIPK1 regulates TNF-mediated cell death (2017) Nat Cell Biol, 19 (10), pp. 1237-1247. , https://doi.org/10.1038/ncb3608, PMID: 28920952; Linkermann, A, Green, DR., Necroptosis (2014) New England J Med, 370 (5), pp. 455-465; Gerlach, B, Cordier, SM, Schmukle, AC, Emmerich, CH, Rieser, E, Haas, TL, Linear ubiquitination prevents inflammation and regulates immune signaling (2011) Nature, 471, pp. 591-596; Weinlich, R, Oberst, A, Beere, HM, Green, DR., Necroptosis in development, inflammation and disease (2016) Mol Cell Biol, 18 (2), pp. 127-136. , https://doi.org/10.1038/nrm.2016.149, PMID: 27999438; Tsuchiya, Y, Nakabayashi, O, Nakano, H., FLIP the Switch: Regulation of Apoptosis and Necroptosis by cFLIP (2015) Int J Mol Sci, 16 (12), pp. 30321-30341. , https://doi.org/10.3390/ijms161226232, PMID: 26694384; Shore, GC, Nguyen, M., Bcl-2 proteins and apoptosis: Choose your partner (2008) Cell, 135 (6), pp. 1004-1006. , https://doi.org/10.1016/j.cell.2008.11.029, PMID: 19070569; Micheau, O, Tschopp, J., Induction of TNF Receptor I-Mediated Apoptosis via Two Sequential Signaling Complexes (2003) Cell, 114 (2), pp. 181-190. , https://doi.org/10.1016/s0092-8674(03)00521-x, PMID: 12887920; Oberst, A, Dillon, CP, Weinlich, R, McCormick, LL, Fitzgerald, P, Pop, C, Catalytic activity of the caspase-8-FLIPL complex inhibits RIPK3-dependent necrosis (2011) Nature, 471 (7338), pp. 363-367. , https://doi.org/10.1038/nature09852, PMID: 21368763; Dillon, CP, Oberst, A, Weinlich, R, Janke, LJ, Kang, T-B, Ben-Moshe, T, Survival Function of the FADD-CASPASE-8-cFLIPL Complex (2012) Cell Reports, 1 (5), pp. 401-407. , https://doi.org/10.1016/j.celrep.2012.03.010, PMID: 22675671; Onizawa, M, Oshima, S, Schulze-Topphoff, U, Oses-Prieto, JA, Lu, T, Tavares, R, The ubiquitin-modifying enzyme A20 restricts ubiquitination of the kinase RIPK3 and protects cells from necroptosis (2015) Nat Immunol, 16 (6), pp. 618-627. , https://doi.org/10.1038/ni.3172, PMID: 25939025; O’Donnell, MA, Perez-Jimenez, E, Oberst, A, Massouri, R, Xavier, R, Green, DR, Caspase 8 inhibits programmed necrosis by processing CYLD (2011) Nat Cell Biol, 13 (12), pp. 1437-1442. , https://doi.org/10.1038/ncb2362, PMID: 22037414; Zhou, K.-Q., Azlan, Z., Fuzzy Petri nets and industrial applications: a review (2016) Artificial Intelligence Rev, 45, pp. 1-42; Reddy, VN, Liebmann, MN, Mavrovouniotis, ML., Petri Net Representations in Metabolic Pathways (1993) Proc Int Conf Intell Syst Mol Biol, 94 (1), pp. 328-336. , PMID: 7584354; Grunwald, S, Speer, A, Ackermann, J, Koch, I, Petri net modelling of gene regulation of the Duchenne muscular dystrophy (2008) BioSystems, 92, pp. 189-205; Kielbassa, J, Bortfeldt, R, Schuster, S, Koch, I., Modeling of the U1 snRNP assembly pathway in alternative splicing in human cells using Petri nets (2009) Comp Biol Chem, 33, pp. 46-61. , https://doi.org/10.1016/j.compbiolchem.2008.07.022, PMID: 18775676; Lautenbach, K, (1973) GMD Report, (82); Schuster, S, Hilgetag, C., On elementary flux modes in biochemical reaction systems at steady state (1994) J Biol Sys, 2, pp. 597-617. , (02); Trares, K, Ackermann, J, Koch, I., The canonical and non-canonical NF-κB pathways and their crosstalk: A comparative study based on Petri nets (2021) BioSystems, 11, p. 104564. , https://doi.org/10.1016/j.biosystems.2021.104564, PMID: 34688841; Schuster, S, Pfeiffer, T, Moldenbauer, F, Koch, I, Dandekar, T., Exploring the pathway structure of metabolism: decomposition into subnetworks and application to Mycoplasma pneumoniae (2002) Bioinformatics, 18 (2), pp. 351-361. , https://doi.org/10.1093/bioinformatics/18.2.351, PMID: 11847093; Scheidel, J, Amstein, L, Ackermann, J, Dikic, I, Koch, I., In silico knockout studies of xenophagic capturing of Salmonella (2016) PLoS Comput Biol, 12 (12), p. e1005200. , https://doi.org/10.1371/journal.pcbi.1005200, PMID: 27906974\",\"Koch, I.; Goethe University Frankfurt, Germany; email: ina.koch@bioinformatik.uni-frankfurt.de\",,,\"Public Library of Science\",,,,,1553734X,,,\"35994517\",\"English\",\"PLoS Comput. Biol.\",Article,\"Final\",\"All Open Access, Gold, Green\",Scopus,2-s2.0-85138069321\n\"Gogolińska A., Nowak W.\",\"55360326100;7103349986;\",\"Bipartite Graphs—Petri Nets in Biology Modeling\",2022,\"Mechanisms and Machine Science\",\"107\",,,\"175\",\"200\",,,\"10.1007/978-3-030-76787-7_9\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-85112408172&doi=10.1007%2f978-3-030-76787-7_9&partnerID=40&md5=c0a4df7a9c56d43a702a20128bf33251\",\"Faculty of Mathematics and Computer Science, Nicolaus Copernicus University, Toruń, 87-100, Poland; Faculty of Physics, Astronomy and Informatics, Nicolaus Copernicus University, Toruń, 87-100, Poland\",\"Gogolińska, A., Faculty of Mathematics and Computer Science, Nicolaus Copernicus University, Toruń, 87-100, Poland; Nowak, W., Faculty of Physics, Astronomy and Informatics, Nicolaus Copernicus University, Toruń, 87-100, Poland\",\"Petri nets (PNs) are bipartite graphs with two types of nodes: places and transitions. Places usually represent objects and transitions represent some actions or reactions. Places may contain tokens, which according to defined rules, can be transferred between places by transitions. The basic idea of PNs is simple. However, it allows to create a wide range of models. This chapter is focused on PNs models in biology. A few examples of PNs applications in this discipline are presented: modeling of Gene Regulatory Networks; metabolic, signaling and regulatory network modeling and analysis of Molecular Dynamic simulations results. Basic definitions, biologically important properties and the most commonly used extensions of PNs are also presented. The chapter shows that PNs can be used to create variety of models: qualitative, quantitative, synchronous, asynchronous, which can be applied to various biological phenomena. © 2022, Springer Nature Switzerland AG.\",\"Gene regulatory networks; Immune system modeling; Modeling; Molecular dynamics simulations; Petri nets; Reactions modeling\",\"Molecular dynamics; Biological phenomena; Bipartite graphs; Gene regulatory networks; Petri nets (PNs); Regulatory network; Petri nets\",,,,,,,,\"Murata, T., Petri nets: Properties, analysis and applications (1989) Proc. of the IEEE, 77 (4), pp. 541-580; Petri, C.A., (1962) Kommunikation Mit Automaten; (2013) Petri Nets: Fundamental Models, Verification and Applications, , Diaz, M. (ed.), Wiley, London; Tuncel, G., Mirac Bayhan, G., Applications of Petri nets in production scheduling: A review (2007) Int. J. Ad. Manuf. Technol., 34 (7-8), pp. 762-773; López-Grao, J.-P., Colom, J.-M., Tricas, F., The deadlock problem in the control of flexible manufacturing systems: An overview of the Petri net approach (2014) Proceedings of the 2014 IEEE Emerging Technology and Factory Automation (ETFA), , IEEE; Di Febbraro, A., Giglio, D., Sacco, N., Urban traffic control structure based on hybrid Petri nets (2004) IEEE Trans. Intell. Transport. Syst., 5 (4), pp. 224-237; Pura, M.L., Buchs, D., Model checking ARAN ad hoc secure routing protocol with algebraic Petri nets (2014) 2014 10Th International Conference on Communications (COMM). IEEE; Bo, C., Chen, J., Deng, M., Petri net based formal analysis for multimedia conferencing services orchestration (2012) Expert Syst. Appl., 39 (1), pp. 696-705; Zouaghi, L., Mission-based online generation of probabilistic monitoring models for mobile robot navigation using Petri nets (2014) Robot. Autonom. Syst., 62 (1), pp. 61-67; Reddy, V.N., Mavrovouniotis, M.L., Liebman, M.N., (1993) Petri Net Representations in Metabolic Pathways. In: ISMB, 93. , , vol; Hofestädt, R., A Petri net application to model metabolic processes (1994) Syst. Anal. Model. Simul., 16 (2), pp. 113-122; Reisig, W., (2012) Petri Nets: An Introduction, 4. , , vol. , Springer Science and Business Media, Berlin; David, R., Alla, H., Continuous, D., (2005) Hybrid Petri Nets, 1. , , vol. , Springer, Berlin; Silva, J.R., Del Foyo, P.M.G., (2012) Timed Petri Nets. Petri Nets: Manufacturing and Computer Science, pp. 359-378. , InTech; Florin, G., Natkin, S., (1982) Evaluation Based upon Stochastic Petri Nets of the Maximum Throughput of a Full Duplex Protocol. In: Application and Theory of Petri Nets, pp. 280-288. , , pp. , Springer, Berlin, Heidelberg; Molloy, M.K., (1982) On the Integration of Delay and Throughput Measures in Distributed Processing Models, p. 3339; Marsan, M.A., Stochastic Petri nets: An elementary introduction (1988) European Workshop on Applications and Theory in Petri Nets, , Springer, Berlin; Gilbert, D., Heiner, M., From Petri nets to differential equations—an integrative approach for biochemical network analysis (2006) International Conference on Application and Theory of Petri Nets. Springer, Berlin; Jensen, K., Kristensen, L.M., (2009) Coloured Petri Nets: Modelling and Validation of Concurrent Systems, , Springer Science and Business Media, Berlin; Sun, J., Qin, S.-Y., Song, Y.-H., Fault diagnosis of electric power systems based on fuzzy Petri nets (2004) IEEE Transactions on Power Systems, 19 (4), pp. 2053-2059; O’Connor, C.M., Adams, J.U., Fairman, J., Essentials of cell biology (2010) NPG Educ, 1, p. 54; Pertea, M., Thousands of large-scale RNA sequencing experiments yield a comprehensive new human gene list and reveal extensive transcriptional noise (2018) Biorxiv: 332825; Sørensen, J.G., Full genome gene expression analysis of the heat stress response in Drosophila melanogaster (2005) Cell Stress Chaperones, 10 (4), p. 312; Vilar, J.M., Guet, C.C., Leibler, S., Modeling network dynamics: The lac operon, a case study J. Cell Biol., p. 161; Peter, I.S., Davidson, E.H., (2015) Genomic Control Process: Development and Evolution. Academic, , New York; Somogyi, R., Sniegoski, C.A., Modeling the complexity of genetic networks: Understanding multigenic and pleiotropic regulation (1996) Complexity, 1 (6), pp. 45-63; Chaouiya, C., Qualitative modelling of genetic networks: From logical regulatory graphs to standard petri nets (2004) International Conference on Application and Theory of Petri Nets, , Springer, Berlin; Steggles, L.J., Qualitatively modelling and analysing genetic regulatory networks: A Petri net approach (2007) Bioinformatics, 23 (3), pp. 336-343; Banks, R., Khomenko, V., Steggles, L.J., A case for using signal transition graphs for analysing and refining genetic networks (2009) Electron. Notes Theo. Comput. Sci., 227, pp. 3-19; Doi, A., Protein dynamics observations of lambda phage by hybrid Petri net (1999) Genome Inform, 10, pp. 217-218; Vasireddy, R., Biswas, S., Modeling gene regulatory network in fission yeast cell cycle using hybrid Petri nets (2004) International Conference on Neural Information Processing. Springer, Berlin; Doi, A., Constructing biological pathway models with hybrid functional Petri net (2004) In Silico Biol, 4 (3), pp. 271-291; Mura, I., Csikász-Nagy, A., Stochastic Petri net extension of a yeast cell cycle model (2008) J. Theor. Biol., 254 (4), pp. 850-860; Hamed, R.I., Ahson, S.I., Parveen, R., Designing genetic regulatory networks using fuzzy Petri nets approach (2010) Int. J. Autom. Comput., 7 (3), pp. 403-412; Chaouiya, C., Remy, E., Thieffry, D., Qualitative Petri net modelling of genetic networks (2006) Trans. Comput. Syst. Biol. VI, pp. 95-112; Klamt, S., Haus, U.-U., Theis, F., Hypergraphs and cellular networks (2009) Plos Comput. Biol., 5 (5); Modeling in Systems Biology: The Petri Net Approach, vol (2010) 16. Springer Science and Business Media, , Koch, I., Reisig, W., Schreiber, F. (eds.); Formanowicz, D., Hemojuvelin–hepcidin axis modeled and analyzed using Petri nets (2013) J. Biomed. Inform., 46 (6), pp. 1030-1043; Sackmann, A., An analysis of the Petri net based model of the human body iron homeostasis process (2007) Comput. Biol. Chem., 31 (1), pp. 1-10; Koch, I., Nöthen, J., Schleiff, E., Modeling the metabolism of Arabidopsis thaliana: Application of network decomposition and network reduction in the context of Petri nets (2017) Front. Genetics, 8 (85); Behinaein, B., Rudie, K., Sangrar, W., Structural analysis of Petri nets for modeling and analyzing signaling pathways (2014) 2014 IEEE 27Th Canadian Conference on Electrical and Computer Engineering (CCECE). IEEE; Chen, L., Modelling and simulation of signal transductions in an apoptosis pathway by using timed Petri nets (2007) J. Biosci., 32 (1), pp. 113-127; Goss, P.J.E., Peccoud, J., Quantitative modeling of stochastic systems in molecular biology by using stochastic Petri nets (1998) Proc. Nat. Acad. Sci., 95 (12), pp. 6750-6755; Matsui, M., Simulated cell division processes of the xenopus cell cycle pathway by genomic object net (2004) J. Integr. Bioinform., 1 (1), pp. 27-37; Herajy, M., Schwarick, M., Heiner, M., Hybrid Petri nets for modelling the eukaryotic cell cycle (2013) Trans. Petri Nets Other Models Concurrency VIII, pp. 123-141; Bibi, Z., Modeling and analysis of the signaling crosstalk of PI3K, AMPK and MAPK with Timed Hybrid Petri Nets approach (2017) 2017 17Th International Conference on Computational Science and Its Applications (ICCSA), , IEEE; Gogolinska, A., Nowak, W., Petri nets approach to modeling of immune system and autism (2012) International Conference on Artificial Immune Systems, , Springer, Berlin; Freitag, C.M., The genetics of autistic disorders and its clinical relevance: a review of the literature (2007) Mol. Psychiatry, 12 (1), pp. 2-22; Meltzer, A., van de Water, J., The role of the immune system in autism spectrum disorder (2017) Neuropsychopharmacology, 42 (1), pp. 284-298; Goines, P.E., Ashwood, P., Cytokine dysregulation in autism spectrum disorders (ASD): Possible role of the environment (2013) Neurotoxicology and Teratology, 36, pp. 67-81; Ashwood, P., Wills, S., van de Water, J., The immune response in autism: A new frontier for autism research (2006) J. Leukocyte Biol., 80 (1), pp. 1-15; Curran, L.K., Behaviors associated with fever in children with autism spectrum disorders (2007) Pediatrics, 120 (6), pp. e1386-e; Berendsen, H.J.C., Molecular dynamics with coupling to an external bath (1984) J. Chem. Phys., 81 (8), pp. 3684-3690; Gogolinska, A., Jakubowski, R., Nowak, W., Petri nets formalism facilitates analysis of complex biomolecular structural data (2016) Rairo-Oper. Res., 50 (2), pp. 401-411; Barylska, K., Reversing computations modelled by coloured Petri nets (2018) ATAED@ Petri Nets/Acsd; Seppelt, R., Temme, M.-M.L., Hybrid low level Petri nets in environmental modeling-development platform and case studies (2001) Integrative Systems Approaches to Natural and Social Dynamics, pp. 181-201. , , pp. , Springer, Berlin\",\"Gogolińska, A.; Faculty of Mathematics and Computer Science, Poland; email: anna.gogolinska@mat.umk.pl\",,,\"Springer Science and Business Media B.V.\",,,,,22110984,,,,\"English\",\"Mech. Mach. Sci.\",Book Chapter,\"Final\",\"\",Scopus,2-s2.0-85112408172\n\"Somekh J.\",\"26635860700;\",\"Model-based pathway enrichment analysis applied to the TGF-beta regulation of autophagy in autism\",2021,\"Journal of Biomedical Informatics\",\"118\",,\"103781\",\"\",\"\",,2,\"10.1016/j.jbi.2021.103781\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-85105695654&doi=10.1016%2fj.jbi.2021.103781&partnerID=40&md5=d98374222d34ea4c98a5dc7d214911a7\",\"Department of Information Systems, University of Haifa, Haifa, 3498838, Israel\",\"Somekh, J., Department of Information Systems, University of Haifa, Haifa, 3498838, Israel\",\"To differentiate between conditions of health and disease, current pathway enrichment analysis methods detect the differential expression of distinct biological pathways. System-level model-driven approaches, however, are lacking. Here we present a new methodology that uses a dynamic model to suggest a unified subsystem to better differentiate between diseased and healthy conditions. Our methodology includes the following steps: 1) detecting connections between relevant differentially expressed pathways; 2) construction of a unified in silico model, a stochastic Petri net model that links these distinct pathways; 3) model execution to predict subsystem activation; and 4) enrichment analysis of the predicted subsystem. We apply our approach to the TGF-beta regulation of the autophagy system implicated in autism. Our model was constructed manually, based on the literature, to predict, using model simulation, the TGF-beta-to-autophagy active subsystem and downstream gene expression changes associated with TGF-beta, which go beyond the individual findings derived from literature. We evaluated the in silico predicted subsystem and found it to be co-expressed in the normative whole blood human gene expression data. Finally, we show our subsystem's gene set to be significantly differentially expressed in two independent datasets of blood samples of ASD (autistic spectrum disorders) individuals as opposed to controls. Our study demonstrates that dynamic pathway unification can define a new refined subsystem that can significantly differentiate between disease conditions. © 2021 Elsevier Inc.\",\"Autism; Autophagy; Differential gene expression; Gene expression; Pathway enrichment analysis; Petri nets; TGF-beta\",\"Activation analysis; Blood; Cell death; Diseases; Gene expression; Petri nets; Stochastic control systems; Stochastic systems; Autistic spectrum disorders; Biological pathways; Dynamic pathways; In-silico models; Model executions; Model simulation; Stochastic Petri Nets; System-level modeling; Stochastic models; transforming growth factor beta; transforming growth factor beta; analytic method; Article; autism; autophagy (cellular); biological model; blood sampling; computer model; differential gene expression; gene expression; genetic association; genetic database; methodology; model based pathway enrichment analysis; molecular dynamics; Petri net; prediction; regulatory mechanism; simulation; autophagy; genetics; human; Autism Spectrum Disorder; Autistic Disorder; Autophagy; Humans; Transforming Growth Factor beta\",,\"Transforming Growth Factor beta\",,,,,,\"Khatri, P., Sirota, M., Butte, A.J., Ten years of pathway analysis: Current approaches and outstanding challenges (2012) PLoS Comput. Biol., 8 (2); Hung, J.-H., (2013), Gene Set/Pathway Enrichment Analysis. In: Humana Press, Totowa, NJ201-213. doi:10.1007/978-1-62703-107-3_13; Ihnatova, I., Popovici, V., Budinska, E., A critical comparison of topology-based pathway analysis methods. Li X, ed. PLoS One. 2018;13(1):e0191154. doi:10.1371/journal.pone.0191154; (2020), https://academic.oup.com/nar/article/28/1/27/2384332, KEGG: Kyoto Encyclopedia of Genes and Genomes | Nucleic Acids Research | Oxford Academic. Accessed May 18; Blake, J.A., Christie, K.R., Dolan, M.E., Gene ontology consortium: Going forward (2015) Nucleic Acids Res., 43 (D1), pp. D1049-D1056; Subramanian, A., Tamayo, P., Mootha, V.K., Gene set enrichment analysis: A knowledge-based approach for interpreting genome-wide expression profiles (2005) Proc. Natl. Acad. Sci. USA, 102 (43), pp. 15545-15550; Amadoz, A., Hidalgo, M.R., Çubuk, C., Carbonell-Caballero, J., Dopazo, J., A comparison of mechanistic signaling pathway activity analysis methods (2018) Brief Bioinform.; Korcsmaros, T., Schneider, M.V., Superti-Furga, G., Next generation of network medicine: interdisciplinary signaling approaches (2017) Integr Biol (United Kingdom)., 9 (2), pp. 97-108; Thomas, P.D., Hill, D.P., Mi, H., Gene Ontology Causal Activity Modeling (GO-CAM) moves beyond GO annotations to structured descriptions of biological functions and systems (2019) Nat. Genet., 51 (10), pp. 1429-1433; Fisher, J., Henzinger, T.A., Executable cell biology (2007) Nat. Biotechnol., 25 (11), pp. 1239-1249; Koch, I., Reisig, W., Schreiber, F., Modeling in Systems Biology: The Petri Net Approach (2011), 1st ed. Springer-Verlag, New York, Inc. New York, NY, USA; Somekh, J., Peleg, M., Eran, A., A model-driven methodology for exploring complex disease comorbidities applied to autism spectrum disorder and inflammatory bowel disease (2016) J. Biomed. Inform., 63; Somekh, J., Choder, M., Dori, D., Conceptual Model-based Systems Biology: mapping knowledge and discovering gaps in the mRNA transcription cycle. Preiss T, ed. PLoS One. 2012;7(12):e51430. doi:10.1371/journal.pone.0051430; Somekh, J., Choder, M., Dori, D., Conceptual Model-Based Systems Biology: Mapping Knowledge and Discovering Gaps in the mRNA Transcription Cycle (2012) PLoS ONE, 7 (12); Koch, I., Schreiber, F., (2011), Modeling in Systems Biology The Petri Net Approach Introduction. In: Koch I, Reisig W, Schreiber F, eds. Modeling in Systems Biology-the Petri Net Approach. Vol 16. Godalming: Springer-Verlag London Ltd3-+. doi:10.1007/978-1-84996-474-6_1; Blätke, M.A., Heiner, M., Marwan, W., (2015), BioModel Engineering with Petri Nets; In Algebraic and Discrete Mathematical Methods for Modern Biology, (R Robeva, Ed.), Elsevier Inc.,pages 141–193, March; Peleg, M., Rubin, D., Altman, R.B., Using Petri Net tools to study properties and dynamics of biological systems (2005) J. Am. Med. Inform. Assoc., 12 (2), pp. 181-199; Gillespie, D.T., Exact stochastic simulation of coupled chemical reactions (1977) J. Phys. Chem., 81 (25), pp. 2340-2361; Steggles, L.J., Banks, R., Shaw, O., Wipat, A., Qualitatively modelling and analysing genetic regulatory networks: a Petri net approach (2007) Bioinformatics, 23 (3), pp. 336-343; Lee, K.-M., Hwang, S.-K., Lee, J.-A., http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=3807000&tool=pmcentrez&rendertype=abstract, Neuronal Autophagy and Neurodevelopmental Disorders. Exp Neurobiol. 2013;22(3):133-142; Feng, Y., He, D., Yao, Z., Klionsky, D.J., The machinery of macroautophagy (2014) Cell Res., 24 (1), pp. 24-41; He, C., Klionsky, D.J., Regulation mechanisms and signaling pathways of autophagy (2009) Annu. Rev. Genet., 43, pp. 67-93; Till, A., Lipinski, S., Ellinghaus, D., Autophagy receptor CALCOCO2/NDP52 takes center stage in Crohn disease (2013) Autophagy., 9 (8), pp. 1256-1257; Yin, Z., Pascual, C., Klionsky, D.J., Autophagy: Machinery and regulation (2016) Microb Cell., 3 (12), pp. 588-596; Levine, B., Mizushima, N., Virgin, H.W.H., Autophagy in immunity and inflammation (2011) Nature, 469 (7330), pp. 323-335; Levine, B., Kroemer, G., Autophagy in the Pathogenesis of Disease (2008) Cell, 132 (1), pp. 27-42; Mizushima, N., Levine, B., Cuervo, A.M., Klionsky, D.J., Autophagy fights disease through cellular self-digestion (2008) Nature, 451 (7182), pp. 1069-1075; Levine, B., Mizushima, N., Virgin, H., (2015), http://www.nature.com/articles/nature09782, Autophagy in immunity and inflammation. Nature. 2011. Accessed May 18; Xu, N., Li, X., Zhong, Y., Inflammatory cytokines: potential biomarkers of immunologic dysfunction in autism spectrum disorders (2015) Mediators Inflamm., 2015; Goines, P.E., Ashwood, P., Cytokine dysregulation in autism spectrum disorders (ASD): Possible role of the environment (2013) Neurotoxicol. Teratol., 36, pp. 67-81; Moustakas, A., Miyazawa, K., (2015), https://books.google.com/books?hl=en&lr=&id=sZJEAAAAQBAJ&pgis=1, TGF-? In Human Disease. Springer Science & Business Media; 2013. Accessed May 27; (2015), http://www.springer.com/us/book/9784431544081, TGF-β in Human Disease | Springer. Accessed June 15; Kajdaniuk, D., Marek, B., Borgiel-Marek, H., Kos-Kudła, B., Transforming growth factor β1 (TGFβ1) in physiology and pathology (2013) Endokrynol Pol., 64 (5), pp. 384-396; Suzuki, H.I., Kiyono, K., Miyazono, K., Regulation of autophagy by transforming growth factor-β (TGF-β) signaling (2010) Autophagy, 6 (5), pp. 645-647; Ding, Y., Choi, M.E., Regulation of Autophagy by TGF-β: Emerging Role in Kidney Fibrosis (2014) Semin. Nephrol., 34 (1), pp. 62-71; Xu, Y., Yang, S., Huang, J., Ruan, S., Zheng, Z., Lin, J., Tgf-β1 induces autophagy and promotes apoptosis in renal tubular epithelial cells (2012) Int. J. Mol. Med., 29 (5), pp. 781-790; Ghavami, S., Cunnington, R.H., Gupta, S., Autophagy is a regulator of TGF-β1-induced fibrogenesis in primary human atrial myofibroblasts (2015) Cell Death Dis., 6 (3); (2015), http://dsm.psychiatryonline.org/doi/book/10.1176/appi.books.9780890425596, Diagnostic and Statistical Manual of Mental Disorders: DSM Library. Accessed July 9; Elsabbagh, M., Divan, G., Koh, Y.-J., Global prevalence of autism and other pervasive developmental disorders (2012) Autism Res., 5 (3), pp. 160-179; Poultney, C.S., Goldberg, A.P., Drapeau, E., Identification of small exonic CNV from whole-exome sequence data and application to autism spectrum disorder (2013) Am. J. Hum. Genet., 93 (4), pp. 607-619; Betancur, C., Etiological heterogeneity in autism spectrum disorders: more than 100 genetic and genomic disorders and still counting (2011) Brain Res., 1380, pp. 42-77; Huguet, G., Ey, E., Bourgeron, T., The genetic landscapes of autism spectrum disorders (2013) Annu. Rev. Genomics Hum. Genet., 14, pp. 191-213; Rzhetsky, A., Bagley, S.C., Wang, K., Environmental and state-level regulatory factors affect the incidence of autism and intellectual disability (2014) PLoS Comput. Biol., 10 (3); Rossignol, D.A., Genuis, S.J., Frye, R.E., Environmental toxicants and autism spectrum disorders: a systematic review (2014) Transl. Psychiatry, 4; Tang, G., Gudsnuk, K., Kuo, S.-H., Loss of mTOR-Dependent Macroautophagy Causes Autistic-like Synaptic Pruning Deficits (2014) Neuron, 83 (5), pp. 1131-1143; Vargas, D.L., Nascimbene, C., Krishnan, C., Zimmerman, A.W., Pardo, C.A., Neuroglial activation and neuroinflammation in the brain of patients with autism (2005) Ann. Neurol., 57 (1), pp. 67-81; Okada, K., Hashimoto, K., Iwata, Y., Decreased serum levels of transforming growth factor-beta1 in patients with autism (2007) Prog. Neuro-Psychopharmacol. Biol. Psychiatry, 31 (1), pp. 187-190; Ashwood, P., Enstrom, A., Krakowiak, P., Decreased transforming growth factor beta1 in autism: a potential link between immune dysregulation and impairment in clinical behavioral outcomes (2008) J. Neuroimmunol., 204 (1-2), pp. 149-153; Kong, S.W., Collins, C.D., Shimizu-Motohashi, Y., Characteristics and predictive value of blood transcriptome signature in males with autism spectrum disorders (2012) PLoS ONE, 7 (12); Heldin, C.-H., Moustakas, A., Role of Smads in TGFβ signaling (2012) Cell Tissue Res., 347 (1), pp. 21-36; Weston, C.R., Davis, R.J., (2015), http://www.ncbi.nlm.nih.gov/pubmed/11790549, The JNK signal transduction pathway. Curr Opin Genet Dev. 2002;12(1):14-21. Accessed June 25; Mu, Y., Gudey, S.K., Landström, M., Non-Smad signaling pathways (2012) Cell Tissue Res., 347 (1), pp. 11-20; Zhang, Y.E., Non-Smad pathways in TGF-beta signaling (2009) Cell Res., 19 (1), pp. 128-139; Dai, L., Aye Thu, C., Liu, X.-Y., Xi, J., Cheung, P.C.F., TAK1, more than just innate immunity (2012) IUBMB Life, 64 (10), pp. 825-834; Freudlsperger, C., Bian, Y., Contag Wise, S., TGF-β and NF-κB signal pathway cross-talk is mediated through TAK1 and SMAD7 in a subset of head and neck cancers (2013) Oncogene, 32 (12), pp. 1549-1559; Sakurai, H., Targeting of TAK1 in inflammatory disorders and cancer (2012) Trends Pharmacol. Sci., 33 (10), pp. 522-530; Xu, P., Das, M., Reilly, J., Davis, R.J., JNK regulates FoxO-dependent autophagy in neurons (2011) Genes Dev., 25 (4), pp. 310-322; Yu, J., Zhang, F., Wang, S., Zhang, Y., Fan, M., Xu, Z., TAK1 is activated by TGF- signaling and controls axonal growth during brain development (2014) J. Mol. Cell. Biol., 6 (4), pp. 349-351; Xu, Z., Maroney, A.C., Dobrzanski, P., Kukekov, N.V., Greene, L.A., The MLK family mediates c-Jun N-terminal kinase activation in neuronal apoptosis (2001) Mol. Cell. Biol., 21 (14), pp. 4713-4724; Zhang, D., Hu, Y., Sun, Q., Inhibition of transforming growth factor beta-activated kinase 1 confers neuroprotection after traumatic brain injury in rats (2013) Neuroscience, 238, pp. 209-217; Hong, M.-Y., Gao, J.-L., Cui, J.-Z., (2015), http://www.ncbi.nlm.nih.gov/pubmed/22884071, Effect of c-Jun NH₂-terminal kinase-mediated p53 expression on neuron autophagy following traumatic brain injury in rats. Chin Med J (Engl). 2012;125(11):2019-2024. Accessed June 17; Goldmann, T., Wieghofer, P., Müller, P.F., A new type of microglia gene targeting shows TAK1 to be pivotal in CNS autoimmune inflammation (2013) Nat. Neurosci., 16 (11), pp. 1618-1626; Wu, H., Wang, M.C., Bohmann, D., JNK protects Drosophila from oxidative stress by trancriptionally activating autophagy (2009) Mech. Dev., 126 (8-9), pp. 624-637; Li, D.-D., Wang, L.-L., Deng, R., The pivotal role of c-Jun NH2-terminal kinase-mediated Beclin 1 expression during anticancer agents-induced autophagy in cancer cells (2009) Oncogene, 28 (6), pp. 886-898; Sun, T., Li, D., Wang, L., c-Jun NH2-terminal kinase activation is essential for up-regulation of LC3 during ceramide-induced autophagy in human nasopharyngeal carcinoma cells (2011) J. Transl. Med., 9 (1), p. 161; Jang, C.-W., Chen, C.-C.C.-H., Chen, C.-C.C.-H., Chen, J., Su, Y.-H., Chen, R.-H., TGF-beta induces apoptosis through Smad-mediated expression of DAP-kinase (2002) Nat. Cell Biol., 4 (1), pp. 51-58; Kiyono, K., Suzuki, H.I., Matsuyama, H., Autophagy is activated by TGF-beta and potentiates TGF-beta-mediated growth inhibition in human hepatocellular carcinoma cells (2009) Cancer Res., 69 (23), pp. 8844-8852; Schmierer, B., Hill, C.S., TGFbeta-SMAD signal transduction: molecular specificity and functional flexibility (2007) Nat. Rev. Mol. Cell Biol., 8 (12), pp. 970-982; Ding, Y., Kim, J.K., Il, K.S., TGF-{beta}1 protects against mesangial cell apoptosis via induction of autophagy (2010) J. Biol. Chem., 285 (48), pp. 37909-37919; Ardlie, K.G., DeLuca, D.S., Segrè, A.V., The Genotype-Tissue Expression (GTEx) pilot analysis: Multitissue gene regulation in humans (2015) Science (80-), 348 (6235), pp. 648-660; Szczepańska, A., Research Design and Statistical Analysis, Third Edition by Jerome L. Myers, Arnold D. Well, Robert F. Lorch, Jr. Int Stat Rev. 2011;79(3):491-492. doi:10.1111/j.1751-5823.2011.00159_12.x; Pramparo, T., Pierce, K., Lombardo, M.V., Prediction of Autism by Translation and Immune/Inflammation Coexpressed Genes in Toddlers From Pediatric Community Practices (2015) JAMA Psychiatry, 72 (4), pp. 386-394; Simillion, C., Liechti, R., Lischer, H.E.L., Ioannidis, V., Bruggmann, R., Avoiding the pitfalls of gene set enrichment analysis with SetRank (2017) BMC Bioinf., 18 (1); Ding, Y., Kim, S.L.L., Lee, S.-Y., Koo, J.K.J.K., Wang, Z., Choi, M.E., Autophagy Regulates TGF- Expression and Suppresses Kidney Fibrosis Induced by Unilateral Ureteral Obstruction (2014) J. Am. Soc. Nephrol., 25 (12), pp. 2835-2846; Rohr, C., Marwan, W., Heiner, M., Snoopy–a unifying Petri net framework to investigate biomolecular networks (2010) Bioinformatics, 26 (7), pp. 974-975; Heiner, M., Schwarick, M., Wegener, J., (2015), pp. 200-211. , Charlie – an extensible Petri net analysis tool. In: Proc. PETRI NETS 2015, Brussels, Springer, LNCS. 9115, pages; Hu, Y., Flockhart, I., Vinayagam, A., An integrative approach to ortholog prediction for disease-focused and other functional studies (2011) BMC Bioinf., 12, p. 357; Kleeff, J., Korc, M., Up-regulation of transforming growth factor (TGF)-beta receptors by TGF-beta1 in COLO-357 cells (1998) J. Biol. Chem., 273 (13), pp. 7495-7500; Ventura, J.-J., Kennedy, N.J., Flavell, R.A., Davis, R.J., JNK regulates autocrine expression of TGF-beta1 (2004) Mol. Cell, 15 (2), pp. 269-278; Palla, G., Derényi, I., Farkas, I., Vicsek, T., Uncovering the overlapping community structure of complex networks in nature and society (2005) Nature, 435 (7043), pp. 814-818; Zhihui, F., Stimulation of GSH synthesis to prevent oxidative stress-induced apoptosis by hydroxytyrosol in human retinal pigment epithelial cells: activation of Nrf2 and JNK-p62/SQSTM1 pathways. (2012) J. Nutr. Biochem.\",,,,\"Academic Press Inc.\",,,,,15320464,,JBIOB,\"33839306\",\"English\",\"J. Biomed. Informatics\",Article,\"Final\",\"\",Scopus,2-s2.0-85105695654\n\"Li C., Qin J., Kuroyanagi K., Lu L., Nagasaki M., Satoru M.\",\"36087592000;36677933400;55966179200;56457005100;7005461981;7102554029;\",\"High-speed parameter search of dynamic biological pathways from time-course transcriptomic profiles using high-level Petri net\",2021,\"BioSystems\",\"201\",,\"104332\",\"\",\"\",,1,\"10.1016/j.biosystems.2020.104332\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-85098716401&doi=10.1016%2fj.biosystems.2020.104332&partnerID=40&md5=b1513843c5832b9a00f6b7757248f585\",\"Department of Human Genetics, And Women's Hospital, Zhejiang University School of Medicine, Hangzhou, Zhejiang, China; Zhejiang Provincial Key Laboratory of Genetic & Developmental Disorders, Zhejiang University School of Medicine, Hangzhou, Zhejiang, China; Department of Ultrasound, Women's Hospital, Zhejiang University School of Medicine, Hangzhou, Zhejiang, China; Graduate School of Information Science and Technology, University of Tokyo, Tokyo, Japan; Center for Genomic Medicine, Graduate School of Medicine, Kyoto University, Shogoinkawahara-cho, Kyoto-City, Kyoto, Sakyo-ku, Japan; Laboratory of DNA Information Analysis, Human Genome Center, Institute of Medical Science, University of Tokyo, Tokyo, Japan\",\"Li, C., Department of Human Genetics, And Women's Hospital, Zhejiang University School of Medicine, Hangzhou, Zhejiang, China, Zhejiang Provincial Key Laboratory of Genetic & Developmental Disorders, Zhejiang University School of Medicine, Hangzhou, Zhejiang, China; Qin, J., Department of Ultrasound, Women's Hospital, Zhejiang University School of Medicine, Hangzhou, Zhejiang, China; Kuroyanagi, K., Graduate School of Information Science and Technology, University of Tokyo, Tokyo, Japan; Lu, L., Department of Human Genetics, And Women's Hospital, Zhejiang University School of Medicine, Hangzhou, Zhejiang, China, Zhejiang Provincial Key Laboratory of Genetic & Developmental Disorders, Zhejiang University School of Medicine, Hangzhou, Zhejiang, China; Nagasaki, M., Center for Genomic Medicine, Graduate School of Medicine, Kyoto University, Shogoinkawahara-cho, Kyoto-City, Kyoto, Sakyo-ku, Japan; Satoru, M., Laboratory of DNA Information Analysis, Human Genome Center, Institute of Medical Science, University of Tokyo, Tokyo, Japan\",\"Dynamic simulation promises a deeper understanding of complex molecular mechanisms of biological pathways. How to determine the reaction kinetic parameters which govern the simulation results is still an open question in the field of systems biology. (1) Background: To execute simulation experiments, it is an essential first step to search effective values of model parameters. The complexity of biological systems and the experimental measurement technology severely limit the acquirement of accurate kinetic parameters. Previously proposed genomic data assimilation (GDA) approach enables users to handle parameter estimation using time-course information. However, it highly depends on successive time points and costs massive computational resource; (2) Methods: To address this problem, we present a new high-speed parameter search method for estimating the kinetic parameters of quantitative biological pathways using time-course transcriptomic profiles. The key idea of our method is to interactively prune the search space by introducing Probabilistic Linear-time Temporal Logic (PLTL) based model checking into GDA. (3) Results and conclusion: We demonstrated the effectiveness of our method by comparing with GDA on Mus musculus transcription circuits modelled by hybrid functional Petri net with extension. As a result, our method works faster and more accurate than GDA for both time-course datasets with dense and sparse observed values. © 2020 Elsevier B.V.\",\"Data assimilation; Dynamic simulation; Kinetics; Model checking; Parameter search; Particle filter\",\"cryptochrome; messenger RNA; nucleotide; transcription factor CLOCK; transcriptome; transcriptome; computer system; fly; genetic analysis; genomics; molecular analysis; parameterization; reaction kinetics; animal experiment; Article; circadian rhythm; continuous process; controlled study; enhancer region; enzyme activity; gene regulatory network; genetic algorithm; hypothalamus; kinetic parameters; male; mathematical analysis; maximum likelihood method; molecular dynamics; mouse; Mus musculus; nonhuman; nucleotide sequence; Petri net; protein binding; semantics; suprachiasmatic nucleus; time; transcriptomics; velocity; algorithm; animal; biological model; biology; computer simulation; genetics; genomics; kinetics; procedures; signal transduction; systems biology; Mus musculus; Algorithms; Animals; Computational Biology; Computer Simulation; Gene Regulatory Networks; Genomics; Kinetics; Mice; Models, Genetic; Signal Transduction; Systems Biology; Transcriptome\",,\"cryptochrome, 73745-06-9\",,,\"81601515; WKJ-ZJ-2033; LY17C060003\",\"This work has been supported by Zhejiang Provincial Natural Science Foundation of China ( LY17C060003 ), Chinese National Natural Science Foundation ( 81601515 ), and Zhejiang Provincial Key Projects of Technology Research ( WKJ-ZJ-2033 ) grants.\",,\"Andreychenko, A., Magnin, M., Inoue, K., Analyzing resilience properties in oscillatory biological systems using parametric model checking (2016) Biosystems, 149, pp. 50-58; Antoniotti, M., Policriti, A., Ugel, N., Mishra, B., Model building and model checking for biochemical processes (2003) Cell Biochem. Biophys., 38, p. 271; Bérard, B., Bidoit, M., Finkel, A., Laroussinie, F., Petit, A., Petrucci, L., Schnoebelen, P., Systems and Software Verification: Model-Checking Techniques and Tools. Springer Science & Business Media (2013); Ballnus, B., Schaper, S., Theis, F.J., Hasenauer, J., Bayesian parameter estimation for biochemical reaction networks using region-based adaptive parallel tempering (2018) Bioinformatics, 34, pp. i494-i501; Bashirov, R., Duranay, R., Şeytanoğlu, A., Mehraei, M., Akcay, N., Exploiting stochastic Petri nets with fuzzy parameters to predict efficient drug combinations for Spinal Muscular Atrophy (2019) Turk. J. Electr. Eng. Comput. Sci., 27, pp. 4009-4022; Cardelli, L., Kwiatkowska, M., Laurenti, L., Stochastic analysis of chemical reaction networks using linear noise approximation (2016) Biosystems, 149, pp. 26-33; Ceccarelli, M., Cerulo, L., Santone, A., De novo reconstruction of gene regulatory networks from time series data, an approach based on formal methods (2014) Methods, 69, pp. 298-305; Chaouiya, C., Petri net modelling of biological networks (2007) Briefings Bioinf., 8, pp. 210-219; Clarke, E.M., Emerson, E.A., Design and Synthesis of Synchronization Skeletons Using Branching Time Temporal Logic, Workshop on Logic of Programs. Springer (1981), pp. 52-71; Clarke, E.M., Grumberg, O., Peled, D., Model Checking. MIT Press (1999); Dada, J.O., Mendes, P., Multi-scale modelling and simulation in systems biology (2011) Integrative Biol. : Quant. Biosci. Nano to Macro, 3, pp. 86-96; Donaldson, R., Gilbert, D., A model checking approach to the parameter estimation of biochemical pathways (2008) Computational Methods in Systems Biology, Proceedings, pp. 269-287. , M. Heiner A.M. Uhrmacher; Donaldson, R., Gilbert, D., A Monte Carlo Model Checker for Probabilistic LTL with Numerical Constraints (2008), University of Glasgow, Dep. Of CS, Tech. Rep; Dyjack, N., Azeredo-Tseng, C., Yildirim, N., Mathematical modeling reveals differential regulation of MAPK activity by phosphatase proteins in the yeast pheromone response pathway (2017) Mol. Biosyst., 13, pp. 1323-1335; Fisher, J., Henzinger, T.A., Executable cell biology (2007) Nat. Biotechnol., 25, pp. 1239-1249; Fisher, J., Piterman, N., Hajnal, A., Henzinger, T.A., Predictive modeling of signaling crosstalk during C. elegans vulval development (2007) PLoS Comput. Biol., 3, p. e92; Gilbert, D., Heiner, M., Ghanbar, L., Chodak, J., Spatial quorum sensing modelling using coloured hybrid Petri nets and simulative model checking (2019) BMC Bioinf., 20, p. 173; Hürzeler, M., Künsch, H.R., Approximating and Maximising the Likelihood for a General State-Space Model, Sequential Monte Carlo Methods in Practice. Springer (2001), pp. 159-175; Hasegawa, T., Mori, T., Yamaguchi, R., Imoto, S., Miyano, S., Akutsu, T., An efficient data assimilation schema for restoration and extension of gene regulatory networks using time-course observation data (2014) J. Comput. Biol. : J. Comput. Mol. Cell Biol., 21, pp. 785-798; Heiner, M., Koch, I., Will, J., Model validation of biological pathways using Petri nets–demonstrated for apoptosis (2004) Biosystems, 75, pp. 15-28; Jard, C., Jeron, T., On-line model-checking for finite linear temporal logic specifications (1989) International Conference on Computer Aided Verification. Springer, pp. 189-196; Kitagawa, G., Non-Gaussian state—space modeling of nonstationary time series (1987) J. Am. Stat. Assoc., 82, pp. 1032-1041; Klipp, E., Herwig, R., Kowald, A., Wierling, C., Lehrach, H., Systems Biology in Practice: Concepts, Implementation and Application. John Wiley & Sons (2008); Koh, C.H., Nagasaki, M., Saito, A., Li, C., Wong, L., Miyano, S., MIRACH: efficient model checker for quantitative biological pathway models (2011) Bioinformatics, 27, pp. 734-735; Koh, C.H., Palaniappan, S.K., Thiagarajan, P., Wong, L., Improved statistical model checking methods for pathway analysis (2012) BMC Bioinf., 13, p. S15; Koh, G., Teong, H.F., Clement, M.V., Hsu, D., Thiagarajan, P.S., A decompositional approach to parameter estimation in pathway modeling: a case study of the Akt and MAPK pathways and their crosstalk (2006) Bioinformatics, 22, pp. e271-280; Li, C., Kuroyanagi, K., Nagasaki, M., Miyano, S., , p. 53. , n.d. Parameter Estimation of Biological Pathways Using Data Assimilation and Model Checking, BioPPN 2011 International Workshop on Biological Processes & Petri Nets. Citeseer; Li, C., Nagasaki, M., Ikeda, E., Sekiya, Y., Miyano, S., CSML2SBML: a novel tool for converting quantitative biological pathway models from CSML into SBML (2014) Biosystems, 121, pp. 22-28; Li, C., Nagasaki, M., Koh, C.H., Miyano, S., Online model checking approach based parameter estimation to a neuronal fate decision simulation model in Caenorhabditis elegans with hybrid functional Petri net with extension (2011) Mol. Biosyst., 7, pp. 1576-1592; Li, C., Nagasaki, M., Ueno, K., Miyano, S., Simulation-based model checking approach to cell fate specification during Caenorhabditis elegans vulval development by hybrid functional Petri net with extension (2009) BMC Syst. Biol., 3, p. 42; Li, C., Suzuki, S., Ge, Q.W., Nakata, M., Matsuno, H., Miyano, S., Structural modeling and analysis of signaling pathways based on Petri nets (2006) J. Bioinf. Comput. Biol., 4, pp. 1119-1140; Liu, B., Hagiescu, A., Palaniappan, S.K., Chattopadhyay, B., Cui, Z., Wong, W.-F., Thiagarajan, P., Approximate probabilistic analysis of biopathway dynamics (2012) Bioinformatics, 28 (11), pp. 1508-1516; Liu, F., Heiner, M., Gilbert, D., Fuzzy Petri nets for modelling of uncertain biological systems (2018) Briefings Bioinf.; Liu, F., Heiner, M., Yang, M., Fuzzy stochastic Petri nets for modeling biological systems with uncertain kinetic parameters (2016) PloS One, 11; Maeda, K., Kurata, H., Two-phase search (TPS) method: nonbiased and high-speed parameter search for dynamic models of biochemical networks (2009) IPSJ Trans. Bioinfo., 2, pp. 2-14; Matsuno, H., Inouye, S.T., Okitsu, Y., Fujii, Y., Miyano, S., A new regulatory interaction suggested by simulations for circadian genetic control mechanism in mammals (2006) J. Bioinf. Comput. Biol., 4, pp. 139-153; Matsuno, H., Li, C., Miyano, S., Petri net based descriptions for systematic understanding of biological pathways (2006) IEICE Trans. Fund. Electron. Commun. Comput. Sci., 89, pp. 3166-3174; Mi, H., Muruganujan, A., Demir, E., Matsuoka, Y., Funahashi, A., Kitano, H., Thomas, P.D., BioPAX support in Cell Designer (2011) Bioinformatics, 27, pp. 3437-3438; Nagasaki, M., Doi, A., Matsuno, H., Miyano, S., A versatile petri net based architecture for modeling and simulation of complex biological processes (2004) Genome Inform, 15, pp. 180-197; Nagasaki, M., Saito, A., Jeong, E., Li, C., Kojima, K., Ikeda, E., Miyano, S., Cell Illustrator 4.0: a computational platform for systems biology (2010) Silico Biol., 10, pp. 5-26; Nagasaki, M., Yamaguchi, R., Yoshida, R., Imoto, S., Doi, A., Tamada, Y., Matsuno, H., Higuchi, T., Genomic data assimilation for estimating hybrid functional Petri net from time-course gene expression data (2006) Genome Inform, 17, pp. 46-61; Palaniappan, S.K., Gyori, B.M., Liu, B., Hsu, D., Thiagarajan, P., Statistical model checking based calibration and analysis of bio-pathway models (2013) International Conference on Computational Methods in Systems Biology. Springer, pp. 120-134; Tüysüz, F., Kahraman, C., Modeling a flexible manufacturing cell using stochastic Petri nets with fuzzy parameters (2010) Expert Syst. Appl., 37, pp. 3910-3920; Tasaki, S., Nagasaki, M., Oyama, M., Hata, H., Ueno, K., Yoshida, R., Higuchi, T., Miyano, S., Modeling and estimation of dynamic EGFR pathway by data assimilation approach using time series proteomic data (2006) Genome Inform, 17, pp. 226-238; Troncale, S., Comet, J.-P., Bernot, G., Validation of biological models with temporal logic and timed hybrid petri nets, 2007 29th (2007) Annual International Conference of the IEEE Engineering in Medicine and Biology Society. IEEE, pp. 4603-4608; Zhu, J., Zhang, K., Zhang, G., Verifying Web Services Composition Based on Ltl and Colored Petri Net, 2011 6th International Conference on Computer Science & Education (ICCSE). IEEE (2011), pp. 1127-1130\",\"Li, C.; Department of Human Genetics, China; email: chenli2012@zju.edu.cn\nNagasaki, M.; Center for Genomic Medicine, Shogoinkawahara-cho, Sakyo-ku, Japan; email: nagasaki@csml.org\",,,\"Elsevier Ireland Ltd\",,,,,03032647,,BSYMB,\"33359226\",\"English\",\"BioSystems\",Article,\"Final\",\"\",Scopus,2-s2.0-85098716401\n\"Azim N., Iqbal N., Ahmad J., Khan M., Siddiqa A., Ashraf J., Khan A., Wei D.-Q.\",\"57221356344;57222997750;57201514205;56368080000;35178666100;57209426771;57201637517;7202909038;\",\"A Static Analysis of Wnt/β-Catenin and Wnt/Ca2+Biological Regulatory Networks for ARVC Using Automata Network Model\",2021,\"IEEE Access\",\"9\",,\"9486895\",\"107611\",\"107624\",,,\"10.1109/ACCESS.2021.3097550\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-85110842148&doi=10.1109%2fACCESS.2021.3097550&partnerID=40&md5=393621a5feefb8b84d03ac9326c8068e\",\"Department of Computer Science, Abdul Wali Khan University Mardan, Mardan, 23200, Pakistan; Department of Computer Science and Information Technology, University of Malakand, Chakdara, 23050, Pakistan; Department of Information Technology, University of Haripur, Haripur, 21120, Pakistan; Jackson Laboratory for Genomic Medicine, Farmington, CT  06032, United States; Department of Pathology and Laboratory Medicine, Aga Khan University Hospital, Karachi, 74800, Pakistan; Department of Bioinformatics and Biological Statistics, School of Life Sciences and Biotechnology, Shanghai Jiao Tong University, Shanghai, 200030, China\",\"Azim, N., Department of Computer Science, Abdul Wali Khan University Mardan, Mardan, 23200, Pakistan; Iqbal, N., Department of Computer Science, Abdul Wali Khan University Mardan, Mardan, 23200, Pakistan; Ahmad, J., Department of Computer Science and Information Technology, University of Malakand, Chakdara, 23050, Pakistan; Khan, M., Department of Information Technology, University of Haripur, Haripur, 21120, Pakistan; Siddiqa, A., Jackson Laboratory for Genomic Medicine, Farmington, CT  06032, United States; Ashraf, J., Department of Pathology and Laboratory Medicine, Aga Khan University Hospital, Karachi, 74800, Pakistan; Khan, A., Department of Bioinformatics and Biological Statistics, School of Life Sciences and Biotechnology, Shanghai Jiao Tong University, Shanghai, 200030, China; Wei, D.-Q., Department of Bioinformatics and Biological Statistics, School of Life Sciences and Biotechnology, Shanghai Jiao Tong University, Shanghai, 200030, China\",\"The Wnt-activated $\\beta $ -catenin and $Ca^{2+}$ ions play a critical role in the regulation of physiology of cardiomyocytes. The dysregulation of both the components causes the replacement of myocardial mass right ventricle with fibrous and adipose tissue which results in the condition of Arrhythmogenic Right ventricular Cardiomyopathy (ARVC). The major hurdle in ARVC treatment is lack of effective therapies targeting the underlying root molecular biomarkers of pathogenesis. Despite major advancements in interpreting the mechanism of ARVC etiology, the dynamics of molecular links in underlying biological machinery are still being delineated. Previously, formal methods based computational modeling techniques including kinetic logic, Petri Nets, hybrid automata and static analysis have greatly contributed in increasing our comprehension to decipher the molecular systems dynamics. It has allowed the identification of biomarkers which can be utilized for target-based therapies owing to meticulous biological abstractions along with implementing reference map that confines together the discrete biological insights. In this study, we have performed the static analysis of the Biological Regulatory Networks (BRNs) of the Wnt/ $\\beta $ -catenin and Wnt/Ca 2+ signaling pathways to identify the significant biomarkers for ARVC. The abstracted qualitative models of afore mentioned BRNs are first constructed in GINsim software tool and then these models are converted into Automata Network (ANs) Models using Pint software tool. The fix point analysis is performed which contributed in pinpointing the possible therapeutic strategies for ARVC treatment by identification of drug targets such as Gsk3, Ck1 and Axin in Wnt/ $\\beta $ -catenin AN and Bak Bax, Parp, mCalpain, JNk and CIn in Wnt/Ca 2+ AN. Moreover, the Bcl2 gene is identified as novel therapeutic remedy in both the ANs of ARVC. The Bcl2 gene prevents the cardiac apoptosis via positive regulation of Wnt in Wnt/ $\\beta $ -catenin AN and through inhibition of Bak Bax (apoptotic component) in Wnt/Ca 2+ AN. The current study tends to fulfill the scientific gap between wet lab studies and provides cost effective and time saving computational strategies for an effectual treatment for deadly diseases like ARVC. © 2013 IEEE.\",\"ARVC; Automata network model; biomarkers; pint tool\",\"Automata theory; Barium compounds; Biomarkers; Calcium compounds; Cell death; Computer software; Cost effectiveness; Formal methods; Genes; Machinery; Petri nets; Robots; Automata networks; Biological insight; Biological Regulatory Networks; Computational model; Computational strategy; Molecular biomarker; Signaling pathways; Therapeutic strategy; Static analysis\",,,,,\"YG2021ZD02; National Natural Science Foundation of China, NSFC: 32030063, 32070662, 61832019; Ministry of Science and Technology of the People's Republic of China, MOST: 2016YFA0501703; Science and Technology Commission of Shanghai Municipality, STCSM: 19430750600\",\"The work of Dong-Qing Wei was supported in part by the National Science Foundation of China under Grant 32070662, Grant 61832019, and Grant 32030063; in part by the Key Research Area Grant of the Ministry of Science and Technology of China under Grant 2016YFA0501703; in part by the Science and Technology Commission of Shanghai Municipality under Grant 19430750600; and in part by the Shanghai Jiao Tong University Joint International Research Laboratory of Metabolic and Developmental Sciences (JiRLMDS) Joint Research Fund and Joint Research Funds for Medical and Engineering and Scientific Research at Shanghai Jiao Tong University under Grant YG2021ZD02.\",,\"Macrae, C.A., Birchmeier, W., Thierfelder, L., Arrhythmogenic right ventricular cardiomyopathy: Moving toward mechanism (2006) J. Clin. Invest, 116 (7), pp. 1825-1828. , Jul; Corrado, D., Basso, C., Thiene, G., Mckenna, W.J., Davies, M.J., Fontaliran, F., Nava, A., Camerini, F., Spectrum of clinicopathologic manifestations of arrhythmogenic right ventricular cardiomyopathy/dysplasia: A multicenter study (1997) J. Amer. College Cardiol, 30 (6), pp. 1512-1520. , Nov; Harvey, P.A., Leinwand, L.A., Cellular mechanisms of cardiomyopathy (2011) J. Cell Biol, 194 (3), pp. 355-365. , Aug; Garcia-Gras, E., Lombardi, R., Giocondo, M.J., Willerson, J.T., Schneider, M.D., Khoury, D.S., Marian, A.J., Suppression of canonical wnt/-catenin signaling by nuclear plakoglobin recapitulates phenotype of arrhythmogenic right ventricular cardiomyopathy (2006) J. Clin. Invest, 116 (7), pp. 2012-2021; Opbergen, C.J.M.V., Delmar, M., Veen, T.A.B.V., Potential new mechanisms of pro-arrhythmia in arrhythmogenic cardiomyopathy: Focus on calcium sensitive pathways (2017) Netherlands Heart J, 25 (3), pp. 157-169. , Mar; Goss, P.J.E., Peccoud, J., Quantitative modeling of stochastic systems in molecular biology by using stochastic petri nets (1998) Proc. Nat. Acad. Sci. USA, 95 (12), pp. 6750-6755; Dawson, K., Aflaki, M., Nattel, S., Role of the wnt-frizzled system in cardiac pathophysiology: A rapidly developing, poorly understood area with enormous potential (2013) J. Physiol, 591 (6), pp. 1409-1432. , Mar; Wolkenhauer, O., Systems biology: The reincarnation of systems theory applied in biology? (2001) Briefings Bioinf, 2 (3), pp. 258-270. , Jan; Paulev, L., Magnin, M., Roux, O., Static analysis of biological regulatory networks dynamics using abstract interpretation (2012) Math. Struct. Comput. Sci, 22 (4), p. 651; Jong, H.D., Modeling and simulation of genetic regulatory systems: A literature review (2002) J. Comput. Biol, 9 (1), pp. 67-103; Sheikh, I.A., Ahmad, J., Saeed, M.T., Modelling and simulation of biological regulatory networks by stochastic petri nets (2016) Lecture Notes Eng. Comput. Sci, 2226, pp. 548-553. , Aug; Ashraf, J., Ahmad, J., Ul-Haq, Z., Deciphering the role of pkc in calpain-cast system through formal modeling approach (2019) Proc. Int. Work-Conf. Bioinf. Biomed. Eng, pp. 60-71; Mazur, J., Ritter, D., Reinelt, G., Kaderali, L., Reconstructing nonlinear dynamic models of gene regulation using stochastic sampling (2009) BMC Bioinf, 10, pp. 1-12. , Dec; Thomas, R., Boolean formalization of genetic control circuits (1973) J. Theor. Biol, 42 (3), pp. 563-585. , Dec; Thomas, R., Logical analysis of systems comprising feedback loops (1978) J. Theor. Biol, 73 (4), pp. 631-656; Thomas, R., Kaufman, M., Multistationarity, the basis of cell differentiation and memory. Ii. Logical analysis of regulatory networks in terms of feedback circuits (2001) Chaos, Interdiscip. J. Nonlinear Sci, 11 (1), pp. 180-195; Steggles, L.J., Banks, R., Shaw, O., Wipat, A., Qualitatively modelling and analysing genetic regulatory networks: A petri net approach (2007) Bioin- Formatics, 23 (3), pp. 336-343. , Feb; Chaouiya, C., Remy, E., Ruet, P., Thieffry, D., Qualitative modelling of genetic networks: From logical regulatory graphs to standard petri nets (2004) Proc. Int. Conf. Appl. Theory Petri Nets, pp. 137-156; Peterson, J.L., Petri nets (1977) ACM Comput. Surv, 9 (3), pp. 223-252; Karlebach, G., Shamir, R., Modelling and analysis of gene regulatory networks (2008) Nature Rev. Mol. Cell Biol, 9 (10), pp. 770-780; Vijesh, N., Chakrabarti, S.K., Sreekumar, J., Modeling of gene regulatory networks: A review (2013) J. Biomed. Sci. Eng, 6 (2), p. 223; Barbosa, S., Niebel, B., Wolf, S., Mauch, K., Takors, R., A guide to gene regulatory network inference for obtaining predictive solutions: Underlying assumptions and fundamental biological and data constraints (2018) Biosystems, 174, pp. 37-48. , Dec; Folschette, M., Paulev, L., Inoue, K., Magnin, M., Roux, O., Abducing biological regulatory networks from process hitting models (2012) Proc. ECML-PKDD Workshop Learn. Discovery Symbolic Syst. Biol, pp. 1-13; Paulev, L., Chancellor, C., Folschette, M., Magnin, M., Roux, O., Analyzing large network dynamics with process hitting (2014) Logical Modeling of Biological Systems, , Hoboken, NJ, USA: Wiley; Cousot, P., Cousot, R., Abstract interpretation: A uni-ed lattice model for static analysis of programs by construction or approximation of fixpoints (1977) Proc. 4th ACM SIGACT-SIGPLAN Symp. Princ. Program. Lang, pp. 238-252; Sheikh, I.A., Ahmad, J., Magnin, M., Roux, O., Incorporating time delays in process hitting framework for dynamical modeling of large biological regulatory networks (2019) Frontiers Physiol, 10, p. 90. , Feb; Abou-Jaoud, W., Monteiro, P.T., Naldi, A., Grandclaudon, M., Soumelis, V., Chaouiya, C., Thieffry, D., Model checking to assess t-helper cell plasticity (2015) Frontiers Bioeng. Biotechnol, 2, p. 86. , Jan; Pauleve, L., Reduction of qualitative models of biological networks for transient dynamics analysis (2018) IEEE/ACM Trans. Comput. Biol. Bioinf, 15 (4), pp. 1167-1179. , Jul; Folschette, M., Paulev, L., Magnin, M., Roux, O., Sufficient conditions for reachability in automata networks with priorities (2015) Theor. Comput. Sci, 608, pp. 66-83. , Dec; Paulev, L., Andrieux, G., Koeppl, H., Under-approximating cut sets for reachability in large scale automata networks (2013) Proc. Int. Conf. Comput. Aided Verification (CAV), 8044, pp. 69-84. , Berlin, Germany: Springer, Jul; Fitime, L.F., Roux, O., Guziolowski, C., Paulev, L., Identification of bifurcations in biological regulatory networks using answer-set programming (2016) Proc. Workshop Constraint Based Methods Bioinf, pp. 1-24; Azim, N., Ahmad, J., Iqbal, N., Siddiqa, A., Majid, A., Ashraf, J., Jalil, F., Petri net modelling approach for analysing the behaviour of wnt/fi-catenin and wnt/ca2c signalling pathways in arrhythmogenic right ventricular cardiomyopathy (2020) IET Syst. Biol, 14 (6), pp. 350-367; Obaid, A., Naz, A., Ashraf, S.T., Awan, F.M., Ikram, A., Saeed, M.T., Raza, A., Ali, A., Formal modeling of the key determinants of hepatitis c virus (hcv) induced adaptive immune response network: An integrative approach to map the cellular and cytokine-mediated host immune regulations (2018) Proc. Int. Conf. Comput. Sci. Appl, pp. 635-649; Paulev, L., Pint: A static analyzer for transient dynamics of qualitative networks with ipython interface (2017) Proc. Int. Conf. Comput. Methods Syst. Biol., in Lecture Notes in Computer Science: Including Subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics, 10545, pp. 309-316; Sahin, Ö., Fröhlich, H., Löbke, C., Korf, U., Burmester, S., Majety, M., Mattern, J., Arlt, D., Modeling erbb receptor-regulated g1/s transition to find novel targets for de novo trastuzumab resistance (2009) BMC Syst. Biol, 3 (1), p. 1. , Dec; Cohen, D.P.A., Martignetti, L., Robine, S., Barillot, E., Zinovyev, A., Calzone, L., Mathematical modelling of molecular pathways enabling tumour cell invasion and migration (2015) PLOS Comput. Biol, 11 (11). , Nov., Art. no. e1004571; Loiseaux, C., Graf, S., Sifakis, J., Bouajjani, A., Bensalem, S., Probst, D., Property preserving abstractions for the verification of concurrent systems (1995) Formal Methods Syst. Des, 6 (1). , 11-44, Jan; Naldi, A., Hernandez, C., Levy, N., Stoll, G., Monteiro, P.T., Chaouiya, C., Helikar, T., Paulev, L., The colomoto interactive notebook: Accessible and reproducible computational analyses for qualitative biological networks (2018) Frontiers Physiol, 9, p. 680. , Jun; Gonzalez, A.G., Naldi, A., Sánchez, L., Thieffry, D., Chaouiya, C., Ginsim: A software suite for the qualitative modelling, simulation and analysis of regulatory networks (2006) Biosystems, 84 (2), pp. 91-100. , May; Helikar, T., Kowal, B., Mcclenathan, S., Bruckner, M., Rowley, T., Madrahimov, A., Wicks, B., Rogers, J.A., The cell collective: Toward an open and collaborative approach to systems biology (2012) BMC Syst. Biol, 6 (1), p. 96; Klarner, H., Streck, A., Siebert, H., Pyboolnet: A python package for the generation, analysis and visualization of boolean networks (2017) Bioinfor- Matics, 33 (5), pp. 770-772; Bernot, G., Cassez, F., Comet, J.-P., Delaplace, F., Müller, C., Roux, O., Semantics of biological regulatory networks (2007) Electron. Notes Theor. Comput. Sci, 180 (3), pp. 3-14. , Jul; Kauffman, S.A., Metabolic stability and epigenesis in randomly constructed genetic nets (1969) J. Theor. Biol, 22 (3), pp. 437-467; Richard, A., Negative circuits and sustained oscillations in asynchronous automata networks (2010) Adv. Appl. Math, 44 (4), pp. 378-392. , May; Levy, N., Naldi, A., Hernandez, C., Stoll, G., Thieffry, D., Zinovyev, A., Calzone, L., Paulev, L., Prediction of mutations to control pathways enabling tumor cell invasion with the colomoto interactive notebook (tutorial) (2018) Frontiers Physiol, 9, p. 787. , Jul\",\"Iqbal, N.; Department of Computer Science and Information Technology, Pakistan; email: nikhan@awkum.edu.pk\nAhmad, J.; Department of Information Technology, Pakistan; email: dr.ahmad.jamil@gmail.co\",,,\"Institute of Electrical and Electronics Engineers Inc.\",,,,,21693536,,,,\"English\",\"IEEE Access\",Article,\"Final\",\"All Open Access, Gold\",Scopus,2-s2.0-85110842148\n[No author name available],[No author id available],\"11th International Conference on Bioinformatics and Computational Biology, BICOB 2019\",2019,\"EPiC Series in Computing\",\"60\",,,\"\",\"\",199,,,\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-85080066604&partnerID=40&md5=907537c802a06bcbfed4677a6eb64876\",,\"\",\"The proceedings contain 20 papers. The special focus in this conference is on Bioinformatics and Computational Biology. The topics include: Colorectal cancer outcome prediction from h&e whole slide images using machine learning and automatically inferred phenotype profiles; petri nets and ode as complementary tools in analysis of signaling pathways; equipping decoy generation algorithms for template-free protein structure prediction with maps of the protein conformation space; statistical analysis of glcm texture features and microstructures in sem images of crossostrea virginica exposed to atrazine; connecting molecular energy landscape analysis with markov model-based analysis of equilibrium structural dynamics.\",,,,,,,,,,,,\"Eulenstein O.Al-Mubaid H.Ding Q.\",,\"EasyChair\",\"11th International Conference on Bioinformatics and Computational Biology, BICOB 2019\",\"18 March 2019 through 20 March 2019\",,237369,23987340,,,,\"English\",\"EPIC Sre. Comp.\",Conference Review,\"Final\",\"\",Scopus,2-s2.0-85080066604\n\"Ashraf S.T., Obaid A., Saeed M.T., Naz A., Shahid F., Ahmad J., Ali A.\",\"57196120076;56368530400;56421837800;56230974500;57206896670;57201514205;57219876251;\",\"Formal model of the interplay between TGF-β1 and MMP-9 and their dynamics in hepatocellular carcinoma\",2019,\"Mathematical Biosciences and Engineering\",\"16\",\"5\",,\"3285\",\"3310\",,1,\"10.3934/mbe.2019164\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-85064909104&doi=10.3934%2fmbe.2019164&partnerID=40&md5=12d6e2843b989a3f75d982070c2df780\",\"Atta-ur-Rahman School of Applied Biosciences (ASAB), National University of Sciences and Technology (NUST), Islamabad, Pakistan; Research Center for Modeling and Simulation (RCMS), National University of Sciences and Technology (NUST), Islamabad, Pakistan\",\"Ashraf, S.T., Atta-ur-Rahman School of Applied Biosciences (ASAB), National University of Sciences and Technology (NUST), Islamabad, Pakistan; Obaid, A., Atta-ur-Rahman School of Applied Biosciences (ASAB), National University of Sciences and Technology (NUST), Islamabad, Pakistan; Saeed, M.T., Research Center for Modeling and Simulation (RCMS), National University of Sciences and Technology (NUST), Islamabad, Pakistan; Naz, A., Atta-ur-Rahman School of Applied Biosciences (ASAB), National University of Sciences and Technology (NUST), Islamabad, Pakistan; Shahid, F., Atta-ur-Rahman School of Applied Biosciences (ASAB), National University of Sciences and Technology (NUST), Islamabad, Pakistan; Ahmad, J., Research Center for Modeling and Simulation (RCMS), National University of Sciences and Technology (NUST), Islamabad, Pakistan; Ali, A., Atta-ur-Rahman School of Applied Biosciences (ASAB), National University of Sciences and Technology (NUST), Islamabad, Pakistan\",\"Transforming growth factor beta1 (TGF-β1) and matrix metalloproteinase-9 (MMP-9) have been associated with migration and invasion in hepatocellular carcinoma (HCC). Recent studies have suggested a positive feedback loop between TGF-β1 and MMP-9 mediated by the PI3K signaling pathway that confers acquired invasion and metastasis in HCC via induction of the epithelial-mesenchymal transition (EMT), which grows into invasive carcinoma. But the potential molecular mechanism of this loop on HCC has not been clarified yet. Therefore, this study is designed to explore the association between the two entities and their key determinants such as NFκB, TIMP-1, and hepatic stellate cells (HSCs). Hence, a qualitative modeling framework is implemented that predict the role of biological regulatory network (BRN) during recovery and HCC metastasis. Qualitative modeling predicts discrete trajectories, stable states, and cycles that highlight the paths leading to disease recovery and homeostasis, respectively. The deadlock stable state (1, 1, 1, 1, 1) predicts high expression of all the entities in the BRN, resulting in the progression of HCC. The qualitative model predicts 30 cycles representing significant paths leading to recovery and homeostasis and amongst these the most significant discrete cycle was selected based on the highest betweenness centralities of the discrete states. We further verified our model with network modeling and simulation analysis based on petri net modeling approach. The BRN dynamics were analyzed over time. The results implied that over the course of disease condition or homeostasis, the biological entities are activated in a variable manner. Taken together, our findings suggest that the TGF-β1 and the MMP-9 feedback loop is critical in tumor progression, as it may aid in the development of treatment strategies that are designed to target both TGF-β and MMP-9. ©2019 the Author(s).\",\"HCC; MMP-9; Petri nets; Qualitative modeling; TGF-β1\",\"Feedback; Pathology; Petri nets; Recovery; Biological Regulatory Networks; Epithelial-mesenchymal transition; Hepatocellular carcinoma; Matrix metalloproteinase 9 (MMP 9); MMP-9; Network modeling and simulations; Qualitative model; Transforming growth factors; Computer system recovery; cytokine; gelatinase B; MMP9 protein, human; TGFB1 protein, human; transforming growth factor beta1; algorithm; computer simulation; disease exacerbation; gene expression regulation; homeostasis; human; liver cell carcinoma; liver tumor; metabolism; metastasis; signal transduction; theoretical model; tumor invasion; Algorithms; Carcinoma, Hepatocellular; Computer Simulation; Cytokines; Disease Progression; Gene Expression Regulation; Homeostasis; Humans; Liver Neoplasms; Matrix Metalloproteinase 9; Models, Theoretical; Neoplasm Invasiveness; Neoplasm Metastasis; Signal Transduction; Transforming Growth Factor beta1\",,\"gelatinase B, 146480-36-6; Cytokines; Matrix Metalloproteinase 9; MMP9 protein, human; TGFB1 protein, human; Transforming Growth Factor beta1\",,,,,,\"Global, regional, and national age–sex specific all-cause and cause-specific mortality for 240 causes of death, 1990–2013: A systematic analysis for the Global Burden of Disease Study 2013 (2015) Lancet, 385, pp. 117-171; Yoo, B.K., Emdad, L., Su, Z., Astrocyte elevated gene-1 regulates hepatocellular carcinoma development and progression (2009) J. Clin. Invest., 119, pp. 465-477; Portolani, N., Coniglio, A., Ghidoni, S., Early and late recurrence after liver resection for hepatocellular carcinoma: Prognostic and therapeutic implications (2006) Ann. Surg., 243, pp. 229-235; Brinckerhoff, C.E., Matrisian, L.M., TIMELINEMatrix metalloproteinases: A tail of a frog that became a prince (2002) Nat. Rev. Mol. Cell Biol., 3, pp. 207-214; Chen, R., Cui, J., Xu, C., The significance of MMP-9 over MMP-2 in HCC invasiveness and recurrence of hepatocellular carcinoma after curative resection (2012) Ann. Surg. Oncol., 19, pp. 375-384; Gialeli, C., Theocharis, A.D., Karamanos, N.K., Roles of matrix metalloproteinases in cancer progression and their pharmacological targeting (2011) FEBS J, 278, pp. 16-27; Deryugina, E.I., Quigley, J.P., Matrix metalloproteinases and tumor metastasis (2006) Cancer Metastasis Rev, 25, pp. 9-34; Derynck, R., Akhurst, R.J., Balmain, A., TGF-|[beta]| signaling in tumor suppression and cancer progression (2001) Nat. Genet., 29, pp. 117-129; Katsuno, Y., Lamouille, S., Derynck, R., TGF-β signaling and epithelial–mesenchymal transition in cancer progression (2013) Curr. Opin. Oncol., 25, pp. 76-84; Safina, A., Ren, M.Q., Vandette, E., TAK1 is required for TGF-β1-mediated regulation of matrix metalloproteinase-9 and metastasis (2008) Oncogene, 27, pp. 1198-1207; Dallas, S.L., Rosser, J.L., Mundy, G.R., Proteolysis of latent transforming growth factor-beta (TGF-beta)-binding protein-1 by osteoclasts. A cellular mechanism for release of TGF-beta from bone matrix (2002) J. Biol. Chem., 277, pp. 21352-21360; Li, J., Yang, B., Zhou, Q., Autophagy promotes hepatocellular carcinoma cell invasion through activation of epithelial–mesenchymal transition (2013) Carcinogenesis, 34, pp. 1343-1351; Chen, G., Qin, G., Dang, Y., The prospective role of matrix metalloproteinase-2/9 and transforming growth factor beta 1 in accelerating the progression of hepatocellular carcinoma (2017) Transl. Cancer Res., 6, pp. S229-S231; Bakin, A.V., Tomlinson, A.K., Bhowmick, N.A., Phosphatidylinositol 3-Kinase Function Is Required for Transforming Growth Factor β-mediated Epithelial to Mesenchymal Transition and Cell Migration (2000) J. Biol. Chem., 275, pp. 36803-36810; Zuo, J.H., Zhu, W., Li, M.Y., Activation of EGFR promotes squamous carcinoma SCC10A cell migration and invasion via inducing EMT-like phenotype change and MMP-9-mediated degradation of E-cadherin (2011) J. Cell. Biochem., 112, pp. 2508-2517; Krstic, J., Santibanez, J.F., Transforming growth factor-beta and matrix metalloproteinases functional interplay in cancer; implications in epithelial to mesenchymal transition (2016) Cell Biol. Res. Ther., s1; Bataller, R., Brenner, D.A., Liver fibrosis (2005) J. Clin. Invest., 115, pp. 209-218; De Jong, H., Modeling and simulation of genetic regulatory systems: A literature review (2002) J. Comput. Biol., 9, pp. 67-103; Glass, L., Kauffman, S.A., The logical analysis of continuous, non-linear biochemical control networks (1973) J. Theor. Biol., 39, pp. 103-129; Dejong, H., Gouze, J., Hernandez, C., Qualitative simulation of genetic regulatory networks using piecewise-linear models (2004) Bull. Math. Biol., 66, pp. 301-340; Thomas, R., D’Ari, R., (1990) Biological Feedback, , https://www.crcpress.com/Biological-Feedback/Thomas-DAri/p/book/9780849367663, CRC Press; Clarke, E.M., Grumberg, O., Peled, D.A., (1999) Model Checking, , https://mitpress.mit.edu/books/model-checking, MIT Press; Khalis, D.B.Z., Comet, J.P., Richard, A., The SMBionet method for discovering models of gene regulatory networks (2009) Genes, Genomes and Genomics, 1, pp. 15-22; Bernot, G., Comet, J.P., Richard, A., Application of formal methods to biological regulatory networks: Extending Thomas’ asynchronous logical approach with temporal logic (2004) J. Theor. Biol., 229, pp. 339-347; Cimatti, A., Clarke, E.M., Giunchiglia, E., NuSMV 2: An OpenSource Tool for Symbolic Model Checking, , http://repository.cmu.edu/compsci, n.d; Gonzalez, A.G., Naldi, A., Sánchez, L., GiNSIM: A software suite for the qualitative modelling, simulation and analysis of regulatory networks (2006) Biosystems, 84, pp. 91-100; Ahmad, J., (2009) Modélisation Hybride Et Analyse Des Dynamiques Des Réseaux De Régulations Biologiques En Tenant Compte Des Délais, , PhD Thesis, Nantes; Heiner, M., Herajy, M., Liu, F., (2012) Snoopy – A Unifying Petri Net Tool, pp. 398-407; Naldi, A., Berenguier, D., Fauré, A., Logical modelling of regulatory networks with GINsim 2.3 (2009) Biosystems, 97, pp. 134-139; Saadatpour, A., Albert, R., Reluga, T.C., A reduction method for boolean network models proven to conserve attractors (2013) SIAM J. Appl. Dyn. Syst., 12, pp. 1997-2011; Plahte, E., Mestl, T., Omholt, S.W., Feedback loops, stability and multistationarity in dynamical systems (1995) J. Biol. Syst., pp. 409-413. , 03; Bissell, D., Roulot, D., George, J., Transforming growth factor β and the liver (2001) Hepatology, 34, pp. 859-867; Chen, G., Qin, G., Dang, Y., The prospective role of matrix metalloproteinase-2/9 and transforming growth factor beta 1 in accelerating the progression of hepatocellular carcinoma (2017) Transl. Cancer Res., 6, pp. S229-S231; Bond, M., Chase, A.J., Baker, A.H., Inhibition of transcription factor NF-kappaB reduces matrix metalloproteinase-1, -3 and -9 production by vascular smooth muscle cells (2001) Cardiovasc. Res., 50, pp. 556-565; Nakatsukasa, H., Cellular distribution of transcripts for tissue inhibitor of metalloproteinases 1 and 2 in human hepatocellular carcinomas (1996) Hepatology, 24, pp. 82-88; Shannon, P., Markiel, A., Ozier, O., Cytoscape: A software environment for integrated models of biomolecular interaction networks (2003) Genome Res, 13, pp. 2498-2504; Keutgens, A., Robert, I., Viatour, P., Deregulated NF-kappaB activity in haematological malignancies (2006) Biochem. Pharmacol., 72, pp. 1069-1080; Stetler-Stevenson, W.G., Matrix metalloproteinases in angiogenesis: A moving target for therapeutic intervention (1999) J. Clin. Invest., 103, pp. 1237-1241; Ma’ayan, A., Introduction to network analysis in systems biology (2011) Sci. Signal., 4, p. tr5; Palmieri, O., Mazza, T., Castellana, S., Inflammatory bowel disease meets systems biology: A multi-omics challenge and frontier (2016) Omi. A J. Integr. Biol., 20, pp. 692-698; Giannelli, G., Villa, E., Lahn, M., Transforming growth factor-β as a therapeutic target in hepatocellular carcinoma (2014) Cancer Res, 74, pp. 1890-1894; Giannelli, G., Mazzocca, A., Fransvea, E., Inhibiting TGF-β signaling in hepatocellular carcinoma (2011) Biochim. Biophys. Acta - Rev. Cancer., 1815, pp. 214-223; Wang, J., Zhu, C.-P., Hu, P.-F., FOXA2 suppresses the metastasis of hepatocellular carcinoma partially through matrix metalloproteinase-9 inhibition (2014) Carcinogenesis, 35, pp. 2576-2583; Yu, H.B., Zhang, H.F., Li, D.Y., Journal of Asian Natural Products Research Matrine inhibits matrix metalloproteinase-9 expression and invasion of human hepatocellular carcinoma cells Matrine inhibits matrix metalloproteinase-9 expression and invasion of human hepatocellular carcinoma cells (2011) J. Asian Nat. Prod. Res., 13, pp. 3-242; Huang, C.F., Teng, Y.H., Lu, F.J., Β-mangostin suppresses human hepatocellular carcinoma cell invasion through inhibition of MMP-2 and MMP-9 expression and activating the ERK and JNK pathways (2017) Environ. Toxicol., 32, pp. 2360-2370; Egeblad, M., Werb, Z., New functions for the matrix metalloproteinases in cancer progression (2002) Nat. Rev. Cancer., 2, pp. 161-174; Sternlicht, M.D., Werb, Z., How matrix metalloproteinases regulate cell behavior (2001) Annu. Rev. Cell Dev. Biol., 17, pp. 463-516; Qin, G., Luo, M., Chen, J., Reciprocal activation between MMP-8 and TGF-β1 stimulates EMT and malignant progression of hepatocellular carcinoma (2016) Cancer Lett, 374, pp. 85-95; Kitano, H., Looking beyond the details: A rise in system-oriented approaches in genetics and molecular biology (2002) Curr. Genet., 41, pp. 1-10; Thieffry, D., Thomas, R., Dynamical behaviour of biological regulatory networks—II. Immunity control in bacteriophage lambda* (1995) Bull. Math. Biol., 57, pp. 277-297; Rakyan, V.K., Down, T.A., Balding, D.J., Epigenome-wide association studies for common human diseases (2011) Nat. Rev. Genet., 12, pp. 529-541; Bierie, B., Moses, H., TGF-β and cancer (2006) Cytokine Growth Factor Rev, 17, pp. 29-40; Noël, A., Jost, M., Maquoi, E., Matrix metalloproteinases at cancer tumor–host interface (2008) Semin. Cell Dev. Biol., 19, pp. 52-60; Kessenbrock, K., Plaks, V., Werb, Z., Matrix metalloproteinases: Regulators of the tumor microenvironment (2010) Cell, 141, pp. 52-67\",\"Ali, A.; Atta-ur-Rahman School of Applied Biosciences (ASAB), Pakistan; email: amjaduni@gmail.com\",,,\"American Institute of Mathematical Sciences\",,,,,15471063,,,\"31499614\",\"English\",\"Math. Biosci. Eng.\",Article,\"Final\",\"All Open Access, Gold\",Scopus,2-s2.0-85064909104\n\"Bardini R., Di Carlo S., Politano G., Benso A.\",\"57189664330;7004079458;26655038700;7006074596;\",\"Modeling antibiotic resistance in the microbiota using multi-level Petri Nets\",2018,\"BMC Systems Biology\",\"12\",,\"108\",\"\",\"\",,5,\"10.1186/s12918-018-0627-1\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-85056958671&doi=10.1186%2fs12918-018-0627-1&partnerID=40&md5=e14cbf57779626b8e846762e54cc366a\",\"Politecnico di Torino, Control and Computer Engineering Department, Corso Duca degli Abruzzi 24, Torino, 10129, Italy\",\"Bardini, R., Politecnico di Torino, Control and Computer Engineering Department, Corso Duca degli Abruzzi 24, Torino, 10129, Italy; Di Carlo, S., Politecnico di Torino, Control and Computer Engineering Department, Corso Duca degli Abruzzi 24, Torino, 10129, Italy; Politano, G., Politecnico di Torino, Control and Computer Engineering Department, Corso Duca degli Abruzzi 24, Torino, 10129, Italy; Benso, A., Politecnico di Torino, Control and Computer Engineering Department, Corso Duca degli Abruzzi 24, Torino, 10129, Italy\",\"Background: The unregulated use of antibiotics not only in clinical practice but also in farm animals breeding is causing a unprecedented growth of antibiotic resistant bacterial strains. This problem can be analyzed at different levels, from the antibiotic resistance spreading dynamics at the host population level down to the molecular mechanisms at the bacteria level. In fact, antibiotic administration policies and practices affect the societal system where individuals developing resistance interact with each other and with the environment. Each individual can be seen as a meta-organism together with its associated microbiota, which proves to have a prominent role in the resistance spreading dynamics. Eventually, in each microbiota, bacterial population dynamics and vertical or horizontal gene transfer events activate cellular and molecular mechanisms for resistance spreading that can also be possible targets for its prevention. Results: In this work we show how to use the Nets-Within-Nets formalism to model the dynamics between different antibiotic administration protocols and antibiotic resistance, both at the individuals population and at the single microbiota level. Three application examples are presented to show the flexibility of this approach in integrating heterogeneous information in the same model, a fundamental property when creating computational models complex biological systems. Simulations allow to explicitly take into account timing and stochastic events. Conclusions: This work demonstrates how the NWN formalism can be used to efficiently model antibiotic resistance population dynamics at different levels of detail. The proposed modeling approach not only provides a valuable tool for investigating causal, quantitative relations between different events and mechanisms, but can be also used as a valid support for decision making processes and protocol development. © 2018 The Author(s).\",\"Antibiotic resistance; Computational systems biology; Human microbiota; Hybrid models; Nets-Within-Nets; Petri Nets\",,,,,,\"Politecnico di Torino, POLITO\",\"Publication costs were funded by Politecnico di Torino, Italy.\",,\"Ley, R.E., Peterson, D.A., Gordon, J.I., Ecological and evolutionary forces shaping microbial diversity in the human intestine (2006) Cell, 124 (4), pp. 837-848; Turnbaugh, P.J., The human microbiome project (2007) Nature, 449 (7164), pp. 804-810; Ursell, L.K., Metcalf, J.L., Parfrey, L.W., Knight, R., Defining the human microbiome (2012) Nutr Rev, 70, pp. 38-44; Li, M., Symbiotic gut microbes modulate human metabolic phenotypes (2008) Proc Natl Acad Sci, 105 (6), pp. 2117-2122; Kamada, N., Chen, G.Y., Inohara, N., Núñez, G., Control of pathogens and pathobionts by the gut microbiota (2013) Nat Immunol, 14 (7), pp. 685-690; Flint, H.J., Scott, K.P., Louis, P., Duncan, S.H., The role of the gut microbiota in nutrition and health (2012) Nat Rev Gastroenterol Hepatol, 9 (10), pp. 577-589; Murphy, E.F., Cotter, P.D., Healy, S., Marques, T.M., O'Sullivan, O., Fouhy, F., Clarke, S.F., Shanahan, F., Composition and energy harvesting capacity of the gut microbiota: relationship to diet, obesity and time in mouse models (2010) Gut, 59 (12), pp. 1635-1642; Belkaid, Y., Hand, T.W., Role of the microbiota in immunity and inflammation (2014) Cell, 157 (1), pp. 121-141; Peterson, J., The nih human microbiome project (2009) Genome Res, 19 (12), pp. 2317-2323; Qin, J., A human gut microbial gene catalogue established by metagenomic sequencing (2010) Nature, 464 (7285), pp. 59-65; Korem, T., Growth dynamics of gut microbiota in health and disease inferred from single metagenomic samples (2015) Science, 349 (6252), pp. 1101-1106; Lozupone, C.A., Stombaugh, J.I., Gordon, J.I., Jansson, J.K., Knight, R., Diversity, stability and resilience of the human gut microbiota (2012) Nature, 489 (7415), pp. 220-230; Thomas, C.M., Nielsen, K.M., Mechanisms of, and barriers to, horizontal gene transfer between bacteria (2005) Nat Rev Microbiol, 3 (9), p. 711; Huddleston, J.R., Horizontal gene transfer in the human gastrointestinal tract: potential spread of antibiotic resistance genes (2014) Infect Drug Resist, 7, p. 167; Arenz, S., Wilson, D.N., Blast from the past: reassessing forgotten translation inhibitors, antibiotic selectivity, and resistance mechanisms to aid drug development (2016) Mol Cell, 61 (1), pp. 3-14; Rodríguez-Rojas, A., Antibiotics and antibiotic resistance: a bitter fight against evolution (2013) Int J Med Microbiol, 303 (6), pp. 293-297; Brockhurst, M.A., Gene mobility promotes the spread of resistance in bacterial populations (2017) Isme J., p. 11; Bengtsson-Palme, J., The human gut microbiome as a transporter of antibiotic resistance genes between continents (2015) Antimicrob Agents Chemother, 59 (10), pp. 6551-6560; Bardini, R., Politano, G., Benso, A., Carlo, S.D., Using multi-level petri nets models to simulate microbiota resistance to antibiotics (2017) IEEE International Conference on Bioinformatics and Biomedicine (BIBM). 2017, pp. 128-133; Bardini, R., Benso, A., Di Carlo, S., Politano, G., Savino, A., Using nets-within-nets for modeling differentiating cells in the epigenetic landscape (2016) International Conference on Bioinformatics and Biomedical Engineering, pp. 315-321. , Springer; Bardini, R., Politano, G., Benso, A., Di Carlo, S., Multi-level and hybrid modelling approaches for systems biology (2017) Comput Struct Biotechnol J, 15, pp. 396-402; Valk, R., Object petri nets (2003) Advanced course on Petri Nets, pp. 819-848. , Berlin: Springer:; Koch, I., Petri nets in systems biology (2015) Softw Syst Model, 14 (2), pp. 703-710; Jensen, K., Coloured Petri Nets: Basic Concepts, Analysis Methods and Practical Use (2013), 1. , Berlin: Springer-Verlag; Cabac, L., Haustermann, M., Mosteller, D., Renew 2.5-towards a comprehensive integrated development environment for petri net-based applications (2016) International Conference on Applications and Theory of Petri Nets and Concurrency, pp. 101-112. , Cham: Springer; (2013), https://www.cdc.gov/drugresistance/threat-report-2013/index.html, Accessed Mar 2018, [Online]; Inter-species population dynamics enhance microbial horizontal gene transfer and spread of antibiotic resistance (2017) eLife, 6; Asahara, T., Takahashi, A., Yuki, N., Kaji, R., Takahashi, T., Nomoto, K., Protective effect of a synbiotic against multidrug-resistant acinetobacter baumannii in a murine infection model (2016) Antimicrob Agents Chemother, 605, pp. 3041-3050; Szklo, M., Nieto, J., Epidemiology (2014), Burlington: Jones & Bartlett Publishers; Yassour, M., Natural history of the infant gut microbiome and impact of antibiotic treatment on bacterial strain diversity and stability (2016) Sci Transl Med, 8 (343), pp. 343-8134381; Sommer, M.O., Dantas, G., Antibiotics and the resistant microbiome (2011) Curr Opin Microbiol, 14 (5), pp. 556-563; Antunes, L.C.S., Visca, P., Towner, K.J., Acinetobacter baumannii: evolution of a global pathogen (2014) Pathogens Dis, 71 (3), pp. 292-301; Joly-Guillou, M.-L., Clinical impact and pathogenicity of acinetobacter (2005) Clin Microbiol Infect, 11 (11), pp. 868-873\",\"Bardini, R.; Politecnico di Torino, Corso Duca degli Abruzzi 24, Italy; email: roberta.bardini@polito.it\",,,\"BioMed Central Ltd.\",,,,,17520509,,,\"30463550\",\"English\",\"BMC Syst. Biol.\",Article,\"Final\",\"All Open Access, Gold, Green\",Scopus,2-s2.0-85056958671\n\"Livigni A., O'Hara L., Polak M.E., Angus T., Wright D.W., Smith L.B., Freeman T.C.\",\"6508355803;24822408200;8856432800;55993447300;56688020100;7410392470;16170021900;\",\"A graphical and computational modeling platform for biological pathways\",2018,\"Nature Protocols\",\"13\",\"4\",,\"705\",\"722\",,18,\"10.1038/nprot.2017.144\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-85044334291&doi=10.1038%2fnprot.2017.144&partnerID=40&md5=641a9034ba042f65e99b8b834989bcf9\",\"Roslin Institute and Royal (Dick), School of Veterinary Studies, University of Edinburgh, Edinburgh, United Kingdom; MRC Centre for Reproductive Health, Edinburgh, United Kingdom; Clinical and Experimental Sciences, Sir Henry Wellcome Laboratories, Faculty of Medicine, University of Southampton, Southampton, United Kingdom; Institute for Life Sciences, University of Southampton, Southampton, United Kingdom; Faculty of Science, University of Newcastle, Callaghan, Australia\",\"Livigni, A., Roslin Institute and Royal (Dick), School of Veterinary Studies, University of Edinburgh, Edinburgh, United Kingdom; O'Hara, L., Roslin Institute and Royal (Dick), School of Veterinary Studies, University of Edinburgh, Edinburgh, United Kingdom; Polak, M.E., Clinical and Experimental Sciences, Sir Henry Wellcome Laboratories, Faculty of Medicine, University of Southampton, Southampton, United Kingdom, Institute for Life Sciences, University of Southampton, Southampton, United Kingdom; Angus, T., Roslin Institute and Royal (Dick), School of Veterinary Studies, University of Edinburgh, Edinburgh, United Kingdom; Wright, D.W., Roslin Institute and Royal (Dick), School of Veterinary Studies, University of Edinburgh, Edinburgh, United Kingdom; Smith, L.B., MRC Centre for Reproductive Health, Edinburgh, United Kingdom, Faculty of Science, University of Newcastle, Callaghan, Australia; Freeman, T.C., Roslin Institute and Royal (Dick), School of Veterinary Studies, University of Edinburgh, Edinburgh, United Kingdom\",\"A major endeavor of systems biology is the construction of graphical and computational models of biological pathways as a means to better understand their structure and function. Here, we present a protocol for a biologist-friendly graphical modeling scheme that facilitates the construction of detailed network diagrams, summarizing the components of a biological pathway (such as proteins and biochemicals) and illustrating how they interact. These diagrams can then be used to simulate activity flow through a pathway, thereby modeling its dynamic behavior. The protocol is divided into four sections: (i) assembly of network diagrams using the modified Edinburgh Pathway Notation (mEPN) scheme and yEd network editing software with pathway information obtained from published literature and databases of molecular interaction data; (ii) parameterization of the pathway model within yEd through the placement of 'tokens' on the basis of the known or imputed amount or activity of a component; (iii) model testing through visualization and quantitative analysis of the movement of tokens through the pathway, using the network analysis tool Graphia Professional and (iv) optimization of model parameterization and experimentation. This is the first modeling approach that combines a sophisticated notation scheme for depicting biological events at the molecular level with a Petri net-based flow simulation algorithm and a powerful visualization engine with which to observe the dynamics of the system being modeled. Unlike many mathematical approaches to modeling pathways, it does not require the construction of a series of equations or rate constants for model parameterization. Depending on a model's complexity and the availability of information, its construction can take days to months, and, with refinement, possibly years. However, once assembled and parameterized, a simulation run, even on a large model, typically takes only seconds. Models constructed using this approach provide a means of knowledge management, information exchange and, through the computation simulation of their dynamic activity, generation and testing of hypotheses, as well as prediction of a system's behavior when perturbed. © 2018 Macmillan Publishers Limited, part of Springer Nature. All rights reserved.\",,\"protein; algorithm; Article; biochemistry; clinical protocol; computer model; information processing; mathematical model; molecular biology; molecular interaction; prediction; priority journal; protein interaction; quantitative analysis; signal transduction; simulation; software; biological model; biology; computer graphics; computer simulation; metabolism; procedures; protein analysis; systems biology; Algorithms; Computational Biology; Computer Graphics; Computer Simulation; Metabolic Networks and Pathways; Models, Biological; Protein Interaction Maps; Software; Systems Biology\",,\"protein, 67254-75-5\",,,\"Medical Research Council, MRC: MR/N002970/1; Biotechnology and Biological Sciences Research Council, BBSRC: BB/I001107/1, BB/J015105/1, BB/J019267/1, BBS/E/D/05191131, BBS/E/D/10002070, BBS/E/D/20211551, BBS/E/D/20211552\",,,\"O'Hara, L., Modelling the structure and dynamics of biological pathways (2016) PLoS Biol., 14, p. e1002530; Raza, S., A logic-based diagram of signalling pathways central to macrophage activation (2008) BMC Syst. Biol., 2, p. 36; Freeman, T.C., Raza, S., Theocharidis, A., Ghazal, P., The mEPN scheme: An intuitive and flexible graphical system for rendering biological pathways (2010) BMC Syst. Biol., 4, p. 65; Kitano, H., Funahashi, A., Matsuoka, Y., Oda, K., Using process diagrams for the graphical representation of biological networks (2005) Nat. Biotechnol., 23, pp. 961-966; Kohn, K.W., Aladjem, M.I., Weinstein, J.N., Pommier, Y., Molecular interaction maps of bioregulatory networks: A general rubric for systems biology (2006) Mol. Biol. Cell, 17, pp. 1-13; Moodie, S.L., Sorokin, A., Goryanin, I., Ghazal, P., A graphical notation to describe the logical interactions of biological pathways (2006) J. Integr. Bioinform., 3, p. 11; Novere, N.L., The systems biology graphical notation (2009) Nat. Biotechnol., 27, pp. 735-741; Lopez, C.F., Muhlich, J.L., Bachman, J.A., Sorger, P.K., Programming biological models in Python using PySB (2013) Mol. Syst. Biol., 9, p. 646; Beltrame, L., The Biological Connection Markup Language: A SBGN-compliant format for visualization, filtering and analysis of biological pathways (2011) Bioinformatics, 27, pp. 2127-2133; Calzone, L., Gelay, A., Zinovyev, A., Radvanyi, F., Barillot, E., A comprehensive modular map of molecular interactions in RB/E2F pathway (2008) Mol. Syst. Biol., 4, p. 173; Kuperstein, I., Atlas of Cancer Signalling Network: A systems biology resource for integrative analysis of cancer data with Google Maps (2015) Oncogenesis, 4, p. e160; Oda, K., Kitano, H., A comprehensive map of the toll-like receptor signaling network (2006) Mol. Syst. Biol., 2, pp. 0015-2006; Oda, K., Matsuoka, Y., Funahashi, A., Kitano, H., A comprehensive pathway map of epidermal growth factor receptor signaling (2005) Mol. Syst. Biol., 1, pp. 0010-2005; Raza, S., Construction of a large scale integrated map of macrophage pathogen recognition and effector systems (2010) BMC Syst. Biol., 4, p. 63; Wentker, P., An interactive macrophage signal transduction map facilitates comparative analyses of high-throughput data (2017) J. Immunol., 198, pp. 2191-2201; Matsuoka, Y., Funahashi, A., Ghosh, S., Kitano, H., Modeling and simulation using CellDesigner (2014) Methods Mol. Biol., 1164, pp. 121-145; Demir, E., The BioPAX community standard for pathway data sharing (2010) Nat. Biotechnol., 28, pp. 935-942; Kanehisa, M., Goto, S., Sato, Y., Furumichi, M., Tanabe, M., KEGG for integration and interpretation of large-scale molecular data sets (2012) Nucleic Acids Res., 40, pp. D109-D114; Wu, G., Dawson, E., Duong, A., Haw, R., Stein, L., ReactomeFIViz: A cytoscape app for pathway and network-based data analysis (2014) F1000Res, 3, p. 146; Yamada, T., Letunic, I., Okuda, S., Kanehisa, M., Bork, P., IPath2. 0: Interactive pathway explorer (2011) Nucleic Acids Res., 39, pp. W412-W415; Czauderna, T., Klukas, C., Schreiber, F., Editing, validating and translating of SBGN maps (2010) Bioinformatics, 26, pp. 2340-2341; Croft, D., The reactome pathway knowledgebase (2014) Nucleic Acids Res., 42, pp. D472-D477; Joshi-Tope, G., Reactome: A knowledgebase of biological pathways (2005) Nucleic Acids Res., 33, pp. D428-432; Kuperstein, I., NaviCell: A web-based environment for navigation, curation and maintenance of large molecular interaction maps (2013) BMC Syst. Biol., 7, p. 100; Mi, H., Thomas, P., PANTHER pathway: An ontology-based pathway database coupled with data analysis tools (2009) Methods Mol. Biol., 563, pp. 123-140; Hucka, M., The systems biology markup language (SBML): A medium for representation and exchange of biochemical network models (2003) Bioinformatics, 19, pp. 524-531; Bause, F., Kritzinger, P.S., (1996) Stochastic Petri Nets: An Introduction to the Theory, , Vieweg & Teubner; Reddy, V.N., Mavrovouniotis, M.L., Liebman, M.N., Petri net representations in metabolic pathways (1993) Proc. Int. Conf. Intell. Syst. Mol. Biol., 1, pp. 328-336; Bahi-Jaber, N., Pontier, D., Modeling transmission of directly transmitted infectious diseases using colored stochastic Petri nets (2003) Math. Biosci., 185, pp. 1-13; Chaouiya, C., Petri net modelling of biological networks (2007) Brief Bioinform., 8, pp. 210-219; Heiner, M., Koch, I., Will, R., Model validation of biological pathways using Petri nets-demonstrated for apoptosis (2004) Biosystems, 75, pp. 15-28; Peleg, M., Rubin, D., Altman, R.B., Using Petri net tools to study properties and dynamics of biological systems (2005) J. Am. Med. Inform. Assoc., 12, pp. 181-199; Taubner, C., Mathiak, B., Kupfer, A., Fleischer, N., Eckstein, S., Modelling and simulation of the TLR4 pathway with coloured Petri nets (2006) Conf. Proc. IEEE Eng. Med. Biol. Soc., 1, pp. 2009-2012; Balazki, P., Lindauer, K., Einloft, J., Ackermann, J., Koch, I., MONALISA for stochastic simulations of Petri net models of biochemical systems (2015) BMC Bioinform., 16, p. 215; Marwan, W., Rohr, C., Heiner, M., Petri nets in Snoopy: A unifying framework for the graphical display, computational modelling, and simulation of bacterial regulatory networks (2012) Bact. Mol. Netw. : Methods Protoc., 804, pp. 409-437; Ramos, H., The protein information and property explorer 2: Gaggle-like exploration of biological proteomic data within one webpage (2011) Proteomics, 11, pp. 154-158; Ruths, D., Muller, M., Tseng, J.T., Nakhleh, L., Ram, P.T., The signaling petri net-based simulator: A non-parametric strategy for characterizing the dynamics of cell-specific signaling networks (2008) PLoS Comput. Biol., 4, p. e1000005; Li, C., Structural modeling and analysis of signaling pathways based on Petri nets (2006) J. Bioinform. Comput. Biol., 4, pp. 1119-1140; David, R., Alla, H., (2010) Discrete, Continuous, and Hybrid Petri Nets, , 2nd edn. Springer; Theocharidis, A., Van Dongen, S., Enright, A.J., Freeman, T.C., Network visualization and analysis of gene expression data using BioLayout Express(3D) (2009) Nat. Protoc., 4, pp. 1535-1550; Polak, M.E., Ung, C.Y., Masapust, J., Freeman, T.C., Ardern-Jones, M.R., Petri net computational modelling of Langerhans cell interferon regulatory factor network predicts their role in T cell activation (2017) Sci. Rep., 7, p. 668; Di Ventura, B., Lemerle, C., Michalodimitrakis, K., Serrano, L., From in vivo to in silico biology and back (2006) Nature, 443, pp. 527-533; De Jong, H., Modeling and simulation of genetic regulatory systems: A literature review (2002) J. Comput. Biol., 9, pp. 67-103; Friesen, W.O., Block, G.D., What is a biological oscillator (1984) Am. J. Physiol., 246, pp. R847-R853; Pertsovskaya, I., Abad, E., Domedel-Puig, N., Garcia-Ojalvo, J., Villoslada, P., Transient oscillatory dynamics of interferon beta signaling in macrophages (2013) BMC Syst. Biol., 7, p. 59\",\"Freeman, T.C.; Roslin Institute and Royal (Dick), United Kingdom; email: tom.freeman@roslin.ed.ac.uk\",,,\"Nature Publishing Group\",,,,,17542189,,,\"29543794\",\"English\",\"Nat. Protoc.\",Article,\"Final\",\"All Open Access, Green\",Scopus,2-s2.0-85044334291\n\"Fortin M.P., Hardy S.V.\",\"57224792611;8556627600;\",\"A Hybrid Petri Net Model of the Akt-Wnt-mTOR-p70S6K Signalling Network in Neurons\",2018,\"Fundamenta Informaticae\",\"160\",\"1-2\",,\"1\",\"25\",,,\"10.3233/FI-2018-1672\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-85063783223&doi=10.3233%2fFI-2018-1672&partnerID=40&md5=612a8e0c0855936dec93df61a38f4b0d\",\"Centre de Recherche CERVO, Departement de Biochimie, Microbiologie et Bio-informatique, Universite Laval, 2325, rue de l'Universite, Quebec, G1V 0A6, Canada\",\"Fortin, M.P., Centre de Recherche CERVO, Departement de Biochimie, Microbiologie et Bio-informatique, Universite Laval, 2325, rue de l'Universite, Quebec, G1V 0A6, Canada; Hardy, S.V., Centre de Recherche CERVO, Departement de Biochimie, Microbiologie et Bio-informatique, Universite Laval, 2325, rue de l'Universite, Quebec, G1V 0A6, Canada\",\"Signalling networks in the mammalian cell are complex systems. Their dynamic properties can often be explained by the interaction of regulatory network motifs. Computational modelling is instrumental in explaining how these systems function. To accomplish this task in this paper, we combine hybrid Petri net modelling and simulation, which produce the individual trajectories of protein concentrations and enable structural analysis of the reaction network. In the end, we generate dynamic graphs to get a system view of the signalling network dynamics. We use this methodology on the regulatory network of the proteins mTOR and p70S6K. In neuronal synaptic plasticity, prolonged activation of these proteins is needed to support an increased protein synthesis. However, biologists wonder how two brief calcium influxes of 1 second each can lead to this long activation downstream. With our computational approach and a new model of the Akt-Wnt-mTOR-p70S6K network, we explore the current biological hypothesis for the response of mTOR: the crosstalk between the Akt and Wnt pathways. Simulation results indicate instead that a feedforward motif between Akt, GSK3 and TSC2 acts as a coincidence detector. From the simulation results, we can also make two predictions that can be tested experimentally and indicate where a molecular regulatory mechanism seems to be missing to completely explain the activity in the signalling network. © 2018 Eco-Vector LLC. All rights reserved.\",\"Cell signalling; Computational biology; Hybrid Petri net modelling; mTOR; Simulation; Synaptic plasticity\",\"Antibiotics; Biosynthesis; Chemical activation; Mammals; Neurons; Petri nets; Proteins; Cell signalling; Computational biology; Hybrid Petri net; mTOR; Simulation; Synaptic plasticity; Cell signaling\",,,,,\"National Institutes of Health, NIH: P41 GM103313; National Institute of General Medical Sciences, NIGMS; Natural Sciences and Engineering Research Council of Canada, NSERC: 418603\",\"We thank the anonymous reviewers for their helpful comments to improve the manuscript. We also thank Robert D. Blitzer and Nikos Tzavaras for the discussions that initiated this project. This work was funded by NSERC discovery grant 418603 (SVH). The Virtual Cell is supported by NIH Grant Number P41 GM103313 from the National Institute for General Medical Sciences.\",,\"Ryan, T.J., Roy, D.S., Pignatelli, M., Arons, A., Tonegawa, S., Engram cells retain memory under retrograde amnesia (2015) Science, 348 (6238), pp. 1007-1013; Herring, B.E., Nicoll, R.A., Long-term potentiation: from camkii to ampa receptor trafficking (2016) Annual Review of Physiology, 78 (1), pp. 351-365. , http://dx.doi.org/10.1146/annurev-physiol-021014-071753; Tsokas, P., Ma, T., Iyengar, R., Landau, E.M., Blitzer, R.D., Mitogen-activated protein kinase upregulates the dendritic translation machinery in long-term potentiation by controlling the mammalian target of rapamycin pathway (2007) The Journal of Neuroscience, 27 (22), pp. 5885-5894; Tudor, J.C., Davis, E.J., Peixoto, L., Wimmer, M.E., Van Tilborg, E., Park, A.J., Poplawski, S.G., Abel, T., Sleep deprivation impairs memory by attenuating mTORC1-dependent protein synthesis (2016) Science Signaling, 9 (425), pp. ra41-ra41. , http://stke.sciencemag.org/content/9/425/ra41.full.pdf; Ma, T., Tzavaras, N., Tsokas, P., Landau, E.M., Blitzer, R.D., Synaptic Stimulation of mTOR is Mediated by Wnt Signaling and Regulation of Glycogen Synthetase Kinase-3 (2011) The Journal of Neuroscience, 31 (48), pp. 17537-17546. , http://www.jneurosci.org/content/31/48/17537.full.pdf+html; Liu, F., Heiner, M., (2014) Approaches in Integrative Bioinformatics, Chapter Petri Nets for Modeling and Analyzing Biochemical Reaction Networks, pp. 245-272. , Springer. 978-3-642-41280-6; Hardy, S., Iyengar, R., Analysis of dynamical models of signaling networks with Petri nets and dynamic graphs (2011) Modeling in Systems Biology, pp. 225-251. , Springer London; Azeloglu, E.U., Hardy, S.V., Eungdamrong, N.J., Chen, Y., Jayaraman, G., Chuang, P.Y., Fang, W., Iyengar, R., Interconnected Network Motifs Control Podocyte Morphology and Kidney Function (2014) Science Signaling, 7 (311), pp. ra12-ra12; Jain, P., Bhalla, U.S., Signaling Logic of Activity-Triggered Dendritic Protein Synthesis: An mTOR Gate but Not a Feedback Switch (2009) PLoS Comput Biol, 5 (2), pp. 1-17; Tan, C.W., Gardiner, B.S., Hirokawa, Y., Smith, D.W., Burgess, A.W., Analysis of Wnt signaling-catenin spatial dynamics in HEK293T cells (2014) BMC Systems Biology, 8 (1), pp. 1-18; Hardy, S.V., Pagé Fortin, M., Analysis of the Signal Transduction Dynamics Regulating mTOR with Mathematical Modeling, Petri Nets and Dynamic Graphs (2016) PNSE@Petri Nets 2016, pp. 347-361. , http://ceur-ws.org/Vol-1591/paper24.pdf; Lee, E., Salic, A., Kŗger, R., Heinrich, R., Kirschner, M.W., The roles of apc and axin derived from experimental and theoretical analysis of the wnt pathway (2003) PLoS Biol, 1 (1); Heiner, M., Herajy, M., Liu, F., Rohr, C., Schwarick, M., Application and Theory of Petri Nets: 33rd International Conference, PETRI NETS 2012, Hamburg, Germany, June 25-29, 2012 (2012) Proceedings, Chapter Snoopy-A Unifying Petri Net Tool, pp. 398-407. , Springer Berlin Heidelberg, Berlin, Heidelberg. 978-3-642-31131-4; Chen, J., Park, C.S., Tang, S.J., Activity-dependent Synaptic Wnt Release Regulates Hippocampal Long Term Potentiation (2006) Journal of Biological Chemistry, 281 (17), pp. 11910-11916; Li, Y., Li, B., Wan, X., Zhang, W., Zhong, L., Tang, S.J., NMDA receptor activation stimulates transcriptionindependent rapid wnt5a protein synthesis via the MAPK signaling pathway (2012) Molecular Brain, 5 (1), pp. 1-9; Mak, B.C., Takemaru, K.I., Kenerson, H.L., Moon, R.T., Yeung, R.S., The tuberin-hamartin complex negatively regulates-catenin signaling activity (2003) Journal of Biological Chemistry, 278 (8), pp. 5947-5951. , http://www.jbc.org/content/278/8/5947.full.pdf+html; Mak, B.C., Kenerson, H.L., Aicher, L.D., Barnes, E.A., Yeung, R.S., Aberrant-catenin signaling in tuberous sclerosis (2016) The American Journal of Pathology, 167 (1), pp. 107-116; Cai, S.L., Tee, A.R., Short, J.D., Bergeron, J.M., Kim, J., Shen, J., Guo, R., Walker, C.L., Activity of TSC2 is inhibited by AKT-mediated phosphorylation and membrane partitioning (2006) The Journal of Cell Biology, 173 (2), pp. 279-289; Shumway, S.D., Li, Y., Xiong, Y., 14-3-3 Binds to and Negatively Regulates the Tuberous Sclerosis Complex 2 (TSC2) Tumor Suppressor Gene Product, Tuberin (2003) Journal of Biological Chemistry, 278 (4), pp. 2089-2092; Fukumoto, S., Hsieh, C.M., Maemura, K., Layne, M.D., Yet, S.F., Lee, K.H., Matsui, T., Lee, M.E., Akt Participation in the Wnt Signaling Pathway through Dishevelled (2001) Journal of Biological Chemistry, 276 (20), pp. 17479-17483; Valvezan, A.J., Zhang, F., Diehl, J.A., Klein, P.S., Adenomatous Polyposis Coli (APC) Regulates Multiple Signaling Pathways by Enhancing Glycogen Synthase Kinase-3 (GSK-3) Activity (2012) Journal of Biological Chemistry, 287 (6), pp. 3823-3832. , http://www.jbc.org/content/287/6/3823.full.pdf+html; Pullen, N., Thomas, G., The modular phosphorylation and activation of p70s6k (1997) FEBS Letters, 410 (1), pp. 78-82; Magnuson, B., Ekim, B., Fingar, D.C., Regulation and function of ribosomal protein S6 kinase (S6K) within mTOR signalling networks (2012) Biochemical Journal, 441 (1), pp. 1-21. , http://www.biochemj.org/content/441/1/1.full.pdf; Moraru, I.I., Schaff, J.C., Slepchenko, B.M., Blinov, M., Morgan, F., Lakshminarayana, A., Gao, F., Loew, L.M., The virtual cell modeling and simulation software environment (2008) IET Systems Biology, 2 (5), pp. 352-362; Alon, U., Biological Networks: The Tinkerer as an Engineer (2003) Science, 301 (5641), pp. 1866-1867. , http://science.sciencemag.org/content/301/5641/1866.full.pdf; Mangan, S., Alon, U., Structure and function of the feed-forward loop network motif (2003) Proceedings of the National Academy of Sciences, 100 (21), pp. 11980-11985. , http://www.pnas.org/content/100/21/11980.full.pdf; Soliman, S., Heiner, M., A unique transformation from ordinary differential equations to reaction networks (2010) PLOS ONE, 5 (12), pp. 1-6. , https://doi.org/10.1371/journal.pone.0014284; Brakeman, J., Gu, S., Wang, X., Dolin, G., Baraban, J., Neuronal localization of the adenomatous polyposis coli tumor suppressor protein (1999) Neuroscience, 91 (2), pp. 661-672; Kim, D., Rath, O., Kolch, W., Cho, K.H., A hidden oncogenic positive feedback loop caused by crosstalk between Wnt and ERK Pathways (2007) Oncogene, 26 (31), pp. 4571-4579; Romanelli, A., Martin, K.A., Toker, A., Blenis, J., P70 S6 Kinase is Regulated by Protein Kinase C+ and Participates in a Phosphoinositide 3-Kinase-Regulated Signalling Complex (1999) Molecular and Cellular Biology, 19 (4), pp. 2921-2928. , http://mcb.asm.org/content/19/4/2921.full.pdf+html\",\"Hardy, S.V.; Centre de Recherche CERVO, 2325, rue de l'Universite, Canada; email: simon.hardy@bcm.ulaval.ca\",,,\"IOS Press\",,,,,01692968,,FUINE,,\"English\",\"Fundam Inf\",Article,\"Final\",\"\",Scopus,2-s2.0-85063783223\n\"Obaid A., Naz A., Ashraf S.T., Awan F.M., Ikram A., Saeed M.T., Raza A., Ahmad J., Ali A.\",\"56368530400;56230974500;57196120076;56368616200;56195718800;56421837800;7102449715;57201514205;57219876251;\",\"Formal modeling of the key determinants of Hepatitis C Virus (HCV) induced adaptive immune response network: An Integrative approach to map the cellular and cytokine-mediated host immune regulations\",2018,\"Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)\",\"10963 LNCS\",,,\"635\",\"649\",,1,\"10.1007/978-3-319-95171-3_50\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-85049943829&doi=10.1007%2f978-3-319-95171-3_50&partnerID=40&md5=6d99ff826d5a4ae5f88e524400638a6c\",\"Atta-ur-Rahman School of Applied Biosciences (ASAB), National University of Sciences and Technology (NUST), Islamabad, 44,000, Pakistan; Research Center for Modeling and Simulation (RCMS), National University of Sciences and Technology (NUST), Islamabad, Pakistan; National Institute of Lasers and Optronics (NILOP), Islamabad, Pakistan\",\"Obaid, A., Atta-ur-Rahman School of Applied Biosciences (ASAB), National University of Sciences and Technology (NUST), Islamabad, 44,000, Pakistan; Naz, A., Atta-ur-Rahman School of Applied Biosciences (ASAB), National University of Sciences and Technology (NUST), Islamabad, 44,000, Pakistan; Ashraf, S.T., Atta-ur-Rahman School of Applied Biosciences (ASAB), National University of Sciences and Technology (NUST), Islamabad, 44,000, Pakistan; Awan, F.M., Atta-ur-Rahman School of Applied Biosciences (ASAB), National University of Sciences and Technology (NUST), Islamabad, 44,000, Pakistan; Ikram, A., Atta-ur-Rahman School of Applied Biosciences (ASAB), National University of Sciences and Technology (NUST), Islamabad, 44,000, Pakistan; Saeed, M.T., Research Center for Modeling and Simulation (RCMS), National University of Sciences and Technology (NUST), Islamabad, Pakistan; Raza, A., National Institute of Lasers and Optronics (NILOP), Islamabad, Pakistan; Ahmad, J., Research Center for Modeling and Simulation (RCMS), National University of Sciences and Technology (NUST), Islamabad, Pakistan; Ali, A., Atta-ur-Rahman School of Applied Biosciences (ASAB), National University of Sciences and Technology (NUST), Islamabad, 44,000, Pakistan\",\"HCV is a major causative agent of liver infection and is the leading cause of Hepatocellular carcinoma (HCC). To understand the complexity in interactions within the HCV induced immune signaling networks, a logic-based diagram is generated based on multiple reported interactions. A simple conceptual framework is presented to explore the key determinants of the immune system and their functions during HCV infection. Furthermore, an abstracted sub-network is modeled qualitatively which consists of both the key cellular and cytokine components of the HCV induced immune system. In the presence of NS5A protein of HCV, the behaviors and the interplay amongst the natural killer (NK) and T regulatory (Tregs) cells along with cytokines such as IFN-γ, IL-10, IL-12 are predicted. The overall modelling approach followed in this study comprises of prior knowledge-based logical interaction network, network abstraction, parameter estimation, regulatory network construction and analysis through state graph, enabling the prediction of paths leading to both, disease state and a homeostatic path/cycle predicted based on maximum betweenness centrality. To study the continuous dynamics of the network, Petri net (PN) model was generated. The analysis implicates the critical role of IFN-γ producing NK cells in recovery while, the role of IL-10 and IL-12 in pathogenesis. The predictive ability of the model implicates that IL-12 has a dual role under varying circumstances and leads to varying disease outcomes. This model attempts to reduce the noisy biological data and captures a holistic view of the key determinants of the HCV induced immune response. © Springer International Publishing AG, part of Springer Nature 2018.\",\"Biological regulatory network of HCV; HCV; HCV petri net; IL-10; IL-12; System biology\",\"Abstracting; Computer viruses; Knowledge based systems; Molecular biology; Petri nets; Signaling; Viruses; Adaptive immune response; Betweenness centrality; Biological Regulatory Networks; Conceptual frameworks; Hepatocellular carcinoma; IL-10; IL-12; System biology; Immune system\",,,,,\"Commission on Higher Education, CHED: 4362\",\"This research is supported by Higher Education Commission (HEC) of Pakistan, NRPU grant no. 4362.\",,\"Lechmann, M., Hepatitis C virus–like particles induce virus specific humoral and cellular immune responses in mice (2001) Hepatology, 34 (2), pp. 417-423; Cento, V., Chevaliez, S., Perno, C.F., Resistance to direct-acting antiviral agents: Clinical utility and significance (2015) Curr. Opin. HIV AIDS, 10 (5), pp. 381-389; Ahmad, J., Formal modeling and analysis of the mal-associated biological regulatory network: Insight into cerebral malaria (2012) Plos ONE, 7 (3); Bernot, G., Application of formal methods to biological regulatory networks: Extending Thomas’ asynchronous logical approach with temporal logic (2004) J. Theor. Biol., 229 (3), pp. 339-347; Rehermann, B., Hepatitis C virus versus innate and adaptive immune responses: A tale of coevolution and coexistence (2009) J. Clin. Investig., 119 (7), pp. 1745-1754; Moradpour, D., Penin, F., Rice, C.M., Replication of hepatitis C virus (2007) Nat. Rev. Microbiol., 5 (6), p. 453; Bartenschlager, R., Lohmann, V., Penin, F., The molecular and structural basis of advanced antiviral therapy for hepatitis C virus infection (2013) Nat. Rev. Microbiol., 11 (7), p. 482; Samaga, R., Klamt, S., Modeling approaches for qualitative and semi-quantitative analysis of cellular signaling networks (2013) Cell Commun. Signal., 11 (1), p. 43; Rosen, H.R., Emerging concepts in immunity to hepatitis C virus infection (2013) J. Clin. Investig., 123 (10), p. 4121; Thimme, R., Binder, M., Bartenschlager, R., Failure of innate and adaptive immune responses in controlling hepatitis C virus infection (2012) FEMS Microbiol. Rev., 36 (3), pp. 663-683; Zhao, J., Zhao, J., Perlman, S., Differential effects of IL-12 on Tregs and non-Treg T cells: Roles of IFN-c, IL-2 and IL-2R (2012) Plos ONE, 7 (9); Moore, K.W., Interleukin-10 and the interleukin-10 receptor (2001) Annu. Rev. Immunol., 19 (1), pp. 683-765; Sene, D., Hepatitis C virus (HCV) evades NKG2D-dependent NK cell responses through NS5A-mediated imbalance of inflammatory cytokines (2010) Plos Pathog, 6 (11); Aste-Amezaga, M., Molecular mechanisms of the induction of IL-12 and its inhibition by IL-10 (1998) J. Immunol., 160 (12), pp. 5936-5944; Blackburn, S.D., Wherry, E.J., IL-10, T cell exhaustion and viral persistence (2007) Trends Microbiol, 15 (4), pp. 143-146; Fiorentino, D.F., IL-10 inhibits cytokine production by activated macrophages (1991) J. Immunol., 147 (11), pp. 3815-3822; Hu, X., IFN-c suppresses IL-10 production and synergizes with TLR2 by regulating GSK3 and CREB/AP-1 proteins (2006) Immunity, 24 (5), pp. 563-574; Barth, H., Analysis of the effect of IL-12 therapy on immunoregulatory T-cell subsets in patients with chronic hepatitis C infection (2003) Hepatogastroenterology, 50 (49), pp. 201-206; Richard, A., Boolean models of biosurfactants production in Pseudomonas fluorescens (2012) Plos ONE, 7 (1); Naldi, A., Remy, E., Thieffry, D., Chaouiya, C., A reduction of logical regulatory graphs preserving essential dynamical properties (2009) CMSB 2009. LNCS, 5688, pp. 266-280. , https://doi.org/10.1007/978-3-642-03845-7_18, Degano, P., Gorrieri, R. (eds.), Springer, Heidelberg; Saadatpour, A., Albert, R., Reluga, T.C., A reduction method for Boolean network models proven to conserve attractors (2013) SIAM J. Appl. Dyn. Syst., 12 (4), pp. 1997-2011; Khalis, Z., The SMBioNet method for discovering models of gene regulatory networks (2009) Genes Genomes Genomics, 3 (1), pp. 15-22; Saeed, M.T., Formal modeling and analysis of the hexosamine biosynthetic pathway: Role of O-linked N-acetylglucosamine transferase in oncogenesis and cancer progression (2016) Peerj, 4; Ahmad, J., Hybrid modelling and dynamical analysis of gene regulatory networks with delays (2006) Complexus, 3 (4), pp. 231-251; Gonzalez, A.G., GINsim: A software suite for the qualitative modelling, simulation and analysis of regulatory networks (2006) Biosystems, 84 (2), pp. 91-100; Heiner, M., Herajy, M., Liu, F., Rohr, C., Schwarick, M., Snoopy – a unifying petri net tool (2012) PETRI NETS 2012. LNCS, 7347, pp. 398-407. , https://doi.org/10.1007/978-3-642-31131-4_22, Haddad, S., Pomello, L. (eds.), Springer, Heidelberg; Obaid, A., Modeling and analysis of innate immune responses induced by the host cells against hepatitis C virus infection (2015) Integr. Biol., 7 (5), pp. 544-559; Tseng, C.-T.K., Klimpel, G.R., Binding of the hepatitis C virus envelope protein E2 to CD81 inhibits natural killer cell functions (2002) J. Exp. Med., 195 (1), pp. 43-50; Frese, M., Interferon-c inhibits replication of subgenomic and genomic hepatitis C virus RNAs (2002) Hepatology, 35 (3), pp. 694-703; Belkaid, Y., Rouse, B.T., Natural regulatory T cells in infectious disease (2005) Nat. Immunol., 6 (4), pp. 353-360; Sturm, N., Characterization and role of intra-hepatic regulatory T cells in chronic hepatitis C pathogenesis (2010) J. Hepatol., 53 (1), pp. 25-35; Brady, M.T., Hepatitis C virus non-structural protein 4 suppresses Th1 responses by stimulating IL-10 production from monocytes (2003) Eur. J. Immunol., 33 (12), pp. 3448-3457; Wang, K.S., Frank, D.A., Ritz, J., Interleukin-2 enhances the response of natural killer cells to interleukin-12 through up-regulation of the interleukin-12 receptor and STAT4 (2000) Blood, 95 (10), pp. 3183-3190; Eckels, D.D., Immunobiology of hepatitis C virus (HCV) infection: The role of CD4 T cells in HCV infection (2000) Immunol. Rev., 174 (1), pp. 90-97; Pockros, P.J., A multicenter study of recombinant human interleukin 12 for the treatment of chronic hepatitis C virus infection in patients nonresponsive to previous therapy (2003) Hepatology, 37 (6), pp. 1368-1374; Shannon, P., Cytoscape: A software environment for integrated models of biomolecular interaction networks (2003) Genome Res, 13 (11), pp. 2498-2504; Cook, K.D., Waggoner, S.N., Whitmire, J.K., NK cells and their ability to modulate T cells during virus infections (2014) Crit. Rev. Immunol., 34 (5), pp. 359-388; Lanford, R.E., Antiviral effect and virus-host interactions in response to alpha interferon, gamma interferon, poly (I)-poly (c), tumor necrosis factor alpha, and ribavirin in hepatitis C virus subgenomic replicons (2003) J. Virol., 77 (2), pp. 1092-1104; Ruths, D., The signaling petri net-based simulator: A non-parametric strategy for characterizing the dynamics of cell-specific signaling networks (2008) Plos Comput. Biol., 4; Polak, M.E., Petri net computational modelling of langerhans cell interferon regulatory factor network predicts their role in T cell activation (2017) Sci. Rep., 7 (1), p. 668\",\"Ali, A.; Atta-ur-Rahman School of Applied Biosciences (ASAB), Pakistan; email: amjaduni@gmail.com\",\"Murgante B.Apduhan B.O.Rocha A.M.Taniar D.Tarantino E.Ryu Y.Gervasi O.Misra S.Stankova E.Torre C.M.\",\"\",\"Springer Verlag\",\"18th International Conference on Computational Science and Its Applications, ICCSA 2018\",\"2 July 2018 through 5 July 2018\",,215639,03029743,9783319951706,,,\"English\",\"Lect. Notes Comput. Sci.\",Conference Paper,\"Final\",\"\",Scopus,2-s2.0-85049943829\n\"Bardini R., Politano G., Benso A., Di Carlo S.\",\"57189664330;26655038700;7006074596;7004079458;\",\"Using multi-level Petri nets models to simulate microbiota resistance to antibiotics\",2017,\"Proceedings - 2017 IEEE International Conference on Bioinformatics and Biomedicine, BIBM 2017\",\"2017-January\",,,\"128\",\"133\",,4,\"10.1109/BIBM.2017.8217637\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-85046037254&doi=10.1109%2fBIBM.2017.8217637&partnerID=40&md5=04e68eecef84ac3702da73129df58197\",\"Control and Computer Engineering Department, Politecnico di Torino TorinoI-10129, Italy\",\"Bardini, R., Control and Computer Engineering Department, Politecnico di Torino TorinoI-10129, Italy; Politano, G., Control and Computer Engineering Department, Politecnico di Torino TorinoI-10129, Italy; Benso, A., Control and Computer Engineering Department, Politecnico di Torino TorinoI-10129, Italy; Di Carlo, S., Control and Computer Engineering Department, Politecnico di Torino TorinoI-10129, Italy\",\"The spread of antibiotic resistance is a growing problem known to be caused by antibiotic usage itself. This problem can be analyzed at different levels. Antibiotic administration policies and practices affect the societal system, which is made by human individuals and by their relations. Individuals developing resistance interact with each other and with the environment while receiving antibiotic treatments moving the problem at a different level of analysis. Each individual can be further see as a meta-organism together with his associated microbiotas, which prove to have a prominent role in the resistance spreading dynamics. Eventually, in each microbiota, population dynamics and vertical or horizontal transfer events implement cellular and molecular mechanisms for resistance spreading and possibly for its prevention. Using the Nets-within-nets formalism, in this work we model the relation between different antibiotic administration protocols and resistance spread dynamics both at the human population and at the single microbiota level. © 2017 IEEE.\",\"Antibiotic resistance; human microbiota; hybrid models; multilevel models; Nets-within-nets; Petri Nets\",\"Bioinformatics; Dynamics; Petri nets; Population dynamics; Regression analysis; Antibiotic resistance; Human microbiota; Hybrid model; Multilevel model; Nets-within-nets; Antibiotics\",,,,,,,,\"Turnbaugh, P.J., The human microbiome project (2007) Nature, 449 (7164), pp. 804-810. , Oct; Kamada, N., Chen, G.Y., Inohara, N., Núñez, G., Control of pathogens and pathobionts by the gut microbiota (2013) Nature Immunology, 14 (7), pp. 685-690; Korem, T., Growth dynamics of gut microbiota in health and disease inferred from single metagenomic samples (2015) Science, 349 (6252), pp. 1101-1106; Lozupone, C.A., Stombaugh, J.I., Gordon, J.I., Jansson, J.K., Knight, R., Diversity, stability and resilience of the human gut microbiota (2012) Nature, 489 (7415), pp. 220-230; Thomas, C.M., Nielsen, K.M., Mechanisms of, and barriers to, horizontal gene transfer between bacteria (2005) Nature Reviews. Microbiology, 3 (9), p. 711; Huddleston, J.R., Horizontal gene transfer in the human gastrointestinal tract: Potential spread of antibiotic resistance genes (2014) Infection and Drug Resistance, 7, p. 167; Arenz, S., Wilson, D.N., Blast from the past: Reassessing forgotten translation inhibitors, antibiotic selectivity, and resistance mechanisms to aid drug development (2016) Molecular Cell, 61 (1), pp. 3-14; Rodríguez-Rojas, A., Antibiotics and antibiotic resistance: A bitter fight against evolution (2013) International Journal of Medical Microbiology, 303 (6), pp. 293-297; Bengtsson-Palme, J., The human gut microbiome as a transporter of antibiotic resistance genes between continents (2015) Antimicrob Agents Chemother, 59 (10), pp. 6551-6560. , Oct; Valk, R., Object petri nets: Using the nets-within-nets paradigm, advanced course on petri nets 2003 (2003) Appendix A: Proof of Theorem, 3. , (j. desel, w. reisig, g. rozenberg, eds.), 3098; Bardini, R., Benso, A., Di Carlo, S., Politano, G., Savino, A., Using nets-within-nets for modeling differentiating cells in the epigenetic landscape (2016) International Conference on Bioinformatics and Biomedical Engineering, pp. 315-321. , Springer; Bardini, R., Politano, G., Benso, A., Di Carlo, S., Multi-level and hybrid modelling approaches for systems biology (2017) Computational and Structural Biotechnology Journal; Cabac, L., Haustermann, M., Mosteller, D., Renew 2.5-towards a comprehensive integrated development environment for petri net-based applications (2016) International Conference on Applications and Theory of Petri Nets and Concurrency, pp. 101-112. , Springer; Szklo, M., Nieto, J., (2014) Epidemiology, , Jones & Bartlett Publishers; Yassour, M., Natural history of the infant gut microbiome and impact of antibiotic treatment on bacterial strain diversity and stability (2016) Science Translational Medicine, 8 (343), pp. 343ra81-343ra81; Sommer, M.O., Dantas, G., Antibiotics and the resistant microbiome (2011) Current Opinion in Microbiology, 14 (5), pp. 556-563. , antimicrobials/Genomics\",,\"Yoo I.Zheng J.H.Gong Y.Hu X.T.Shyu C.-R.Bromberg Y.Gao J.Korkin D.\",\"IEEE;IEEE Computer Society;IEEE Technical Committee on Computational Life Science (TCCLS)\",\"Institute of Electrical and Electronics Engineers Inc.\",\"2017 IEEE International Conference on Bioinformatics and Biomedicine, BIBM 2017\",\"13 November 2017 through 16 November 2017\",,133962,,9781509030491,,,\"English\",\"Proc. - IEEE Int. Conf. Bioinform. Biomed., BIBM\",Conference Paper,\"Final\",\"\",Scopus,2-s2.0-85046037254\n\"Merabet N., Bordeneuve J., Davezac N.\",\"57216749514;6505757641;6506177534;\",\"Modelling the redox imbalance in Dominant Optic Atrophy: the case of respiratory Complex I\",2017,\"IFAC-PapersOnLine\",\"50\",\"1\",,\"862\",\"867\",,,\"10.1016/j.ifacol.2017.08.255\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-85031789210&doi=10.1016%2fj.ifacol.2017.08.255&partnerID=40&md5=fc8cbee12656ef4dbc93e9ad30048b65\",\"ISAE-Supaéro, Toulouse University, Toulouse, France; Research Center on Animal Cognition (CRCA), Toulouse University, CNRS, UPS, Toulouse, France\",\"Merabet, N., ISAE-Supaéro, Toulouse University, Toulouse, France, Research Center on Animal Cognition (CRCA), Toulouse University, CNRS, UPS, Toulouse, France; Bordeneuve, J., ISAE-Supaéro, Toulouse University, Toulouse, France; Davezac, N., Research Center on Animal Cognition (CRCA), Toulouse University, CNRS, UPS, Toulouse, France\",\"Dominant Optic Atrophy is a neuro-ophthalmic disease characterized by the degeneration of the optic nerves. As other neurodegenerative diseases, this pathology was associated with dysfunctional mitochondrial respiratory complexes and an increased production of Reactive Oxygen Species (ROS). Our objective is to create a mathematical model of the molecular mechanisms involved in the pathogenesis of Dominant Optic Atrophy in order to predict their evolution and give appropriated treatment based on in-silico analysis with physiological parameters from a specific patient. The first part of the work presented here concerns processes and feedback mechanisms of the whole dysfunctional mitochondrial system. The behaviour of the system is explained with a block diagram. In the second part, we present a detailed stochastic model of catalytic activity and ROS production of respiratory complex I. We developed the model using a Petri net formalism and a continuous-time Markov chains theory. The simulations were realized on Matlab and compared to kinetic data from the literature. Our model is able to reproduce the dynamics of the complex I system and to simulate observed behaviours of this system regarding ROS production. © 2017\",\"Biological systems; Computer simulation; Markov models; Stochastic modelling; Stochastic Petri-nets\",\"Bioinformatics; Biological systems; Catalyst activity; Computer simulation; Continuous time systems; Eye protection; Markov processes; MATLAB; Neurodegenerative diseases; Patient treatment; Petri nets; Physiological models; Stochastic systems; Continuous time Markov chain; Feedback mechanisms; Markov model; Molecular mechanism; Physiological parameters; Reactive oxygen species; Respiratory complex; Stochastic Petri Nets; Stochastic models\",,,,,\"Institute of Infection and Immunity\",\"∗ ISAE-Supaéro, Toulouse University, Toulouse, France ∗∗∗∗RIeSsAeaErc-ShuCpaeénrtoe,r ToonuAlonuisme aUl nCivoegrnsiittiyo,nT(oCuRloCuAse),, FTroaunlcoeuse ∗∗∗∗ ISAE-Supaéro, Toulouse University, Toulouse, France Research Center on Animal Cognition (CRCA), Toulouse Re∗∗∗search Center on Animal Cognition (CRCA), Toulouse University, CNRS, UPS, Toulouse, France ∗∗∗∗∗∗ University, CNRS, UPS, Toulouse, France ∗∗∗Corresponding author: joel.bordeneuve@isae.fr Corresponding author: joel.bordeneuve@isae.fr Abstract: Dominant O˚tic Atro˚hy is a neuro-o˚hthaflmic disease characterized by the dAebgesntrearactti:onDoofmtinhaenot˚OtictnicerAvetsr.oÅhsy oitshear neuro-doeghetnhearfalmtiivce ddiisseeasseesc,htahriasctearitzheodflogby wthaes Abstract: Dominant O˚tic Atro˚hy is a neuro-o˚hthaflmic disease characterized by the adsesgoecnieartaetdiownitohfdtyhsefunoctiiocnanfel mrvietso.chAosndortihaeflrrenseuirraotdoergyecnoemråtfilevxeesdaisnedasaens,inthcrisea˚seadthorfloodguyctwioans degeneration of the o˚tic nerves. As other neurodegenerative diseases, this ˚athoflogy was associated with dysfunctionafl mitochondriafl res˚iratory com˚flexes and an increased ˚roduction associated with dysfunctionafl mitochondriafl res˚iratory com˚flexes and an increased ˚roduction of Reactive Oxygen S˚ecies (ROS). Our objective is to create a mathematicafl modefl of the tmoof˚lerceudfliacrt mtheecihraenvisomflustioinnvoafnlvdedgiivne tahe˚roåtrhiaotgeednetsriesatomfeDntombainsaendtoOnitni-csilAictoroånhayflyisnisowrditehr to ˚redict their evoflution and give a˚˚ro˚riated treatment based on in-silico anaflysis with cohnycseiornflosgicraoflcesasreasmaentderfseefdrbomackamsecehcaifnicism˚astoiefntth. eTwhheoffleirsdtys˚faurntctoiof ntahflemwitoorckhonrdesreianfltesdystheemre. concerns ˚rocesses and feedback mechanisms of the whofle dysfunctionafl mitochondriafl system. dTehteaibfleedhasvtoiocuhrasotficthmeosdyesftleomf ciasteaxfly˚tfliacinaecdtivwiittyhaandbflRocOkSdiargordaumc.tiIonntohferseescoirnadtorayrtc,owme ˚flerxesIe.nWt ae detaifled stochastic modefl of cataflytic activity and ROS ˚roduction of res˚iratory com˚flex I. We Tdehve fsloim˚eudflatthioenms owdeerfel urseianflgizeadPoentrMi naettflafboramndaflicsomånardeda tconktiinneutoicusd-atitma efroMmartkhoevflicthearaintsurteh.eOoruyr. deveflo˚ed the modefl using a Petri net formaflism and a continuous-time Markov chains theory. The simuflations were reaflized on Matflab and com˚ared to kinetic data from the fliterature. Our The simuflations were reaflized on Matflab and com˚ared to kinetic data from the fliterature. Our modefl is abfle to re˚roduce the dynamics of the com˚flex I system and to simuflate observed modefl is abfle to re˚roduce the dynamics of the com˚flex I system and to simuflate observed behaviours of this system regarding ROS ˚roduction. behaviours of this system regarding ROS ˚roduction. © 2017, IFAC (International Federation of Automatic Control) Hosting by Elsevier Ltd. All rights reserved. Keywords: Bioflogicafl systems; Com˚uter simuflation; Markov modefls; Stochastic Petri-nets; SKteoycwhoarsdtisc: mBioodfloegflfliicnagfl systems; Com˚uter simuflation; Markov modefls; Stochastic Petri-nets; Keywords: Bioflogicafl systems; Com˚uter simuflation; Markov modefls; Stochastic Petri-nets; Stochastic modeflfling Stochastic modeflfling INTRODUCTION INTRODUCTION INTRODUCTION Neurodegenerative diseases are a major issue of ˚ubflic Nheeauflrtohd. eAgemnoenragtitvheesdeiseaatshesofloagrieesa, nmeuarjoor-oishstuheafolmf icucbofnlic-Neurodegenerative diseases are a major issue of ˚ubflic hdeitaifoltnhs. iAnmcfluondgingthgesflaeucoamthao,flowgiheisc,hnaeuffreoc-tos˚8h0thmaflimflfliiocncsono-f heaflth. Among these ˚athoflogies, neuro-o˚hthaflmic conditions incfluding gflaucoma, which affects 80 miflflions of ditions incfluding gflaucoma, which affects 80 miflflions of ˚atients worfldwide, but aflso genetic neurodegeneration of tthraeflrqeutiensatioanssinofDooumrinsoacnitetOies.tiAc fAlthtrooughhym(DutOaAti)o,nasrienctehne-trafl questions of our societies. Aflthough mutations in the nofucDfleOaAr ,gethne OhPyAsi1o-h˚avtehobfeloegniciadflemnteifcihedanaissmthseinmvaoiflnvecdauasree nucflear gene OPA1 have been identified as the main cause of DOA, the ˚hysio-˚athoflogicafl mechanisms invoflved are of DOA, the ˚hysio-˚athoflogicafl mechanisms invoflved are stiflfl unknown and there is no thera˚y to date. DstiflflOAuniskcnhoarwnactanderizedtherebyismonodertheatrae˚toystoevedaretefloss. of visuafl DacOuiAtyiswcihtharaincstiedriiozeuds boynsmetodineraeaterflytocsheivflderheooflods.s Tofhveisduias-fl DOA is characterized by moderate to severe floss of visuafl aeacuseity˚rwimitahrifilynsaidffieocutss otnhseetreitninaeafl rgflyancghfliiofldnhicoocde.flflsTh(Re GdCis)-ease ˚rimarifly affects the retinafl gangflionic ceflfls (RGC) raebsfluefltintger-inanod˚tiicntrnae-rfvaemiaflitarfol ˚vhayr.iaTtiohnereinisviasuacfol nascidueitry-resuflting in o˚tic nerve atro˚hy. There is a consider-abfle inter-and intra-famifliafl variation in visuafl acuity abfle inter-and intra-famifliafl variation in visuafl acuity (Votruba et afl., 1998), and the ˚enetrance may be as flow åsreavabfoleuntce40is%be(tTwoeoemne1s:1e0t,0a0fl0., i2n00D1e)n. mEasrtkimaantded1:d5i0se,0a0s0e ˚revaflence is between 1:10,000 in Denmark and 1:50,000 wDoOrAfldwhaidreb.orTshmeumtaatijoonritiyn tohfeOaPtiAen1tsge(naeb(oDutefle7t5t%re)etwaitflh., worfldwide. The majority of ˚atients (about 75%) with D20O00A) hwahribcohrsusmuuaftlfalytiroensuifnltsthine tOhPeAre1dguecntieon(DinefleOttPrAe 1etårfol.-, 2000) which usuaflfly resuflts in the reduction in OPA1 ˚ro-★2000) which usuaflfly resuflts in the reduction in OPA1 ˚ro- tein flevefls. Interestingfly, recent studies evidenced a severe meuinfltfile-svyesflst.emInitcedreissotirndgeflry,asrseocecniattestduwdiieths esvoimdeenOcePdAa1 smevuetrae-tein flevefls. Interestingfly, recent studies evidenced a severe muflti-systemic disorder associated with some OPA1 muta-ti0o0n8s),.nPaamteiedntDsOAreseflnuts saydndditrioomnaefl(nAemuraotfilo-Bgiocnafnl ecaoumetfliacafl.-, tions, named DOA ˚flus syndrome (Amati-Bonneau et afl., 2008). Patients ˚resent additionafl neuroflogicafl com˚flica-nieosnss, cihnroandicuf˚ltrofligfere, sisnivcefluedxitnegrnaatflaoxiha,tasflmenosofrleingieau,rsaeflnsdoerayf--tions in aduflt flife, incfluding ataxia, sensorineurafl deaf-ness, chronic ˚rogressive externafl o˚htaflmo˚flegia, sensory-ofomtoarjonreuraot˚haot˚hhyyasniodflomgiycoa˚fl aimth˚yo.rtTahnecsee, ohbigsherflivgahttiionngs tahre motor neuro˚athy and myo˚athy . These observations are of major ˚atho˚hysioflogicafl im˚ortance, highflighting the noidteosnflryeafodr dReGfleCtesr,ibouust acfolsnosfeoqruoetnhceersnoefuOroPnAaf1l ˚mouutaflattioionnss, wides˚read defleterious consequences of OPA1 mutations, anodt osnkfelyfleftoarflRmGuCscsfl,eb. uGtflaauflscoofmoraowthaesranflseourcoflenaarflfly˚oreuflafltaetdiontos not onfly for RGCs, but aflso for other neuronafl ˚o˚uflations and skefletafl muscfle. Gflaucoma was aflso cflearfly reflated to and skefletafl muscfle. Gflaucoma was aflso cflearfly reflated to OPA1 gene status (Ju et afl., 2010) with ˚atients ˚resenting OPA1 gene status (Ju et afl., 2010) with ˚atients ˚resenting downreguflation of its ex˚ression (Bosfley et afl., 2011). downreguflation of its ex˚ression (Bosfley et afl., 2011). inhtehOe PinAt1erg-meneemebnrcaondeessåamceitaonchdoanndcrhiaoflredrotteoinmfliotcoacfhlizoend-The OPA1 gene encodes a mitochondriafl ˚rotein flocaflized dnriathfl eininnetrerm-memembrbarnaenewshicahcehaasndvaarinocuhsofruendcttoionms,itioncchfluond--in the inter-membrane s˚ace and anchored to mitochon-driafl inner membrane which has various functions, incflud-inaginintneneranmce,m˚brroatnecetfiuonsiofrno,mcrais˚toåetsotsriuscatnudramtiiotno,chmotnDdNriaAfl ing inner membrane fusion, cristae structuration, mtDNA maintenance, ˚rotection from a˚o˚tosis and mitochondriafl maintenance, ˚rotection from a˚o˚tosis and mitochondriafl energetics moduflation (Landes et afl., 2010). The generafl mmodaucftlatoifonOwPAas1ininvaescttiigvateiodnboynBmerithoocfhleotnedtraiafl.fl aennderMgeitfliflcest im˚act of OPA1 inactivation on mitochondriafl energetics etoadful. flaintiocneflfwluaflasrinmveosdteigflsat(erdatbycoBretirctahflofnleetuertoanfsl. and MHieflLfleat moduflation was investigated by Berthoflet et afl. and Miflflet et afl. in ceflfluflarenmu/o+defls (rat corticafl neurons and HeLa et afl. in ceflfluflarenu/+modefls (rat corticafl neurons and HeLa ★ caenfldfls)D, OinAO+PÅa1tienu/+ents. Imn ibceotahndcefilfnluflfairbrmobofdlaesftlss (fHroemLaDcOeflAfls R★eTchheisrcphreoSjeccitenistisfiuqpupeo,rttheedUbnyigvrearsnittséfProamultShaebCateinetrraenNda,ttihoenaRlédgeiolna caneflflsd),DOinAOPA+ ˚at1ients. Inmicbeotahndceflinfluflfibroar mobfladeflstss (froHeLam DceflOAfls This project is supported by grants from the Centre National de la and cDoOrtAic+afl neautireonntss).,IcnombotflehxcIe,flfcluofmlar˚fmlexodIIeIflsan(HdecLoamcefleflflxs ROeecccchhiteearrnccihheee. NSScc.iiMeennettriiffaiiqqbue,uete,isthethfuenUUdnneiidvveebrryssiittth´´eeePPFaaruuellnSabatierScahbMatiineirstand,arnydf,othetrhReeRRs´´eeeaggriioocnnh and DOA+ ˚atients. In both ceflfluflar modefls (HeLa ceflfls Recherche Scientifique, the UniversitéPaul Sabatier and, the Région and corticafl neurons), com˚flex I, com˚flex III and com˚flex Occitanie. N. Merabet is funded by the French Ministry for Research and corticafl neurons), com˚flex I, com˚flex III and com˚flex Occitanie. N. Merabet is funded by the French Ministry for Research IV are im˚aired and ceflfluflar res˚iration is diminished whV enareOPimA˚a1 ireis ddecrandeasedceflflu(flaBerr trehofls˚iraet ettionafl.is, 2013)diminis. Thheids for PEh.D.ducastudies.tion and the Ecole Doctorale Aéronautique Astronautique when OPA1 is decreased (Berthoflet et afl., 2013). This for Ph.D. studies. when OPA1 is decreased (Berthoflet et afl., 2013). This\",,\"Amati-Bonneau, P., Opa1 mutations induce mitochondrial dna instability and optic atrophy ‘plus’ phenotypes (2008) Brain, 131 (2), pp. 338-351; Berrisford, J.M., Sazanov, L.A., Structural basis for the mechanism of respiratory complex i (2009) J. Biol. Chem, 284 (43), pp. 29773-29783; Bertholet, A.M., Opa1 loss of function affects in vitro neuronal maturation (2013) Brain, 136 (5), pp. 1518-1533; Birrell, J.A., Reactions of the flavin mononu-cleotide in complex i: A combined mechanism describes nadh oxidation coupled to the reduction of apad+, fer-ricyanide, or molecular oxygen (2009) Biochemistry, 48 (50), pp. 12005-12013; Bosley, T.M., Down-regulation of opa1 in patients with primary open angle glaucoma (2011) Mol. Vis, 17, p. 10741079; Bridges, H.R., Bill, E., Hirst, J., Mössbauer spectroscopy on respiratory complex i: The ironsulfur cluster ensemble in the nadh-reduced enzyme is partially oxidized (2012) Biochemistry, 51 (1), pp. 149-158; Delettre, C., Nuclear gene opa1, encoding a mitochondrial dynamin-related protein, is mutated in dominant optic atrophy (2000) Nat. Genet, 26 (2), p. 207210; Fiedorczuk, K., (2016), Atomic structure of the entire mammalian mitochondrial complex i. Nature; Gillespie, D.T., Exact stochastic simulation of coupled chemical reactions (1977) The Journal of Physical Chemistry, 81 (25), pp. 2340-2361; Gillespie, D.T., A rigorous derivation of the chemical master equation (1992) Physica A: Statistical Mechanics and its Applications, 188 (1), pp. 404-425; Gillespie, D.T., Why quantum mechanics cannot be formulated as a markov process (1994) Phys. Rev. A, 49, pp. 1607-1612; Halliwell, B., Chirico, S., Lipid peroxidation: its mechanism, measurement, and significance (1993) Am J Clin Nutr, 57 (5), pp. 715S-724S; Halliwell, B., Gutteridge, J.M.C., (1999) Free Radicals in Biology and Medicine, , Oxford University Press; Hirst, J., Roessler, M.M., Energy conversion, redox catalysis and generation of reactive oxygen species by respiratory complex i (2016) BBA - Bioenergetics, 1857 (7), pp. 872-883; Ju, W.K., Increased optic atrophy type 1 expression protects retinal ganglion cells in a mouse model of glaucoma (2010) Mol. Vis, 16, p. 13311342; Kazak, L., Minimizing the damage:repair pathways keep mitochondrial dna intact (2012) Nat. Rev. Mol. Cell Biol, 13, pp. 659-671; Kussmaul, L., Hirst, J., The mechanism of su-peroxide production by nadh:ubiquinone oxidoreductase (complex i) from bovine heart mitochondria (2006) PNAS, 103 (20), pp. 7607-7612; Landes, T., {OPA1} (dys)functions (2010) Seminars in Cell & Developmental Biology, 21 (6), pp. 593-598; Mamedova, A.A., Substrate-induced confor-mational change in bacterial complex i (2004) J. Biol. Chem, 279 (22), pp. 23830-23836; Millet, A.M.C., Loss of functional opa1 unbalances redox state: implications in dominant optic atrophy pathogenesis (2016) Ann Clin Transl Neurol, 3 (6), pp. 408-421; Moser, C.C., Nature of biological electron transfer (1992) Nature, 355, pp. 796-802; Moser, C.C., Dutton, P.L., (1996) Outline of theory of protein electron transfer, , Springer; Moser, C.C., Distance metrics for heme protein electron tunneling (2008) BBA - Bioenergetics, 1777 (78), pp. 1032-1037; Page, C.C., Natural engineering principles of electron tunnelling in biological oxidationreduction (1999) Nature, 402, pp. 47-52; Ransac, S., From in silico to in spectro kinetics of respiratory complex i (2012) BBA - Bioenergetics, 1817 (10), pp. 1958-1969; Repetto, M., (2010), Lipid Peroxidation: Chemical Mechanism, Biological Implications and Analytical Determination; Richter, C., Park, J., Ames, B., Normal oxidative damage to mitochondrial and nuclear dna is extensive (1988) PNAS, 85 (17), p. 64656467; Schon, E.A., Human mitochondrial dna: roles of inherited and somatic mutations (2012) Nat. Rev. Genet, 13, pp. 878-890; Sherwood, S., Hirst, J., Investigation of the mechanism of proton translocation by nadh:ubiquinone oxidoreductase (complex i) from bovine heart mitochondria: does the enzyme operate by a q-cycle mechanism? (2006) Biochem. J, 400 (3), pp. 541-550; Stadman, E.R., Levine, R.L., Protein oxidation (2000) Ann N Y Acad Sci, 899 (1), pp. 191-208; Toomes, C., (2001), Spectrum, frequency and pene-trance of opa1 mutations in dominant optic atrophy; Turrens, J.F., Mitochondrial formation of reactive oxygen species (2003) J. Physiol, 552, p. 335344; Vinothkumar, K.R., (2014), Architecture of mammalian respiratory complex i; Votruba, M., Clinical features in affected individuals from 21 pedigrees with dominant optic atrophy (1998) Arch Ophthalmol, 116 (3), pp. 351-358\",,,,\"Elsevier B.V.\",,,,,24058963,,,,\"English\",\"IFAC-PapersOnLine\",Conference Paper,\"Final\",\"All Open Access, Bronze, Green\",Scopus,2-s2.0-85031789210\n\"Scheidel J., Amstein L., Ackermann J., Dikic I., Koch I.\",\"57192405723;55893768400;57189026922;7006551228;7006792171;\",\"In Silico Knockout Studies of Xenophagic Capturing of Salmonella\",2016,\"PLoS Computational Biology\",\"12\",\"12\",\"e1005200\",\"\",\"\",,17,\"10.1371/journal.pcbi.1005200\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-85007590674&doi=10.1371%2fjournal.pcbi.1005200&partnerID=40&md5=ea05c0dce2f47a0ffeb35575ea7dfc8b\",\"Molecular Bioinformatics, Institute of Computer Science, Johann Wolfgang Goethe-University Frankfurt am Main, Frankfurt am Main, Germany; Institute of Biochemistry II, Johann Wolfgang Goethe-University Hospital Frankfurt am Main, Frankfurt am Main, Germany; Buchmann Institute for Molecular Life Sciences, Frankfurt am Main, Germany\",\"Scheidel, J., Molecular Bioinformatics, Institute of Computer Science, Johann Wolfgang Goethe-University Frankfurt am Main, Frankfurt am Main, Germany; Amstein, L., Molecular Bioinformatics, Institute of Computer Science, Johann Wolfgang Goethe-University Frankfurt am Main, Frankfurt am Main, Germany; Ackermann, J., Molecular Bioinformatics, Institute of Computer Science, Johann Wolfgang Goethe-University Frankfurt am Main, Frankfurt am Main, Germany; Dikic, I., Institute of Biochemistry II, Johann Wolfgang Goethe-University Hospital Frankfurt am Main, Frankfurt am Main, Germany, Buchmann Institute for Molecular Life Sciences, Frankfurt am Main, Germany; Koch, I., Molecular Bioinformatics, Institute of Computer Science, Johann Wolfgang Goethe-University Frankfurt am Main, Frankfurt am Main, Germany\",\"The degradation of cytosol-invading pathogens by autophagy, a process known as xenophagy, is an important mechanism of the innate immune system. Inside the host, Salmonella Typhimurium invades epithelial cells and resides within a specialized intracellular compartment, the Salmonella-containing vacuole. A fraction of these bacteria does not persist inside the vacuole and enters the host cytosol. Salmonella Typhimurium that invades the host cytosol becomes a target of the autophagy machinery for degradation. The xenophagy pathway has recently been discovered, and the exact molecular processes are not entirely characterized. Complete kinetic data for each molecular process is not available, so far. We developed a mathematical model of the xenophagy pathway to investigate this key defense mechanism. In this paper, we present a Petri net model of Salmonella xenophagy in epithelial cells. The model is based on functional information derived from literature data. It comprises the molecular mechanism of galectin-8-dependent and ubiquitin-dependent autophagy, including regulatory processes, like nutrient-dependent regulation of autophagy and TBK1-dependent activation of the autophagy receptor, OPTN. To model the activation of TBK1, we proposed a new mechanism of TBK1 activation, suggesting a spatial and temporal regulation of this process. Using standard Petri net analysis techniques, we found basic functional modules, which describe different pathways of the autophagic capture of Salmonella and reflect the basic dynamics of the system. To verify the model, we performed in silico knockout experiments. We introduced a new concept of knockout analysis to systematically compute and visualize the results, using an in silico knockout matrix. The results of the in silico knockout analyses were consistent with published experimental results and provide a basis for future investigations of the Salmonella xenophagy pathway. © 2016 Scheidel et al.\",,\"Cells; Chemical activation; Machinery; Petri nets; Autophagy; Cytosols; Epithelial cells; In-silico; Innate immune systems; Intracellular compartments; Kinetic data; Molecular process; Salmonella typhimurium; Salmonella-containing vacuoles; Salmonella; galectin 8; leucine rich repeat and sterile alpha motif containing 1 protein; nuclear dot protein 52; nucleosome assembly protein 1; optineurin; protein serine threonine kinase; receptor; sequestosome 1; TANK binding kinase 1; ubiquitin; ubiquitin protein ligase E3; unclassified drug; galectin; Article; computer model; epithelium cell; gene inactivation; HeLa cell line; mathematical model; Petri net; Salmonella enterica serovar Typhimurium; ubiquitination; xenophagy; animal; autophagy; biological model; computer simulation; cytology; cytosol; intestine mucosa; mammal; metabolism; microbiology; pathogenicity; physiology; small intestine; Animals; Autophagy; Computer Simulation; Cytosol; Galectins; Intestinal Mucosa; Intestine, Small; Mammals; Models, Biological; Protein-Serine-Threonine Kinases; Salmonella typhimurium; Ubiquitin\",,\"galectin 8, 220452-97-1; protein serine threonine kinase; ubiquitin, 60267-61-0; Galectins; Protein-Serine-Threonine Kinases; Ubiquitin\",,,,,,\"Beuzon, C.R., Salcedo, S.P., Holden, D.W., Growth and killing of a Samonella enterica serovar Typhimurium sifA mutant strain in the cytosol of different host cell lines (2002) Microbiology, 148, pp. 2705-2715. , 10.1099/00221287-148-9-2705, 12213917; Brumell, J.H., Thang, P., Zaharik, M.L., Finlay, B.B., Disruption of the Salmonella-containing Vacuole Leads to Increased Replication of Salmonella enterica Serovar Typhimurium in the Cytosol of the Epithelial Cells (2002) Infection and Immunity, 70 (6), pp. 3264-3270. , 10.1128/IAI.70.6.3264-3270.2002, 12011022; Knodler, L.A., Vallance, B.A., Celli, J., Winfree, S., Hansen, B., Montero, M., Dissemination of invasive Salmonella via bacterial-induced extrusion of mucosal epithelia (2010) PNAS, 107 (41), pp. 17733-17738. , 10.1073/pnas.1006098107, 20876119; Birmingham, C.L., Smith, A.C., Bakowski, M.A., Yoshimori, T., Brumell, J.H., Autophagy Controls Salmonella Infection in Response to Damage to the Salmonella-containing Vacuole (2006) The Journal of Biological Chemistry, 281, pp. 11374-11383. , 10.1074/jbc.M509157200, 16495224; Perrin, A.J., Jiang, X., Birmingham, C.L., So, N.S.Y., Brumell, J.H., Recognition of Bacteria in the Cytosol of the Mammalian Cells by the Ubiquitin System (2004) Current Biology, 14, pp. 806-811. , 10.1016/j.cub.2004.04.033, 15120074; Thurston, T.L.M., Wandel, M.P., von Muhlinen, N., Foeglein, Á., Randow, F., Galectin 8 targets damaged vesicles for autophagy to defend cells against bacterial invasion (2012) Nature, 482 (7385), pp. 414-418. , 10.1038/nature10744, 22246324; Zheng, Y.T., Shahnazari, S., Brech, A., Lamark, T., Johansen, T., Brumell, J.H., The Adaptor Protein p62/SQSTM1 Targets Invading Bacteria to the Autophagy Pathway (2009) The Journal of Immunology, 183 (9), pp. 5909-5916. , 10.4049/jimmunol.0900441, 19812211; Thurston, T.L.M., Ryzhakov, G., Bloor, S., von Muhlinen, N., Randow, F., The TBK1 adaptor and autophagy receptor NDP52 restricts the proliferation of ubiquitin-coated bacteria (2009) Nature Immunology, 10 (11), pp. 1215-1221. , 10.1038/ni.1800, 19820708; Wild, P., Farhan, H., Ecwan, D.G., Wagner, S., Rogov, V.V., Brady, N.R., Phosphorylation of the Autophagy Receptor Optineurin Restricts Salmonella Growth (2011) Science, 333 (6039), pp. 228-233. , 10.1126/science.1205405, 21617041; Stolz, A., Ernst, A., Dikic, I., Cargo recognition and trafficking in selective autophagy (2014) Nature Cell Biology, 16 (6), pp. 495-501. , 10.1038/ncb2979, 24875736; McCarroll, S.A., Huett, A., Kuballa, P., Chilewski, S.D., Landry, A., Goyette, P., Deletion polymorphism upstream of IRGM associated with altered IRGM expression and Crohn’s disease (2008) Nature Genetics, 40 (9), pp. 1107-1112. , 10.1038/ng.215, 19165925; Rioux, J.D., Xavier, R.J., Taylor, K.D., Silverberg, M.S., Goyette, P., Huett, A., Genome-wide association study identifies new susceptibility loci for Crohn disease and implicates autophagy in disease pathogenesis (2007) Nature Genetics, 39 (5), pp. 596-604. , 10.1038/ng2032, 17435756; Hampe, J., Franke, A., Rosenstiel, P., Till, A., Teuber, M., Huse, K., A genome-wide association scan of nonsynonymous SNPs identifies a susceptibility variant for Crohn disease in ATG16L1 (2007) Nature Genetics, 39 (2), pp. 207-211. , 10.1038/ng1954, 17200669; Cadwell, K., Liu, J.Y., Brown, S.L., Miyoshi, H., Loh, J., Lennerz, J.K., A key role for autophagy and the autophagy gene Atg16l1 in mouse and human intestinal Paneth cells (2008) Nature, 456 (7219), pp. 259-263. , 10.1038/nature07416, 18849966; Kuballa, P., Huett, A., Rioux, J.D., Daly, M.J., Xavier, R.J., Impaired Autophagy of an Intracellular Pathogen Induced by a Crohn’s Disease Associated ATG16L1 Variant (2008) PloS ONE, 3 (10), p. e3391. , 10.1371/journal.pone.0003391, 18852889; Ellinghaus, D., Zhang, H., Zeissig, S., Lipinski, S., Till, A., Jiang, T., Association Between Variants of PRDM1 and NDP52 and Crohn’s Disease, Based on Exome Sequencing and Functional Studies (2013) Gastroenterology, 145 (2), pp. 339-347. , 10.1053/j.gastro.2013.04.040, 23624108; Koch, I., Reisig, W., Schreiber, F., (2011) Modeling in Systems Biology: The Petri Net Approach, , 10.1007/978-1-84996-474-6, (editors); Reddy, V.N., Mavrovouniotis, M.L., Liebman, M.N., Petri Net Representations in Metabolic Pathways (1997) Proceedings of the First International Conference on Intelligent Systems for Molecular Biology, 93, pp. 328-336. , 7584354; Grunwald, S., Speer, A., Ackermann, J., Koch, I., Petri net modelling of gene regulation of the Duchenne muscular dystrophy (2008) BioSystems, 92 (2), pp. 189-205. , 10.1016/j.biosystems.2008.02.005, 18372101; Heiner, M., Koch, I., Petri Net Based Model Validation in Systems Biology, pp. 216-237; Minervini, G., Panizzoni, E., Giollo, M., Masiero, A., Ferrari, C., Tosatto, S.C., Design and Analysis of a Petri Net Model of the Von Hippel-Lindau (VHL) Tumor Suppressor Interaction Network (2014) PLoS One, 9 (6), p. e96986. , 10.1371/journal.pone.0096986, 24886840; Sackmann, A., Heiner, M., Koch, I., Application of Petri net based analysis techniques to signal transduction pathways (2006) BMC Bioinformatics, 7 (1), p. 482. , 10.1186/1471-2105-7-482, 17081284; Scheidel, J., Lindauer, K., Ackermann, J., Koch, I., Quasi-Steady-State Analysis based on Structural Modules and Timed Petri Net Predict System’s Dynamics: The Life Cycle of the Insulin Receptor (2015) Metabolites, 5 (4), pp. 766-793. , 10.3390/metabo5040766, 26694479; Koch, I., Heiner, M., Junker, B.H., Schreiber, F., Petri nets (2008) Analysis of biological networks. Wiley & Sons Book Series on Bioinformatics, pp. 139-179. , 10.1002/9780470253489.ch7; Radtke, A.L., Delbridge, L.M., Balachandran, S., Barber, G.N., O’Riordan, M.X.D., TBK1 Protects Vacuolar Integrity during Intracellular Bacterial Infection (2007) PLoS Pathogens, 3 (3), p. e29. , 10.1371/journal.ppat.0030029, 17335348; Kanehisa, M., Goto, S., KEGG: Kyoto Encyclopedia of Genes and Genomes (2000) Nucleic Acids Research, 28, pp. 27-30. , 10.1093/nar/28.1.27, 10592173; Reisig, W., (2012) Petri Nets: An Introduction (Vol. 4); Einloft, J., Ackermann, J., Nöthen, J., Koch, I., MonaLisa – visualization and analysis of functional modules in biochemical networks (2013) Bioinformatics, 29 (11), pp. 1469-1470. , 10.1093/bioinformatics/btt165, 23564846; Drecktrah, D., Knodler, L.A., Howe, D., Steele-Mortimer, O., Salmonella Trafficking is Defined by Continuous Dynamic Interactions with the Endolysosomal System (2007) Traffic, 8, pp. 212-225. , 10.1111/j.1600-0854.2006.00529.x, 17233756; Knodler, L.A., Salmonella enterica: living a double life in epithelial cells (2015) Current Opinion in Microbiology, 23, pp. 23-31. , 10.1016/j.mib.2014.10.010, 25461569; Roy, D., Liston, D.R., Idone, V.J., Di, A., Nelson, D.J., Pujol, C., A Process for Controlling Intracellular Bacterial Infections Induced by Membrane Injury (2004) Science, 304 (5676), pp. 1515-1518. , 10.1126/science.1098371, 15178804; Yu, H.B., Croxen, M.C., Marchiando, A.M., Ferreira, R.B.R., Cadwell, K., Foster, L.J., Autophagy Facilitates Salmonella Replication in HeLa Cells (2014) mBio, 5 (2), pp. e00814-e00865. , 10.1128/mBio.00865-14, 24618251; Li, S., Wandel, M.P., Li, F., Liu, Z., He, C., Wu, J., Sterical hindrance promotes selectivity of the autophagy cargo receptor NDP52 for the danger receptor galectin-8 in antibacterial autophagy (2013) Science Signaling, 6 (261), p. ra9. , 10.1126/scisignal.2003730, 23386746; Huett, A., Heath, R.J., Begun, J., Sassi, S.O., Baxt, L.A., Vyas, J.M., Goldberg, M.B., The LRR and RING Domain Protein LRSAM1 Is an E3 Ligase Crucial for Ubiquitin-Dependent Autophagy of Intracellular Salmonella Typhimurium (2012) Cell Host & Microbe, 12 (6), pp. 778-790. , 10.1016/j.chom.2012.10.019, 23245322; Ng, A.C., Eisenberg, J.M., Heath, R.J., Huett, A., Robinson, C.M., Nau, G.J., Human leucine-rich repeat proteins: a genome-wide bioinformatic categorization and functional analysis in innate immunity (2011) PNAS, 108, pp. 4631-4638. , 10.1073/pnas.1000093107, 20616063; Van Wijk, S.J., Fiskin, E., Putyrski, M., Pampaloni, F., Hou, J., Wild, P., Fluorescence-Based Sensors to Monitor Localization and Functions of Linear and K63-Linked Ubiquitin Chains in Cells (2012) Molecular Cell, 47 (5), pp. 797-809. , 10.1016/j.molcel.2012.06.017, 22819327; Fujita, N., Morita, E., Itoh, T., Tanaka, A., Nakaoka, M., Osada, Y., Recruitment of the autophagic machinery to endosomes during infection is mediated by ubiquitin (2013) The Journal of Cell Biology, 203 (1), pp. 115-128. , 10.1083/jcb.201304188, 24100292; Cemma, M., Kim, P.K., Brumell, J.H., The ubiquitin-binding adaptor proteins p62/SQSTM1 and NDP52 are recruited independently to bacteria-associated microdomains to target Salmonella to the autophagy pathway (2012) Autophagy, 7 (3), pp. 341-345. , 10.4161/auto.7.3.14046, 21079414; Morton, S., Hesson, L., Peggie, M., Cohon, P., Enhanced binding of TBK1 by an optineurin mutant that causes a familial form of primary open angle glaucoma FEBS Letters, 582, pp. 997-1002. , 10.1016/j.febslet.2008.02.047, 18307994; Rogov, V.V., Suzuki, H., Fiskin, E., Wild, P., Kniss, A., Rozenknop, A., Structural basis for phosphorylation-triggered autophagic clearance of Salmonella (2013) The Biochemical Journal, 454 (3), pp. 459-466. , 10.1042/BJ20121907, 23805866; Tu, D., Zhu, Z., Zhou, A.Y., Yun, C., Lee, K., Toms, A.V., Structure and Ubiquitination-Dependent Activation of TANK-Binding Kinase 1 (2013) Cell Reports, 3 (3), pp. 747-758. , 10.1016/j.celrep.2013.01.033, 23453972; Ma, X., Helgason, E., Phung, Q.T., Quan, C.L., Iyer, R.S., Lee, M.W., Molecular basis of Tank-binding kinase 1 activation by transautophosphorylation (2012) PNAS, 109 (24), pp. 9378-9383. , 10.1073/pnas.1121552109, 22619329; Larabi, A., Devos, J.M., Ng, S., Nanao, M.H., Round, A., Maniatis, T., Crystal Structure and Mechanism of Activation of TANK-Binding Kinase 1 (2013) Cell Reports, 3 (3), pp. 734-746. , 10.1016/j.celrep.2013.01.034, 23453971; Shu, C., Sankaran, B., Chaton, C.T., Herr, A.B., Mishra, A., Peng, J., Structural Insights into the Functions of TBK1 in Innate Antimicrobial Immunity (2013) Structure, 21 (7), pp. 1137-1148. , 10.1016/j.str.2013.04.025, 23746807; Gleason, C.E., Ordureau, A., Gourlay, R., Arthur, S.C., Cohon, P., Polyubiquitin Binding to Optineurin Is Required for Optimal Activation of TANK-binding Kinase 1 and Production of Interferon β (2011) The Journal of Biological Chemistry, 286 (41), pp. 35663-35674. , 10.1074/jbc.M111.267567, 21862579; Fujita, F., Taniguchi, Y., Kato, T., Narita, Y., Furuya, A., Ogawa, T., Identification of NAP1, a Regulatory Subunit of IκB Kinase-Related Kinases That Potentiates NF-κB Signaling (2003) Molecular and Cellular Biology, 23 (21), pp. 7780-7793. , 10.1128/MCB.23.21.7780-7793.2003, 14560022; Tattoli, I., Sorbara, M.T., Vuckovic, D., Ling, A., Soares, F., Carneiro, L.A., Amino Acid Starvation Induced by Invasive Bacterial Pathogens Triggers an Innate Host Defense Program (2012) Cell Host & Microbe, 11 (6), pp. 563-575. , 10.1016/j.chom.2012.04.012, 22704617; Tattoli, I., Philpott, D.J., Girardin, S.E., The bacterial and cellular determinants controlling the recruitment of mTOR to the Salmonella-containing vacuole (2012) Biology Open, 1 (12), pp. 1215-1225. , 10.1242/bio.20122840, 23259056; Mizushima, N., The role of the Atg1/ULK1 complex in autophagy regulation (2010) Current Opinion in Cell Biology, 22 (2), pp. 132-139. , 10.1016/j.ceb.2009.12.004, 20056399; Kageyama, S., Omori, H., Saitoh, T., Sone, T., Guan, J.L., Akira, S., The LC3 recruitment mechanism is separate from Atg9L1-dependent membrane formation in the autophagic response against Salmonella (2011) Molecular Biology of the Cell, 22 (13), pp. 2290-2300. , 10.1091/mbc.E10-11-0893, 21525242; Shahnazari, S., Yen, W.L., Birmingham, C.L., Shiu, J., Namolovan, A., Zheng, Y.T., A Diacylglycerol-Dependent Signaling Pathway Contributes to Regulation of Antibacterial Autophagy (2010) Cell Host & Microbe, 8 (2), pp. 137-146. , 10.1016/j.chom.2010.07.002, 20674539; Sanjuan, M.A., Dillon, C.P., Tait, S.W., Moshiach, S., Dorsey, F., Connell, S., Toll-like receptor signalling in macrophages links the autophagy pathway to phagocytosis (2007) Nature, 450 (7173), pp. 1253-1257. , 10.1038/nature06421, 18097414; Martinez, J., Almendinger, J., Oberst, A., Ness, R., Dillon, C.P., Fitzgerald, P., Microtubule-associated protein 1 light chain 3 alpha (LC3)-associated phagocytosis is required for the efficient clearance of dead cells (2011) PNAS, 108 (42), pp. 17396-17401. , 10.1073/pnas.1113421108, 21969579; Tumbarello, D.A., Manna, P.T., Allen, M., Bycroft, M., Arden, S.D., The Autophagy Receptor TAX1BP1 and the Molecular Motor Myosin VI Are Required for Clearance of Salmonella Typhimurium by Autophagy (2015) PLoS Pathogens, 11 (10), p. e1005174. , 10.1371/journal.ppat.1005174, 26451915; Hlavacek, W.S., Faeder, J.R., Blinov, M.L., Perelson, A.S., Goldstein, B., The Complexity of Complexes in Signal Transduction (2003) Biotechnology and Bioengineering, 84 (7), pp. 783-794. , 10.1002/bit.10842, 14708119\",\"Koch, I.; Molecular Bioinformatics, Germany; email: ina.koch@bioinformatik.uni-frankfurt.de\",,,\"Public Library of Science\",,,,,1553734X,,,\"27906974\",\"English\",\"PLoS Comput. Biol.\",Article,\"Final\",\"All Open Access, Gold, Green\",Scopus,2-s2.0-85007590674\n\"Wu H., Von Kamp A., Leoncikas V., Mori W., Sahin N., Gevorgyan A., Linley C., Grabowski M., Mannan A.A., Stoy N., Stewart G.R., Ward L.T., Lewis D.J., Sroka J., Matsuno H., Klamt S., Westerhoff H.V., McFadden J., Plant N.J., Kierzek A.M.\",\"55622444400;8937693500;56925388200;57203835755;55699860400;25031025400;57203841780;55788971000;36666753700;6602914039;7402286524;48061629900;57683319200;35786429400;7103263135;6603425714;7101854663;16185831500;7003738114;56091890200;\",\"MUFINS: Multi-formalism interaction network simulator\",2016,\"npj Systems Biology and Applications\",\"2\",,\"16032\",\"\",\"\",,15,\"10.1038/npjsba.2016.32\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-85030102047&doi=10.1038%2fnpjsba.2016.32&partnerID=40&md5=3a65b1fa54c6409053bd9df2e862a7fa\",\"School of Biosciences and Medicine, Faculty of Health and Medical Sciences, University of Surrey, Guildford, United Kingdom; Max Planck Institute for Dynamics of Complex Technical Systems, Magdeburg, Germany; Graduate School of Science and Engineering and Faculty of Science, Yamaguchi University, Yoshida, Yamaguchi, Japan; Molecular Cell Physiology, VU University Amsterdam, Amsterdam, Netherlands; MedImmune, Cambridge, United Kingdom; Institute of Informatics, University of Warsaw, Warsaw, Poland; Oncology DMPK, AstraZeneca, Alderley Park, Cheshire, United Kingdom; Manchester Centre for Integrative Systems Biology, University of Manchester, Manchester, United Kingdom; Synthetic Systems Biology, Netherlands Institute for Systems Biology, University of Amsterdam, Amsterdam, Netherlands; Simcyp Limited (a Certara Company), Sheffield, United Kingdom\",\"Wu, H., School of Biosciences and Medicine, Faculty of Health and Medical Sciences, University of Surrey, Guildford, United Kingdom; Von Kamp, A., Max Planck Institute for Dynamics of Complex Technical Systems, Magdeburg, Germany; Leoncikas, V., School of Biosciences and Medicine, Faculty of Health and Medical Sciences, University of Surrey, Guildford, United Kingdom; Mori, W., Graduate School of Science and Engineering and Faculty of Science, Yamaguchi University, Yoshida, Yamaguchi, Japan; Sahin, N., Molecular Cell Physiology, VU University Amsterdam, Amsterdam, Netherlands; Gevorgyan, A., MedImmune, Cambridge, United Kingdom; Linley, C., School of Biosciences and Medicine, Faculty of Health and Medical Sciences, University of Surrey, Guildford, United Kingdom; Grabowski, M., Institute of Informatics, University of Warsaw, Warsaw, Poland; Mannan, A.A., School of Biosciences and Medicine, Faculty of Health and Medical Sciences, University of Surrey, Guildford, United Kingdom; Stoy, N., School of Biosciences and Medicine, Faculty of Health and Medical Sciences, University of Surrey, Guildford, United Kingdom; Stewart, G.R., School of Biosciences and Medicine, Faculty of Health and Medical Sciences, University of Surrey, Guildford, United Kingdom; Ward, L.T., Oncology DMPK, AstraZeneca, Alderley Park, Cheshire, United Kingdom; Lewis, D.J., School of Biosciences and Medicine, Faculty of Health and Medical Sciences, University of Surrey, Guildford, United Kingdom; Sroka, J., Institute of Informatics, University of Warsaw, Warsaw, Poland; Matsuno, H., Graduate School of Science and Engineering and Faculty of Science, Yamaguchi University, Yoshida, Yamaguchi, Japan; Klamt, S., Max Planck Institute for Dynamics of Complex Technical Systems, Magdeburg, Germany; Westerhoff, H.V., Molecular Cell Physiology, VU University Amsterdam, Amsterdam, Netherlands, Manchester Centre for Integrative Systems Biology, University of Manchester, Manchester, United Kingdom, Synthetic Systems Biology, Netherlands Institute for Systems Biology, University of Amsterdam, Amsterdam, Netherlands; McFadden, J., School of Biosciences and Medicine, Faculty of Health and Medical Sciences, University of Surrey, Guildford, United Kingdom; Plant, N.J., School of Biosciences and Medicine, Faculty of Health and Medical Sciences, University of Surrey, Guildford, United Kingdom; Kierzek, A.M., School of Biosciences and Medicine, Faculty of Health and Medical Sciences, University of Surrey, Guildford, United Kingdom, Simcyp Limited (a Certara Company), Sheffield, United Kingdom\",\"Systems Biology has established numerous approaches for mechanistic modeling of molecular networks in the cell and a legacy of models. The current frontier is the integration of models expressed in different formalisms to address the multi-scale biological system organization challenge. We present MUFINS (MUlti-Formalism Interaction Network Simulator) software, implementing a unique set of approaches for multi-formalism simulation of interaction networks. We extend the constraint-based modeling (CBM) framework by incorporation of linear inhibition constraints, enabling for the first time linear modeling of networks simultaneously describing gene regulation, signaling and whole-cell metabolism at steady state. We present a use case where a logical hypergraph model of a regulatory network is expressed by linear constraints and integrated with a Genome-Scale Metabolic Network (GSMN) of mouse macrophage. We experimentally validate predictions, demonstrating application of our software in an iterative cycle of hypothesis generation, validation and model refinement. MUFINS incorporates an extended version of our Quasi-Steady State Petri Net approach to integrate dynamic models with CBM, which we demonstrate through a dynamic model of cortisol signaling integrated with the human Recon2 GSMN and a model of nutrient dynamics in physiological compartments. Finally, we implement a number of methods for deriving metabolic states from ~ omics data, including our new variant of the iMAT congruency approach. We compare our approach with iMAT through the analysis of 262 individual tumor transcriptomes, recovering features of metabolic reprogramming in cancer. The software provides graphics user interface with network visualization, which facilitates use by researchers who are not experienced in coding and mathematical modeling environments. © The Author(s) 2016.\",,,,,,,\"European Federation of Pharmaceutical Industries and Associations, EFPIA; Biotechnology and Biological Sciences Research Council, BBSRC: BB/I00453X/1, BB/K015974/1; Japan Society for the Promotion of Science, JSPS: 16H02896; Narodowe Centrum Nauki, NCN: BB/ K501694/1, DEC-2012/07/D/ST6/02492; Seventh Framework Programme, FP7: FP7/2007-2013; Innovative Medicines Initiative, IMI: 115308\",\"Development of MUFINS was funded by BBSRC TRDF grant BB/K015974/1 to AMK. AvK, SK, GRS and AMK were supported by EraSysBio+/BBSRC TB-HOST-NET grant BB/I00453X/1. The research leading to results obtained by CL, NS and DL has received support from the Innovative Medicines Initiative Joint Undertaking under grant agreement n 115308, resources of which are composed of financial contribution from the European Union's Seventh Framework Programme (FP7/2007-2013) and EFPIA companies in kind contribution. MG and JS were funded by National Science Centre (Poland) grant DEC-2012/07/D/ST6/02492. VL was funded by the BBSRC grant (BB/ K501694/1).\",\"Development of MUFINS was funded by BBSRC TRDF grant BB/K015974/1 to AMK. AvK, SK, GRS and AMK were supported by EraSysBio+/BBSRC TB-HOST-NET grant BB/I00453X/1. The research leading to results obtained by CL, NS and DL has received support from the Innovative Medicines Initiative Joint Undertaking under grant agreement n 115308, resources of which are composed of financial contribution from the European Union’s Seventh Framework Programme (FP7/2007-2013) and EFPIA companies in kind contribution. MG and JS were funded by National Science Centre (Poland) grant DEC-2012/07/D/ST6/02492. VL was funded by the BBSRC grant (BB/ K501694/1).\",\"Gillespie, D.T., Exact stochastic simulation of coupled chemical-reactions (1977) J. Phys. Chem, 81, pp. 2340-2361; Tyson, J.J., Chen, K., Novak, B., Network dynamics and cell physiology (2001) Nat. Rev. Mol. Cell Biol, 2, pp. 908-916; Bordbar, A., Constraint-based models predict metabolic and associated cellular functions (2014) Nat. Rev. Genet, 15, pp. 107-120; Orth, J.D., Thiele, I., Palsson, B.O., What is flux balance analysis? (2010) Nat. Biotechnol, 28, pp. 245-248; Lewis, N.E., Nagarajan, H., Palsson, B.O., Constraining the metabolic genotype-phenotype relationship using a phylogeny of in silico methods (2012) Nat. Rev. Microbiol, 10, pp. 291-305; Klamt, S., A methodology for the structural and functional analysis of signaling and regulatory networks (2006) BMC Bioinformatics, 7, p. 56; Remy, E., A description of dynamical graphs associated to elementary regulatory circuits (2003) Bioinformatics, 19, pp. II172-II178; Ruths, D., The signaling petri net-based simulator: A non-parametric strategy for characterizing the dynamics of cell-specific signaling networks (2008) Plos Comput. Biol, 4; Fisher, C.P., QSSPN: Dynamic simulation of molecular interaction networks describing gene regulation, signalling and whole-cell metabolism in human cells (2013) Bioinformatics, 29, pp. 3181-3190; Hucka, M., The systems biology markup language (SBML): A medium for representation and exchange of biochemical network models (2003) Bioinformatics, 19, pp. 524-531; Chelliah, V., BioModels: Ten-year anniversary (2015) Nucleic Acids Res, 43, pp. D542-D548; Jones, H.M., Rowland-Yeo, K., Basic concepts in physiologically based pharmacokinetic modeling in drug discovery and development. CPT Pharmacometrics Syst (2013) Pharmacol, 2, pp. e63-e63; Karr, J.R., A whole-cell computational model predicts phenotype from genotype (2012) Cell, 150, pp. 389-401; Krauss, M., Integrating cellular metabolism into a multiscale wholebody model (2012) Plos Computat, 8; Ruths, D., Nakhleh, L., Ram, P.T., Rapidly exploring structural and dynamic properties of signaling networks using PathwayOracle (2008) BMC Syst. Biol, 2, p. 76; Covert, M.W., Integrating metabolic, transcriptional regulatory and signal transduction models in Escherichia coli (2008) Bioinformatics, 24, pp. 2044-2050; Covert, M.W., Schilling, C.H., Palsson, B., Regulation of gene expression in flux balance models of metabolism (2001) J. Theor. Biol, 213, pp. 73-88; Puchalka, J., Kierzek, A.M., Bridging the gap between stochastic and deterministic regimes in the kinetic simulations of the biochemical reaction networks (2004) Biophys. J, 86, pp. 1357-1372; Gevorgyan, A., SurreyFBA: A command line tool and graphics user interface for constraint-based modeling of genome-scale metabolic reaction networks (2011) Bioinformatics, 27, pp. 433-434; Becker, S.A., Palsson, B.O., Context-specific metabolic networks are consistent with experiments (2008) Plos Computat. Biol, 4; Schmidt, B.J., GIM(3)E: Condition-specific models of cellular metabolism developed from metabolomics and expression data (2013) Bioinformatics, 29, pp. 2900-2908; Diamant, I., A network-based method for predicting gene-nutrient interactions and its application to yeast amino-acid metabolism (2009) Mol. Biosyst, 5, pp. 1732-1739; Breitling, R., A structured approach for the engineering of biochemical network models, illustrated for signalling pathways (2008) Brief. Bioinform, 9, pp. 404-421; Mendum, T.A., Lipid metabolism and Type VII secretion systems dominate the genome scale virulence profile of Mycobacterium tuberculosis in human dendritic cells (2015) BMC Genomics, 16, p. 372; Rohr, C., Marwan, W., Heiner, M., Snoopy-a unifying Petri net framework to investigate biomolecular networks (2010) Bioinformatics, 26, pp. 974-975; Mendum, T.A., Interrogation of global mutagenesis data with a genome scale model of Neisseria meningitidis to assess gene fitness in vitro and in sera (2011) Genome Biol, 12, pp. R127; Beste, D.J.V., GSMN-TB: A web-based genome scale network model of Mycobacterium tuberculosis metabolism (2007) Genome Biol, 8, pp. R89; Cottret, L., MetExplore: A web server to link metabolomic experiments and genome-scale metabolic networks (2010) Nucleic Acids Res, 38, pp. W132-W137; Bordbar, A., Model-driven multi-omic data analysis elucidates metabolic immunomodulators of macrophage activation (2012) Mol. Syst. Biol, 8, p. 558; Dasika, M.S., Burgard, A., Maranas, C.D., A computational framework for the topological analysis and targeted disruption of signal transduction networks (2006) Biophys. J, 91, pp. 382-398; Vardi, L., Ruppin, E., Sharan, R.A., Linearized constraint-based approach for modeling signaling networks (2012) J. Computat. Biol, 19, pp. 232-240; Shlomi, T., A genome-scale computational study of the interplay between transcriptional regulation and metabolism (2007) Mol. Syst. Biol, 3, p. 101; Kolodkin, A., Optimization of stress response through the nuclear receptor-mediated cortisol signalling network (2013) Nat. Commun, 4, p. 1972; Kolodkin, A.N., Design principles of nuclear receptor signaling: How complex networking improves signal transduction (2010) Mol. Syst. Biol, 6, p. 446; Le Novere, N., The systems biology graphical notation (2009) Nat. Biotechnol, 27, pp. 735-741; Thiele, I., A community-driven global reconstruction of human metabolism (2013) Nat. Biotechnol, 31, p. 419; Gille, C., HepatoNet1: A comprehensive metabolic reconstruction of the human hepatocyte for the analysis of liver physiology (2010) Mol. Syst. Biol, 6, p. 411; Kolker, E., MOPED: Model Organism Protein Expression Database (2012) Nucleic Acids Res, 40, pp. D1093-D1099; El-Sankary, W., Plant, N., Gibson, G., Regulation of the CYP3A4 gene by hydrocortisone and xenobiotics: Role of the glucocorticoid and pregnane X receptors (2000) Drug Metab. Dispos, 28, pp. 493-496; Plant, N., The human cytochrome P450 3A sub-family: Transcriptional regulation, inter-individual variation and interaction networks (2007) Biochim. Biophys. Acta, 1770, pp. 478-488; Losordo, D.W., Isner, J.M., Estrogen and angiogenesis—A review. Arterioscler (2001) Thromb. Vasc. Biol, 21, pp. 6-12; Zheng, J., Estrogen and progesterone receptors, cell proliferation, and c-fos expression in the ovine uterus during early pregnancy (1996) Endocrinology, 137, pp. 340-348; Kuhl, H., Pharmacology of estrogens and progestogens: Influence of different routes of administration (2005) Climacteric, 8, pp. 3-63; Plant, N., Gibson, G.G., Evaluation of the toxicological relevance of CYP3A4 induction (2003) Curr. Opin. Drug Discov. Dev, 6, pp. 50-56; Leoncikas, V., Generation of 2,000 breast cancer metabolic landscapes reveals a poor prognosis group with active serotonin production (2016) Sci. Rep, 6, p. 19771; Curtis, C., The genomic and transcriptomic architecture of 2,000 breast tumours reveals novel subgroups (2012) Nature, 486, pp. 346-352; Dinatale, B.C., Kynurenic acid is a potent endogenous aryl hydrocarbon receptor ligand that synergistically induces interleukin-6 in the presence of inflammatory signaling (2010) Toxicol. Sci, 115, pp. 89-97; Opitz, C.A., An endogenous tumour-promoting ligand of the human aryl hydrocarbon receptor (2011) Nature, 478, pp. 197-203; Hoops, S., COPASI—a COmplex PAthway SImulator (2006) Bioinformatics, 22, pp. 3067-3074\",\"Kierzek, A.M.; School of Biosciences and Medicine, United Kingdom; email: a.kierzek@surrey.ac.uk\",,,\"Nature Publishing Group\",,,,,20567189,,,,\"English\",\"npj Syst. Bio. Appl.\",Article,\"Final\",\"All Open Access, Gold, Green\",Scopus,2-s2.0-85030102047\n\"ElKalaawy N., Wassal A.\",\"56507453900;35568744500;\",\"Methodologies for the modeling and simulation of biochemical networks, illustrated for signal transduction pathways: A primer\",2015,\"BioSystems\",\"129\",,,\"1\",\"18\",,9,\"10.1016/j.biosystems.2015.01.008\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-84922360138&doi=10.1016%2fj.biosystems.2015.01.008&partnerID=40&md5=e8dc2225533265d470a5456c69fc6efb\",\"Department of Computer Engineering, Faculty of Engineering, Cairo University, Giza, 12613, Egypt\",\"ElKalaawy, N., Department of Computer Engineering, Faculty of Engineering, Cairo University, Giza, 12613, Egypt; Wassal, A., Department of Computer Engineering, Faculty of Engineering, Cairo University, Giza, 12613, Egypt\",\"Biochemical networks depict the chemical interactions that take place among elements of living cells. They aim to elucidate how cellular behavior and functional properties of the cell emerge from the relationships between its components, i.e. molecules. Biochemical networks are largely characterized by dynamic behavior, and exhibit high degrees of complexity. Hence, the interest in such networks is growing and they have been the target of several recent modeling efforts. Signal transduction pathways (STPs) constitute a class of biochemical networks that receive, process, and respond to stimuli from the environment, as well as stimuli that are internal to the organism. An STP consists of a chain of intracellular signaling processes that ultimately result in generating different cellular responses. This primer presents the methodologies used for the modeling and simulation of biochemical networks, illustrated for STPs. These methodologies range from qualitative to quantitative, and include structural as well as dynamic analysis techniques. We describe the different methodologies, outline their underlying assumptions, and provide an assessment of their advantages and disadvantages. Moreover, publicly and/or commercially available implementations of these methodologies are listed as appropriate. In particular, this primer aims to provide a clear introduction and comprehensive coverage of biochemical modeling and simulation methodologies for the non-expert, with specific focus on relevant literature of STPs. © 2015 Elsevier Ireland Ltd.\",\"Biochemical networks; Modeling and simulation; Ordinary differential equations; Partial differential equations; Signal transduction pathways; Stochastic methods\",\"biochemistry; simulation; stochasticity; theoretical study; analytic method; Bayes theorem; biochemistry; Boolean network; calculation; cell communication; cell interaction; colored petri nets; continuous petri nets; extracellular space; functional petri nets; hybrid functional petri nets; hybrid functional petri nets with extension; hybrid petri nets; information science; mathematical analysis; mathematical model; mathematics; methodology; molecular dynamics; molecular model; nonhuman; ordinary differential equation; partial differential equation; petri nets; Review; signal transduction; signal transduction pathway; simulation; stochastic model; stochastic petri nets; timed petri nets; biochemistry; biological model; chemical model; computer simulation; human; Biochemical Phenomena; Computer Simulation; Humans; Models, Biological; Models, Chemical; Signal Transduction\",,,,,,,,\"Alber, M., Kiskowski, M., Glazier, J., Jiang, Y., On cellular automaton approaches to modeling biological cells (2002) Mathematical Systems Theory in Biology, Communication, and Finance, 134, pp. 1-39. , Springer, New York, J. Rosenthal, D.S. Gilliam (Eds.); Aldridge, B., Burke, J., Lauffenburger, D., Sorger, P., Physicochemical modelling of cell signalling pathways (2006) Nat. Cell Biol., 8 (11), pp. 1195-1203; Amigoni, F., Schiaffonati, V., Multiagent-based simulation in biology - a critical analysis (2007) Model-Based Reasoning in Science, Technology, and Medicine, vol. 64, pp. 179-191. , Springer; Ander, M., Beltrao, P., Di Ventura, B., Ferkinghoff-Borg, J., Foglierini, M., Kaplan, A., Lemerle, C., Serrano, L., SmartCell, a framework to simulate cellular processes that combines stochastic approximation with diffusion and localisation: analysis of simple networks (2004) Syst. Biol., 1 (1), pp. 129-138; Andrews, S., Arkin, A., Simulating cell biology (2006) Curr. Biol., 16 (14), pp. R523-R527; Andrews, S., Bray, D., Stochastic simulation of chemical reactions with spatial resolution and single molecule detail (2004) Phys. Biol., 1, pp. 137-151; Andrews, S., Dinh, T., Arkin, A., Stochastic models of biological processes (2009) Encycl. Complex. Syst. Sci., pp. 8730-8749; Apte, A., Bonchev, D., Fong, S., Cellular automata modeling of FASL-initiated apoptosis (2010) Chem. Biodivers., 7 (5), pp. 1163-1172; Berry, H., Monte Carlo simulations of enzyme reactions in two dimensions: fractal kinetics and spatial segregation (2002) Biophys. J., 83 (4), p. 1891; Bhalla, U., Signaling in small subcellular volumes. I. Stochastic and diffusion effects on individual pathways (2004) Biophys. J., 87 (2), pp. 733-744; Bittig, A., Uhrmacher, A., Spatial modeling in cell biology at multiple levels (2010) IEEE Proceedings of the 2010 Winter Simulation Conference (WSC 10), pp. 608-619; Blackwell, K., Modeling calcium concentration and biochemical reactions (2005) Brains, Minds & Media, 1 (2); Bormann, G., Brosens, F., De Schutter, E., (2001) Diffusion, pp. 189-224. , MIT Press, [Chapter 7]; Brown, G., Kholodenko, B., Spatial gradients of cellular phospho-proteins (1999) FEBS Lett., 457 (3), pp. 452-454; Burks, A., Von Neumann's self-reproducing automata (1970) Essays on Cellular Automata, pp. 3-64. , University of Illinois Press, Urbana, [Chapter 1], A. Burks (Ed.); Cacchiani, L., (2007) Simulation and analysis of chemical reactions using stochastic differential equations, , University of Torino/University of Edinburgh, Ph.D. thesis; Calder, M., Gilmore, S., Hillston, J., Automatically deriving ODEs from process algebra models of signalling pathways (2005) Comput. Methods Syst. Biol., pp. 204-215; Calder, M., Gilmore, S., Hillston, J., Modelling the influence of rkip on the erk signalling pathway using the stochastic process algebra pepa (2006) Lect. Notes Comput. Sci., 4230, pp. 1-23; Cao, Y., Gillespie, D., Petzold, L., The slow-scale stochastic simulation algorithm (2005) J. Chem. Phys., 122 (1), p. 014116; Cao, Y., Petzold, L., Rathinam, M., Gillespie, D., The numerical stability of leaping methods for stochastic simulation of chemically reacting systems (2004) J. Chem. Phys., 121 (24), p. 12169; Chaouiya, C., Petri net modelling of biological networks (2007) Brief. Bioinform., 8 (4), pp. 210-219; Chen, C., Nagl, S., Clack, C., Computational techniques for modeling and simulating biological systems (2006) ACM Comput. Surv., 34 (3), p. 5; Chen, L., Qi-Wei, G., Nakata, M., Matsuno, H., Miyano, S., Modelling and simulation of signal transductions in an apoptosis pathway by using timed petri nets (2007) J. Biosci., 32 (1), pp. 113-127; Chen, W., De Schutter, E., Python-based geometry preparation and simulation visualization toolkits for STEPS (2014) Front. Neuroinform., 8; Cho, K., Wolkenhauer, O., Analysis and modelling of signal transduction pathways in systems biology (2003) Biochem. Soc. Trans., 31 (6), pp. 1503-1509; Chowdhury, S., Pradhan, R.N., Sarkar, R.R., Structural and logical analysis of a comprehensive hedgehog signaling pathway to identify alternative drug targets for glioma, colon and pancreatic cancer (2013) PloS ONE, 8 (7), p. e69132; Conrad, E., Tyson, J., (2006) Modeling Molecular Interaction Networks with Nonlinear Ordinary Differential Equations, pp. 97-123. , The MIT Press, Cambridge, MA, Ch. 6; David, R., Alla, H., (2010) Timed Continuous Petri Nets, pp. 159-229. , Springer, [Chapter 5]; Decraene, J., Hinze, T., A multidisciplinary survey of computational techniques for the modelling, simulation and analysis of biochemical networks (2010) J. Univers. Comput. Sci., 16 (9), pp. 1152-1175; Dhar, P., Meng, T., Somani, S., Ye, L., Sairam, A., Chitre, M., Hao, Z., Sakharkar, K., Cellware-a multi-algorithmic software for computational systems biology (2004) Bioinformatics, 20 (8), pp. 1319-1321; Dobrzyński, M., Rodríguez, J.V., Kaandorp, J.A., Blom, J.G., Computational methods for diffusion-influenced biochemical reactions (2007) Bioinformatics, 23 (15), pp. 1969-1977; Doi, A., Nagasaki, M., Ueno, K., Matsuno, H., Miyano, S., A combined pathway to simulate cdk-dependent phosphorylation and arf-dependent stabilization for p53 transcriptional activity (2006) Genome Inform., 17 (1), p. 112; Drawert, B., Engblom, S., Hellander, A., URDME: a modular framework for stochastic simulation of reaction-transport processes in complex geometries (2012) BMC Syst. Biol., 6 (1), p. 76; Edelstein, A., Agmon, N., Brownian dynamics simulations of reversible reactions in one dimension (1993) J. Chem. Phys., 99 (7), pp. 5396-5404; Elf, J., Ehrenberg, M., Spontaneous separation of bi-stable biochemical systems into spatial domains of opposite phases (2004) IEE Proceedings on Systems Biology, vol. 1. IET, pp. 230-236; Emonet, T., Macal, C., North, M., Wickersham, C., Cluzel, P., AgentCell: a digital single-cell assay for bacterial chemotaxis (2005) Bioinformatics, 21 (11), pp. 2714-2721; Ermentrout, G., Edelstein-Keshet, L., Cellular automata approaches to biological modeling (1993) J. Theor. Biol., 160 (1), pp. 97-133; Eungdamrong, N., Iyengar, R., Computational approaches for modeling regulatory cellular networks (2004) Trends Cell Biol., 14 (12), pp. 661-669; Eungdamrong, N., Iyengar, R., Modeling cell signaling networks (2004) Biol. Cell, 96 (5), pp. 355-362; Filion, R., Popel, A., A reaction-diffusion model of basic fibroblast growth factor interactions with cell surface receptors (2004) Ann. Biomed. Eng., 32 (5), pp. 645-663; Fink, C., Slepchenko, B., Moraru, I., Watras, J., Schaff, J., Loew, L., An image-based model of calcium waves in differentiated neuroblastoma cells (2000) Biophys. J., 79 (1), pp. 163-183; Firth, C., Le Novère, N., Shimizu, T., (2003) StochSim, the stochastic simulator, , (manual distributed with version 1.4 of the software); Fisher, J., Henzinger, T., Executable cell biology (2007) Nat. Biotechnol., 25 (11), pp. 1239-1249; Fisher, J., Piterman, N., The executable pathway to biological networks (2010) Brief. Funct. Genomics, 9 (1), pp. 79-92; Fisher, M., Paton, R., Matsuno, K., Intracellular signalling proteins as 'smart' agents in parallel distributed processes (1999) BioSystems, 50 (3), pp. 159-171; Fogler, H., (2005) Elements of Chemical reaction engineering, , Pearson Education; Frenkel, D., Smit, B., (2002) Understanding molecular simulation: from algorithms to applications, , Academic, San Diego, CA/London; Gardner, M., Mathematical games: the fantastic combinations of john conway's new solitaire game \"\"life\"\" (1970) Sci. Am., 223 (4), pp. 120-123; Georgiev, N., Petrov, V., Georgiev, G., Reaction-diffusion modeling ERK-and STAT-interaction dynamics (2006) EURASIP J. Bioinform. Syst. Biol., 2006, pp. 1-12; Gibson, M., Bruck, J., Efficient exact stochastic simulation of chemical systems with many species and many channels (2000) J. Phys. Chem. A, 104 (9), pp. 1876-1889; Gilbert, D., Fuß, H., Gu, X., Orton, R., Robinson, S., Vyshemirsky, V., Kurth, M., Dubitzky, W., Computational methodologies for modelling, analysis and simulation of signalling networks (2006) Brief. Bioinform., 7 (4), pp. 339-353; Gilbert, D., Heiner, M., From petri nets to differential equations-an integrative approach for biochemical network analysis (2006) Proceedings of the 27th International Conference on Applications and Theory of Petri Nets (ICATPN 2006), pp. 181-200. , Springer-Verlag; Gillespie, D., Exact stochastic simulation of coupled chemical reactions (1977) J. Phys. Chem., 81 (25), pp. 2340-2361; Gillespie, D., A rigorous derivation of the chemical master equation (1992) Phys. A, 188 (1), pp. 404-425; Gillespie, D., The mathematics of Brownian motion and Johnson noise (1996) Am. J. Phys., 64 (3), pp. 225-239; Gillespie, D., The chemical Langevin equation (2000) J. Chem. Phys., 113 (1), p. 297; Gillespie, D., Approximate accelerated stochastic simulation of chemically reacting systems (2001) J. Chem. Phys., 115 (4), p. 1716; Gillespie, D., Stochastic simulation of chemical kinetics (2007) Annu. Rev. Phys. Chem., 58, pp. 35-55; Gilmore, S., Hillston, J., The pepa workbench: a tool to support a process algebra-based approach to performance modelling (1994) Proceedings of the Seventh International Conference on Modelling Techniques and Tools for Computer Performance Evaluation, pp. 353-368. , Springer; González, P., Cárdenas, M., Camacho, D., Franyuti, A., Rosas, O., Lagúnez-Otero, J., Cellulat: an agent-based intracellular signalling model (2003) BioSystems, 68 (2), pp. 171-185; Goss, P., Peccoud, J., Quantitative modeling of stochastic systems in molecular biology by using stochastic Petri nets (1998) Proc. Natl. Acad. Sci. (PNAS), 95 (12), pp. 6750-6755; Grima, R., Schnell, S., A systematic investigation of the rate laws valid in intracellular environments (2006) Biophys. Chem., 124 (1), pp. 1-10; Hardy, S., Robillard, P., Modeling and simulation of molecular biology systems using Petri nets: modeling goals of various approaches (2004) J. Bioinform. Comput. Biol., 2 (4), pp. 619-637; Hardy, S., Robillard, P., Petri net-based method for the analysis of the dynamics of signal propagation in signaling pathways (2008) Bioinformatics, 24 (2), pp. 209-217; Hassane, A., David, R., Continuous and hybrid petri nets (1998) J. Circuits Syst. Comput., 8 (1), pp. 159-188; Hattne, J., Fange, D., Elf, J., Stochastic reaction-diffusion simulation with MesoRD (2005) Bioinformatics, 21 (12), pp. 2923-2924; Haugh, J., A unified model for signal transduction reactions in cellular membranes (2002) Biophys. J., 82 (2), p. 591; Haugh, J., Lauffenburger, D., Physical modulation of intracellular signaling processes by locational regulation (1997) Biophys. J., 72 (5), pp. 2014-2031; Haugh, J., Schneider, I., Spatial analysis of 3' phosphoinositide signaling in living fibroblasts: I. Uniform stimulation model and bounds on dimensionless groups (2004) Biophys. J., 86 (1), pp. 589-598; Heiner, M., Koch, I., Jürgen, W., Model validation of biological pathways using Petri nets-demonstrated for apoptosis (2004) BioSystems, 75 (1), pp. 15-28; Helikar, M., Kochi, N., Konvalina, J., Rogers, J., Boolean modeling of biochemical network (2011) Open Bioinform. J., 5, pp. 16-25; Helikar, T., Konvalina, J., Heidel, J., Rogers, J., Emergent decision-making in biological signal transduction networks (2008) Proc. Natl. Acad. Sci. (PNAS), 105 (6), pp. 1913-1918; Hepburn, I., Chen, W., Wils, S., De Schutter, E., STEPS: efficient simulation of stochastic reaction-diffusion models in realistic morphologies (2012) BMC Syst. Biol., 6 (1), p. 36; Hernjak, N., Slepchenko, B., Fernald, K., Fink, C., Fortin, D., Moraru, I., Watras, J., Loew, L., Modeling and analysis of calcium signaling events leading to long-term depression in cerebellar purkinje cells (2005) Biophys. J., 89 (6), pp. 3790-3806; Higham, D., An algorithmic introduction to numerical simulation of stochastic differential equations (2001) SIAM Rev., 43 (3), pp. 525-546; Holland, J., Exploring the evolution of complexity in signaling networks (2001) Complexity, 7 (2), pp. 34-45; Hoops, S., Sahle, S., Gauges, R., Lee, C., Pahle, J., Simus, N., Singhal, M., Kummer, U., COPASI-a complex pathway simulator (2006) Bioinformatics, 22 (24), pp. 3067-3074; Huber, P., Jensen, K., Shapiro, R., Hierarchies in coloured Petri nets (1991) Advances in Petri Nets, vol. 483, pp. 313-341. , Springer; Hughey, J., Lee, T., Covert, M., Computational modeling of mammalian signaling networks (2010) Wiley Interdiscip. Rev. Syst. Biol. Med., 2 (2), pp. 194-209; Ideker, T., Galitski, T., Hood, L., A new approach to decoding life: systems biology (2001) Annu. Rev. Genomics Hum. Genet., 2 (1), pp. 343-372; Jensen, K., (1996) Informal Introduction to Coloured Petri Nets, 1, pp. 1-63. , Springer, [Chapter 1]; Kartson, D., Balbo, G., Donatelli, S., Franceschinis, G., Conte, G., (1994) Modelling with Generalized Stochastic Petri Nets, , John Wiley & Sons; Kauffman, S., (1993) The Origins of Order: Self Organization and Selection in Evolution, , Oxford University Press, USA; Kaufman, M., Andris, F., Leo, O., A logical analysis of T cell activation and anergy (1999) Proc. Natl. Acad. Sci. (PNAS), 96 (7), pp. 3894-3899; Kazmierczak, B., Lipniacki, T., Regulation of kinase activity by diffusion and feedback (2009) J. Theor. Biol., 259 (2), pp. 291-296; Keener, J., (2002) Spatial Modeling, pp. 171-197. , Springer, [Chapter 7]; Kholodenko, B., Cell-signalling dynamics in time and space (2006) Nat. Rev. Mol. Cell Biol., 7 (3), pp. 165-176; Kier, L., Bonchev, D., Buck, G., Modeling biochemical networks: a cellular-automata approach (2005) Chem. Biodivers., 2 (2), pp. 233-243; Kim, H., Yang, M., Shin, K., Dynamic correlation effect in reversible diffusion-influenced reactions: Brownian dynamics simulation in three dimensions (1999) J. Chem. Phys., 111 (3), p. 1068; Kitano, H., Systems biology: a brief overview (2002) Science, 295 (5560), pp. 1662-1664; Klamt, S., Saez-Rodriguez, J., Gilles, E.D., Structural and functional analysis of cellular networks with CellNetAnalyzer (2007) BMC Syst. Biol., 1 (1), p. 2; Klamt, S., Saez-Rodriguez, J., Lindquist, J., Simeoni, L., Gilles, E., A methodology for the structural and functional analysis of signaling and regulatory networks (2006) BMC Bioinform., 7 (1), p. 56; Klipp, E., Herwig, R., Kowald, A., Wierling, C., Lehrach, H., (2005) Systems Biology in Practice: Concepts, Implementation and Application, , Wiley-VCH; Koch, I., Schreiber, F., (2010) Introduction, 16, pp. 3-18. , Springer, Ch. 1; Koh, G., Teong, H., Clément, M., Hsu, D., Thiagarajan, P., A decompositional approach to parameter estimation in pathway modeling: a case study of the Akt and MAPK pathways and their crosstalk (2006) Bioinformatics, 22 (14), pp. e271-e280; Krauss, G., (2004) Biochemistry of Signal Transduction and Regulation, , Wiley-VCH Verlag GmbH & Co. KGaA; Kwiatkowska, M., Norman, G., Parker, D., Tymchyshyn, O., Heath, J., Gaffney, E., Simulation and verification for computational modelling of signalling pathways (2006) IEEE Proceedings of the 2006 Winter Simulation Conference (WSC 06), pp. 1666-1674; Lee, D., Zimmer, R., Lee, S., Park, S., Colored Petri net modeling and simulation of signal transduction pathways (2006) Metab. Eng., 8 (2), pp. 112-122; Levchenko, A., Iglesias, P., Models of eukaryotic gradient sensing: application to chemotaxis of amoebae and neutrophils (2002) Biophys. J., 82 (1), pp. 50-63; Levine, H., Kessler, D., Rappel, W., Directional sensing in eukaryotic chemotaxis: a balanced inactivation model (2006) Proc. Natl. Acad. Sci. (PNAS), 103 (26), pp. 9761-9766; Li, C., Suzuki, S., Ge, Q., Nakata, M., Matsuno, H., Miyano, S., Structural modeling and analysis of signaling pathways based on Petri nets (2006) J. Bioinform. Comput. Biol., 4 (5), p. 1119; Li, H., Cao, Y., Petzold, L.R., Gillespie, D.T., Algorithms and software for stochastic simulation of biochemical reacting systems (2008) Biotechnol. Prog., 24 (1), pp. 56-61; Liiving, T., Baker, S., Junker, B., (2011) Biochemical Fundamentals, pp. 19-36. , Springer, Ch. 2; Lipkow, K., Changing cellular location of chez predicted by molecular simulations (2006) PLoS Comput. Biol., 2 (4), p. e39; Lipkow, K., Andrews, S., Bray, D., Simulated diffusion of phosphorylated CheY through the cytoplasm of escherichia coli (2005) J. Bacteriol., 187 (1), pp. 45-53; Lipkow, K., Odde, D., Model for protein concentration gradients in the cytoplasm (2008) Cell. Mol. Bioeng., 1 (1), pp. 84-92; Materi, W., Wishart, D., Computational systems biology in drug discovery and development: methods and applications (2007) Drug Discov. Today, 12 (7-8), pp. 295-303; Matsuno, H., Tanaka, Y., Aoshima, H., Doi, A., Matsui, M., Miyano, S., Biopathways representation and simulation on hybrid functional petri net (2003) Silico Biol., 3 (3), pp. 389-404; Mellman, I., Misteli, T., Computational cell biology (2003) J. Cell Biol., 161 (3), pp. 463-464; Meng, T., Somani, S., Dhar, P., Modeling and simulation of biological systems with stochasticity (2004) Silico Biol., 4 (3), pp. 293-309; Meyers, J., Craig, J., Odde, D., Potential for control of signaling pathways via cell size and shape (2006) Curr. Biol., 16 (17), pp. 1685-1693; Milner, R., Parrow, J., Walker, D., A calculus of mobile processes, I (1992) Inf. Comput., 100 (1), pp. 1-40; Milner, R., Parrow, J., Walker, D., A calculus of mobile processes, II (1992) Inf. Comput., 100 (1), pp. 41-77; Mogilner, A., Elston, T., Wang, H., Oster, G., (2002) Molecular Motors: Theory, pp. 320-353. , Springer, [Chapter 12]; Mogilner, A., Wollman, R., Marshall, W., Quantitative modeling in cell biology: what is it good for? (2006) Dev. Cell, 11 (3), pp. 279-287; Morton-Firth, C., (1998) Stochastic simulation of cell signaling pathways, , University of Cambridge, Cambridge, UK, Ph.D. thesis; Murata, T., Petri nets: properties, analysis and applications (1989) Proc. IEEE, 77 (4), pp. 541-580; Nagasaki, M., Doi, A., Matsuno, H., Miyano, S., Genomic Object Net: I. A platform for modelling and simulating biopathways (2003) Appl. Bioinform., 2 (3), p. 181; Nagasaki, M., Doi, A., Matsuno, H., Miyano, S., A versatile petri net based architecture for modeling and simulation of complex biological processes (2004) Genome Inform., 15 (1), pp. 180-197; Nagasaki, M., Doi, A., Matsuno, H., Miyano, S., Petri net based description and modeling of biological pathways (2005) Algebr. Biol., pp. 19-31; Napione, L., Manini, D., Cordero, F., Horváth, A., Picco, A., De Pierro, M., Pavan, S., Balbo, G., On the use of stochastic Petri nets in the analysis of signal transduction pathways for angiogenesis process (2009) Comput. Methods Syst. Biol., , Springer, pp. 281-295; Needham, C., Bradford, J., Bulpitt, A., Westhead, D., Inference in Bayesian networks (2006) Nat. Biotechnol., 24 (1), pp. 51-54; Neves, S., Iyengar, R., Models of spatially restricted biochemical reaction systems (2009) J. Biol. Chem., 284 (9), pp. 5445-5449; Neves, S., Tsokas, P., Sarkar, A., Grace, E., Rangamani, P., Taubenfeld, S., Alberini, C., Iyengar, R., Cell shape and negative links in regulatory motifs together control spatial information flow in signaling networks (2008) Cell, 133 (4), pp. 666-680; Northrup, S., Erickson, H., Kinetics of protein-protein association explained by Brownian dynamics computer simulation (1992) Proc. Natl. Acad. Sci. (PNAS), 89 (8), pp. 3338-3342; Orton, R., Sturm, O., Vyshemirsky, V., Calder, M., Gilbert, D., Kolch, W., Computational modelling of the receptor-tyrosine-kinase-activated MAPK pathway (2005) Biochem. J., 392, p. 249; Pahle, J., Biochemical simulations: stochastic, approximate stochastic and hybrid approaches (2009) Brief. Bioinform., 10 (1), pp. 53-64; Papin, J., Hunter, T., Palsson, B., Subramaniam, S., Reconstruction of cellular signalling networks and analysis of their properties (2005) Nat. Rev. Mol. Cell Biol., 6 (2), pp. 99-111; Pawson, T., Specificity in signal transduction: from phosphotyrosine-sh2 domain interactions to complex cellular systems (2004) Cell, 116 (2), pp. 191-203; Pearl, J., (1988) Probabilistic Reasoning in Intelligent Systems: Networks of Plausble Inference, , Morgan Kaufmann; Pe'er, D., Bayesian network analysis of signaling networks: a primer (2005) Sci. STKE, 2005 (281). , pl4; Peng, S., Wong, D., Tung, K., Chen, Y., Chao, C., Peng, C., Chuang, Y., Tang, C., Computational modeling with forward and reverse engineering links signaling network and genomic regulatory responses: Nf-κb signaling-induced gene expression responses in inflammation (2010) BMC Bioinform., 11 (1), p. 308; PPetri, C., (1966) Communication with automata: Volume 1, supplement 1, , Technical report radc-tr-65-377; Petri, C.A., Grundsätzliches zur beschreibung diskreter prozesse (Fundamentals for description of discrete processes) (1967) 3. Colloquium über Automatentheorie, pp. 121-140. , Springer, Birkhäuser Basel; Pettinen, A., Aho, T., Smolander, O., Manninen, T., Saarinen, A., Taattola, K., Yli-Harja, O., Linne, M., Simulation tools for biochemical networks: evaluation of performance and usability (2005) Bioinformatics, 21 (3), pp. 357-363; Phillips, A., Cardelli, L., A correct abstract machine for the stochastic pi-calculus (2004) Bioconcur'04, , Elsevier; Pinney, J., Westhead, D., McConkey, G., Petri net representations in systems biology (2003) Biochem. Soc. Trans., 31 (6), pp. 1513-1515; Pogson, M., Smallwood, R., Qwarnstrom, E., Holcombe, M., Formal agent-based modelling of intracellular chemical interactions (2006) BioSystems, 85 (1), pp. 37-45; Priami, C., Stochastic π-calculus (1995) Comput. J., 38 (7), pp. 578-589; Priami, C., Quaglia, P., Modelling the dynamics of biosystems (2004) Brief. Bioinform., 5 (3), pp. 259-269; Price, N., Shmulevich, I., Biochemical and statistical network models for systems biology (2007) Curr. Opin. Biotechnol., 18 (4), p. 365; Rangamani, P., Iyengar, R., Modelling spatio-temporal interactions within the cell (2007) J. Biosci., 32 (1), pp. 157-167; Rao, C., Wolf, D., Arkin, A., Control, exploitation and tolerance of intracellular noise (2002) Nature, 420 (6912), pp. 231-237; Raychaudhuri, S., Willgohs, E., Nguyen, T., Khan, E., Goldkorn, T., Monte Carlo simulation of cell death signaling predicts large cell-to-cell stochastic fluctuations through the type 2 pathway of apoptosis (2008) Biophys. J., 95 (8), pp. 3559-3562; Reddy, V., Mavrovouniotis, M., Liebman, M., Petri net representations in metabolic pathways (1993) Proceedings of the International Conference on Intelligent Systems for Molecular Biology (ISMB), Vol. 1, pp. 328-336. , American Association for Artificial Intelligence (AAAI); Regev, A., Shapiro, E., The π-calculus as an abstraction for biomolecular systems (2004) Model. Mol. Biol., pp. 219-266; Regev, A., Silverman, W., Shapiro, E., Representing biomolecular processes with computer process algebra: π-calculus programs of signal transduction pathways. (2000) Proceedings of the Pacific Symposium of Biocomputing, p. 179. , American Association for Artificial Intelligence (AAAI); Rodriguez, E., Rudy, A., del Rosario, R., Vollmar, A., Mendoza, E., A discrete Petri net model for cephalostatin-induced apoptosis in leukemic cells (2011) Nat. Comput., 10 (3), pp. 993-1015; Rodríguez, J.V., Kaandorp, J.A., Dobrzyński, M., Blom, J.G., Spatial stochastic modelling of the phosphoenolpyruvate-dependent phosphotransferase (PTS) pathway in escherichia coli (2006) Bioinformatics, 22 (15), pp. 1895-1901; Sachs, K., Gifford, D., Jaakkola, T., Sorger, P., Lauffenburger, D., Bayesian network approach to cell signaling pathway modeling (2002) Sci. STKE, 2002 (148), p. pe38; Sachs, K., Perez, O., Pe'er, D., Lauffenburger, D., Nolan, G., Causal protein-signaling networks derived from multiparameter single-cell data (2005) Science, 308 (5721), p. 523; Sackmann, A., Heiner, M., Koch, I., Application of Petri net based analysis techniques to signal transduction pathways (2006) BMC Bioinform., 7 (1), p. 482; Saez-Rodriguez, J., Simeoni, L., Lindquist, J., Hemenway, R., Bommhardt, U., Arndt, B., Haus, U., Schraven, B., A logical model provides insights into T cell receptor signaling (2007) PLoS Comput. Biol., 3 (8), p. e163; Samaga, R., Saez-Rodriguez, J., Alexopoulos, L., Sorger, P., Klamt, S., The logic of EGFR/ErbB signaling: theoretical properties and analysis of high-throughput data (2009) PLoS Comput. Biol., 5 (8), p. e1000438; Samoilov, M., Plyasunov, S., Arkin, A., Stochastic amplification and signaling in enzymatic futile cycles through noise-induced bistability with oscillations (2005) Proc. Natl. Acad. Sci. (PNAS), 102 (7), pp. 2310-2315; Sanft, K.R., Wu, S., Roh, M., Fu, J., Lim, R.K., Petzold, L.R., StochKit2: software for discrete stochastic simulation of biochemical systems with events (2011) Bioinformatics, 27 (17), pp. 2457-2458; Schaff, J., Slepchenko, B., Choi, Y., Wagner, J., Resasco, D., Loew, L., Analysis of nonlinear dynamics on arbitrary geometries with the Virtual Cell (2001) Chaos, 11 (1), pp. 115-131; Schlatter, R., Schmich, K., Vizcarra, I., Scheurich, P., Sauter, T., Borner, C., Ederer, M., Sawodny, O., ON/OFF and beyond - a Boolean model of apoptosis (2009) PLoS Comput. Biol., 5 (12), p. e1000595; Schneider, I., Haugh, J., Spatial analysis of 3' phosphoinositide signaling in living fibroblasts: II. Parameter estimates for individual cells from experiments (2004) Biophys. J., 86 (1), pp. 599-608; Schnell, S., Turner, T., Reaction kinetics in intracellular environments with macromolecular crowding: simulations and rate laws (2004) Prog. Biophys. Mol. Biol., 85 (2), pp. 235-260; Schwab, E., Pienta, K., Modeling signal transduction in normal and cancer cells using complex adaptive systems (1997) Med. Hypotheses, 48 (2), pp. 111-123; Shimizu, T.S., (2002) The spatial organisation of cell signalling pathways - a computer-based study, , University of Cambridge, Ph.D. thesis; Shmulevich, I., Dougherty, E., Kim, S., Zhang, W., Probabilistic Boolean networks: a rule-based uncertainty model for gene regulatory networks (2002) Bioinformatics, 18 (2), pp. 261-274; Shvartsman, S., Wiley, H., Deen, W., Lauffenburger, D., Spatial range of autocrine signaling: modeling and computational analysis (2001) Biophys. J., 81 (4), pp. 1854-1867; Slepchenko, B., Schaff, J., Carson, J., Loew, L., Computational cell biology: spatiotemporal simulation of cellular events (2002) Annu. Rev. Biophys. Biomol. Struct., 31 (1), pp. 423-441; Smith, G.D., (2001) Modeling Local and Global Calcium Signals Using Reaction-Diffusion Equations, pp. 49-85. , CRC Press, Ch. 3; Smoluchowski, M., Zur kinetischen theorie der brownschen molekularbewegung und der suspensionen (the kinetic theory of brownian motion and suspensions) (1906) Ann. Phys., 326 (14), pp. 756-780; Sreenath, S., Cho, K., Wellstead, P., Modelling the dynamics of signalling pathways (2008) Essays Biochem., 45, pp. 1-28; Stiles, J., Bartol, T., (2001) Monte Carlo Methods for Simulating Realistic Synaptic Microphysiology using MCell, pp. 87-127. , CRC Press, Ch. 4; Stundzia, A., Lumsden, C., Stochastic simulation of coupled reaction-diffusion processes (1996) J. Comput. Phys., 127 (1), pp. 196-207; Takahashi, K., Arjunan, S., Tomita, M., Space in systems biology of signaling pathways - towards intracellular molecular crowding in silico (2005) FEBS Lett., 579 (8), pp. 1783-1788; Tasaki, S., Nagasaki, M., Oyama, M., Hata, H., Ueno, K., Yoshida, R., Higuchi, T., Miyano, S., Modeling and estimation of dynamic EGFR pathway by data assimilation approach using time series proteomic data (2006) Genome Inform., 17 (2), p. 226; Tolle, D., Le Novère, N., Particle-based stochastic simulation in systems biology (2006) Curr. Bioinform., 1 (3), pp. 1-6; Tomita, M., Hashimoto, K., Takahashi, K., Shimizu, T., Matsuzaki, Y., Miyoshi, F., Saito, K., Hutchison, C., E-CELL: software environment for whole-cell simulation (1999) Bioinformatics, 15 (1), pp. 72-84; Troncale, S., Tahi, F., Campard, D., Vannier, J., Guespin, J., Modeling and simulation with hybrid functional Petri nets of the role of interleukin-6 in human early haematopoiesis (2006) Pacific Symposium on Biocomputing, vol. 11, pp. 427-438; Turner, T., Schnell, S., Burrage, K., Stochastic approaches for modelling in vivo reactions (2004) Comput. Biol. Chem., 28 (3), pp. 165-178; Ullah, G., Jung, P., Machaca, K., Modeling Ca2+ signaling differentiation during oocyte maturation (2007) Cell Calcium, 42 (6), pp. 556-564; Valk, R., Self-modifying nets, a natural extension of petri nets (1978) Autom. Lang. Program., 62, pp. 464-476; van Zon, J., ten Wolde, P., Green's-function reaction dynamics: a particle-based approach for simulating biochemical networks in time and space (2005) J. Chem. Phys., 123 (23), p. 234910; van Zon, J., ten Wolde, P., Simulating biochemical networks at the particle level and in time and space: Green's function reaction dynamics (2005) Phys. Rev. Lett., 94 (12), p. 128103; Vigelius, M., Lane, A., Meyer, B., Accelerating reaction-diffusion simulations with general-purpose graphics processing units (2011) Bioinformatics, 27 (2), pp. 288-290; Wishart, D., Yang, R., Arndt, D., Tang, P., Cruz, J., Dynamic cellular automata: an alternative approach to cellular simulation (2005) Silico Biol., 5 (2), pp. 139-161; Wooldridge, M., (2002) An Introduction to Multiagent Systems, , John Wiley & Sons; Xu, H., (2005) Timed Hierarchical Object-Oriented Petri Net, pp. 253-280. , I-TECH Education and Publishing, [Chapter 12]; Zhang, W., Liu, H.T., MAPK signal pathways in the regulation of cell proliferation in mammalian cells (2002) Cell Res., 12 (1), pp. 9-18\",\"ElKalaawy, N.; Department of Computer Engineering, Faculty of Engineering, Cairo UniversityEgypt\",,,\"Elsevier Ireland Ltd\",,,,,03032647,,BSYMB,\"25637875\",\"English\",\"BioSystems\",Review,\"Final\",\"\",Scopus,2-s2.0-84922360138\n\"Gogolinska A., Jakubowski R., Nowak W.\",\"55360326100;56518382900;7103349986;\",\"Petri nets formalism facilitates analysis of complex biomolecular structural data\",2015,\"RAIRO - Operations Research\",\"50\",\"4-5\",,\"401\",\"411\",,3,\"10.1051/ro/2015043\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-85007015219&doi=10.1051%2fro%2f2015043&partnerID=40&md5=8b400f56c31e44a83769dce1d3a9919a\",\"Institute of Physics, Faculty of Physics, Astronomy and Informatics, Nicolaus Copernicus University, Grudziadzka 5, Torun, 87-100, Poland; Faculty of Mathematics and Computer Science, Nicolaus Copernicus University, ul. Chopina 12/18, Torun, 87-100, Poland\",\"Gogolinska, A., Institute of Physics, Faculty of Physics, Astronomy and Informatics, Nicolaus Copernicus University, Grudziadzka 5, Torun, 87-100, Poland, Faculty of Mathematics and Computer Science, Nicolaus Copernicus University, ul. Chopina 12/18, Torun, 87-100, Poland; Jakubowski, R., Institute of Physics, Faculty of Physics, Astronomy and Informatics, Nicolaus Copernicus University, Grudziadzka 5, Torun, 87-100, Poland; Nowak, W., Institute of Physics, Faculty of Physics, Astronomy and Informatics, Nicolaus Copernicus University, Grudziadzka 5, Torun, 87-100, Poland\",\"Molecular dynamics (MD) simulation is a popular method of protein and nucleic acids research. Current MD output trajectories are huge files and therefore they are hard to analyze. Petri nets (PNs) is a mathematical modeling language that allows for concise, graphical representation of complex data. We have developed a few algorithms for PNs generation from such large MD trajectories. One of them, called the One Place One Conformation (OPOC) algorithm, is presented in a greater detail. In the OPOC algorithm one biomolecular conformation corresponds to one PN place and a transition occurring in PN graph is related to a change between biomolecules conformations. As case studies three simulations are analyzed: An enforced steered MD (SMD) dissociation of a transthyretin protein tetramer into dimers, the SMD dissociation of an antibody-antigen complex and a classical MD simulation of transthyretin. We show that PNs reproduce events hidden in MD trajectories and enable observations of the conformational space features hard-to-see by the other clustering methods. Thus, a fundamental process of biomolecular data classification may be optimized using the PN approach. © EDP Sciences, ROADEF, SMAI 2016.\",\"clustering; conformational space; Data mining; graphs.; molecular dynamic simulations; Petri net\",\"Bioinformatics; Dimers; Dissociation; Graph algorithms; Modeling languages; Molecular dynamics; Nucleic acids; Petri nets; Proteins; Trajectories; Biomolecular conformations; clustering; Clustering methods; Conformational space; Data classification; Graphical representations; graphs; Molecular dynamics simulations; Data mining\",,,,,,,,\"Amadei, A., Linssen, A.B., Berendsen, H.J., Essential dynamics of proteins (1993) Proteins: Structure Function and Bioinform., 17, pp. 412-425; Brookset, Al. B.R., Charmm: The biomolecular simulation program (2009) J. Comput. Chem., 30, pp. 1545-1614; Case, D.A., Cheatham, T.E., Darden, T., Gohlke, H., Luo, R., Merz, K.M., Onufriev, A., Woods, R.J., The amber biomolecular simulation programs (2005) J. Comput. Chem., 26, pp. 1668-1688; Chen, J., Zhang, Sh., Liu, X., Zhang, Q., Insights into drug resistance of mutations d30n and i50v to HIV-1 protease inhibitor tmc-114: Free energy calculation and molecular dynamic simulation (2010) J. Mol. Mod., 16, pp. 459-468; Chen, A.A., García, A.E., High-resolution reversible folding of hyperstable RNA tetraloops using molecular dynamics simulations (2013) Proc. Natl. Acad. Sci., 110, pp. 16820-16825; Cohen, F.E., Sternberg, M.J.E., On the prediction of protein structure: The significance of the root-mean-square deviation (1980) J. Mol. Biol., 138, pp. 321-333; Dror, R.O., Dirks, R.M., Grossman, J.P., Xu, H., Shaw, D.E., Biomolecular simulation: A computational microscope for molecular biology (2012) Ann. Rev. Biophys., 41, pp. 429-452; Grubmüller, H., Heymann, B., Tavan, P., Ligand binding: Molecular mechanics calculation of the streptavidin-biotin rupture force (1996) Science, 271, pp. 997-999; Holm, L., Sander, Ch., Mapping the protein universe (1996) Science, 273, pp. 595-602; Holland, R.C.G., Biojava: An open-source framework for bioinformatics (2008) Bioinform., 24, pp. 2096-2097; Humphrey, W., Dalke, A., Schulten, K., Vmd: Visual molecular dynamics (1996) J. Mol. Graph., 14, pp. 33-38; Jakubowski, R., Gogolinska, A., Peplowski, L., Skrzyniarz, P., Nowak, W., Computational studies of ttr related amyloidosis: Exploration of conformational space through petri net-based algorithm (2014) TASK Quarterly, 18, pp. 289-300; Jolliffe, I., (2002) Principal Component Analysis, , Wiley Online Library; Lindahl, E., Hess, B., Der Spoel, D.V., Gromacs 3.0: A package for molecular simulation and trajectory analysis (2001) J. Mol. Mod., 7, pp. 306-317; Lindorff-Larsen, K., Trbovic, N., Maragakis, P., Piana, S., Shaw, D.E., Structure and dynamics of an unfolded protein examined by molecular dynamics simulation (2012) J. Amer. Chem. Soc., 134, pp. 3787-3791; Murata, T., Petri nets: Properties, analysis and applications (1989) Proc. of IEEE, 77, pp. 541-580; Nowak, W., Applications of Computational Methods to Simulations of Proteins Dynamics (2012) Handbook Comput. Chem., pp. 1127-1153. , Springer; Peterson, J.L., Petri nets (1977) ACM Comput. Surveys (CSUR), 9, pp. 223-252; Phillips, J.C., Braun, R., Wang, W., Gumbart, J., Tajkhorshid, E., Villa, E., Chipot, Ch., Schulten, K., Scalable molecular dynamics with namd (2005) J. Comput. Chem., 26, pp. 1781-1802; Reidet, Al. C., Structure activity relationships of monocyte chemoattractant proteins in complex with a blocking antibody (2006) Protein Engineering Design and Selection, 19, pp. 317-324; Reisig, W., (2012) Petri Nets: An Introduction, Vol. 4., , Springer Science & Business Media; Rohr, Ch., Marwan, W., Heiner, M., Snoopya unifying Petri net framework to investigate biomolecular networks (2010) Bioinform., 26, pp. 974-975; Godzik, A., The structural alignment between two proteins: Is there a unique answer? (1996) Protein Sci., 5, pp. 1325-1338; Gogolinska, A., Nowak, W., Petri nets approach to modeling of immune system and autism (2012) Artificial Immune Systems., pp. 86-99. , Springer; Gogolinska, A., Nowak, W., Molecular basis of lateral force spectroscopy nano-diagnostics: Computational unbinding of autism related chemokine MCP-1 from IgG antibody (2013) J. Mol. Mod., 19, pp. 4773-4780; Shao, J., Tanner, S.W., Thompson, N., Cheatham, Th.E., Clustering molecular dynamics trajectories: 1. Characterizing the performance of different clustering algorithms (2007) J. Chem. Theory Comput., 3, pp. 2312-2334; Shindyalov, I.N., Bourne, Ph.E., Protein structure alignment by incremental combinatorial extension (ce) of the optimal path (1998) Protein Engineering, 11, pp. 739-747; Wojtczak, A., Neumann, P., Cody, V., Structure of a new polymorphic monoclinic form of human transthyretin at 3 a resolution reveals a mixed complex between unliganded and t4-bound tetramers of TTR (2001) Acta Crystallographica Section D: Biological Crystallography, 57, pp. 957-967; Ye, Y., Godzik, A., Flexible structure alignment by chaining aligned fragment pairs allowing twists (2003) Bioinform., 19, pp. ii246-ii255\",\"Nowak, W.; Institute of Physics, Grudziadzka 5, Poland; email: wiesiek@phys.uni.torun.pl\",,,\"EDP Sciences\",,,,,28047303,,,,\"English\",\"RAIRO Oper. Res.\",Article,\"Final\",\"All Open Access, Green\",Scopus,2-s2.0-85007015219\n\"Del Cerro L.F., Inoue K.\",\"55664096300;35748800500;\",\"Logical Modeling of Biological Systems\",2014,\"Logical Modeling of Biological Systems\",,,,\"1\",\"410\",,5,\"10.1002/9781119005223\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-84948950862&doi=10.1002%2f9781119005223&partnerID=40&md5=1513fce077ac11fd0b33bd1ca1f12b49\",\"IRIT, Paul Sabatier University, Toulouse, France; National Institute of Informatics, Tokyo, Japan\",\"Del Cerro, L.F., IRIT, Paul Sabatier University, Toulouse, France; Inoue, K., National Institute of Informatics, Tokyo, Japan\",\"Systems Biology is the systematic study of the interactions between the components of a biological system and studies how these interactions give rise to the function and behavior of the living system. Through this, a life process is to be understood as a whole system rather than the collection of the parts considered separately. Systems Biology is therefore more than just an emerging field: it represents a new way of thinking about biology with a dramatic impact on the way that research is performed. The logical approach provides an intuitive method to provide explanations based on an expressive relational language. This book covers various aspects of logical modeling of biological systems, bringing together 10 recent logic-based approaches to Systems Biology by leading scientists. The chapters cover the biological fields of gene regulatory networks, signaling networks, metabolic pathways, molecular interaction and network dynamics, and show logical methods for these domains based on propositional and first-order logic, logic programming, answer set programming, temporal logic, Boolean networks, Petri nets, process hitting, and abductive and inductive logic programming. It provides an excellent guide for all scientists, biologists, bioinformaticians, and engineers, who are interested in logic-based modeling of biological systems, and the authors hope that new scientists will be encouraged to join this exciting scientific endeavor. © ISTE Ltd 2014. All rights reserved.\",,\"Biological systems; Computer circuits; Formal logic; Living systems studies; Petri nets; Signaling; Answer set programming; Gene regulatory networks; Logic-based approach; Logic-based modeling; Logical approaches; Metabolic pathways; Relational languages; Signaling networks; Inductive logic programming (ILP)\",,,,,,,,,\"Del Cerro, L.F.; IRIT, France\",,,\"wiley\",,,,,,9781119005223; 9781848216808,,,\"English\",\"Log. Model. of Biol. Syst.\",Book,\"Final\",\"\",Scopus,2-s2.0-84948950862\n\"Santos-García G.\",\"17343145200;\",\"A logic computational framework to query dynamics on complex biological pathways\",2014,\"Advances in Intelligent Systems and Computing\",\"294\",\"AISC\",,\"207\",\"214\",,6,\"10.1007/978-3-319-07581-5_25\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-84921798921&doi=10.1007%2f978-3-319-07581-5_25&partnerID=40&md5=d2cd57cf58c00a1feb660589fc54ec08\",\"Computing Center, Universidad de Salamanca, Salamanca, Spain; Bioinformatics and Functional Genomics Research Group, Cancer Research Center (CiC-IBMCC, CSIC/USAL), Salamanca, Spain; Computer Science Laboratory, SRI International, 333 Ravenswood Ave, Menlo Park, CA  94025, United States\",\"Santos-García, G., Computing Center, Universidad de Salamanca, Salamanca, Spain, Bioinformatics and Functional Genomics Research Group, Cancer Research Center (CiC-IBMCC, CSIC/USAL), Salamanca, Spain, Computer Science Laboratory, SRI International, 333 Ravenswood Ave, Menlo Park, CA  94025, United States\",\"Biological pathways define complex interaction networks where multiple molecular elements work in a series of reactions to produce a response to different biomolecular signals. These biological systems are dynamic and we need mathematical methods that can analyze symbolic elements and complex interactions between them to produce adequate readouts of such systems. Rewriting logic procedures are adequate tools to handle dynamic systems which are applied to the study of specific biological pathways behaviour. Pathway Logic is a rewriting logic development applied to symbolic systems biology. Rewriting logic language Maude allows us to define transition rules and to set up queries about the flow in the biological system. In this paper we describe the use of Pathway Logic to model and analyze the dynamics in a well-known signaling transduction pathway: epidermal growth factor (EGF) pathway. We also use Pathway Logic Assistant (PLA) tool to browse and query this system. © Springer International Publishing Switzerland 2014.\",\"Epidermal growth factor signaling; Executable model; Maude; Pathway Logic; Petri net; Rewriting logic; Signal transduction; Symbolic systems biology\",\"Bacteriophages; Bioinformatics; Biological systems; Biology; Complex networks; Petri nets; Signal transduction; Epidermal growth factors; Executable model; Maude; Pathway Logic; Rewriting logic; Symbolic systems; Computation theory\",,,,,\"National Science Foundation, NSF: IIS-0513857, PI12/00624, TIN2012-39391-C04-04; National Institutes of Health, NIH: BISTI R21/R33, GM068146-01; National Cancer Institute, NCI: CA112970-01; Ministerio de Economía y Competitividad, MINECO; Instituto de Salud Carlos III, ISCIII\",\"Pathway Logic development has been funded in part by NIH BISTI R21/R33 grant (GM068146-01), NIH/NCI P50 grant (CA112970-01), and NSF grant IIS-0513857. This work was partially supported by NSF grant IIS-0513857. Research was supported by Spanish projects Strongsoft TIN2012-39391-C04-04 and PI12/00624 (MINECO, Instituto de Salud Carlos III).\",,\"Meseguer, J., Conditional rewriting logic as a unified model of concurren (1992) Theor. Comput. Sci, 96, pp. 73-155; Meseguer, J., Twenty years of rewriting log (2012) J. Log. Algebr. Program, 81 (7-8), pp. 721-781; Clavel, M., Durán, F., Eker, S., Lincoln, P., Martí-Oliet, N., Meseguer, J., Talcott, C., All About Maude - A High-Performance Logical Framewo (2007) LNCS, 4350. , Springer, Heidelberg; Vukmirovic, O.G., Tilghman, S.M., Exploring genome spa (2000) Nature, 405, pp. 820-822; Weng, G., Bhalla, U.S., Iyengar, R., Complexity in biological signaling syste (1999) Science, 284, pp. 92-96; Asthagiri, A.R., Lauffenburger, D.A., A computational study of feedback effects on signal dynamics in a mitogen-activated protein kinase (mapk) pathway mod (2001) Biotechnol. Prog, 17, pp. 227-239; Smolen, P., Baxter, D.A., Byrne, J.H., Mathematical modeling of gene networ (2000) Neuron, 26, pp. 567-580; Saadatpour, A., Albert, R., Discrete dynamic modeling of signal transduction networ (2012) Computational Modeling of Signaling Networks, pp. 255-272. , In: Liu, X., Betterton, M.D. (eds.); Fisher, J., Henzinger, T.A., Executable cell biolo (2007) Nat. Biotechnol, 25 (11), pp. 1239-1249; Hardy, S., Robillard, P.N., Petri net-based method for the analysis of the dynamics of signal propagation in signaling pathwa (2008) Bioinformatics, 24 (2), pp. 209-217; Li, C., Ge, Q.W., Nakata, M., Matsuno, H., Miyano, S., Modelling and simulation of signal transductions in an apoptosis pathway by using timed Petri ne (2006) J. Biosci, 32, pp. 113-127; Regev, A., Panina, E.M., Silverman, W., Bioambients: An abstraction for biological compartmen (2004) Theor. Comput. Sci, 325 (1), pp. 141-167; Efroni, S., Harel, D., Cohen, I., Towards rigorous comprehension of biological complexity: Modeling, execution and visualization of thymic T-cell maturati (2003) Genome Res, 13 (11), pp. 2485-2497; Faeder, J.R., Blinov, M.L., Hlavacek, W.S., Rule-Based Modeling of Biochemical Systems with BioNetG (2009) Systems Biology. Methods Mol. Biol, 500, pp. 113-167; Hwang, W., Hwang, Y., Lee, S., Lee, D., Rule-based multi-scale simulation for drug effect pathway analys (2013) BMC Med. Inform. Decis. Mak, 13, p. S4; Eduati, F., De Las Rivas, J., Di Camillo, B., Toffolo, G., Saez-Rodríguez, J., Integrating literature-constrained and data-driven inference of signalling networ (2012) Bioinformatics, 28 (18), pp. 2311-2317; Clavel, M., Durán, F., Eker, S., Lincoln, P., Martí-Oliet, N., Meseguer, J., Talcott, C., (2011) Maude Manual, version 2.6, , http://maude.cs.uiuc.edu; Talcott, C., Eker, S., Knapp, M., Lincoln, P., Laderoute, K., Pathway logic modeling of protein functional domains in signal transducti (2004) Proceedings of the Pacific Symposium on Biocomputing; Talcott, C., Dill, D.L., The pathway logic assista (2005) Proc. of the Third Intl Conf. CMSB 2005, pp. 228-239. , In: Plotkin, G. (ed.); Talcott, C.L., Pathway log (2008) SFM 2008. LNCS, 5016, pp. 21-53. , In: Bernardo, M., Degano, P., Zavattaro, G. (eds.), Springer, Heidelberg; Cenni, V., Döppler, H., Sonnenburg, E.D., Regulation of novel protein kinase C epsilon by phosphorylati (2002) Biochem. J, 363, pp. 537-545; Schlessinger, J., Cell signaling by receptor tyrosine kinas (2000) Cell, 103, pp. 211-225\",,\"Saez-Rodriguez J.Fdez-Riverola F.Rocha M.P.De Paz Santana J.F.\",\"et al.;IBM;Indra;Ingenier�a de Software Avanzado S.A;JCyL;Telefonica Digital\",\"Springer Verlag\",\"8th International Conference on Practical Applications of Computational Biology and Bioinformatics, PACBB 2014\",\"4 June 2014 through 6 June 2014\",,110140,21945357,,,,\"English\",\"Adv. Intell. Sys. Comput.\",Conference Paper,\"Final\",\"\",Scopus,2-s2.0-84921798921\n\"Li J., Mansmann U.R.\",\"56087303400;7005334086;\",\"Modeling of Non-Steroidal Anti-Inflammatory Drug Effect within Signaling Pathways and miRNA-Regulation Pathways\",2013,\"PLoS ONE\",\"8\",\"8\",\"e72477\",\"\",\"\",,17,\"10.1371/journal.pone.0072477\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-84881526453&doi=10.1371%2fjournal.pone.0072477&partnerID=40&md5=8e3c09a278f9e1b086eb620385b4f77b\",\"Institute for Medical Informatics, Biometry and Epidemiology, Ludwig-Maximilians-University Munich, Munich, Germany; German Cancer Consortium (DKTK), Heidelberg, Germany; German Cancer Research Center (DKFZ), Heidelberg, Germany\",\"Li, J., Institute for Medical Informatics, Biometry and Epidemiology, Ludwig-Maximilians-University Munich, Munich, Germany, German Cancer Consortium (DKTK), Heidelberg, Germany, German Cancer Research Center (DKFZ), Heidelberg, Germany; Mansmann, U.R., Institute for Medical Informatics, Biometry and Epidemiology, Ludwig-Maximilians-University Munich, Munich, Germany, German Cancer Consortium (DKTK), Heidelberg, Germany\",\"To date, it is widely recognized that Non-Steroidal Anti-Inflammatory Drugs (NSAIDs) can exert considerable anti-tumor effects regarding many types of cancers. The prolonged use of NSAIDs is highly associated with diverse side effects. Therefore, tailoring down the NSAID application onto individual patients has become a necessary and relevant step towards personalized medicine. This study conducts the systemsbiological approach to construct a molecular model (NSAID model) containing a cyclooxygenase (COX)-pathway and its related signaling pathways. Four cancer hallmarks are integrated into the model to reflect different developmental aspects of tumorigenesis. In addition, a Flux-Comparative-Analysis (FCA) based on Petri net is developed to transfer the dynamic properties (including drug responsiveness) of individual cellular system into the model. The gene expression profiles of different tumor-types with available drug-response information are applied to validate the predictive ability of the NSAID model. Moreover, two therapeutic developmental strategies, synthetic lethality and microRNA (miRNA) biomarker discovery, are investigated based on the COX-pathway. In conclusion, the result of this study demonstrates that the NSAID model involving gene expression, gene regulation, signal transduction, protein interaction and other cellular processes, is able to predict the individual cellular responses for different therapeutic interventions (such as NS-398 and COX-2 specific siRNA inhibition). This strongly indicates that this type of model is able to reflect the physiological, developmental and pathological processes of an individual. The approach of miRNA biomarker discovery is demonstrated for identifying miRNAs with oncogenic and tumor suppressive functions for individual cell lines of breast-, colon- and lung-tumor. The achieved results are in line with different independent studies that investigated miRNA biomarker related to diagnostics of cancer treatments, therefore it might shed light on the development of biomarker discovery at individual level. Particular results of this study might contribute to step further towards personalized medicine with the systemsbiological approach. © 2013 Li et al.\",,\"microRNA; n (2 cyclohexyloxy 4 nitrophenyl)methanesulfonamide; nonsteroid antiinflammatory agent; prostaglandin synthase; small interfering RNA; analytic method; article; breast tumor; cancer therapy; carcinogenesis; colon tumor; controlled study; drug effect; drug response; dynamics; feasibility study; flux comparative analysis; gene control; gene expression; gene expression profiling; genetic parameters; genetic regulation; lung tumor; molecular model; personalized medicine; protein interaction; signal transduction; synthetic lethality; systems biology; validation process; Anti-Inflammatory Agents, Non-Steroidal; Gene Expression Regulation, Neoplastic; Humans; Kinetics; MicroRNAs; Models, Biological; Neoplasms; Prostaglandin-Endoperoxide Synthases; Reproducibility of Results; Signal Transduction; Tumor Markers, Biological\",,\"n (2 cyclohexyloxy 4 nitrophenyl)methanesulfonamide, 123653-11-2; prostaglandin synthase, 39391-18-9, 59763-19-8, 9055-65-6\",\"ns 398\",,,,,\"Vane, J.R., Inhibition of prostaglandin synthesis as a mechanism of action for aspirin-like drugs (1971) Nat New Biol, 231, pp. 232-235. , doi: 10.1038/newbio231232a0; Needleman, P., Turk, J., Jakschik, B.A., Morrison, A.R., Lefkowith, J.B., Arachidonic acid metabolism (1986) Annu Rev Biochem, 55, pp. 69-102. , doi: 10.1146/annurev.bi.55.070186.000441; Wang, D., Mann, J.R., DuBois, R.N., The role of prostaglandins and other eicosanoids in the gastrointestinal tract (2005) Gastroenterology, 128, pp. 1445-1461. , doi: 10.1053/j.gastro.2004.09.080; Sandler, R.S., Halabi, S., Baron, J.A., Budinger, S., Paskett, E., A randomized Trial of Aspirin to prevent colorectal adenomas in patients with previous colorectal cancer (2003) N Engl J Med, 348, pp. 883-890. , doi: 10.1056/NEJMoa021633; Randall, H., Beebe-Donk, J., Alshafie, G.A., Reduced risk of human lung cancer by selective cyclooxygenase 2 (Cox-2) Blockade: results of a case control study (2007) Int J Biol Sci, 3, pp. 328-334. , PubMed: 17589567; Wynne, S., Djakiew, D., NSAID inhibition of prostate cancer cell migration is mediated by Nag-1 induction via the p38 MAPK-p75NTR pathway (2010) Mol Cancer Res, 8, pp. 1656-1664. , doi: 10.1158/1541-7786.MCR-10-0342; Jayaprakash, V., Rigual, R., Moysich, K.B., Loree, T.R., Nasca, M.A., Chemoprevention of head and neck cancer with aspirin: A case-control study (2006) Arch Otolaryngol Head Neck Surg, 132, pp. 1231-1236. , doi: 10.1001/archotol.132.11.1231; Uefuji, K., Ichikura, T., Mochizuki, H., Cyclooxygenase-2 expression is related to prostaglandin biosynthesis and angiogenesis in human gastric cancer (2000) Clin Cancer Res, 6, pp. 135-138. , doi: 10656441; Smalley, W.E., DuBois, R.N., Colorectal cancer and non steroidal anti-inflammatory drugs (1997) Adv Pharmacol, 39, pp. 1-20. , doi: 10.1016/S1054-3589(08)60067-8; Lichtenberger, L.M., Where is the evidence that cyclooxygenase inhibition is the primary cause of nonsteroidal anti-inflammatory drug (NSAID)-induced gastrointestinal injury? Topical injury revisited (2001) Biochem Pharmacol, 61, pp. 631-637. , doi: 10.1016/S0006-2952(00)00576-1; Wolfe, M.M., Lichtenstein, D.R., Singh, G., Gastrointestinal toxicity of nonsteroidal antiinflammtory drugs (1999) N Engl J Med, 340, pp. 1888-1899. , doi: 10.1056/NEJM199906173402407; Dannenberg, A.J., Zakim, D., Chemoprevention of colorectal cancer through inhibition of cyclooxygenase-2 (1999) Semin Oncol, 26, pp. 499-504. , doi: 10528897; Fosslien, E., Molecular pathology of cyclooxygenase-2 in neoplasia (2000) Ann Clin Lab Sci, 30, pp. 3-21. , doi: 10678579; Yoshimoto, T., Takahashi, Y., Kinoshita, T., Sakashita, T., Inoue, H., Growth stimulation and epidermal growth factor receptor induction in cyclooxygenase-overexpressing human colon carcinoma cells (2002) Adv Exp Med Biol, 507, pp. 403-407. , PubMed: 12664617; Wang, D., Wang, H., Shi, Q., Katkuri, S., Walhi, W., Prostaglandin E(2) promotes colorectal adenoma growth via transactivation of the nuclear peroxisome proliferator-activated receptor delta (2004) Cancer Cell, 6, pp. 285-295. , doi: 10.1016/j.ccr.2004.08.011; Poligone, B., Baldwin, A.S., Positive and negative regulation of NF-kappaB by COX-2: roles of different prostaglandins (2001) J Biol Chem, 276, pp. 38658-38664. , doi: 10.1074/jbc.M106599200; Husain, S.S., Szabo, I.L., Pai, R., Soreghan, B., Jones, M.K., MAPK (ERK2) kinase--a key target for NSAIDs-induced inhibition of gastric cancer cell proliferation and growth (2001) Life Sci, 69, pp. 3045-3054. , doi: 10.1016/S0024-3205(01)01411-4; Wong, B.C., Jiang, X.H., Lin, M.C., Tu, S.P., Cui, J.T., Cyclooxygenase-2 inhibitor (SC-236) suppresses activator protein-1 through c-Jun NH2-terminal kinase (2004) Gastroenterology, 126, pp. 136-147. , doi: 10.1053/j.gastro.2003.10.063; Iñiguez, M.A., Rodríguez, A., Volpert, O.V., Fresno, M., Redondo, J.M., Cyclooxygenase-2: a therapeutic target in angiogenesis (2003) Trends Mol Med, 9, pp. 73-78. , doi: 10.1016/S1471-4914(02)00011-4; Shreedhar, V., Giese, T., Sung, V.W., Ullrich, S.E., A cytokine cascade including prostaglandin E2, IL-4, and IL-10 is responsible for UV-induced systemic immune suppression (1998) J Immunol, 160, pp. 3783-3789. , PubMed: 9558081; Ludwig, J.A., Weinstein, J.N., Biomarkers in cancer staging, prognosis and treatment selection (2005) Nat Rev Cancer, 5, pp. 845-856. , doi: 10.1038/nrc1739; Hanahan, D., Weinberg, R.A., The hallmarks of cancer (2000) Cell, 100, pp. 57-70. , doi: 10.1016/S0092-8674(00)81683-9; Hanahan, D., Weinberg, R.A., Hallmarks of cancer: the next generation (2011) Cell, 144, pp. 646-674. , doi: 10.1016/j.cell.2011.02.013; Tsujii, M., Kawano, S., Tsuji, S., Sawaoka, H., Hori, M., Cyclooxygenase regulates angiogenesis induced by colon cancer cells (1998) Cell, 93, pp. 705-716. , doi: 10.1016/S0092-8674(00)81433-6; Hiraga, T., Myoui, A., Choi, M.E., Yoshikawa, H., Yoneda, T., Stimulation of cyclooxygenase-2 expression by bone-derived transforming growth factor-beta enhances bone metastases in breast cancer (2006) Cancer Res, 66, pp. 2067-2073. , doi: 10.1158/0008-5472.CAN-05-2012; Wang, R., Wang, X., Lin, F., Gao, P., Dong, K., shRNA-targeted cyclooxygenase (COX)-2 inhibits proliferation, reduces invasion and enhances chemosensitivity in laryngeal carcinoma cells (2008) Mol Cell Biochem, 317, pp. 179-188. , doi: 10.1007/s11010-008-9847-9; Jana, N.R., NSAIDs and apoptosis (2008) Cell Mol Life Sci, 65, pp. 1295-1301. , doi: 10.1007/s00018-008-7511-x; Denkert, C., Fürstenberg, A., Daniel, P.T., Koch, I., Köbel, M., Induction of G0/G1 cell cycle arrest in ovarian carcinoma cells by the anti-inflammatory drug NS-398, but not by COX-2-specific RNA interference (2003) Oncogene, 22, pp. 8653-8661. , doi: 10.1038/sj.onc.1206920; Ferrario, A., Fisher, A.M., Rucker, N., Gomer, C.J., Celecoxib and NS-398 enhance photodynamic therapy by increasing in vitro apoptosis and decreasing in vivo inflammatory and angiogenic factors (2005) Cancer Res, 65, pp. 9473-9478. , doi: 10.1158/0008-5472.CAN-05-1659; Strillacci, A., Griffoni, C., Spisni, E., Manara, M.C., Tomasi, V., RNA interference as a key to knockdown overexpressed cycloxygenase-2 gene in tumour cells (2006) Br J Cancer, 94, pp. 1300-1310. , doi: 10.1038/sj.bjc.6603094; Charames, G.S., Bapat, B., Cyclooxygenase-2 knockdown by RNA interference in colon cancer (2006) Int J Oncol, 28, pp. 543-549. , PubMed: 16391811; Kaelin Jr., W.G., The concept of synthetic lethality in the context of anticancer therapy (2005) Nat Rev Cancer, 5, pp. 689-698. , doi: 10.1038/nrc1691; Mann, M., Sheng, H., Shao, J., Williams, C.S., Pisacane, P.L., Targeting cyclooxygenase 2 and her-2/neu pathways inhibits colorectal carcinoma growth (2001) Gastroenterology, 120, pp. 1713-1719. , doi: 10.1053/gast.2001.24844; Tortora, G., Caputo, R., Damiano, V., Melisi, D., Bianco, R., Combination of a selective cyclooxygenase-2 inhibitor with epidermal growth factor receptor tyrosine kinase inhibitor ZD1839 and protein kinase A antisense causes cooperative antitumor and antiangiogenic effect (2003) Clin Cancer Res, 9, pp. 1566-1572. , PubMed: 12684433; Torrance, C.J., Jackson, P.E., Montgomery, E., Kinzler, K.W., Vogelstein, B., Combinatorial chemoprevention of intestinal neoplasia (2000) Nat Med, 6, pp. 1024-1028. , doi: 10.1038/79534; Hanahan, D., Folkman, J., Patterns and emerging mechanisms of the angiogenic switch during tumorigenesis (1996) Cell, 86, pp. 353-364. , doi: 10.1016/S0092-8674(00)80108-7; Tuccillo, C., Romano, M., Troiani, T., Martinelli, E., Morgillo, F., Antitumor activity of ZD6474, a vascular endothelial growth factor-2 and epidermal growth factor receptor small molecule tyrosine kinase inhibitor, in combination with SC-236, a cyclooxygenase-2 inhibitor (2005) Clin Cancer Res, 11, pp. 1268-1276. , PubMed: 15709198; Adams, J.M., Ways of dying: multiple pathways to apoptosis (2003) Genes Dev, 17, pp. 2481-2495. , doi: 10.1101/gad.1126903; Green, D.R., Apoptotic pathways: the roads to ruin (1998) Cell, 94, pp. 695-698. , doi: 10.1016/S0092-8674(00)81728-6; Weinberg, R.A., Mechanisms of malignant progression (2008) Carcinogenesis, 29, pp. 1092-1095. , doi: 10.1093/carcin/bgn104; Lu, J., Getz, G., Miska, E.A., Alvarez-Saavedra, E., Lamb, J., MicroRNA expression profiles classify human cancers (2005) Nature, 435, pp. 834-838. , doi: 10.1038/nature03702; Schetter, A.J., Leung, S.Y., Sohn, J.J., Zanetti, K.A., Bowman, E.D., MicroRNA expression profiles associated with prognosis and therapeutic outcome in colon adenocarcinoma (2008) J Am Med Assoc, 299, pp. 425-436. , doi: 10.1001/jama.299.4.425; Chakrabarty, A., Tranguch, S., Daikoku, T., Jensen, K., Furneaux, H., MicroRNA regulation of cyclooxygenase-2 during embryo implantation (2007) Proc Natl Acad Sci USA, 104, pp. 15144-15149. , doi: 10.1073/pnas.0705917104; Daikoku, T., Hirota, Y., Tranguch, S., Joshi, A.R., DeMayo, F.J., Conditional loss of uterine Pten unfailingly and rapidly induces endometrial cancer in mice (2008) Cancer Res, 68, pp. 5619-5627. , doi: 10.1158/0008-5472.CAN-08-1274; Li, J., Pandey, V., Kessler, T., Lehrach, H., Wierling, C., Modeling of miRNA and Drug Action in the EGFR Signaling Pathway (2012) PLOS ONE, 7, pp. e30140. , doi: 10.1371/journal.pone.0030140; Wurdinger, T., Costa, F.F., Molecular therapy in the microRNA (2007) Pharmacogenomics J, 7, pp. 297-304. , doi: 10.1038/sj.tpj.6500429; Li, M., Role of miR-10b in breast cancer metastasis (2010) Breast Cancer Res, 12, p. 210. , doi: 10.1186/bcr2720; Friedman, J.M., Liang, G., Liu, C.C., Wolff, E.M., Tsai, Y.C., The Putative Tumor Suppressor microRNA-101 Modulates the Cancer Epigenome by Repressing the Polycomb Group Protein EZH2 (2009) Cancer Res, 69, pp. 2623-2629. , doi: 10.1158/0008-5472.CAN-08-3114; Frankel, L.B., Wen, J., Lees, M., Høyer-Hansen, M., Farkas, T., microRNA-101 is a potent inhibitor of autophagy (2011) EMBO J, 30, pp. 4628-4641. , doi: 10.1038/emboj.2011.331; Wu, H., Zhu, S., Mo, Y.Y., Suppression of cell growth and invasion by miR-205 in breast cancer (2009) Cell Res, 19, pp. 439-448. , doi: 10.1038/cr.2009.18; Richards, J.A., Petrel, T.A., Brueggemeier, R.W., Signaling pathways regulating aromatase and cyclooxygenases in normal and malignant breast cells (2002) J Steroid Biochem Mol Biol, 80, pp. 203-212. , doi: 10.1016/S0960-0760(01)00187-X; Stasinopoulos, I., Mori, N., Bhujwalla, M.Z., The malignant phenotype of breast cancer cells is reduced by COX-2 silencing (2008) Neoplasia, 10, pp. 1163-1169. , PubMed: 18953425; Zhang, H., Li, W., Nan, F., Ren, F., Wang, H., MicroRNA expression profile of colon cancer stem-like cells in HT29 adenocarcinoma cell line (2006) Biochem Biophys Res Commun, 404, pp. 273-278. , PubMed: 21130073; Yu, X.F., Zou, J., Bao, Z.J., Dong, J., miR-93 suppresses proliferation and colony formation of human colon cancer stem cells (2011) World J Gastroenterol, 17, pp. 4711-4717. , doi: 10.3748/wjg.v17.i42.4711; Yu, Y., Kanwar, S.S., Patel, B.B., Oh, P.S., Nautiyal, J., Sarkar, F.H., Majumdar, A.P., MicroRNA-21 induces stemness by downregulating transforming growth factor beta receptor 2 (TGFbetaR2) in colon cancer cells (2012) Carcinogenesis, 33, pp. 68-76. , doi: 10.1093/carcin/bgr246; Zhang, J.G., Guo, J.F., Liu, D.L., Liu, Q., Wang, J.J., microRNA-101 exerts tumor-suppressive functions in non-small cell lung cancer through directly targeting enhancer of zeste homologue 2 (2011) J Thorac Oncol, 6, pp. 671-678. , doi: 10.1097/JTO.0b013e318208eb35; Arora, H., Qureshi, R., Park, A.K., Park, W.Y., Coordinated regulation of ATF-2 by miR-26b in gamma-irradiated lung cancer cells (2011) PLOS ONE, 6, pp. e23802. , doi: 10.1371/journal.pone.0023802; Kanaan, Z., Rai, S.N., Eichenberger, M.R., Roberts, H., Keskey, B., Plasma miR-21: a potential diagnostic marker of colorectal cancer (2012) Ann Surg, 256, pp. 544-551. , doi: 10.1097/SLA.0b013e318265bd6f; Wei, J., Gao, W., Zhu, C.J., Liu, Y.Q., Mei, Z., Identification of plasma microRNA-21 as a biomarker for early detection and chemosensitivity of non-small cell lung cancer (2011) Chin J Cancer, 30, pp. 407-414. , doi: 10.5732/cjc.010.10522; Preis, M., Gardner, T.B., Gordon, S.R., Pipas, J.M., Mackenzie, T.A., microRNA-10b expression correlates with response to neoadjuvant therapy and survival in pancreatic ductal adenocarcinoma (2011) Clin Cancer Res, 17, pp. 5812-5821. , doi: 10.1158/1078-0432.CCR-11-0695; Hidvegi, T., Ewing, M., Hale, P., Dippold, C., Beckett, C., An autophagy-enhancing drug promotes degradation of mutant alpha1-antitrypsin (2010) Z and Reduces Hepatic Fibrosis, 329, pp. 229-232; Calin, G.A., Ferracin, M., Cimmino, A., Di Leva, G., Shimizu, M., A microRNA signature associated with prognosis and progression in chronic lymphocytic leukemia (2005) N Engl J Med, 353, pp. 1793-1801. , doi: 10.1056/NEJMoa050995; Volinia, S., Calin, G.A., Liu, C.G., Ambs, S., Cimmino, A., A microRNA expression signature of human solid tumors defines cancer gene targets (2006) Proc Natl Acad Sci USA, 103, pp. 2257-2261. , doi: 10.1073/pnas.0510565103; Segrè, D., Vitkup, D., Church, G.M., Analysis of optimality in natural and perturbed metabolic networks (2002) Proc Natl Acad Sci USA, 99, pp. 15112-15117. , doi: 10.1073/pnas.232349399; Shlomi, T., Berkman, O., Ruppin, E., Regulatory on/off minimization of metabolic flux changes after genetic perturbations (2005) Proc Natl Acad Sci USA, 102, pp. 7695-7700. , doi: 10.1073/pnas.0406346102; Durot, M., Bourguignon, P.Y., Schachter, V., Genome-scale models of bacterial metabolism: reconstruction and applications (2009) FEMS Microbiol Rev, 33, pp. 164-190. , doi: 10.1111/j.1574-6976.2008.00146.x; Papin, J.A., Hunter, T., Palsson, B.O., Subramaniam, S., Reconstruction of cellular signaling networks and analysis of their properties (2005) Nat Rev Mol Cell Biol, 6, pp. 99-111. , doi: 10.1038/nrm1570; Jones, P.A., Baylin, S.B., The fundamental role of epigenetic events in cancer (2002) Nat Rev Genet, 3, pp. 415-428. , PubMed: 12042769; Laird, P.W., The power and the promise of DNA methylation markers (2003) Nat Rev Cancer, 3, pp. 253-266. , doi: 10.1038/nrc1045; Li, L.C., Chui, R., Nakajima, K., Oh, B.R., Au, H.U., Frequent methylation of estrogen receptor in prostate cancer: correlation with tumor progression (2000) Cancer Res, 60, pp. 702-706. , doi: 10676656; Leone, G., Teofili, L., Voso, M.T., Luebbert, M., DNA methylation and demethylation drugs in myelodysplastic syndromes and secondary leukemias (2002) Haematologica, 87, pp. 1341-1342. , PubMed: 12495906; Tuck-Muller, C.M., Narayan, A., Tsien, F., Smeets, D.F., Sawyer, J., DNA hypomethylation and unusual chromosome instability in cell lines from ICF syndrome patients (2000) Cytogenet Cell Genet, 89, pp. 121-128. , doi: 10.1159/000015590; Troiani, T., Schettino, C., Martinelli, E., Morgillo, F., Tortora, G., The use of xenograft models for the selection of cancer treatments with the EGFR as an example (2008) Crit Rev Oncol/Hematol, 65, pp. 200-211. , doi: 10.1016/j.critrevonc.2007.10.003\",\"Li, J.; Institute for Medical Informatics, Biometry and Epidemiology, , Munich, Germany; email: lijian@ibe.med.uni-muenchen.de\",,,,,,,,19326203,,POLNC,\"23967306\",\"English\",\"PLoS ONE\",Article,\"Final\",\"All Open Access, Gold, Green\",Scopus,2-s2.0-84881526453\n\"Wu S.-J., Chen W.-Y., Chou C.-H., Wu C.-T.\",\"57154848100;55989157300;57221006349;14039797800;\",\"Prototype of integrated pseudo-dynamic crosstalk network for cancer molecular mechanism\",2013,\"Mathematical Biosciences\",\"243\",\"1\",,\"81\",\"98\",,4,\"10.1016/j.mbs.2013.02.008\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-84875804691&doi=10.1016%2fj.mbs.2013.02.008&partnerID=40&md5=be86dc0d06d62e17e49df5e86da96ab5\",\"Department of Electrical Engineering, Dayeh University, Chang-Hwa, Taiwan; Tatung Co., New Taipei, Taiwan; Taiwan Flux Technology Co., Ltd., Taipei, Taiwan\",\"Wu, S.-J., Department of Electrical Engineering, Dayeh University, Chang-Hwa, Taiwan; Chen, W.-Y., Tatung Co., New Taipei, Taiwan; Chou, C.-H., Taiwan Flux Technology Co., Ltd., Taipei, Taiwan; Wu, C.-T., Department of Electrical Engineering, Dayeh University, Chang-Hwa, Taiwan\",\"In this study, we attempted to solve two important challenges in systems biology. First, although the Michaelis-Menten (MM) model provides local kinetic information, it is hard to generalize MM models to model a large system because increasingly large amounts of experimental data are necessary for the parameter identification. In addition, it is not possible to develop an MM model that provides information about the strength of the interactions in the system. Second, although the dynamic simulation of various signal transduction pathways is important in cancer research, it is impossible to theoretically derive a mathematical model to describe the cancer molecular mechanism. Predictive computational approaches can be used to analyze the dynamics of a system and to determine the dysfunction of a regulatory process. In this report, we first propose a pseudo-dynamic pathway to describe protein interactions in an MM system. We then discuss the dynamic behavior of two large-scale systems (antigrowth-signal-induced cell cycle and apoptotic-signal-transduction mechanism). These two systems were constructed through the in-series and organic integration, respectively, of MM modules with Petri net modules; moreover, more than 30% additional reactions were added during this integration step. We then described an extremely large multi-stream system (growth signal transduction); however, the analysis of this system to obtain dynamic predictions is critical but appears impossible. Thus, we introduced a fuzzy concept that can be used to develop a physically realizable model prototype. In the future, through step-by-step in vivo modifications, researchers will be able to develop a complete model of cancer metabolism to achieve accurate predictions. © 2013 Elsevier Inc.\",\"Cancer mechanism; DNA damage; Fuzzy system; Organic integration; Petri net\",\"Accurate prediction; Additional reactions; Computational approach; DNA damages; Kinetic information; Michaelis-Menten model; Molecular mechanism; Signal transduction pathways; Computer simulation; Diseases; Forecasting; Fuzzy systems; Integration; Mathematical models; Petri nets; Signal transduction; Dynamics; cancer; DNA; fuzzy mathematics; numerical model; apoptosis; article; cancer research; cell cycle; fuzzy logic; kinetics; mathematical computing; mathematical model; Michaelis Menten kinetics; molecular dynamics; neoplasm; prediction; protein interaction; signal transduction; simulation; statistical parameters; systems biology; Apoptosis; Cell Cycle; Cell Physiological Phenomena; Computer Simulation; Humans; Kinetics; Models, Biological; Neoplasms; Signal Transduction\",,,,,\"National Science Council, NSC: NSC-101-2221-E-212-011\",\"This research is supported by the National Science Council of Taiwan, ROC under Grant NSC-101-2221-E-212-011 .\",,\"Voit, E.O., (2000) Computational Analysis of Biochemical Systems: A Practical Guide for Biochemists and Molecular Biologists, , Cambridge University Press, Cambridge, U.K; Chou, I.C., Voit, E.O., Estimation of dynamic flux profiles from metabolic time series data (2012) BMC Syst. Biol., 6, p. 84; Sun, J., Garibaldi, J.M., Hodgman, C., Parameter estimation using metaheuristics in systems biology: a comprehensive review (2012) IEEE/ACM Trans. Comput. Biol. Bioinf., 9 (1), p. 185; Kholodenko, B.N., Cell-signalling dynamics in time and space (2006) Nat. Rev. Mol. Cell Biol., 7, p. 165; Citri, A., Yarden, Y., EGF-ERBB signalling: towards the system level (2006) Nat. Rev. Mol. Cell Biol., 7, p. 505; Amit, I., Citri, A., Shay, T., Lu, Y., Katz, M., Zhang, F., Tarcic, G., Lahad, J., A module of negative feedback regulators defines growth factor signaling (2007) Nat. Genet., 39, p. 503; Materi, W., Wishart, D.S., Computational systems biology in cancer: modeling methods and applications (2007) Gene Regul. Syst. Biol., 1, p. 91; Birtwistle, M.R., Ligand-dependent responses of the ErbB signaling network: experimental and modeling analyses (2007) Mol. Syst. Biol., 3, p. 144; Borisov, N., Systems-level interactions between insulin-EGF networks amplify mitogenic signalling (2009) Mol. Syst. Biol., 5, p. 256; Li, H., Simulation of crosstalk between small GTPase RhoA and EGFR-ERK pathway via MEKK1 (2009) Bioinformatics, 25 (3), p. 358; Zhang, T., Brahnik, Brahnik Tyson, J.J., Computational analysis of dynamical responses to the intrinsic pathway of programmed cell death (2009) Biophys. J., 97, p. 415; Koch, I., Schueler, M., Heiner, M., STEPP-search tool for exploration of Petri net paths: a new tool for Petri net-based path analysis in biochemical networks (2005) Silico Biol., 5, p. 129; Simao, E., Remy, E., Thieffry, D., Chaouiya, C., Qualitative modelling of regulated metabolic pathways: application to the tryptophan biosynthesis in E. Coli (2005) Bioinformatics, 21, p. 190; Yeang, C.H., Vingron, M., A joint model of regulatory and metabolic networks (2006) BMC Bioinf., 7, p. 332; Steggles, L.J., Banks, R., Shaw, O., Wipat, A., Qualitative modelling and analyzing genetic regulatory networks: a Petri Net approach (2007) Bioinformatics, 23, p. 336; Nagasaki, M., Doi, A., Matsuno, H., Miyano, S., A versatile Petri net based architecture for modeling and simulation of complex biological processes (2004) Genome Inf., 15 (1), p. 180; Tasaki, S., Nagasaki, M., Oyama, M., Hata, H., Ueno, K., Yoshida, R., Higuchi, T., Miyano, S., Modeling and estimation of dynamic EGFR pathway by data assimilation approach using time series proteomic data (2006) Genome Inf., 17 (2), p. 226; Oda, K., Matsuoka, Y., Funahashi, A., Kitano, H., A comprehensive pathway map of epidermal growth factor receptor signaling (2005) Mol. Syst. Biol., 1, p. 0010; Wu, S.J., Wu, C.T., Chou, C.H., Lee, T.T., Evolution-based gene regulatory network of yeast cell cycle (2006) Proc. IEEE SMC, p. 1291. , Taiwan; Novak, B., Tyson, J.J., Modeling the cell division cycle: M-phase trigger, oscillations and size control (1993) J. Theor. Biol., 165, p. 101; Tyson, J.J., Novak, B., Regulation of the eukaryotic cell cycle (2001) J. Theor. Biol., 210, p. 249; Novak, B., Tyson, J.J., A model for restriction point control of the mammalian cell cycle (2004) J. Theor. Biol., 230, p. 563; http://www.biotechjournal.com/Journal/May2005/Page14.htm,ProteinLounge.com; Weinberg, R.A., (2007) The Biology of Cancer, , Garland Science, NY, USA; Kopnin, B.P., Targets of oncogenes and tumor suppressors: key for understanding basic mechanisms of carcinogenesis (2000) Biochemistry, 65 (1), p. 2; Doi, A., Nagasaki, M., Matsuno, H., Miyano, S., Simulation-based validation of the p53 transcriptional activity with hybrid functional Petri net (2006) Silico Biol., 6 (1-2), p. 1; Yang, S.K., Wang, Y.C., Chao, C.C., Chuang, Y.J., Lan, C.Y., Chen, B.S., Dynamic cross-talk analysis among TNF-R, TLR-4 and IL-1R signalings in TNFα-induced inflammatory responses (2010) BMC Med. Genom., 3, p. 19; Amundson, S.A., Myers, T.G., Fornace, A.J., Roles for p53 in growth arrest and apoptosis: putting on the brakes after genotoxic stress (1998) Oncogene, 17, p. 3287; Lotan, R., Receptor-independent induction of apoptosis by synthetic retinoids (2003) J. Biol. Regul. Homeost. Agents, 17 (1), p. 13; Talapatra, S., Thompson, C.B., Growth factor signaling in cell survival: implications for cancer treatment (2001) JPET, 298, p. 873; Franke, T.F., Hornik, C.P., Segev, L., Shostak, G.A., Sugimoto, C., PI3K/Akt and apoptosis: size matters (2003) Oncogene, 22, p. 8983; Banasiak, K.J., Xia, Y., Haddad, G.G., Mechanisms underlying hypoxia-induced neuronal apoptosis (2000) Prog. Neurobiol., 62, p. 215; Holmes, W.F., Soprano, D.R., Soprano, K.J., Synthetic retinoids as inducers of apoptosis in ovarian carcinoma cell lines (2004) J. Cell Physiol., 199, p. 317; Benn, S.C., Woolf, C.J., Adult neuron survival strategies-slamming on the break (2004) Nat. Rev. Neurosci., 5, p. 686; http://GenomicObject.net/, GON: Genomic Object Net Project; Anna, B.M., Furlong, L., Ferran, S., Pathway databases and tools for their exploitation: benefits, current limitations and challenges (2009) Mol. Syst. Biol., 5, p. 290; Adjei, A.A., Ras signaling pathway proteins as therapeutic targets (2001) Curr. Pharm. Des., 7, p. 1581; Gu, J., Fujibayashi, A., Yamada, K.M., Sekiguchi, K., Laminin-10/11 and fibronectin differentially prevent apoptosis induced by serum removal via phosphatidylinositol 3-kinase/Akt- and MEK1/ERK-dependent pathways (2002) J. Biol. Chem., 277 (22), p. 19922; Blume-Jensen, P., Hunter, T., Oncogenic kinase signalling (2001) Nature, 411, p. 355; Paez, J., Sellers, W.R., PI3K/PTEN/AKT pathway: a critical mediator of oncogenic signaling (2003) Cancer Treat. Res., 115, p. 145; Yarden, Y., Sliwkowsk, M.X., Untangling the ErbB signalling network (2001) Nat. Rev. Mol. Cell Biol., 2, p. 127; Boettner, B., Aelst, L.V., The role of Rho GTPases in disease development (2002) Gene, 286, p. 155; Li, Y.S., Shyy, J.Y.J., Li, S., Lee, J., Su, B., Karin, M., Chien, S., The Ras-JNK pathway is involved in shear-induced gene expression (1996) Mol. Cell Biol., 16 (11), p. 5947; Lin, C.T., Lee, C.S.G., (1996) Neural Fuzzy Systems: A Neural-Fuzzy Synergism to Intelligent Systems, , Prentice-Hall, International limited, London\",\"Wu, S.-J.; Department of Electrical Engineering, , Chang-Hwa, Taiwan; email: jen@mail.dyu.edu.tw\",,,,,,,,00255564,,MABIA,\"23454229\",\"English\",\"Math. Biosci.\",Article,\"Final\",\"\",Scopus,2-s2.0-84875804691\n\"Cordero F., Beccuti M., Fornari C., Lanzardo S., Conti L., Cavallo F., Balbo G., Calogero R.\",\"23049540800;8285239400;53981319600;6508351518;16041417500;34568031100;7006505195;7004035394;\",\"Multi-level model for the investigation of oncoantigen-driven vaccination effect\",2013,\"BMC Bioinformatics\",\"14\",\"SUPPL6\",\"S11\",\"\",\"\",,13,\"10.1186/1471-2105-14-S6-S11\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-84884195586&doi=10.1186%2f1471-2105-14-S6-S11&partnerID=40&md5=4a015b4cc65edccdfd6cd58161fd2464\",\"Computer Science Department, University of Turin, Corso Svizzera 185, Torino 10149, Italy; Molecular Biotechnology Center, University of Turin, Via Nizza 52, Torino 10126, Italy; Faculty of Information and Communication Technology at Rabigh, King Abdulaziz University, Jeddah, Saudi Arabia\",\"Cordero, F., Computer Science Department, University of Turin, Corso Svizzera 185, Torino 10149, Italy; Beccuti, M., Computer Science Department, University of Turin, Corso Svizzera 185, Torino 10149, Italy; Fornari, C., Computer Science Department, University of Turin, Corso Svizzera 185, Torino 10149, Italy, Molecular Biotechnology Center, University of Turin, Via Nizza 52, Torino 10126, Italy; Lanzardo, S., Molecular Biotechnology Center, University of Turin, Via Nizza 52, Torino 10126, Italy; Conti, L., Molecular Biotechnology Center, University of Turin, Via Nizza 52, Torino 10126, Italy; Cavallo, F., Molecular Biotechnology Center, University of Turin, Via Nizza 52, Torino 10126, Italy; Balbo, G., Computer Science Department, University of Turin, Corso Svizzera 185, Torino 10149, Italy, Faculty of Information and Communication Technology at Rabigh, King Abdulaziz University, Jeddah, Saudi Arabia; Calogero, R., Molecular Biotechnology Center, University of Turin, Via Nizza 52, Torino 10126, Italy\",\"Background: Cancer stem cell theory suggests that cancers are derived by a population of cells named Cancer Stem Cells (CSCs) that are involved in the growth and in the progression of tumors, and lead to a hierarchical structure characterized by differentiated cell population. This cell heterogeneity affects the choice of cancer therapies, since many current cancer treatments have limited or no impact at all on CSC population, while they reveal a positive effect on the differentiated cell populations.Results: In this paper we investigated the effect of vaccination on a cancer hierarchical structure through a multi-level model representing both population and molecular aspects. The population level is modeled by a system of Ordinary Differential Equations (ODEs) describing the cancer population's dynamics. The molecular level is modeled using the Petri Net (PN) formalism to detail part of the proliferation pathway. Moreover, we propose a new methodology which exploits the temporal behavior derived from the molecular level to parameterize the ODE system modeling populations. Using this multi-level model we studied the ErbB2-driven vaccination effect in breast cancer.Conclusions: We propose a multi-level model that describes the inter-dependencies between population and genetic levels, and that can be efficiently used to estimate the efficacy of drug and vaccine therapies in cancer models, given the availability of molecular data on the cancer driving force. © 2013 Cordero et al.; licensee BioMed Central Ltd.\",,\"Cancer stem cells; Differentiated cells; Hierarchical structures; Inter-dependencies; Molecular aspects; Population levels; System of ordinary differential equations; Temporal behavior; Cell culture; Cell proliferation; Diseases; Drug therapy; Ordinary differential equations; Petri nets; Stem cells; Vaccines; Population statistics; cancer vaccine; epidermal growth factor receptor 2; animal; article; biological model; breast tumor; cancer stem cell; human; immunology; metabolism; mouse; neoplasm; pathology; Animals; Breast Neoplasms; Cancer Vaccines; Humans; Mice; Models, Biological; Neoplasms; Neoplastic Stem Cells; Receptor, erbB-2\",,\"epidermal growth factor receptor 2, 137632-09-8; Cancer Vaccines; Receptor, erbB-2, 2.7.10.1\",,,\"Seventh Framework Programme, FP7: 200755; Associazione Italiana per la Ricerca sul Cancro, AIRC: IG 11675\",\"This study was funded under the auspices of European Consortium for Anticancer Antibody Development (EUCAAD) 200755, and by grants from the Italian Association for Cancer Research (AIRC IG 11675), the Epigenomics Flagship Project EPIGEN, MIUR-CNR, the Italian Ministero dell’Università e della Ricerca, and the University of Torino and Regione Piemonte. We appreciate the support by King Abdulaziz University of Saudi Arabia. We thank the reviewers for their insightful suggestions.\",,\"Hlavacek, W., How to deal with large models? (2009) Molecular Systems Biology, 5. , 2644176, 19156132; Kreeger, P., Lauffenburger, D., Cancer systems biology: a network modeling perspective (2010) Carcinogenesis, 31, pp. 2-8. , 10.1093/carcin/bgp261, 2802670, 19861649; Pannellini, T., Forni, G., Musiani, P., Immunobiology of her-2/neu transgenic mice (2004) Breast Disease, 20, pp. 33-42; Reddy, V., Mavrovouniotis, M., Liebman, M., Petri net representation in metabolic pathways (1993) Proc Int Conf Intelligent Systems for Molecular Biology, pp. 328-336; Fornari, C., Cordero, F., Manini, D., Calogero, R., Balbo, G., Mathematical approach to predict the drug effects on cancer stem cell models (2011) Proceedings of the CS2Bio 2nd International Workshop on Interactions between Computer Science and Biology. Reykjavik, Iceland; Hemmings, C., The elaboration of a critical framework for understanding cancer: the cancer stem cell hypothesis (2010) Pathology, 42, pp. 105-112. , 10.3109/00313020903488773, 20085510; Quaglino, E., Iezzi, M., Mastini, C., Amici, A., Pericle, F., Carlo, E.D., Pupa, S., Cavallo, F., Electroporated DNA vaccine clears away multifocal mammary carcinomas in her-2/neu transgenic mice (2004) Cancer Research, 64, pp. 2858-2864. , 10.1158/0008-5472.CAN-03-2962, 15087404; Birtwistle, M., Hatakeyama, M., Yumoto, N., Ogunnaike, B., Hoek, J., Kholodenko, B., Ligand-dependent responses of the ErbB signaling network: experimental and modeling analyses (2007) Molecular Systems Biology, 3, pp. 144-160. , 2132449, 18004277; Liang, J., Slingerland, J., Multiple roles of the PI3K/PKB (Akt) pathway in cell cycle progression (2003) Cell Cycle, 2, pp. 339-345; Boggio, K., Nicoletti, G., Carlo, E.D., Cavallo, F., Landuzzi, L., Melani, C., Giovarelli, M., Forni, G., Interleukin 12-mediated prevention of spontaneous mammary adenocarcinomas in two lines of Her-2/neu transgenic mice (1998) J Exp Med, 188, pp. 589-596. , 10.1084/jem.188.3.589, 2212479, 9687535; Gullick, W., Bottomley, A., Lofts, F., Doak, D., Mulvey, D., Newman, R., Crumpton, M., Campbell, I., Three dimensional structure of the transmembrane region of the proto-oncogenic and oncogenic forms of the neu protein (1992) EMBO journal, 11, pp. 43-48. , 556423, 1346763; Porzia, A., Lanzardo, S., Citti, A., Cavallo, F., Forni, G., Santoni, A., Galandrini, R., Paolini, R., Attenuation of PI3K/Akt-mediated tumorigenic signals through PTEN activation by DNA vaccine-induced anti-ErbB2 antibodies (2010) Journal of Immunology, 15, pp. 4170-4177; Li, L., Regulation of innate immunity signaling and its connection with human diseases (2004) Current Drug Targets Inflamm Allergy, 3, pp. 81-86. , 10.2174/1568010043483863, 15032644; Ghatak, S., Misra, S., Toole, B., Hyaluronan constitutively regulates ErbB2 phosphorylation and signaling complex formation in carcinoma cells (2005) Journal Biology Chemical, 280, pp. 8875-8883; Xie, W., Huang, Y., Xie, W., Guo, A., Wu, W., Bacteria peptidoglycan promoted breast cancer cell invasiveness and adhesiveness by targeting toll-like receptor 2 in the cancer cells (2010) PLoS One, 26, pp. 1-15. , 2877101, 20520770; Rovero, S., Amici, A., Carlo, E.D., Bei, R., Nanni, P., Quaglino, E., Porcedda, P., Forni, G., DNA vaccination against rat her-2/Neu p185 more effectively inhibits carcinogenesis than transplantable carcinomas in transgenic BALB/c mice (2000) Journal of Immunology, 165, pp. 5133-5142; O'Reilly, K., Rojo, F., She, Q., Solit, D., Mills, G., Smith, D., Lane, H., Rosen, N., MTOR inhibition induces upstream receptor tyrosine kinase signaling and activates Akt (2006) Cancer Research, 66, pp. 1500-1508. , 10.1158/0008-5472.CAN-05-2925, 3193604, 16452206; Hers, I., Vincent, E., JM, J.T., Akt signalling in health and disease (2011) Cell Signalling, 23, pp. 1515-1527. , 10.1016/j.cellsig.2011.05.004, 21620960; Drebin, J., Link, V., Stern, D., Weinberg, R., Greene, M., Down-modulation of an oncogene protein product and reversion of the transformed phenotype by monoclonal antibodies (1985) Cell, 41, pp. 697-706; Katsumata, M., Okudaira, T., Samanta, A., Clark, D., Drebin, J., Jolicoeur, P., Greene, M., Prevention of breast tumour development in vivo by downregulation of the p185neu receptor (1995) Nature Methods, 1, pp. 644-648. , 10.1038/nm0795-644, 7585144; Klapper, L., Vaisman, N., Hurwitz, E., Pinkas-Kramarski, R., Yarden, Y., Sela, M., A subclass of tumor-inhibitory monoclonal antibodies to ErbB-2/HER2 blocks crosstalk with growth factor receptors (1997) Oncogene, 14, pp. 2099-2109. , 10.1038/sj.onc.1201029, 9160890; Xu, F., Lupu, R., Rodriguez, G., Whitaker, R., Boente, M., Berchuck, A., Yu, Y., Bast, R., Antibody-induced growth inhibition is mediated through immunochemically and functionally distinct epitopes on the extracellular domain of the c-erbB-2 (HER-2/neu) gene product p185 (1993) Int J Cancer, 53, pp. 401-408. , 10.1002/ijc.2910530310, 7679090; Cordero, F., Horvath, A., Manini, D., Napione, L., Pierro, M.D., Pavan, S., Picco, A., Balbo, G., Simplification of a complex signal transduction model by the application of invariants and flow equivalent server (2011) Theoretical Computer Science, 412, pp. 6036-6057; Peterson, J., (1981) Petri Net Theory and the Modeling of Systems, , Upper Saddle River, NJ, USA: Prentice Hall PTR; Hofestädt, R., A Petri Net Application of Metabolic Processes (1994) Journal of System Analysis, Modeling and Simulation, 16, pp. 113-122; Goss, P., Pecoud, J., Quantitative modeling of stochastic systems in molecular biology by using stochastic Petri nets (1998) Proc Natl Acad Sci, 95 (12), pp. 6750-6755. , 10.1073/pnas.95.12.6750, 22622, 9618484; Hofestädt, R., Thelen, S., Quantitative modeling of biochemical networks (1998) In Silico Biology, 1 (6); Molloy, M.K., Performance Analysis using Stochastic Petri Nets (1982) IEEE Transaction on Computers, 31 (9), pp. 913-917; Natkin, S., Les réseaux de Petri stochastiques et leur application à l'évaluation des systèmes informatiques (1980) Thèse de Docteur Ingégneur, CNAM; Balbo, G., Introduction to Stochastic Petri Nets (2001) Lectures on Formal Mathods and Performance Analysis, Volume 2090 of LNCS, pp. 1-37. , Berlin, Germany: Springer, Brinksma E, Hermanns H, Katoen JP; Kurtz, T.G., The Relationship between Stochastic and Deterministic Models for Chemical Reactions (1972) J Chem Phys, 57 (7), pp. 2976-2978; Heiner, M., Koch, I., Will, J., Model validation of biological pathways using Petri nets demonstrated for apoptosis (2004) BioSystems, 75, pp. 10-28; Heiner, M., Mahulea, C., Silva, M., On the Importance of the Deadlock Trap Property for Monotonic Liveness (2010) Proceedings of the International Workshop on Biological Processes and Petri Nets (BioPPN); Murata, T., Petri nets: properties, analysis, and applications (1989) Proceedings of the IEEE, 77 (4), pp. 541-580; Burch, J.R., Clarke, E.M., McMillan, K.L., Dill, D.L., Hwang, J., Symbolic model checking: 1020 states and beyond (1990) Proceedings of the 5th Annual IEEE Symposium on Logic in Computer Science (LICS'90)); Feller, W., (1968) An Introduction to Probability Theory and its Applications, Vol. 1, , John Wiley; Gillespie, D., A rigorous derivation of the master chemical equation (1992) Physica, 188, pp. 404-425; Gillespie, D., Exact Stochastic Simulation of Coupled Chemical Reactions (1977) The Journal of Physical Chemistry, 81, pp. 2340-2361; Gillespie, D., Approximate accelerated stochastic simulation of chemically reacting systems (2001) J Comp Phys, 188, pp. 1716-1733; Voit, E.O., (2000) Computational Analysis of Biochemical Systems, , Cambridge University Press\",\"Cordero, F.; Computer Science Department, Corso Svizzera 185, Torino 10149, Italy; email: fcordero@di.unito.it\",,,,,,,,14712105,,BBMIC,\"23734974\",\"English\",\"BMC Bioinform.\",Article,\"Final\",\"All Open Access, Gold, Green\",Scopus,2-s2.0-84884195586\n\"Zhang Y., Wang S., Wu H., Yi Y.\",\"56646215900;7410331283;55597567000;55797315000;\",\"Petri net modeling and analysis based on gene logic network\",2013,\"Advances in Intelligent Systems and Computing\",\"212\",,,\"377\",\"384\",,,\"10.1007/978-3-642-37502-6_46\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-84880356091&doi=10.1007%2f978-3-642-37502-6_46&partnerID=40&md5=c739a80c84ecb00c5d34a1779002d7f5\",\"College of Information Science and Engineering, Shandong University of Science and Technology, Qingdao, 266510 Shandong, China\",\"Zhang, Y., College of Information Science and Engineering, Shandong University of Science and Technology, Qingdao, 266510 Shandong, China; Wang, S., College of Information Science and Engineering, Shandong University of Science and Technology, Qingdao, 266510 Shandong, China; Wu, H., College of Information Science and Engineering, Shandong University of Science and Technology, Qingdao, 266510 Shandong, China; Yi, Y., College of Information Science and Engineering, Shandong University of Science and Technology, Qingdao, 266510 Shandong, China\",\"Petri net has recently emerged as a promising tool for the modeling and analysis of molecular networks. In this research, gene logic network constructed by approach-logic analysis of phylogenetic profiles method is described. In order to depict the logic interactions between genes, a new Petri net formalism with augmented inhibitor arc is proposed, which is called ALTPN. Two different types of places and different transitions are formulated in ALTPN, and then corresponding firing rule is given. Further, ALTPN of all 1-order and 2-order gene logic types are listed. Finally reachability graph method is used to accomplish asynchronous dynamic analysis of gene logic interactions in colon cancer and some conclusions are drawn. © Springer-Verlag Berlin Heidelberg 2013.\",\"Gene; LAPP; Logic network; Petri net; Reachability graph\",\"Genes; Lapping; Petri nets; Computation theory; Genes; Lapping; Petri nets; Asynchronous dynamics; Firing rules; Logic networks; Modeling and analysis; Molecular networks; Petri-net modeling; Phylogenetic profile; Reachability graphs; Logic analysis; Model and analysis; Petri net models; Computation theory; Computer circuits\",,,,,\"National Natural Science Foundation of China, NSFC: 10971122, 60503002, 60874036; Shandong University of Science and Technology, SDUST: 2010KYJQ104\",\"The authors would like to thank National Natural Science Foundation of China (Nos: 60874036, 60503002, 10971122), SDUST Research Fund of China (No. 2010KYJQ104) for the support to this work.\",,\"Akutsu, T., Miyano, S., Kuhara, S., Identification of genetic networks from a small number of gene expression patterns under the Boolean network model (1999) Pac Symp Biocomputing, 4, pp. 17-28; Kauffman, S.A., The large-scale structure and dynamics of gene control circuits: An ensemble approach (1972) Theory Biol, 44 (1), pp. 167-190; Marlovits, G., Tyson, C.J., Novak, B., Tyson, J.J., Modeling M-phase control in Xenopus oocyte extracts: The surveillance mechanism for unreplicated DNA (1998) Biophys Chem, 72, pp. 169-184; Novak, B., Csikasz-Nagy, A., Gyory, B., Chen, K., Tyson, J.J., Mathematical model of the fission yeast cell cycle with checkpoint controls at the G1/S, G2/M and metaphase/anaphase transitions (1998) Biophys Chem, 72, pp. 185-200; Friedman, N., Linial, M., Nachman, I., Using Bayesian networks to analyze expression data (2000) J Comput Biol, 7, pp. 601-620; Grzegorczyk, M., Husmeier, D., Rahnenfuhrer, J., Modeling non-stationary gene regulatory processes with the BGM model (2011) Comput Stat, 26 (2), pp. 199-218; Chaouiya, C., Petri net modeling of biological networks (2007) Briefings Bioinf, 8 (4), pp. 210-219; Thomas, R., Boolean formalization of genetic control circuits (1973) J Theor Biol, 42 (3), pp. 563-585; Bowers, P.M., Cokus, S.J., Eisenberg, D., Yeates, T.O., Use of logic relationships to decipher protein network organization (2004) Science, 306 (5706), pp. 2246-2249; Zhang, J., Ji, Y., Zhang, L., Extracting three-way gene interactions from microarray data (2007) Bioinformatics, 23 (21), pp. 2903-2909; Wang, S., Chen, Y., Wang, Q., Li, E., Su, Y., Meng, D., Analysis for gene networks based on logic relationships (2010) J Syst Sci Complexity, 23 (5), pp. 435-447; Chaouiya, C., Remy, E., Ruet, P., Thieffry, D., Qualitative modelling of genetic networks: From logical regulatory graphs to standard petri nets (2004) Lect Notes Comp Sci, 3099, pp. 137-156; Comet, J., Klaudel, H., Liauzu, S., Modeling multi-valued genetic regulatory networks using high-level petri nets (2005) Lect Notes Comp Sci, 3536, pp. 208-227; Hardy, S., Pierre, N.R., Modeling and simulation of molecular biology systems using petri nets: Modeling goals of various approaches (2004) J Bioinf Comput Biol, 2 (4), pp. 619-637; Matsuno, H., Doi, A., Nagasaki, M., Hybrid petri net representation of gene regulatory network (2000) Pac Symp Biocomputing, 5, pp. 338-349; Simao, E., Remy, E., Thieffry, E., Chaouiya, C., Qualitative modeling of regulated metabolic pathways: Application to the tryptophan biosynthesis in (2005) E. Coli. Bioinformatics, 21 (2), pp. 190-196; Ruan, X., Wang, J., Li, H., The establishment and application of a logical network model based on gene expression profiles of genes (2007) Prog Biochem Biophys, 34 (8), pp. 871-880\",\"Wang, S.; College of Information Science and Engineering, , Qingdao, 266510 Shandong, China; email: wangshd2008@yahoo.com.cn\",,,\"Springer Verlag\",,,,,21945357,9783642375019,,,\"English\",\"Adv. Intell. Sys. Comput.\",Article,\"Final\",\"\",Scopus,2-s2.0-84880356091\n[No author name available],[No author id available],\"Computational Methods in Systems Biology - 10th International Conference, CMSB 2012, Proceedings\",2012,\"Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)\",\"7605 LNBI\",,,\"\",\"\",405,,,\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-84867877854&partnerID=40&md5=3321773c4055079df17ddf2c47588aab\",,\"\",\"The proceedings contain 27 papers. The topics discussed include: expressive statistical model checking of genetic networks with delayed stochastic dynamics; symmetry-based model reduction for approximate stochastic analysis; detection of multi-clustered genes and community structure for the plant pathogenic fungus; predicting phenotype from genotype through automatically composed Petri nets; predicting phenotype from genotype through automatically composed Petri nets; multi-objective optimization, sensitivity and robustness analysis in FBA modeling; analysis of modular organization of interaction networks based on asymptotic dynamics; concretizing the process hitting into biological regulatory networks; abstraction of graph-based models of bio-molecular reaction systems for efficient simulation; and approximate bi-simulations for sodium channel dynamics.\",,,,,,,,,,,,,,,\"10th International Conference on Computational Methods in Systems Biology, CMSB 2012\",\"3 October 2012 through 5 October 2012\",\"London\",93360,03029743,9783642336355,,,\"English\",\"Lect. Notes Comput. Sci.\",Conference Review,\"Final\",\"\",Scopus,2-s2.0-84867877854\n\"Venkateswaran N., Sekhar S., Thirupatchur Sanjayasarathy T., Krishnan S.N., Kabaleeswaran D.K., Ramanathan S., Narayanasamy N., Jagathrakshakan S.S., Vignesh S.R.\",\"6701385104;57193682339;55241635500;55241732900;55241635800;55241182600;55241917000;55241635700;55877297429;\",\"Energetics based spike generation of a single neuron: Simulation results and analysis\",2012,\"Frontiers in Neuroenergetics\",,\"FEB\",\"2\",\"\",\"\",,7,\"10.3389/fnene.2012.00002\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-84861905015&doi=10.3389%2ffnene.2012.00002&partnerID=40&md5=9aa12dacef533e19a597aa393d9b99b3\",\"Waran Research Foundation, Chennai, India; Charaka Group - Computational Neuroscience, Waran Research Foundation, Chennai, India\",\"Venkateswaran, N., Waran Research Foundation, Chennai, India; Sekhar, S., Charaka Group - Computational Neuroscience, Waran Research Foundation, Chennai, India; Thirupatchur Sanjayasarathy, T., Charaka Group - Computational Neuroscience, Waran Research Foundation, Chennai, India; Krishnan, S.N., Charaka Group - Computational Neuroscience, Waran Research Foundation, Chennai, India; Kabaleeswaran, D.K., Charaka Group - Computational Neuroscience, Waran Research Foundation, Chennai, India; Ramanathan, S., Charaka Group - Computational Neuroscience, Waran Research Foundation, Chennai, India; Narayanasamy, N., Charaka Group - Computational Neuroscience, Waran Research Foundation, Chennai, India; Jagathrakshakan, S.S., Charaka Group - Computational Neuroscience, Waran Research Foundation, Chennai, India; Vignesh, S.R., Charaka Group - Computational Neuroscience, Waran Research Foundation, Chennai, India\",\"Existing current based models that capture spike activity, though useful in studying information processing capabilities of neurons, fail to throw light on their internal functioning. It is imperative to develop a model that captures the spike train of a neuron as a function of its intracellular parameters for non-invasive diagnosis of diseased neurons. This is the first ever article to present such an integrated model that quantifies the inter-dependency between spike activity and intracellular energetics. The generated spike trains from our integrated model will throw greater light on the intracellular energetics than existing current models. Now, an abnormality in the spike of a diseased neuron can be linked and hence effectively analyzed at the energetics level. The spectral analysis of the generated spike trains in a time-frequency domain will help identify abnormalities in the internals of a neuron. As a case study, the parameters of our model are tuned for Alzheimer's disease and its resultant spike trains are studied and presented. This massive initiative ultimately aims to encompass the entire molecular signaling pathways of the neuronal bioenergetics linking it to the voltage spike initiation and propagation; due to the lack of experimental data quantifying the inter dependencies among the parameters, the model at this stage adopts a particular level of functionality and is shown as an approach to study and perform disease modeling at the spike train and the mitochondrial bioenergetics level. © 2012 Venkateswaran, Sekhar, Thirupatchur Sanjayasarathy, Krishnan, Kabaleeswaran, Ramanathan, Narayanasamy, Jagathrakshakan and Vignesh.\",\"Alzheimer's disease; ATP; Krebs cycle; Mitochondria; Neuroenergetics; Petri nets; Voltage spike; Wavelet transformations\",\"adenylate kinase; calcium; oxide; Alzheimer disease; article; brain mitochondrion; electron transport; endoplasmic reticulum; energy transfer; mathematical model; molecular dynamics; nerve cell; quantitative analysis; signal transduction; spectroscopy; spike; synaptic transmission\",,\"adenylate kinase, 9013-02-9; calcium, 14092-94-5, 7440-70-2; oxide, 16833-27-5\",,,,,,\"Arnaudeau, S., Kelley, W.L., Walsh, J.V.J., Demaurex, N., Mitochondria recycle Ca(2+) to the endoplasmic reticulum and prevent the depletion of neighboring endoplasmic reticulum regions (2001) Biol. Chem., 276, pp. 29430-29439; Attwell, D., Gibb, A., Neu-roenergetics and the kinetic design of excitatory synapses (2005) Nat. Rev. Neurosci., 6, pp. 841-849; Attwell, D., Laughlin, S.B., An energy budget for signaling in the grey matter of the brain (2001) Cereb. Blood Flow Metab., 21, pp. 1133-1145; Babinec, P., Babincov, M., Spatial distribution of ion channel activity in biological membranes: the role of noise (2002) Bioelectrochemistry, 56, pp. 167-170; Baker, H.L., Errington, R.J., Davies, S.C., Campbel, A.K., A mathematical model predicts that calreticulin interacts with the endoplasmic reticulum Ca2H-ATPase (2002) Biophys. J., 82, pp. 582-590; Beard, D.A., Qian, H., (2008) Chemical Biophysics: Quantitative Analysis of Cellular Systems, , Cambridge: Cambridge University Press; Buchholtz, R., Golowasch, J., Epstein, I.R., Marder, E., Mathematical model of an identified stom-atogastric ganglion neuron (1992) Neu-rophysiol, 67, pp. 332-340; Cloutier, M., Bolger, F.B., Lowry, J.P., Wellstead, P., An integrative dynamic model of brainenergy metabolism using in vivo neurochemical measurements (2009) J. Comput. Neurosci., 27, pp. 391-414; Duchen, M.R., Mitochondria and calcium: from cell signalling to cell death (2000) J. Physiol. (Lond.), 529, pp. 57-68; Echtay, K.S., Murphy, M.P., Smith, R.A.J., Talbot, D.A., Brand, M.D., Superoxide activates mitochondrial uncoupling protein 2 from the matrix side (2002) J. Biol. Chem., 277, pp. 47129-47135; Fienberg, S.E., Stochastic models for single neuron firing trains: a survey (1974) Biometrics, 30, pp. 399-427; Fitzhugh, R., Mathematical models of threshold phenomena in the nerve membrane (1955) Bull. Math. Biophys., 17, pp. 257-278; Green, D.R., Green, D.R., Apoptotic pathways: ten minutes to dead (2005) Cell, 121, pp. 671-674; Hardy, J., Selkoe, D.J., The amyloid hypothesis of Alzheimer's disease: progress and problems on the road to therapeutics (2002) Science, 297, p. 2209; Harrison, L.M., David, O., Frit-son, K.J., Stochastic models of neuronal dynamics (2005) Philos. Trans. R. Soc. Lond. B Biol. Sci., 360, pp. 1075-1091; Hayashi, Y., Shi, S.H., Esteban, J.A., Pic-cini, A., Poncer, J.C., Malinow, R., Driving AMPA receptors into synapses by LTP and CaMKII: requirement for GluRl and PDZ domain interaction (2000) Science, 287, pp. 2262-2267; Hirai, K., Aliev, G., Nunomura, A., Fujioka, H., Russell, R.L., Atwood, C.S., Johnson, A.B., Smith, M.A., Mitochondrial abnormalities in Alzheimer's disease (2001) J. Neurosci., 21, pp. 3017-3023; Hodgkin, A.L., Huxley, A.F., A quantitative description of membrane current and its application to conduction and excitation in nerve (1952) J. Physiol. (Lond.), 117, pp. 500-544; Jager, S., Handschin, C., St-Pierre, J., Spiegelman, B.M., AMP-activated protein kinase (AMPK) action in skeletal muscle via direct phosphory-lation of PGC-la (2007) PNAS, 104, pp. 12017-12022; Jouaville, L.S., Pinton, P., Bastianutto, C., Rutter, G.A., Rizzuto, R., Regulation of mitochondrial ATP synthesis by calcium: evidence for a long-term metabolic priming (1999) Proc. Natl. Acad. Sci. U.S.A., 96, pp. 13807-13812; Kandel, E.R., Schwartz, J., Jessell, T., (1991) Principles of Neurosdence, , 4th Edn. New York: McGraw-Hill; Keizer, K., (2002) Computational Cell Biology, , New York: Springer Publications; Linden, D.J., The expression of cerebellar LTD in culture is not associated with changes in AMPA-receptor kinetics, agonist affinity, or unitary conductance (2001) Proc. Natl. Acad. Sci. U.S.A., 98, pp. 14066-14071; Mattson, M.P., Gleichmann, M., Cheng, A., Mitochondria in neuroplasticity and neurological disorders (2008) J. Neurosci., 60, pp. 748-766; Mogilevskaya, E., Demin, O., Goryanin, I., Kinetic model of mitochondrial Krebs cycle: unraveling the mechanism of salicylate hepatotoxic effects (2006) J. Biol. Phys., 32, pp. 245-271; Mohan, A., The MMINi-DASS Simulator and its Application to Visual Pathway Connectivity Prediction (2008) [A thesis submitted to WAran Research FoundaTion]. Available at, , http://www.warftindia.org/Ashutosh.pdf; Mohan, A., Nagarajan, V., Sekhar, S., Sharath, N.K., Thiagarajan, T.S., Ramanathan, S., Kannan, D., Energetics based simulation of large-scale 3D neuronal network: energetics-based models (2010) Frontiers Neuroscience Conference Abstract: Neuroinformatics 2010, Kobe, , doi: 10.3389/conf.fnins.2010.13.00092; Mohan, A., Nagarajan, V., Ramanathan, S., Sekhar, S., Thiagarajan, T.S., Kannan, D., Sharath, N.K., \"\"Energetics-based simulation of 3D neuronal network: neurogenesis-inspired structure generation,\"\" in (2010) Frontiers Neuroscience Conference Abstract: Neuroinformatics 2010, Kobe, , doi: 10.3389/conf.fnins.2010.13.00097; Oja, E., A simplified neuron model as a principal component analyzer (1982) Math. Biol., 15, pp. 267-273; Parekh, A.B., Mitochondr-ial regulation of intracellular Ca2+ signaling: more than just simple Ca2+ buffers News Physiol. Sci., 18, pp. 252-256; Rail, W., Membrane time constant of motoneurons (1957) Science, 126, p. 454; Rail, W., Branching dendritic trees and motoneuron membrane resistivity (1959) Exp. Neurol, 1, pp. 491-527; Rail, W., Membrane potential transients and membrane time constant of motoneurons (1960) Exp. Neurol., 2, pp. 503-532; Ramanathan, S., (2011) 3D Neuronal Structure: Towards Generation, Simulation and Optimization for Brain Specific Region, , www.warftindia.org/Subbu.pdf, [A thesis submitted to WAran Research Foundation]. Available at; Remy, S., Spruston, N., Dendritic spikes induce single-burst long-term potentiation (2007) Proc. Natl. Acad. Sci. U.S.A., 104, pp. 17192-17197; Reutimann, J.A., (1999), Model of synaptic short-term plasticity and its adaptation; Rousset, S., Alves-Guerra, M., Mozo, C., Miroux, J., Cassard-Doulcier, B., Bouillaud, A.M., Ricquier, R.D., The biology of uncoupling proteins. Diabetes (2004), 53 (SUPPL. 1), pp. S130-S135; Schulman, R.G., Rothman, D.L., (2004) Brain Energetics and Neuronal Activity, , Chichester: Wiley; Schuss, Z., Nadler, B., Eisenberg, R.S., Derivation of Poisson and Nernst-Planck equations in a bath and channel from a molecular model (2001) Phys. Rev. EStat. Nonlin. Soft Matter Phys., 64, p. 036116; Sherwood, C.C., Stimpson, C.D., Raghanti, M.N., Wildman, D.E., Uddin, M., Grossman, L.I., Goodman, M., Hof, P.R., Evolution of increased glia-neuron ratios in the human frontal cortex (2006) Proc. Natl. Acad. Sci. U.S.A., 103, pp. 13606-13611; Shulman, R.G., Rothman, D.L., Brain Energetics, and Neuronal Activity (2005) Chichester: John Wiley and Sons Limited, p. 315. , (eds); Sklar, B., (2001) Digital Communications: Fundamentals and Applications, , New Jersey: Prentice Hall; Steinberg, J.P., Huganir, R.L., Linden, D.J., N-ethylmaleimide-sensitive factor is required for the synaptic incorporation and removal of AMPA receptors during cerebellar long-term depression (2004) Proc. Natl. Acad. Sci. U.S.A., 101, pp. 18212-18216; Siidhof, T.C., The synaptic vesicle cycle (2004) Annu. Rev. Neurosci., 27, pp. 509-547; Tsodyks, M., Uziel, A., Markram, H., Synchrony generation in recurrent networks with frequency-dependent synapses (2000) J. Neurosci., 20, p. 50; Turrens, J.F., Superoxide production by the mitochondrial respiratory chain (1997) Biosci. Rep., 17, pp. 3-8; Van Pelt, J., Van Ooyen, A., Uylings, H.B.M., Modeling dendritic geometry and the development of nerve connections (2001) Computational Neuroscience: Realistic Modeling for Experimentalists, pp. 179-208. , ed. E. De Schutter (Boca Raton: CRC Press); Venkateswaran, N., Elangovan, V.K., Ganesan, K., Sagar, T.R.S., Aananthakrishanan, S., Ramalingam, S., Gopalakrishnan, S., Thyagarajan, M., On the concept of simultaneous execution of multiple applications on hierarchically based cluster and the silicon operating system (2008) IEEE International Symposium on Parallel and Distributed Processing, 2008. , Miami, FL; Venkateswaran, N., Kabaleeswaran, D.K., Vignesh, S.R., Ramanathan, S., Jagathrakshakan, S.S., Narayanasamy, N., Sekhar, S., Thiagarajan, T.S., Single neuron development - a neurogenesis inspired structure generation model (2011) Frontiers Neuroinformatics Conference Abstract, Boston, , doi: 10.3389/conf.fninf.2011.08.00162; Volman, V., Ben-Jacob, E., Levine, H., The astrocyte as a gatekeeper of synaptic information transfer (2007) Neural. Comput., 19, pp. 303-326; Weber, J.T., De Zeeuw, C.I., Linden, D.J., Hansel, C., Long-term depression of climbing fiber-evoked calcium transients in Purk-inje cell dendrites (2003) Proc. Natl. Acad. Sci. U.S.A., 100, pp. 2878-2883; Yu, T.P., McKinney, S., Lester, H.A., Davidson, N., y-Aminobutyric acid type A receptors modulate cAMP-mediated long-term potentiation and long-term depression at mono-synaptic CA3-CA1 synapses (2001) Proc. Natl. Acad. Sci. U.S.A., 98, pp. 5264-5269; Zeviani, M., Di Donato, S., Mitochondrial disorders (2004) Brain, 127, pp. 2153-2172; Zong, H., Ren, J.M., Young, L.H., Pypaert, M., Mu, J., Birnbaum, M.J., Shulman, G.I., AMP kinase is required for mitochondrial biogenesis in skeletal muscle in response to chronic energy deprivation (2002) Proc. Natl. Acad. Sci. U.S.A., 99, pp. 15983-15987\",\"Venkateswaran, N.; Waran Research Foundation, No. 46B, Mahadevan Street, West Mambalam, Chennai, Tamil Nadu, India; email: warft.backup@gmail.com\",,,,,,,,16626427,,,,\"English\",\"Front. Neuroenergetics\",Article,\"Final\",\"All Open Access, Hybrid Gold, Green\",Scopus,2-s2.0-84861905015\n\"Matsuno H., Nagasaki M., Miyano S.\",\"7103263135;7005461981;7102554029;\",\"Hybrid Petri net based modeling for biological pathway simulation\",2011,\"Natural Computing\",\"10\",\"3\",,\"1099\",\"1120\",,12,\"10.1007/s11047-009-9164-6\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-80055024030&doi=10.1007%2fs11047-009-9164-6&partnerID=40&md5=88964d5045cf820969e72b2de43d930b\",\"Graduate School of Science and Engineering, Yamaguchi University, 1677-1, Yoshida, Yamaguchi 753-8512, Japan; Human Genome Center, Institute of Medical Science, University of Tokyo, 4-6-1 Shirokanedai, Minato-ku, Tokyo 108-8639, Japan\",\"Matsuno, H., Graduate School of Science and Engineering, Yamaguchi University, 1677-1, Yoshida, Yamaguchi 753-8512, Japan; Nagasaki, M., Human Genome Center, Institute of Medical Science, University of Tokyo, 4-6-1 Shirokanedai, Minato-ku, Tokyo 108-8639, Japan; Miyano, S., Human Genome Center, Institute of Medical Science, University of Tokyo, 4-6-1 Shirokanedai, Minato-ku, Tokyo 108-8639, Japan\",\"Hybrid Petri net (HPN) is an extension of the Petri net formalism, which enables us to handle continuous information in addition to discrete information. Firstly, this paper demonstrates how biological pathways can be modeled by the integration of discrete and continuous elements, with an example of the λ phage genetic switch system including induction and retroregulation mechanisms. Although HPN allows intuitive modeling of biological pathways, some fundamental biological processes such as complex formation cannot be represented with HPN. Thus, this paper next provides the formal definition of hybrid functional Petri net with extension (HFPNe), which has high potential for modeling various kinds of biological processes. Cell Illustrator is a software tool developed on the basis of the definition of HFPNe. Hypothesis creation by Cell Illustrator is demonstrated with the example of the cyanobacterial circadian gene clock system. Finally, our ongoing tasks, which include the development of a computational platform for systems biology, are presented. © Springer Science+Business Media B.V. 2009.\",\"Cell Illustrator; Hybrid Petri net; Pathway simulation\",\"analytic method; article; binding site; cell growth; circadian rhythm; computer program; controlled study; gene switching; genetic transcription; Hybrid Petri net; information processing; lysogenization; mathematical analysis; mathematical computing; mathematical model; molecular biology; molecular dynamics; operon; promoter region; protein synthesis; RNA translation; ultraviolet irradiation; Cyanobacteria\",,,,,\"Ministry of Education, Culture, Sports, Science and Technology, MEXT\",\"Acknowledgements Hiroshi Matsuno, one of the authors of this paper, would like to express his gratitude to Dr. Atsushi Doi at Cell Innovator Inc., and Ms. Mao Yamaji at CORE Corporation who contributed to the constructions of the hybrid functional Petri net models of λ phage genetic switch and cyanobacteria circadian rhythm, respectively. This work is partially supported by Grant-in-Aid for Scientific Research on Priority Areas ‘‘Systems Genomics’’and Grant-in-Aid for Scientific Research (B) from the Ministry of Education, Culture, Sports, Science, and Technology of Japan.\",,\"Alla, H., David, R., Continuous and hybrid Petri nets (1998) Journal of Circuits, Systems and Computers, 8 (1), pp. 159-188; Drath, R., Engmann, U., Schwuchow, S., Hybrid aspects of modelling manufacturing systems using modified Petri nets (1999) Proceedings of the 5th Workshop on Intelligent Manufacturing Systems, , Granado, Brasil; Gilbert, D., Heiner, M., From Petri nets to differential equations - An integrative approach for biochemical network analysis (2006) Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics), LNCS4024, pp. 181-200. , DOI 10.1007/11767589-11, Petri Nets and Other Models of Concurrency - ICATPN 2006 - 27th International Conference on Applications and Theory of Petri Nets and Other Models of Concurrency, Proceedings; Hardy, S., Robillard, P.N., Petri net-based method for the analysis of the dynamics of signal propagation in signaling pathways (2008) Bioinformatics, 24 (2), pp. 209-217; Ishiura, M., Kutsuna, S., Aoki, S., Iwasaki, H., Andersson, C.R., Tanabe, A., Golden, S.S., Kondo, T., Expression of a gene cluster kaiABC as a circadian feedback process in cyanobacteria (1998) Science, 281 (5382), pp. 1519-1523. , DOI 10.1126/science.281.5382.1519; Iwasaki, H., Williams, S.B., Kitayama, Y., Ishiura, M., Golden, S.S., Kondo, T., A KaiC-interacting sensory histidine kinase, SasA, necessary to sustain robust circadian oscillation in cyanobacteria (2000) Cell, 101 (2), pp. 223-233. , DOI 10.1016/S0092-8674(00)80832-6; Iwasaki, H., Nishiwaki, T., Kitayama, Y., Nakajima, M., Kondo, T., KaiA-stimulated KaiC phosphorylation in circadian timing loops in cyanobacteria (2002) Proceedings of the National Academy of Sciences of the United States of America, 99 (24), pp. 15788-15793. , DOI 10.1073/pnas.222467299; Jeong, E., Nagasai, M., Saito, A., Miyano, S., Cell System Ontology: Representation for modeling, visualizing, and simulating biological pathways (2007) Silico Biol, 7, p. 0055; Jeong, E., Nagasaki, M., Miyano, S., Conversion from BioPAX to CSO for system dynamics and visualization of biological pathway (2007) Genome Inform, 18, pp. 225-236; Kitayama, Y., Iwasaki, H., Nishiwaki, T., Kondo, T., KaiB functions as an attenuator of KaiC phosphorylation in the cyanobacterial circadian clock system (2003) EMBO Journal, 22 (9), pp. 2127-2134. , DOI 10.1093/emboj/cdg212; Koh, G., Teong, H.F.C., Clement, M.-V., Hsu, D., Thiagarajan, P.S., A decompositional approach to parameter estimation in pathway modeling: A case study of the Akt and MAPK pathways and their crosstalk (2006) Bioinformatics, 22 (14), pp. e271-e280. , DOI 10.1093/bioinformatics/btl264; Kojima, K., Nagasaki, M., Jeong, E., Kato, M., Miyano, S., An efficient grid layout algorithm for biological networks utilizing various biological attributes (2007) BMC Bioinform, 8, p. 76; Matsuno, H., Doi, A., Nagasaki, M., Miyano, S., Hybrid Petri net representation of gene regulatory network (2000) Pac Symp Biocomput, 5, pp. 338-349. , http://www.psb.stanford.edu/psb-online/proceedings/psb00/matsuno.pdf; Matsuno, H., Tanaka, Y., Aoshima, H., Doi, A., Matsui, M., Miyano, S., Biopathways representation and simulation on hybrid functional Petri Net (2003) In Silico Biology, 3 (3), pp. 389-404; Matsuno, H., Fujita, S., Doi, A., Nagasaki, M., Miyano, S., Towards biopathway modeling and simulation (2003) Proceedings of the 24th International Conference on Applications and Theory of Petri Nets (ICATPN2003), Lecture Notes in Computer Science, 2679, pp. 3-22; Nagasaki, M., Doi, A., Matsuno, H., Miyano, S., Genomic object net: I A platform for modeling and simulating biopathways (2003) Appl Bioinform, 2 (3), pp. 181-184; Nagasaki, M., Doi, A., Matsuno, H., Miyano, S., A versatile Petri net based architecture for modeling and simulation of complex biological processes (2004) Genome Inform, 15 (1), pp. 180-197; Nagasaki, M., Doi, A., Matsuno, H., Miyano, S., Computational modeling of biological processes with Petri net based architecture (2005) Bioinformatics Technologies., pp. 179-243. , Chen YP (ed) Springer Press, Berlin; Nagasaki, M., Yamaguchi, R., Yoshida, R., Imoto, S., Doi, A., Tamada, Y., Matsuno, H., Higuchi, T., Genomic data assimilation for estimating hybrid functional Petri net from time-course gene expression data (2006) Genome Inform, 17 (1), pp. 46-61; Nagasaki, M., Saito, A., Li, C., Jeong, E., Miyano, S., Systematic reconstruction of TRANSPATH data into cell system markup language (2008) BMC System Biol, 2, p. 53; Ptashne, M., (1992) A Genetic Switch, , 2nd edn. Blackwell Science & Cell Press, MA; Tasaki, S., Nagasaki, M., Oyama, M., Hata, H., Ueno, K., Yoshida, R., Higuchi, T., Miyano, S., Modeling and estimation of dynamic EGFR pathway by data assimilation approach using time series proteomic data (2006) Genome Inform, 17 (2), pp. 226-228; Troncale, S., Tahi, F., Campard, D., Vannier, J.P., Guespin, J., Modeling and simulation with hybrid functional Petri nets of the role of Interleukin-6 in human early haematopoiesis (2006) Pacific Symp Biocomput, 11, pp. 427-438\",\"Matsuno, H.; Graduate School of Science and Engineering, 1677-1, Yoshida, Yamaguchi 753-8512, Japan; email: matsuno@sci.yamaguchi-u.ac.jp\",,,,,,,,15677818,,NCAOA,,\"English\",\"Nat. Comput.\",Article,\"Final\",\"\",Scopus,2-s2.0-80055024030\n\"Rodriguez E.M., Rudy A., Del Rosario R.C.H., Vollmar A.M., Mendoza E.R.\",\"54401734900;35337674900;7003779496;7006421562;35237954200;\",\"A discrete Petri net model for cephalostatin-induced apoptosis in leukemic cells\",2011,\"Natural Computing\",\"10\",\"3\",,\"993\",\"1015\",,4,\"10.1007/s11047-009-9153-9\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-80055004457&doi=10.1007%2fs11047-009-9153-9&partnerID=40&md5=70cdee9dbac103bb81a5166e59f8b07e\",\"Department of Mathematics, University of Asia and the Pacific, Pasig City, Philippines; Department of Pharmacy, Center for Drug Research, Ludwig-Maximilians University, Munich, Germany; Institute of Mathematics, University of the Philippines Diliman, Quezon City, Philippines; Department of Membrane Biochemistry, Max-Planck Institute of Biochemistry, Munich, Germany; Department of Computer Science, University of the Philippines Diliman, Quezon City, Philippines; Physics Department and Center for NanoScience, Ludwig-Maximilians University, Geschwister-Scholl-Platz 1, 80539 Munich, Germany\",\"Rodriguez, E.M., Department of Mathematics, University of Asia and the Pacific, Pasig City, Philippines; Rudy, A., Department of Pharmacy, Center for Drug Research, Ludwig-Maximilians University, Munich, Germany; Del Rosario, R.C.H., Institute of Mathematics, University of the Philippines Diliman, Quezon City, Philippines, Department of Membrane Biochemistry, Max-Planck Institute of Biochemistry, Munich, Germany; Vollmar, A.M., Department of Pharmacy, Center for Drug Research, Ludwig-Maximilians University, Munich, Germany; Mendoza, E.R., Institute of Mathematics, University of the Philippines Diliman, Quezon City, Philippines, Department of Computer Science, University of the Philippines Diliman, Quezon City, Philippines, Physics Department and Center for NanoScience, Ludwig-Maximilians University, Geschwister-Scholl-Platz 1, 80539 Munich, Germany\",\"Understanding the mechanisms involved in apoptosis has been an area of extensive study due to its critical role in the development and homeostasis of multi-cellular organisms. Our special interest lies in understanding the apoptosis of tumor cells which is mediated by novel potential drugs. Cephalostatin 1 is a marine compound that can induce apoptosis in leukemic cells in a dose- and time-dependent manner even at nano-molar concentrations using a recently discovered pathway that excludes the receptor-mediated pathway and which includes both the mitochondrial and endoplasmic reticulum pathways (Dirsch et al., Cancer Res 63:8869-8876, 2003; López-Antón et al., J Biol Chem 28:33078-33086, 2006). In this paper, the methods and tools of Petri net theory are used to construct, analyze, and validate a discrete Petri net model for cephalostatin 1-induced apoptosis. Based on experimental results and literature search, we constructed a discrete Petri net consisting of 43 places and 59 transitions. Standard Petri net analysis techniques such as structural and invariant analyses and a recently developed modularity analysis technique using maximal abstract dependent transition sets (ADT sets) were employed. Results of these analyses revealed model consistency with known biological behavior. The sub-modules represented by the ADT sets were compared with the functional modules of apoptosis identified by Alberghina and Colangelo. © Springer Science+Business Media B.V. 2009.\",\"Apoptosis; Cephalostatin 1; Discrete Petri net; Invariant analysis; Maximal abstract dependent transition sets (ADT sets); Modularity analysis; Structural analysis\",\"antineoplastic agent; calpain; caspase 3; caspase 4; cephalostatin 1; protein Bax; protein bcl 2; unclassified drug; algorithm; analytic method; antineoplastic activity; apoptosis; article; biochemistry; calcium transport; cell function; controlled study; drug efficacy; endoplasmic reticulum stress; enzyme activity; human; human cell; leukemia cell; mathematical computing; mathematical model; membrane permeability; mitochondrial membrane; molecular dynamics; Petri net model; protein cleavage; protein folding; protein function; protein modification; protein phosphorylation; qualitative analysis; quantitative analysis; signal transduction; structural equation modeling\",,\"calpain, 78990-62-2; caspase 3, 169592-56-7; protein bcl 2, 219306-68-0\",,,,,,\"Albeck, J.G., Burke, J.M., Aldridge, B.B., Zhang, M., Lauffenburger, D.A., Sorger, P.K., Quantitative analysis of pathways controlling extrinsic apoptosis in single cells (2008) Molecular Cell, 30 (1), pp. 11-25. , DOI 10.1016/j.molcel.2008.02.012, PII S1097276508001317; Alberghina, L., Colangelo, A.M., The modular systems biology approach to investigate the control of apoptosis in Alzheimer's disease neurodegeneration (2006) BMC Neurosci, 7 (SUPPL. 1), pp. S2; Bagci, E.Z., Vodovotz, Y., Billiar, T.R., Bistability in apoptosis: Roles of Bax, Bcl-2, and mitchondrial permeability transition pores (2006) Biophys J, 90, pp. 1546-1559; Bentele, M., Lavrik, I., Ulrich, M., Stosser, S., Heermann, D.W., Kalthoff, H., Krammer, P.H., Eils, R., Mathematical modeling reveals threshold mechanism in CD95-induced apoptosis (2004) Journal of Cell Biology, 166 (6), pp. 839-851. , DOI 10.1083/jcb.200404158; Chaouiya, C., Petri net modelling of biological networks (2007) Briefings in Bioinformatics, 8 (4), pp. 210-219. , DOI 10.1093/bib/bbm029, Integrative Biology; Dirsch, V.M., Muller, I.M., Eichhorst, S.T., Pettit, G.R., Kamano, Y., Inoue, M., Xu, J.-P., Vollmar, A.M., Cephalostatin 1 Selectively Triggers the Release of Smac/DIABLO and Subsequent Apoptosis That Is Characterized by an Increased Density of the Mitochondrial Matrix (2003) Cancer Research, 63 (24), pp. 8869-8876; Eissing, T., Conzelmann, H., Gilles, E.D., Allgower, F., Bullinger, E., Scheurich, P., Bistability analyses of a caspase activation model for receptor-induced apoptosis (2004) Journal of Biological Chemistry, 279 (35), pp. 36892-36897. , DOI 10.1074/jbc.M404893200; Fussenegger, M., Bailey, J.E., Varner, J., A mathematical model of caspase function in apoptosis (2000) Nature Biotechnology, 18 (7), pp. 768-774. , DOI 10.1038/77589; Heiner, M., Understanding network behavior by structured representations of transition invariants - A petri net perspective on systems and synthetic biology (2009) Algorithmic Bioprocesses, , Condon A et al (eds), Springer, Natural Computing Series, Berlin; Heiner, M., Koch, I., Petri net based system validation in systems biology (2004) LNCS, 3099, pp. 216-237. , Proc. ICATPN. Bologna Springer; Heiner, M., Koch, I., Will, J., Model validation of biological pathways using Petri nets - Demonstrated for apoptosis (2004) BioSystems, 75 (1-3), pp. 15-28. , DOI 10.1016/j.biosystems.2004.03.003, PII S030326470400036X; Hua, F., Cornejo, M.G., Cardone, Effects of Bcl-2 levels on Fas signaling-induced caspase-3 activation: Molecular genetic tests of computational model predictions (2005) J Immunol, 175, pp. 987-995; Ishii, H., Suzuki, Y., Kuboki, M., Activation of clapain 1 in thrombin-stimulated platelets is regulated by the initial elevation of the cytosolic Ca 2+ concentration (1992) Biochem J, 284, pp. 755-760; Koch, I., Heiner, M., Petri nets (2008) Biological Network Analysis, , Junker B, Schreiber F (eds), Wiley Book Series on Bioinformatics (Chapter 7). New Jersey; Koch, I., Junker, B.H., Heiner, M., Application of Petri net theory for modelling and validation of the sucrose breakdown pathway in the potato tuber (2005) Bioinformatics, 21 (7), pp. 1219-1226. , DOI 10.1093/bioinformatics/bti145; Legewie, S., Blüthgen, N., Herzel, H., Mathematical modeling identifies inhibitors of apoptosis as mediators of positive feedback and bistability (2006) PLoS Comput Biol, 2 (9), pp. e120; Li, C., Ge, Q.-W., Nakata, M., Matsuno, H., Miyano, S., Modelling and simulation of signal transductions in an apoptosis pathway by using timed Petri nets (2007) Journal of Biosciences, 32 (1), pp. 113-127. , http://www.ias.ac.in/jbiosci/jan2007/113-127.pdf, DOI 10.1007/s12038-007-0011-6; Lopez-Anton, N., Rudy, A., Barth, N., Schmitz, L.M., Pettit, G.R., Schulze-Osthoff, K., Dirsch, V.M., Vollmar, A.M., The marine product cephalostatin 1 activates an endoplasmic reticulum stress-specific and apoptosome-independent apoptotic signaling pathway (2006) Journal of Biological Chemistry, 281 (44), pp. 33078-33086. , http://www.jbc.org/cgi/reprint/281/44/33078, DOI 10.1074/jbc.M607904200; Mandic, A., Viktorsson, K., Strandberg, L., Heiden, T., Hansson, J., Linder, S., Shoshan, M.C., Calpain-mediated bid cleavage and calpain-independent bak modulation: Two separate pathways in cisplatin-induced apoptosis (2002) Molecular and Cellular Biology, 22 (9), pp. 3003-3013. , DOI 10.1128/MCB.22.9.3003-3013.2002; Matsuno, H., Tanaka, Y., Aoshima, H., Biopathways representation and simulation on hybrid functional Petri net (2003) Silico Biol, 3, p. 0032; Muller, I.M., Dirsch, V.M., Rudy, A., Lopez-Anton, N., Pettit, G.R., Vollmar, A.M., Cephalostatin 1 inactivates Bcl-2 by hyperphosphorylation independent of M-phase arrest and DNA damage (2005) Molecular Pharmacology, 67 (5), pp. 1684-1689. , DOI 10.1124/mol.104.004234; Nakagawa, T., Yuan, J., Cross-talk between two cysteine protease families: Activation of caspase-12 by calpain in apoptosis (2000) Journal of Cell Biology, 150 (4), pp. 887-894. , DOI 10.1083/jcb.150.4.887; Nijhawan, D., Honarpour, N., Wang, X., Apoptosis in neural development and disease (2000) Annual Review of Neuroscience, 23, pp. 73-87. , DOI 10.1146/annurev.neuro.23.1.73; Pinney, J.W., Westhead, D.R., McConkey, G.A., Petri Net representations in systems biology (2003) Biochemical Society Transactions, 31 (6), pp. 1513-1515; Reddy, V.N., Liebman, M.N., Mavrovouniotis, M.L., Qualitative analysis of biochemical reaction systems (1996) Computers in Biology and Medicine, 26 (1), pp. 9-24. , DOI 10.1016/0010-4825(95)00042-9; Rehm, M., Huber, H.J., Dussmann, H., Prehn, J.H.M., Systems analysis of effector caspase activation and its control by X-linked inhibitor of apoptosis protein (2006) EMBO Journal, 25 (18), pp. 4338-4349. , DOI 10.1038/sj.emboj.7601295, PII 7601295; Rizzuto, R., Pinton, P., Ferrari, D., Chami, M., Szabadkai, G., Magalhaes, P.J., Di Virgilio, F., Pozzan, T., Calcium and apoptosis: Facts and hypotheses (2003) Oncogene, 22 (REV. ISS. 7), pp. 8619-8627. , DOI 10.1038/sj.onc.1207105; Rudy, A., Lopez-Anton, N., Dirsch, V.M., Vollmar, A.M., The cephalostatin way of apoptosis (2008) Journal of Natural Products, 71 (3), pp. 482-486. , DOI 10.1021/np070534e; Rudy, A., Lopez-Anton, N., Barth, N., Role of Smac in cephalostatin-induced cell death (2008) Cell Death Differ, 15, pp. 1930-1940; Szegezdi, E., Logue, S.E., Gorman, A.M., Samali, A., Mediators of endoplasmic reticulum stress-induced apoptosis (2006) EMBO Reports, 7 (9), pp. 880-885. , DOI 10.1038/sj.embor.7400779, PII 7400779; Tinel, A., Tschopp, J., The PIDDosome, a Protein Complex Implicated in Activation of Caspase-2 in Response to Genotoxic Stress (2004) Science, 304 (5672), pp. 843-846. , DOI 10.1126/science.1095432; Yap, R., (2006) Modeling the Receptor-mediated Pathway Using Hybrid Petri Nets., , Thesis College of Science, University of the Philippines\",\"Mendoza, E.R.; Physics Department and Center for NanoScience, Geschwister-Scholl-Platz 1, 80539 Munich, Germany; email: mendoza@lmu.de\",,,,,,,,15677818,,NCAOA,,\"English\",\"Nat. Comput.\",Article,\"Final\",\"\",Scopus,2-s2.0-80055004457\n\"Chen M., Hariharaputran S., Hofestädt R., Kormeier B., Spangardt S.\",\"55733197500;15843368800;6701732268;34872502400;54401716800;\",\"Petri net models for the semi-automatic construction of large scale biological networks\",2011,\"Natural Computing\",\"10\",\"3\",,\"1077\",\"1097\",,11,\"10.1007/s11047-009-9151-y\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-80054983310&doi=10.1007%2fs11047-009-9151-y&partnerID=40&md5=9ff31b2cc343a0be3beb71515509ab58\",\"Bioinformatics Department, College of Life Sciences, Zhejiang University, Hangzhou 310058, China; Bioinformatics Department, Faculty of Technology, Bielefeld University, 33615 Bielefeld, Germany\",\"Chen, M., Bioinformatics Department, College of Life Sciences, Zhejiang University, Hangzhou 310058, China; Hariharaputran, S., Bioinformatics Department, Faculty of Technology, Bielefeld University, 33615 Bielefeld, Germany; Hofestädt, R., Bioinformatics Department, Faculty of Technology, Bielefeld University, 33615 Bielefeld, Germany; Kormeier, B., Bioinformatics Department, Faculty of Technology, Bielefeld University, 33615 Bielefeld, Germany; Spangardt, S., Bioinformatics Department, Faculty of Technology, Bielefeld University, 33615 Bielefeld, Germany\",\"For the implementation of the virtual cell, the fundamental question is how to model and simulate complex biological networks. During the last 15 years, Petri nets have attracted more and more attention to help to solve this key problem. Regarding the published papers, it seems clear that hybrid functional Petri nets are the adequate method to model complex biological networks. Today, a Petri net model of biological networks is built manually by drawing places, transitions and arcs with mouse events. Therefore, based on relevant molecular database and information systems biological data integration is an essential step in constructing biological networks. In this paper, we will motivate the application of Petri nets for modeling and simulation of biological networks. Furthermore, we will present a type of access to relevant metabolic databases such as KEGG, BRENDA, etc. Based on this integration process, the system supports semi-automatic generation of the correlated hybrid Petri net model. A case study of the cardio-disease related generegulated biological network is also presented. MoVisPP is available at http://agbi.techfak.uni-bielefeld.de/ movispp/. © Springer Science+Business Media B.V. 2009.\",\"Cardio-disease network; Data integration; Functional Petri net; Model construction; MoVisPP\",\"analytic method; article; biochemistry; catalysis; cell communication; cell surface; computer simulation; data base; enzyme mechanism; gene control; gene regulatory network; genetic transcription; information processing; information system; mathematical computing; mathematical model; Michaelis Menten kinetics; molecular biology; molecular dynamics; operon; Petri net; promoter region; qualitative analysis; signal transduction\",,,,,\"European Commission, EC; Deutscher Akademischer Austauschdienst, DAAD; Deutsche Forschungsgemeinschaft, DFG; National Natural Science Foundation of China, NSFC; Universität Bielefeld\",\"Acknowledgements The work is supported in part by the EU project ‘‘CardioWorkBench’’ (http://www. cardioworkbench.eu/) and the BMBF Project (CHN 08/001). Ming Chen would like to thank DAAD fellowship and NSFC, MOST of China for related project financial support. Sridhar Hariharaputran would like to thank the DFG Graduate College Bioinformatics and Bioinformatics Department, Faculty of Technology at Bielefeld University for their financial support.\",,\"Alla, H., David, R., Continuous and hybrid Petri nets (1998) Journal of Circuits, Systems and Computers, 8 (1), pp. 159-188; Bairoch, A., The ENZYME database in 2000 (2000) Nucleic Acids Research, 28 (1), pp. 304-305; Berman, H.M., Westbrook, J., Feng, Z., Gilliland, G., Bhat, T.N., Weissig, H., Shindyalov, I.N., Bourne, P.E., The protein data bank (2000) Nucleic Acids Research, 28 (1), pp. 235-242; Chaouiya, C., Remy, E., Ruet, P., Qualitative modeling of genetic networks: From logical regulatory graphs to standard Petri nets (2004) Lect Notes Comput Sci, 3099, pp. 137-156; Chatr-aryamontri, A., Ceol, A., Palazzi, L.M., Nardelli, G., Schneider, M.V., Castagnoli, L., Cesareni, G., MINT: The Molecular INTeraction database (2007) Nucleic Acids Research, 35 (SUPPL. 1), pp. D572-D574. , DOI 10.1093/nar/gkl950; Chen, M., Modelling and simulation of metabolic networks: Petri nets approach and perspective (2002) Proceeding of ''esm 2002, 16th European Simulation Multiconference'', pp. 441-444. , June 3-5, Darmstadt, Germany; Chen, M., Hofestadt, R., Quantitative Petri net model of gene regulated metabolic networks in the cell (2003) In Silico Biology, 3 (3), pp. 347-365; Chen, M., Freier, A., Hofestädt, R., Bioinformatics approaches for metabolic pathways (2005) Handbook of Genome Research., pp. 461-490. , Sensen CW (ed) WILEY-VCH Verlag GmbH & Co., Weinheim; Comet, J.-P., Klaudel, H., Liauzu, S., Modeling multi-valued genetic regulatory networks using high-level petri nets (2005) Lecture Notes in Computer Science, 3536, pp. 208-227. , Applications and Theory of Petri Nets 2005: 26th International Conference, ICATPN 2005. Proceedings; Costanza, R., Voinov, A., Modeling ecological and economic systems with STELLA: Part III (2001) Ecological Modelling, 143 (1-2), pp. 1-7. , DOI 10.1016/S0304-3800(01)00358-1, PII S0304380001003581; David, R., Alla, H., (1992) Petri Nets and Grafcet-tools for Modeling Discrete Event Systems., , Prentice Hall Upper Saddle River; Doi, A., Drath, R., Nagasaki, M., Protein dynamics observations of lambda phage by hybrid Petri net (1999) Genome Inform, 10, pp. 217-218; Doi, A., Nagasaki, M., Matsuno, H., Simulation-based validation of the p53 transcriptional activity with hybrid functional Petri net (2006) Silico Biol, 6, p. 0001; Drath, R., Hybrid object nets: An object oriented concept for modeling complex hybrid systems (1998) Proc. Hybrid Dynamical Systems, 3rd International Conference on Automation of Mixed Processes, ADPM'98, pp. 437-442; Funahashi, A., Tanimura, N., Morohashi, M., Cell Designer: A process diagram editor for generegulatory and biochemical networks (2003) Biosilico, 1, pp. 159-162; Garvey, T.D., Lincoln, P., Pedersen, C.J., Martin, D., Johnson, M., BioSPICE: Access to the Most Current Computational Tools for Biologists (2003) OMICS A Journal of Integrative Biology, 7 (4), pp. 411-420; The Gene Ontology (GO) project in 2006 (2006) Nucleic Acids Res, 34, pp. D322-D326. , Gene Ontology Consortium; Genrich, H., Kueffner, R., Voss, K., Executable Petri net models for the analysis of metabolic pathways (2001) Int J STTT, 3 (4), pp. 394-404; Gilbert, D., Heiner, M., Rosser, S., Fulton, R., Gu, X., Trybilo, M., A case study in model-driven synthetic biology (2008) IFIP WCC 2008, 2nd IFIP Conference on Biologically Inspired Collaborative Computing (BICC 2008), 268, pp. 163-175. , Milano, September 2008. Springer, Boston, IFIP; Goryanin, I., Hodgman, T.C., Selkov, E., Mathematical simulation and analysis of cellular metabolism and regulation (1999) Bioinformatics, 15 (9), pp. 749-758. , DOI 10.1093/bioinformatics/15.9.749; Goss, P.J.E., Peccoud, J., Quantitative modeling of stochastic systems in molecular biology by using stochastic Petri nets (1998) Proceedings of the National Academy of Sciences of the United States of America, 95 (12), pp. 6750-6755. , DOI 10.1073/pnas.95.12.6750; Goss, P.J.E., Peccoud, J., Analysis of the stabilizing effect of Rom on the genetic network controlling ColE1 plasmid replication (1999) Pacific Symposium on biocomputing'99, pp. 65-76; Gronewold, A., Sonnenschein, M., Asynchronous layered cellular automata for the structured modeling of ecological systems (1997) 9th European Simulation Symposium (ESS'97), pp. 286-290. , SCS; Gronewold, A., Sonnenschein, M., Event-based modelling of ecological systems with asynchronous cellular automata (1998) Ecological Modelling, 108 (1-3), pp. 37-52. , DOI 10.1016/S0304-3800(98)00017-9, PII S0304380098000179; Hamosh, A., Scott, A.F., Amberger, J.S., Bocchini, C.A., McKusick, V.A., Online Mendelian Inheritance in Man (OMIM), a knowledgebase of human genes and genetic disorders (2005) Nucleic Acids Research, 33 (DATABASE ISS.), pp. D514-D517. , DOI 10.1093/nar/gki033; Heiner, M., Koch, I., Will, J., Model validation of biological pathways using Petri nets - Demonstrated for apoptosis (2004) BioSystems, 75 (1-3), pp. 15-28. , DOI 10.1016/j.biosystems.2004.03.003, PII S030326470400036X; Heiner, M., Richter, R., Schwarick, M., Rohr, C., Snoopy - A tool to design and execute graph-based formalisms (2008) Petri Net Newsl, 74, pp. 8-22; Heiner, M., Gilbert, D., Donaldson, R., Petri nets for systems and synthetic biology (2008) SFM 2008, LNCS, 5016, pp. 215-264. , Bernardo M, Degano P, Zavattaro G (eds). Springer, Heidelberg; Hofestädt, R., A Petri net application to model metabolic processes (1994) SAMS, 16, pp. 113-122; Hofestädt, R., Thelen, S., Quantitative modeling of biochemical networks (1998) Silico Biol, 1, pp. 39-53; Hoops, S., Gauges, R., Lee, C., Pahle, J., Simus, N., Singhal, M., Xu, L., Kummer, U., COPASI - A COmplex PAthway SImulator (2006) Bioinformatics, 22 (24), pp. 3067-3074. , DOI 10.1093/bioinformatics/btl485; Hu, Z.J., Mellor, J., Wu, J., VisANT: An online visualization and analysis tool for biological interaction data (2004) BMC Bioinform, 5, p. 17; Huang, H., Barker, W.C., Chen, Y., Wu, C.H., IProClass: An integrated database of protein family, function and structure information (2003) Nucleic Acids Research, 31 (1), pp. 390-392. , DOI 10.1093/nar/gkg044; Jacob, F., Monod, J., Genetic regulatory mechanisms in the synthesis of proteins (1961) J Mol Biol, 3, pp. 318-356; Kanehisa, M., Goto, S., KEGG: Kyoto Encyclopedia of Genes and Genomes (2000) Nucleic Acids Research, 28 (1), pp. 27-30; Kauffman, S., Metabolic stability and epigenesis in randomly connected nets (1969) J Theor Biol, 11, pp. 326-356; Kitano, H., Funahashi, A., Matsuoka, Y., Oda, K., Using process diagrams for the graphical representation of biological networks (2005) Nature Biotechnology, 23 (8), pp. 961-966. , DOI 10.1038/nbt1111; Koh, G., Teong, H., Clément, V., A decompositional approach to parameter estimation in pathway modeling: A case study of the Akt and MAPK pathway and their crosstalk (2006) Bioinformatics, 2, pp. 271-280; Kueffner, R., Zimmer, R., Lengauer, T., Pathway analysis in metabolic databases via differential metabolic display (DMD) (2000) Bioinformatics, 16 (9), pp. 825-836; Lee, D.-Y., Zimmer, R., Lee, S.Y., Park, S., Colored Petri net modeling and simulation of signal transduction pathways (2006) Metabolic Engineering, 8 (2), pp. 112-122. , DOI 10.1016/j.ymben.2005.10.001, PII S1096717605000959; Loew, L.M., Schaff, J.C., The Virtual Cell: A software environment for computational cell biology (2001) Trends in Biotechnology, 19 (10), pp. 401-406. , DOI 10.1016/S0167-7799(01)01740-1, PII S0167779901017401; Matsuno, H., Doi, A., Nagasaki, M., Hybrid Petri net representation of gene regulatory network (2000) Pac Symp Biocomput, 5, pp. 338-349; Matsuno, H., Doi, A., Drath, R., Genomic Object Net: Basic architecture for representing and simulating biopathways (2001) RECOMB'2001, , April 20, Montréal, Canada; Matsuno, H., Murakami, R., Yamane, R., Boundary formation by notch signaling in Drosophila multicellular systems: Experimental observations and a gene network modeling by Genomic Object Net (2003) Pac Symp Biocomput, pp. 152-163; Mendes, P., GEPASI: A software package for modelling the dynamics, steady states and control of biochemical and other systems (1993) Computer Applications in the Biosciences, 9 (5), pp. 563-571; Michaelis, L., Menten, M.L., Die Kinetik der Invertinwirkung (1913) Biochem Z, 49, pp. 333-369; Michal, G., Biochemical pathways wall chart (1982) Boehringer Mannheim GmbH Biochemica, , Mannheim; Nagasaki, M., Doi, A., Matsuno, H., Genomic Object Net: A platform for modelling and simulating biopathways (2003) Appl Bioinform, 2 (3), pp. 181-184; Nagasaki, M., Doi, A., Matsuno, H., Integrating biopathway databases for large-scale modeling and simulation (2004) The Second Asia-Pacific Bioinformatics Conferences Volume 29 of Conferences in Research and Practice in Information Technology, pp. 43-52. , Australian Computer Society; Petri, C.A., (1962) Kommunikation Mit Automaten., , Dissertation, Institut für Instrumentelle Mathematik, Schriften des IIM Nr. 2 Bonn; Reddy, V.N., Mavrovouniotis, M.L., Liebman, M.N., Petri Net representation in metabolic pathways (1993) Proceedings First International Conference on Intelligent Systems for Molecular Biology, pp. 328-336. , AAAI Press, Menlo Park; Reisig, W.A., (1982) Primer in Petri Net Design, , Springer Berlin; Ruth, M., Hannon, B., (1997) Modeling Dynamic Biological Systems., , Springer New York; Sackmann, A., Heiner, M., Koch, I., Application of Petri net based analysis techniques to signal transduction pathways (2006) BMC Bioinform, 7, p. 482; Sauro, H.M., SCAMP: A general-purpose simulator and metabolic control analysis program (1993) Computer Applications in the Biosciences, 9 (4), pp. 441-450; Shaw, O., Steggles, J., Wipat, A., Automatic Parameterisation of Stochastic Petri Net Models of Biological Networks (2006) Electronic Notes in Theoretical Computer Science, 151 (3), pp. 111-129. , DOI 10.1016/j.entcs.2006.03.015, PII S1571066106003628, Proceedings of the Second International Workshop on the Practical Application of Stochastic Modeling (PASM 2005); Siepel, A., Farmer, A., Tolopko, A., Zhuang, M., Mendes, P., Beavis, W., Sobral, B., ISYS: A decentralized, component-based approach to the integration of heterogeneous bioinformatics resources (2001) Bioinformatics, 17 (1), pp. 83-94; Simao, E., Remy, E., Thieffry, D., Qualitative modeling of regulated metabolic pathways: Application to the tryptophan biosynthesis in E. coli (2005) Bioinformatics, 21, pp. 190-196; Steggles, L.J., Banks, R., Shaw, O., Wipat, A., Qualitatively modelling and analysing genetic regulatory networks: A Petri net approach (2007) Bioinformatics, 23 (3), pp. 336-343. , DOI 10.1093/bioinformatics/btl596; Tomita, M., Hashimoto, K., Takahashi, K., Shimizu, T.S., Matsuzaki, Y., Miyoshi, F., Saito, K., Hutchison III, C.A., E-CELL: Software environment for whole-cell simulation (1999) Bioinformatics, 15 (1), pp. 72-84. , DOI 10.1093/bioinformatics/15.1.72; Troncale, S., Tahi, F., Campard, D., Modeling and simulation with hybrid functional Petri nets of the role of Interleukin-6 in human early haematopoiesis (2006) Pac Symp Biocomput, 11, pp. 427-438; Valk, R., Self-modifying nets: A natural extension of Petri nets (1978) LNCS, 62, pp. 464-476; Voss, K., Heiner, M., Koch, I., Steady state analysis of metabolic pathways using Petri nets (2003) Silico Biol, 3, p. 0031\",\"Hofestädt, R.; Bioinformatics Department, , 33615 Bielefeld, Germany; email: ralf.hofestaedt@uni-bielefeld.de\",,,,,,,,15677818,,NCAOA,,\"English\",\"Nat. Comput.\",Article,\"Final\",\"\",Scopus,2-s2.0-80054983310\n\"Lamprecht R., Smith G.D., Kemper P.\",\"25653940400;55740959000;56213181300;\",\"Stochastic Petri net models of Ca 2+ signaling complexes and their analysis\",2011,\"Natural Computing\",\"10\",\"3\",,\"1045\",\"1075\",,7,\"10.1007/s11047-009-9143-y\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-80054981646&doi=10.1007%2fs11047-009-9143-y&partnerID=40&md5=e2a693d343489dcc897d85425137549d\",\"Department of Computer Science, College of William and Mary, Williamsburg, VA 23187, United States; Department of Applied Sciences, College of William and Mary, Williamsburg, VA 23187, United States\",\"Lamprecht, R., Department of Computer Science, College of William and Mary, Williamsburg, VA 23187, United States; Smith, G.D., Department of Applied Sciences, College of William and Mary, Williamsburg, VA 23187, United States; Kemper, P., Department of Computer Science, College of William and Mary, Williamsburg, VA 23187, United States\",\"Mathematical models of Ca 2+ release sites derived from Markov chain models of intracellular Ca 2+ channels exhibit collective gating reminiscent of the experimentally observed phenomenon of stochastic Ca 2+ excitability (i.e., puffs and sparks). Ca 2+ release site models are composed of a number of individual channel models whose dynamic behavior depends on the local Ca 2+ concentration which is influenced by the state of all channels. We consider this application area to illustrate how stochastic Petri nets and in particular stochastic activity networks can be used to model dynamical phenomena in cell biology. We highlight how state-sharing composition operations as supported by the Möbius framework can represent both mean-field and spatial coupling assumptions in a natural manner. We investigate how state-of-the-art techniques for the numerical and simulative analysis of Markov chains associated with stochastic Petri nets scale when modeling Ca 2+ signaling complexes of physiological size and complexity. © Springer Science+Business Media B.V. 2009.\",\"Ca 2+ release sites; Petri net; Stochastic activity networks\",\"calcium channel; analytic method; article; biochemistry; calcium signaling; calcium transport; cell synchronization; controlled study; endoplasmic reticulum; gene regulatory network; hidden Markov model; kinetics; mathematical analysis; mathematical computing; mathematical model; membrane depolarization; molecular dynamics; molecular interaction; Petri net; probability; protein protein interaction; sarcoplasmic reticulum; signal transduction; stochastic model\",,,,,,,,\"Benoit, A., Brenner, L., Fernandes, P., Plateau, B., Aggregation of stochastic automata networks with replicas (2004) Linear Algebra Appl, 386, pp. 111-136; Berridge, M.J., Elementary and global aspects of calcium signalling (1997) Journal of Physiology, 499 (2), pp. 291-306; Berridge, M.J., Calcium microdomains: Organization and function (2006) Cell Calcium, 40 (5-6), pp. 405-412. , DOI 10.1016/j.ceca.2006.09.002, PII S0143416006001709; Bray, D., Signaling complexes: Biophysical constraints on intracellular communication (1998) Annual Review of Biophysics and Biomolecular Structure, 27, pp. 59-75. , DOI 10.1146/annurev.biophys.27.1.59; Buchholz, P., Exact and ordinary lumpability in finite Markov chains (1994) J Appl Probab, 31 (1), pp. 59-74; Buchholz, P., Equivalence relations for stochastic automata networks (1995) Computation with Markov Chains., pp. 197-216. , Stewart WJ (ed), Kluwer, Boston, MA; Buchholz, P., Adaptive decomposition and approximation for the analysis of stochastic Petri nets (2004) Perform Eval, 56 (1-4), pp. 23-52; Buchholz, P., Dayar, T., Comparison of multilevel methods for Kronecker-based Markovian representations (2004) Computing, 73 (4), pp. 349-371; Chaouiya, C., Petri net modelling of biological networks (2007) Briefings in Bioinformatics, 8 (4), pp. 210-219. , DOI 10.1093/bib/bbm029, Integrative Biology; Chiola, G., Dutheillet, C., Franceschinis, G., Haddad, S., Stochastic well-formed colored nets and symmetric modeling applications (1993) IEEE Trans Comput, 42 (11), pp. 1343-1360; Cho, W., Building signaling complexes at the membrane (2006) Science's STKE, 2006 (321), pp. pe7; Ciardo, G., (1989) Analysis of Large Stochastic Petri Net Models., , PhD thesis Duke University; Ciardo, G., Miner, A.S., A data structure for the efficient Kronecker solution of GSPNs (1999) Proceedings of the 8th International Workshop on Petri Nets and Performance Models., pp. 22-31. , IEEE CS; Ciardo Gianfranco, Trivedi Kishor, S., Decomposition approach for stochastic reward net models (1993) Performance Evaluation, 18 (1), pp. 37-59. , DOI 10.1016/0166-5316(93)90026-Q; Ciardo, G., Marmorstein, R.M., Siminiceanu, R., Saturation unbound (2003) 9th International Conference on Tools and Algorithms for the Construction and Analysis of Systems, 2619, pp. 379-393. , Springer, Berlin; Colquhoun, D., Hawkes, A.G., A Q-matrix cookbook: How to write only one program to calculate the single-channel and macroscopic predictions for any kinetic mechanism (1995) Singel-channel Recording, pp. 589-633. , 2nd edn. Plenum Press, New York; Deavours, D.D., Clark, G., Courtney, T., Daly, D., Derisavi, S., Doyle, J.M., Sanders, W.H., Webster, P.G., The Möbius framework and its implementation (2002) IEEE Trans Softw Eng, 28 (10), pp. 956-969; DeRemigio, H., Smith, G.D., The dynamics of stochastic attrition viewed as an absorption time on a terminating Markov chain (2005) Cell Calcium, 38 (2), pp. 73-86. , DOI 10.1016/j.ceca.2005.06.007, PII S014341600500076X; Deremigio, H., Kemper, P., Lamar, M.D., Smith, G.D., Markov chain models of couples intracellular calcium channels: Kronecker structured representations and benchmark stationary distribution calculations (2007) Pac Symp Biocomput, 13, pp. 354-365; Deremigio, H., Groff, J.R., Smith, G.D., Calcium release site ultrastructure and the dynamics of puffs and sparks (2008) Math Med Biol, 25 (1), pp. 65-85; Deremigio, H., Lamar, M.D., Kemper, P., Smith, G.D., Markov chain models of coupled calcium channels: Kronecker representations and iterative solution methods (2008) Phys Biol, 5 (3), p. 36003; Derisavi, S., Hermanns, H., Sanders, W.H., Optimal state-space lumping in Markov chains (2003) Inf Process Lett, 87 (6), pp. 309-315; Derisavi, S., Kemper, P., Sanders, W.H., Symbolic state-space exploration and numerical analysis of state-sharing composed models (2004) Linear Algebra Appl, 386, pp. 137-166; Derisavi, S., Kemper, P., Sanders, W.H., Lumping matrix diagram representations of markov models (2005) Proceedings of the International Conference on Dependable Systems and Networks, pp. 742-751. , Proceedings - 2005 International Conference on Dependable Systems and Networks; De Young, G.W., Keizer, J., A single-pool inositol 1,4,5-trisphosphate-receptor-based model for agoniststimulated oscillations in Ca 2+ concentration (1992) Proc Natl Acad Sci, 89, pp. 9895-9899; Donatelli, S., Superposed generalized stochastic Petri nets: Definition and efficient solution (1994) Proceedings of the 15th International Conference on Application and Theory of Petri Nets, Lecture Notes in Computer Science, 815, pp. 258-277. , Springer, Berlin; Duke, T.A.J., Bray, D., Heightened sensitivity of a lattice of membrane receptors (1999) Proceedings of the National Academy of Sciences of the United States of America, 96 (18), pp. 10104-10108. , DOI 10.1073/pnas.96.18.10104; Duke, T.A.J., Le Novere, N., Bray, D., Conformational spread in a ring of proteins: A stochastic approach to allostery (2001) Journal of Molecular Biology, 308 (3), pp. 541-553. , DOI 10.1006/jmbi.2001.4610; Fishman, G.S., (1978) Principles of Discrete Event Simulation., , Wiley, New York, NY, USA; Fox, B.L., Glynn, P.W., Computing poisson probabilities (1988) Commun ACM, 31 (4), pp. 440-445; Gillespie, D.T., Exact stochastic simulation of coupled chemical reactions (1977) J Phys Chem, 81 (25), pp. 2340-2361; Gomperts, B.D., Tatham, P.E., Kramer, I.M., (2002) Signal Transduction, , Academic Press San Diego, CA; Goss, P.J.E., Peccoud, J., Quantitative modeling of stochastic systems in molecular biology by using stochastic Petri nets (1998) Proceedings of the National Academy of Sciences of the United States of America, 95 (12), pp. 6750-6755. , DOI 10.1073/pnas.95.12.6750; Griffith, M., Courtney, T., Peccoud, J., Sanders, W.H., Dynamic partitioning for hybrid simulation of the bistable HIV-1 transactivation network (2006) Bioinformatics, 22 (22), pp. 2782-2789. , DOI 10.1093/bioinformatics/btl465; Groff, J.R., Smith, G.D., Calcium-dependent inactivation and the dynamics of calcium puffs and sparks (2008) J Theor Biol, 253 (3), pp. 483-499; Groff, J.R., Deremigio, H., Smith, G.D., Markov chain models of ion channels and the collective gating of calcium release sites (2009) Stochastic Methods in Neuroscience, pp. 29-64. , Oxford University Press, Oxford; Hardy, S., Robillard, P.N., Petri net-based method for the analysis of the dynamics of signal propagation in signaling pathway (2007) Bioinformatics, 24 (2), pp. 209-217; Heiner, M., Koch, I., Petri net based model validation in systems biology (2004) Proceedings of the 25th International Conference on Application and Theory of Petri Nets, Lecture Notes in Computer Science, 3099, pp. 216-237. , Springer, Berlin; Hermanns, H., Interactive Markov chains and the quest for quantified quality (2002) Lecture Notes in Computer Science, 2428. , Springer, Berlin; Hill, T.L., (1977) Free Energy Transduction in Biology: The Steady-state Kinetic and Thermodynamic Formalism., , Academic Press New York; Hillston, J., Process algebras for quantitative analysis (2005) Proceedings - Symposium on Logic in Computer Science, pp. 239-248. , Proceedings - 20th Annual IEEE symposium on Logic in Computer Science, LICS 2005; Jansen, D.N., Hermanns, H., Dependability checking with StoCharts: Is train radio reliable enough for trains? (2004) Proceedings - First International Conference on the Quantitative Evaluation of Systems, QEST 2004, pp. 250-259. , Proceedings - First International Conference on the Quantitative Evaluation of Systems, QEST 2004; Kemeney, J.G., Snell, J.L., (1960) Finite Markov Chains., , D. Van Nostrand Company, Princeton, NJ; Krauss, G., (2003) Biochemistry of Signal Transduction and Regulation., , Wiley-VCH, Weinheim; Law, A.M., Kelton, W.D., (2000) Simulation Modeling and Analysis., , McGraw Hill New York; Lecca, P., A time-dependent extension of Gillespie algorithm for biochemical stochastic π - Calculus (2006) Proceedings of the ACM Symposium on Applied Computing, 1, pp. 137-144. , Applied Computing 2006 - The 21st Annual ACM Symposium on Applied Computing - Proceedings of the 2006 ACM Symposium on Applied Computing; Mak, D.-O.D., Foskett, J.K., Single-channel kinetics, inactivation, and spatial distribution of inositol trisphosphate (IP 3) receptors in Xenopus oocyte nucleus (1997) Journal of General Physiology, 109 (5), pp. 571-587. , DOI 10.1085/jgp.109.5.571; Marsan, M.A., Balbo, G., Conte, G., Donatelli, S., Franceschinis, G., (1995) Modelling with Generalized Stochastic Petri Nets Wiley Series in Parallel Computing, , Wiley Inc, New York; Materi, W., Wishart, D.S., Computational systems biology in drug discovery and development: methods and applications (2007) Drug Discovery Today, 12 (7-8), pp. 295-303. , DOI 10.1016/j.drudis.2007.02.013, PII S1359644607000943; Matsuno, H., Li, C., Miyano, S., Petri net based descriptions for systematic understanding of biological pathways (2006) IEICE Transactions on Fundamentals of Electronics, Communications and Computer Sciences, E89-A (11), pp. 3166-3174. , DOI 10.1093/ietfec/e89-a.11.3166; McQuinn, M.G., Kemper, P., Sanders, W.H., Dependability analysis with Markov chains: How symmetries improve symbolic computations (2007) Proceedings of the 4th International Conference on Quantitative Evaluation of Systems (QEST)., pp. 151-160. , IEEE CS; Miner, A.S., Parker, D., Symbolic representations and analysis of large probabilistic systems (2004) Validation of Stochastic Systems: A Guide to Current Research, Lecture Notes in Computer Science, 2925. , Springer, Berlin; Nguyen, V., Mathias, R., Smith, G.D., A stochastic automata network descriptor for Markov chain models of instantaneously coupled intracellular Ca 2+ channels (2005) Bulletin of Mathematical Biology, 67 (3), pp. 393-432. , DOI 10.1016/j.bulm.2004.08.010; Obal, W.D.I.I., (1998) Measure-adaptive State-space Construction Methods., , PhD thesis University of Arizona; Obal II, W.D., McQuinn, M.G., Sanders, W.H., Detecting and exploiting symmetry in discrete-state Markov models (2007) IEEE Transactions on Reliability, 56 (4), pp. 643-654. , DOI 10.1109/TR.2007.909761; Peccoud, J., Courtney, T., Sanders, W.H., Möbius: An integrated discrete-event modeling environment (2007) Bioinformatics, 23 (24), pp. 3412-3414. , DOI 10.1093/bioinformatics/btm517; Peleg, M., Yeh, I., Altman, R.B., Modelling biological processes using workflow and Petri Net models (2002) Bioinformatics, 18 (6), pp. 825-837; Peleg, M., Rubin, D., Altman, R.B., Using Petri Net tools to study properties and dynamics of biological systems (2005) Journal of the American Medical Informatics Association, 12 (2), pp. 181-199. , DOI 10.1197/jamia.M1637; Priami, C., Stochastic p-calculus (1995) Comput J, 38 (7), pp. 578-589; Priese, L., Wimmel, H., (2003) Theoretische Informatik: Petri-Netze (In German)., , Springer Berlin; Sanders, W.H., Meyer, J.F., Reduced base model construction methods for stochastic activity networks (1991) IEEE J Sel Areas Commun, Special Issue on Computer-Aided Model Anal des Netw, 9 (1), pp. 25-36; Sanders, W.H., Meyer, J.F., Stochastic activity networks: Formal definitions and concepts (2001) Lecture Notes in Computer Science, (2090), pp. 315-343; Schaub, M.A., Henzinger, T.A., Fisher, J., Qualitative networks: A symbolic approach to analyze biological signaling networks (2007) BMC Syst Biol, 1 (4); Schwarick, M., Transient analysis of stochastic Petri nets with interval decision diagrams (2008) Proceeding of the 15th German Workshop on Algorithms and Tools for Petri Nets, AWPN 2008, CEURWS. Org, CEUR Workshop Proceedings, 380, pp. 43-48; Sneyd, J., Falcke, M., Models of the inositol trisphosphate receptor (2005) Progress in Biophysics and Molecular Biology, 89 (3), pp. 207-245. , DOI 10.1016/j.pbiomolbio.2004.11.001, PII S007961070400166X; Srivastava, R., You, L., Summers, J., Yin, J., Stochastic vs. deterministic modeling of intracellular viral kinetics (2002) Journal of Theoretical Biology, 218 (3), pp. 309-321. , DOI 10.1006/jtbi.2002.3078; Steggles, L.J., Banks, R., Shaw, O., Wipat, A., Qualitatively modelling and analysing genetic regulatory networks: A Petri net approach (2007) Bioinformatics, 23 (3), pp. 336-343. , DOI 10.1093/bioinformatics/btl596; Stewart, W.J., (1994) Introduction to the Numerical Solution of Markov Chains, , Princeton University Press, Princeton; Sun, X.-P., Callamaras, N., Marchant, J.S., Parker, I., A continuum of InsP 3-mediated elementary Ca 2+ signalling events in Xenopus oocytes (1998) Journal of Physiology, 509 (1), pp. 67-80. , DOI 10.1111/j.1469-7793.1998.067bo.x; Yao, Y., Choi, J., Parker, I., Quantal puffs of intracellular Ca 2+ evoked by iinositol trisphosphate in Xenopus oocytes (1995) J Physiol, 482 (3), pp. 533-553\",\"Lamprecht, R.; Department of Computer Science, , Williamsburg, VA 23187, United States; email: rlampy@cs.wm.edu\",,,,,,,,15677818,,NCAOA,,\"English\",\"Nat. Comput.\",Article,\"Final\",\"\",Scopus,2-s2.0-80054981646\n\"Heiner M.\",\"6602723511;\",\"Preface: Petri nets for systems and synthetic biology\",2011,\"Natural Computing\",\"10\",\"3\",,\"987\",\"992\",,3,\"10.1007/s11047-011-9263-z\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-80054966651&doi=10.1007%2fs11047-011-9263-z&partnerID=40&md5=a95243cd2cfe88e66c5babc67d9cb5b9\",\"Brandenburg University of Technology, Cottbus, Germany\",\"Heiner, M., Brandenburg University of Technology, Cottbus, Germany\",[No abstract available],,\"analytic method; apoptosis; Continuous Petri Net; hidden Markov model; kinetics; mathematical analysis; mathematical model; molecular dynamics; molecular evolution; Petri net; review; semantics; statistics; Stochastic Petri Net; synthetic biology; system analysis; systems biology\",,,,,,,,\"Ajmone Marsan, M., Balbo, G., Conte, G., Donatelli, S., Franceschinis, G., Modelling with generalized stochastic Petri nets (1995) Wiley Series in Parallel Computing, , 2nd edn. Wiley, New York; Baldan, P., Cocco, N., Marin, A., Simeoni, M., Petri nets for modelling metabolic pathways: A survey (2010) J Nat Comput, 9 (4), pp. 955-989; Chaouiya, C., Petri net modelling of biological networks (2007) Briefings in Bioinformatics, 8 (4), pp. 210-219. , DOI 10.1093/bib/bbm029, Integrative Biology; David, R., Alla, H., (2005) Discrete, continuous, and hybrid Petri nets, , Springer, Berlin; Doi, A., Drath, R., Nagaska, M., Matsuno, H., Miyano, S., Protein dynamics observations of lambda-phage by hybrid Petri net (1999) Genome Inform, 10, pp. 217-218; Gilbert, D., Heiner, M., Lehrack, S., A unifying framework for modelling and analysing biochemical pathways using Petri nets (2007) LNCS/LNBI, 4695, pp. 200-216. , Proceedings of the CMSB, Springer Heidelberg; Heiner, M., Gilbert, D., How might petri nets enhance your systems biology toolkit (2011) LNCS, 6709, pp. 17-37. , Proceedings of the PETRI NETS 2011, Springer, Heidelberg; Heiner, M., Gilbert, D., Donaldson, R., Petri nets in systems and synthetic biology (2008) LNCS, 5016, pp. 215-264. , Schools on formal methods (SFM), Springer, Heidelberg; Heiner, M., Lehrack, S., Gilbert, D., Marwan, W., Extended stochastic Petri nets for model-based design of wetlab experiments (2009) LNCS, pp. 138-163. , Transactions on computational systems biology XI, Springer, Heidelberg; Heiner, M., Schwarick, M., Tovchigrechko, A., DSSZ-MC - A tool for symbolic analysis of extended Petri nets (2009) LNCS, 5606, pp. 323-332. , Proceedings of the PETRI NETS 2009, Springer, Heidelberg; Herajy, M., Heiner, M., Hybrid Petri nets for modelling of hybrid biochemical interactions (2010) Proceedings of the 17th German Workshop on Algorithms and Tools for Petri Nets (AWPN 2010). CEUR Workshop Proceedings, 643, pp. 66-79. , http://www.CEUR-WS.org; Merlin, P.M., (1974) A Study of the Recoverability of Computing Systems, , University of California Irvine. PhD Thesis 1974. Available from University Microfilms, Ann Arbor. No. 75-11026; Soliman, S., Heiner, M., A unique transformation from ordinary differential equations to reaction networks (2010) PLoS ONE, 5 (12), pp. e14284; Valk, R., Self-modifying nets, a natural extension of Petri nets Automata, languages and programming (1978) LNCS, 62, pp. 464-476. , Springer, Heidelberg\",\"Heiner, M.; Brandenburg University of Technology, Cottbus, Germany; email: monika.heiner@brunel.ac.uk\",,,,,,,,15677818,,NCAOA,,\"English\",\"Nat. Comput.\",Review,\"Final\",\"\",Scopus,2-s2.0-80054966651\n\"Toni T., Jovanovic G., Huvet M., Buck M., Stumpf M.P.H.\",\"24475621200;57197626852;23091118300;7201363666;7006271146;\",\"From qualitative data to quantitative models: Analysis of the phage shock protein stress response in Escherichia coli\",2011,\"BMC Systems Biology\",\"5\",,\"69\",\"\",\"\",,15,\"10.1186/1752-0509-5-69\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-79955836545&doi=10.1186%2f1752-0509-5-69&partnerID=40&md5=d12810a00b1940b96dcfcab49030b6f3\",\"Division of Molecular Biosciences, Imperial College London, South Kensington, London SW7 2AZ, United Kingdom; Centre for Integrative Systems Biology, Imperial College London, South Kensington, London SW7 2AZ, United Kingdom; Division of Biology, Imperial College London, South Kensington, London SW7 2AZ, United Kingdom; Department of Biological Engineering, Massachusetts Institute of Technology, Cambridge, MA 02139, United States\",\"Toni, T., Division of Molecular Biosciences, Imperial College London, South Kensington, London SW7 2AZ, United Kingdom, Centre for Integrative Systems Biology, Imperial College London, South Kensington, London SW7 2AZ, United Kingdom, Department of Biological Engineering, Massachusetts Institute of Technology, Cambridge, MA 02139, United States; Jovanovic, G., Division of Biology, Imperial College London, South Kensington, London SW7 2AZ, United Kingdom; Huvet, M., Division of Molecular Biosciences, Imperial College London, South Kensington, London SW7 2AZ, United Kingdom; Buck, M., Division of Biology, Imperial College London, South Kensington, London SW7 2AZ, United Kingdom; Stumpf, M.P.H., Division of Molecular Biosciences, Imperial College London, South Kensington, London SW7 2AZ, United Kingdom, Centre for Integrative Systems Biology, Imperial College London, South Kensington, London SW7 2AZ, United Kingdom\",\"Background: Bacteria have evolved a rich set of mechanisms for sensing and adapting to adverse conditions in their environment. These are crucial for their survival, which requires them to react to extracellular stresses such as heat shock, ethanol treatment or phage infection. Here we focus on studying the phage shock protein (Psp) stress response in Escherichia coli induced by a phage infection or other damage to the bacterial membrane. This system has not yet been theoretically modelled or analysed in silico.Results: We develop a model of the Psp response system, and illustrate how such models can be constructed and analyzed in light of available sparse and qualitative information in order to generate novel biological hypotheses about their dynamical behaviour. We analyze this model using tools from Petri-net theory and study its dynamical range that is consistent with currently available knowledge by conditioning model parameters on the available data in an approximate Bayesian computation (ABC) framework. Within this ABC approach we analyze stochastic and deterministic dynamics. This analysis allows us to identify different types of behaviour and these mechanistic insights can in turn be used to design new, more detailed and time-resolved experiments.Conclusions: We have developed the first mechanistic model of the Psp response in E. coli. This model allows us to predict the possible qualitative stochastic and deterministic dynamic behaviours of key molecular players in the stress response. Our inferential approach can be applied to stress response and signalling systems more generally: in the ABC framework we can condition mathematical models on qualitative data in order to delimit e.g. parameter ranges or the qualitative system dynamics in light of available end-point or qualitative information. © 2011 Toni et al; licensee BioMed Central Ltd.\",,\"Bacteria (microorganisms); Escherichia coli; bacterial protein; Escherichia coli protein; heat shock protein; algorithm; article; bacteriophage; Bayes theorem; biological model; biology; chemistry; computer simulation; Escherichia coli; gene expression regulation; genetics; metabolism; methodology; Monte Carlo method; probability; statistics; systems biology; Algorithms; Bacterial Proteins; Bacteriophages; Bayes Theorem; Computational Biology; Computer Simulation; Escherichia coli; Escherichia coli Proteins; Gene Expression Regulation, Bacterial; Heat-Shock Proteins; Models, Biological; Monte Carlo Method; Probability; Stochastic Processes; Systems Biology\",,\"Bacterial Proteins; Escherichia coli Proteins; Heat-Shock Proteins\",,,\"Wellcome Trust, WT; Medical Research Council, MRC; Biotechnology and Biological Sciences Research Council, BBSRC: BB/G007934/1, BB/G020434/1; Royal Society\",\"We thank Professor Peter Taylor for hosting T.T. at the University of Melbourne in January and February 2009, where part of this research was done. We thank Juliane Liepe, Erika Cule and Kamil Erguler for support with programming. This work was supported through an MRC priority studentship to T.T., BBSRC and Wellcome Trust support to M.B. and M.P.H.S.; M.P.H.S. is a Royal Society Wolfson Research Merit Award holder.\",,\"Rowley, G., Spector, M., Kormanec, J., Roberts, M., Pushing the envelope: extracytoplasmic stress responses in bacterial pathogens (2006) Nat Rev Microbiol, 4 (5), pp. 383-394. , http://www.nature.com/nrmicro/journal/v4/n5/abs/nrmicro1394.html;jsessionid=EB38DF662D919AFA165074D399215E22, 10.1038/nrmicro1394, 16715050; Duguay, A., Silhavy, T., Quality control in the bacterial periplasm (2004) Biochim Biophys Acta, 1694 (1-3), pp. 121-134. , http://www.sciencedirect.com/science/article/pii/S0167488904000928, 10.1016/j.bbamcr.2004.04.012, 15546662; Darwin, A., The phage-shock-protein response (2005) Mol Microbiol, 57 (3), pp. 621-628. , http://www.blackwell-synergy.com/doi/abs/10.1111/j.1365-2958.2005.04694.x, 10.1111/j.1365-2958.2005.04694.x, 16045608; Huvet, M., Toni, T., Sheng, X., Thorne, T., Jovanovic, G., Engl, C., Buck, M., Stumpf, M.P.H., The Evolution of the Phage Shock Protein Response System: Interplay between Protein Function, Genomic Organization, and System Function (2011) Molecular biology and evolution, 28 (3), pp. 1141-1155. , 10.1093/molbev/msq301, 3041696, 21059793; Toni, T., Welch, D., Strelkowa, N., Ipsen, A., Stumpf, M.P.H., Approximate Bayesian computation scheme for parameter inference and model selection in dynamical systems (2009) J R Soc Interface, 6, pp. 187-202. , http://journals.royalsociety.org/content/0213t54011n31k27/, 10.1098/rsif.2008.0172, 2658655, 19205079; Bukau, B., Regulation of the Escherichia coli heat-shock response (1993) Mol Microbiol, 9 (4), pp. 671-680. , http://www.ncbi.nlm.nih.gov/pubmed/7901731?dopt=abstract, 10.1111/j.1365-2958.1993.tb01727.x, 7901731; Jovanovic, G., Lloyd, L., Stumpf, M., Mayhew, A., Buck, M., Induction and function of the phage shock protein extracytoplasmic stress response in Escherichia coli (2006) J Biol Chem, 281 (30), pp. 21147-21161. , http://www.jbc.org/cgi/content/abstract/281/30/21147, 10.1074/jbc.M602323200, 16709570; Joly, N., Engl, C., Jovanovic, G., Huvet, M., Toni, T., Sheng, X., Stumpf, M., Buck, M., Managing membrane stress: the phage shock protein (Psp) response, from molecular mechanisms to physiology (2010) FEMS microbiology reviews, 34, pp. 797-827. , http://onlinelibrary.wiley.com/doi/10.1111/j.1574-6976.2010.00240.x/pdf; Brissette, J.L., Russel, M., Weiner, L., Model, P., Phage shock protein, a stress protein of Escherichia coli (1990) Proc Natl Acad Sci USA, 87 (3), pp. 862-866. , http://www.pnas.org/cgi/reprint/87/3/862, 10.1073/pnas.87.3.862, 53368, 2105503; Model, P., Jovanovic, G., Dworkin, J., The Escherichia coli phage-shock-protein (psp) operon (1997) Mol Microbiol, 24 (2), pp. 255-261. , http://onlinelibrary.wiley.com/doi/10.1046/j.1365-2958.1997.3481712.x/abstract, 10.1046/j.1365-2958.1997.3481712.x, 9159513; Kobayashi, R., Suzuki, T., Yoshida, M., Escherichia coli phage-shock protein A (PspA) binds to membrane phospholipids and repairs proton leakage of the damaged membranes (2007) Mol Microbiol, 66, pp. 100-109. , http://www3.interscience.wiley.com/journal/118542171/abstract?CRETRY=1&SRETRY=0, 10.1111/j.1365-2958.2007.05893.x, 17725563; Engl, C., Jovanovic, G., Lloyd, L.J., Murray, H., Spitaler, M., Ying, L., Errington, J., Buck, M., In vivo localizations of membrane stress controllers PspA and PspG in Escherichia coli (2009) Mol Microbiol, 73 (3), pp. 382-396. , 10.1111/j.1365-2958.2009.06776.x, 2763126, 19555453; Jovanovic, G., Engl, C., Buck, M., Physical, functional and conditional interactions between ArcAB and phage shock proteins upon secretin-induced stress in Escherichia coli (2009) Mol Microbiol, , http://www3.interscience.wiley.com/journal/122538962/abstract?CRETRY=1&SRETRY=0; Jovanovic, G., Weiner, L., Model, P., Identification, nucleotide sequence, and characterization of PspF, the transcriptional activator of the Escherichia coli stress-induced psp operon (1996) J Bacteriol, 178 (7), pp. 1936-1945. , http://jb.asm.org/cgi/reprint/178/7/1936?view=long&pmid=8606168, 177889, 8606168; Pinney, J., Westhead, D., McConkey, G., Petri Net representations in systems biology (2003) Biochem Soc Trans, 31, pp. 1513-1515. , http://www.biochemsoctrans.org/bst/031/bst0311513.htm, 10.1042/BST0311513, 14641101; Hardy, S., Robillard, P., Modeling and simulation of molecular biology systems using Petri nets: modeling goals of various approaches (2004) Journal of Bioinformatics and Computational Biology, 2 (4), pp. 595-613. , http://www.worldscinet.com/jbcb/02/0204/S0219720004000764.html, 10.1142/S0219720004000752, 15617157; Chaouiya, C., Petri net modelling of biological networks (2007) Brief Bioinformatics, 8 (4), pp. 210-219. , http://bib.oxfordjournals.org/cgi/content/full/8/4/210, 10.1093/bib/bbm029, 17626066; Murata, T., Petri nets: Properties, analysis and applications (1989) Proceedings of the IEEE, pp. 541-580. , http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=24143; Gilbert, D., Heiner, M., From Petri nets to differential equations - an integrative approach for biochemical network analysis (2006), pp. 181-200. , http://www.springerlink.com/index/l85l6147038t012j.pdf, ICATPN 2006, LNCS 4024, Springer-Verlag Berlin Heidelberg, Donatelli S, Thiagara jan PS; Mura, I., Csikász-Nagy, A., Stochastic Petri Net extension of a yeast cell cycle model (2008) J Theor Biol, 254 (4), pp. 850-860. , http://www.sciencedirect.com/science/article/pii/S002251930800372X, 10.1016/j.jtbi.2008.07.019, 18703074; Wilkinson, D.J., (2006) Stochastic Modelling for Systems Biology, , http://books.google.com/books?id=5pa3jSZf4SkC&printsec=frontcover, Chapman & Hall/CRC; Phillips, R., Kondev, J., Theriot, J., (2008) Physical biology of the cell. Garland Science, , 1; Heiner, M., Koch, I., Will, J., Model validation of biological pathways using Petri nets - demonstrated for apoptosis (2004) BioSystems, 75, pp. 15-28. , http://www.sciencedirect.com/science/article/pii/S030326470400036X, 10.1016/j.biosystems.2004.03.003, 15245801; Hanzalek, Z., Svadova, M., Matlab toolbox for Petri nets (2001) 22nd International Conference, ICATPN; Martinez, J., Silva, M., A simple and fast algorithm to obtain all invariants of a generalized Petri net (1982) Application and Theory of Petri Nets, Informatik-Fachberichte, 52, pp. 301-310. , http://portal.acm.org/citation.cfm?id=734691, Springer, Girault C, Reisig W; Liepe, J., Barnes, C., Cule, E., Erguler, K., Kirk, P., Toni, T., Stumpf, M., ABC-sysbio: A Python package for approximate Bayesian computation (2010) Bioinformatics, 26, pp. 1797-1799. , 10.1093/bioinformatics/btq278, 2894518, 20591907; Secrier, M., Toni, T., Stumpf, M., The ABC of reverse engineering biological signalling systems (2009) Mol Biosyst, 5, pp. 1925-1935. , http://www.rsc.org/publishing/journals/MB/article.asp?doi=b908951a, 10.1039/b908951a, 19798456; Raj, A., Rifkin, S., Andersen, E., van Oudenaarden, A., Variability in gene expression underlies incomplete penetrance (2010) NATURE, 463 (7283), pp. 913-918. , http://www.nature.com/nature/journal/v463/n7283/, 10.1038/nature08781, 2836165, 20164922; Hlavacek, W.S., Faeder, J.R., Blinov, M.L., Posner, R.G., Hucka, M., Fontana, W., Rules for modeling signal-transduction systems (2006) Sci STKE, 2006 (344), pp. re6. , http://stke.sciencemag.org/cgi/content/full/sigtrans;2006/344/re6, 10.1126/stke.3442006re6, 16849649; Toni, T., Stumpf, M.P.H., Simulation-based model selection for dynamical systems in systems and population biology (2010) Bioinformatics, 26, pp. 104-110. , http://bioinformatics.oxfordjournals.org/cgi/content/full/26/1/104, 10.1093/bioinformatics/btp619, 2796821, 19880371; Huvet, M., Toni, T., Tan, H., Jovanovic, G., Engl, C., Buck, M., Stumpf, M.P.H., Model-based evolutionary analysis: the natural history of phage-shock stress response (2009) Biochemical Society Transactions, 37 (PART 4), pp. 762-767. , http://www.biochemsoctrans.org/bst/ev/037/0762/bst0370762ev.htm; Myers, C., (2009) Engineering Genetic Circuits, , Chapman & Hall/CRC; Petri, C.A., Kommunikation mit Automaten (1962), 3. , Bonn: Institut fur lnstrumentelle Mathematik, Schriften des IIM; Will, J., Heiner, M., Petri Nets in Biology, Chemistry, and Medicine-Bibliography (2002) Computer Science Reports, 04/02, Brandenburg University of Technology, Cottbus, , http://artikelpdf.co.cc/link/petri-nets-in-biology-chemistry-and-medicine-bibliography/; Goss, P.J., Peccoud, J., Quantitative modeling of stochastic systems in molecular biology by using stochastic Petri nets (1998) Proc Natl Acad Sci USA, 95 (12), pp. 6750-6755. , http://www.pnas.org/content/95/12/6750, 10.1073/pnas.95.12.6750, 22622, 9618484; Haas, P., (2002) Stochastic Petri Nets, , Springer; Gillespie, D., Exact stochastic simulation of coupled chemical reactions (1977) The Journal of Physical Chemistry, 81 (25), pp. 2340-2361. , http://pubs.acs.org/doi/abs/10.1021/j100540a008; Pritchard, J., Seielstad, M.T., Perez-Lezaun, A., Feldman, M.W., Population growth of human Y chromosomes: a study of Y chromosome microsatellites (1999) Molecular Biology and Evolution, 16, pp. 1791-1798. , http://mbe.oxfordjournals.org/cgi/content/abstract/16/12/1791; Sisson, S.A., Fan, Y., Tanaka, M.M., Sequential Monte Carlo without likelihoods (2007) Proc Natl Acad Sci USA, 104 (6), pp. 1760-1765. , 10.1073/pnas.0607208104, 1794282, 17264216; Beaumont, M.A., Cornuet, J.M., Marin, J.M., Robert, C.P., Adaptive approximate Bayesian computation (2009) Biometrika, 96 (4), pp. 983-990. , http://biomet.oxfordjournals.org/cgi/content/abstract/96/4/983; Toni, T., Stumpf, M.P.H., Tutorial on ABC rejection and ABC SMC for parameter estimation and model selection (2009) arXiv, , http://arxiv.org/abs/0910.4472v1, stat.CO\",\"Toni, T.; Division of Molecular Biosciences, , South Kensington, London SW7 2AZ, United Kingdom; email: ttoni@imperial.ac.uk\",,,,,,,,17520509,,,\"21569396\",\"English\",\"BMC Syst. Biol.\",Article,\"Final\",\"All Open Access, Gold, Green\",Scopus,2-s2.0-79955836545\n\"Barjis I., Samarrai K., Samarrai R., Uzun O.\",\"57204224562;55533639600;55533676600;55534060200;\",\"Modeling of p53 signaling pathway regulation\",2010,\"Summer Computer Simulation Conference, SCSC 2010 - Proceedings of the 2010 Summer Simulation Multiconference, SummerSim 2010\",,\"1 BOOK\",,\"506\",\"513\",,2,,\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-84871395943&partnerID=40&md5=e2b6dbea1734c54a4b143b7f5eb8603e\",\"Department of Biological Sciences, New York City College of Technology, United States\",\"Barjis, I., Department of Biological Sciences, New York City College of Technology, United States; Samarrai, K., Department of Biological Sciences, New York City College of Technology, United States; Samarrai, R., Department of Biological Sciences, New York City College of Technology, United States; Uzun, O., Department of Biological Sciences, New York City College of Technology, United States\",\"Loss of genomic stability control is central in cancer development. The regulation of normal responses to DNA damage and other forms of genotoxic stress by p53 pathway, isa key element in maintaining this control. The p53 pathway is disarmed by oncogenic mutations in p53 itself, by increased expression of viral oncoproteins, or by defective upstream regulation of p53 in majority of human tumors. Hence p53 plays a crucial role in the prevention and suppression of tumor development (Vogelstein et al. 2000). Regulation of p53 is done at different levels such as the p53 gene is regulated by MDM2 via a negative feedback loop, or it is phosphorylated by a member of protein kinases namely CDK7, or stabilized by the protein ARF (Lin K. et all 2000). Several computational models have been proposed to simulate the dynamics of p53-MDM2 loops, the p53 transcriptional activity, and the programmed cell death (apoptosis) signaling pathway. However none of the reports represent the complete process that will show the link between p53 regulation, apoptosis and other signaling pathways. In this paper we demonstrate the value of using Petri nets to model, simulate and analyze molecular interactions and mechanisms of p53 signaling pathways.\",\"Apoptosis modeling; Modeling signaling pathway; P53 regulation modeling; Petri net modeling in biology\",\"Cancer development; Computational model; DNA damages; Genomic stability; Genotoxic stress; Human tumors; Key elements; Negative feedback loop; Oncoproteins; P53 gene; Petri-net modeling; Programmed cell deaths; Protein kinase; Signaling pathways; Transcriptional activity; Tumor development; Upstream regulation; Computer simulation; Petri nets; Phosphorylation; Pigments; Proteins; Signaling; Tumors; Cell death\",,,,,,,,\"Alarcon-Vargas, D., Ronai, Z., P53-Mdm2 - The affair that never ends (2002) Carcinogenesis, 23, pp. 541-547; Barjis, I., Jonathan, N., Walied, S., Modeling of apoptotic signaling pathway relevant to cancer (2008) Simulation Series, 40. , July; Boulaire, J., Fotedar, A., Fotedar, R., The functions of the cdk-cyclin kinase inhibitor p21WAF1 (2000) Pathol Biol (Paris), 48, pp. 190-202; Choi, C., Crass, T., Kel, A., Kel-Margoulis, O., Krull, M., Pistor, S., Potapov, A., Wingender, E., Novel consistent modeling of signalling pathways and its implementation in the TRANSPATH database (2004) Genome Informatics, 15, pp. 244-254; Gilman, A.G., Simon, M.I., Bourne, H.R., Harris, B.A., Long, R., Ross, E.M., Stull, J.T., Taussig, R., Overview of the alliance for cellular signaling (2002) Nature, 420, pp. 703-706; Hainuat, P., Wiman, K.G., (2005) 25 Years of P53 Research, , Springer; Heinrichs, S., Deppert, W., Apoptosis or growth arrest: Modulating of the cellular response to p53 by proliferative signals (2003) Oncogene, 22, pp. 555-571; Horn, H.F., Vousden, K., Coping with stress: Mutiple ways to activate p53 (2007) Oncogene, 26, pp. 1306-1316; Krammer, P., CD95's deadly mission in the immune system (2000) Nature, 407, pp. 789-795; Lee, D.Y., Zimmer, R., Lee, S.Y., Hanisch, D., Park, S., Knowledge representation model for systems-level analysis of signal transduction networks (2004) Genome Informatics, 15, pp. 234-243; Lin, K., Hsu, P., Chen, P.B., Yuan, S., Usami, S., Shyy, J., Li, S., Chien, S., Molecular mechanism of endothelial growth arrest by laminar shear stress (2000) PNAS, 97 (17), pp. 9385-9389. , August 15; Nicholls, C., Merkel, S., The effect of computer animation on students' understanding of microbiology (1996) J. Res. Comput. Educ., 28, pp. 359-372; Peter, M., Krammer, P., The CD95(APO-1/Fas) DISC and beyond (2003) Cell Death Differ., 10, pp. 26-35; Pollock, E., Chandler, P., Sweller, J., Assimilating complex information (2002) Learning Instruction, 12, pp. 61-86; Sablina, A., Budanov, A.V., Ilyinskaya, G.V., Agapova, L.S., Kravchenko, J.E., Chumakov, P.M., The antioxidant function of the p53 tumor suppressor (2005) Nature Medicine, 11, pp. 1306-1313; Taylor, W.R., Stark, G.R., Regulation of the G2/M transition by p53 (2001) Oncogene, 20, pp. 1803-1815; Toledo, F., Wahl, G.M., Regulating the p53 pathway: In vitro hypotheses, in vivo veritas (2006) Nature Rev. Cancer, 6, pp. 909-923; Vogelstein, B., Lane, D., Levine, A.J., Surfing the p53 network (2000) Nature, 408, pp. 307-310; Voss, K., Heiner, M., Koch, I., Steady state analysis of metabolic pathways using Petri nets (2003) Silico Biol., 3, pp. 367-387; Vogelstein, B., Lane, D., Levine, A.J., (2000) Nature, 408, pp. 307-310; Winters, Z.E., P53 pathways involving G2 checkpoint regulators and the role of their subcellular localisation (2002) J R Coll Surg Edinb, 47, pp. 591-598; Zou, H., Yang, R., Hao, J., Wang, J., Sun, C., Fesik, S., Wu, J., Armstrong, R., Regulation of the Apaf- 1/Caspase-9 Apoptosis by Caspase-3 and XIAP (2003) Journal of Biological Chemistry, 278, pp. 8091-8098. , March; Zhang, Y., Xiong, Y., Control of p53 ubiquitination and nuclear export by MDM2 and ARF (2001) Cell Growth Differ, 12, pp. 175-186; Zevedei-Oancea, I., Schuster, S., Topological analysis of metabolic networks based on Petri net theory (2003) Silico Biol., 3, pp. 323-345\",\"Barjis, I.; Department of Biological Sciences, United States; email: ibarjis@citytech.cuny.edu\",,\"Society for Modeling and Simulation International (SCS)\",,\"Summer Computer Simulation Conference, SCSC 2010, Part of the 2010 Summer Simulation Multiconference, SummerSim 2010\",\"12 July 2010 through 14 July 2010\",\"Ottawa, ON\",94558,,9781617387029,,,\"English\",\"Summer Comput. Simul. Conf., SCSC - Proc. Summer Simul. Multiconference, SummerSim\",Conference Paper,\"Final\",\"\",Scopus,2-s2.0-84871395943\n\"Schilstra M.J., Nehaniv C.L.\",\"6603694749;6701663176;\",\"Stochastic model of template-directed elongation processes in biology\",2010,\"BioSystems\",\"102\",\"1\",,\"55\",\"60\",,1,\"10.1016/j.biosystems.2010.07.006\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-77957279495&doi=10.1016%2fj.biosystems.2010.07.006&partnerID=40&md5=be9afe597176a52b0b6ebd9bb2b318ad\",\"Biocomputation Research Group, Science and Technology Research Institute, University of Hertfordshire, College Lane, Hatfield AL10 9AB, United Kingdom; Adaptive Systems Research Group, School of Computer Science, University of Hertfordshire, College Lane, Hatfield AL10 9AB, United Kingdom\",\"Schilstra, M.J., Biocomputation Research Group, Science and Technology Research Institute, University of Hertfordshire, College Lane, Hatfield AL10 9AB, United Kingdom; Nehaniv, C.L., Biocomputation Research Group, Science and Technology Research Institute, University of Hertfordshire, College Lane, Hatfield AL10 9AB, United Kingdom, Adaptive Systems Research Group, School of Computer Science, University of Hertfordshire, College Lane, Hatfield AL10 9AB, United Kingdom\",\"We present a novel modular, stochastic model for biological template-based linear chain elongation processes. In this model, elongation complexes (ECs; DNA polymerase, RNA polymerase, or ribosomes associated with nascent chains) that span a finite number of template units step along the template, one after another, with semaphore constructs preventing overtaking. The central elongation module is readily extended with modules that represent initiation and termination processes. The model was used to explore the effect of EC span on motor velocity and dispersion, and the effect of initiation activator and repressor binding kinetics on the overall elongation dynamics. The results demonstrate that (1) motors that move smoothly are able to travel at a greater velocity and closer together than motors that move more erratically, and (2) the rate at which completed chains are released is proportional to the occupancy or vacancy of activator or repressor binding sites only when initiation or activator/repressor dissociation is slow in comparison with elongation. © 2010 Elsevier Ireland Ltd.\",\"Congestion; Elongation; Initiation; Kinetics; Petri-net; Replication; Semaphore; Stochastic; Template-directed; Termination; Transcription; Translation\",\"DNA polymerase; RNA polymerase; biomechanics; gene expression; molecular analysis; numerical model; stochasticity; article; binding site; DNA replication; molecular dynamics; ribosome; RNA translation; stochastic model; Binding Sites; Kinetics; Models, Theoretical; Stochastic Processes; Templates, Genetic\",,\"DNA polymerase, 37217-33-7; RNA polymerase, 9014-24-8\",,,,\"MJS thanks Prof. Wolfgang Marwan, Max Planck Institute for Dynamics of Complex Technical Systems, Magdeburg, Germany, for introducing her to Petri-net modelling. This work was funded in part by a Wellcome Trust Functional Genomics Development Initiative grant (ref. 072930/Z/03/Z).\",,\"Ackers, G.K., Johnson, A.D., Shea, M.A., Quantitative model for gene regulation by lambda phage repressor (1982) Proc. Natl. Acad. Sci. U.S.A., 79, pp. 1129-1133; Alon, U., (2006) An Introduction to Systems Biology. Design Principles of Biological Circuits, , Chapman & Hall/CRC, London; Dijkstra, E.W., Cooperating sequential processes (2002) The Origin of Concurrent Programming: from Semaphores to Remote Procedure Calls, pp. 65-138. , Springer-Verlag New York, Inc; Garai, A., Chowdhury, D., Ramakrishnan, T.V., Fluctuations in protein synthesis from a single RNA template: stochastic kinetics of ribosomes (2009) Phys. Rev. E, 79, pp. 11916-111916; Gibson, M.A., Bruck, J., Efficient exact stochastic simulation of chemical systems with many species and many channels (2000) J. Phys. Chem. A, 104, pp. 1876-1889; Gillespie, D.T., Exact stochastic simulation of coupled chemical reactions (1977) J. Phys. Chem., 81, pp. 2340-2361; Heinrich, R., Rapoport, T.A., Mathematical modelling of translation of mRNA in eucaryotes; steady states, time-dependent processes and application to reticulocytes (1980) J. Theor. Biol., 86, pp. 279-313; Lodish, H., Berk, A., Matsudaira, P., Kaiser, C.A., Krieger, M., Scott, M.P., Zipursky, S.L., Darnell, J., (2004) Molecular Cell Biology, , W. H. Freeman & Company, New York, NY; MacDonald, C.T., Gibbs, J.H., Pipkin, A.C., Kinetics of biopolymerization on nucleic acid templates (1968) Biopolymers, 6, pp. 1-25; MacDonald, C.T., Gibbs, J.H., Concerning the kinetics of polypeptide synthesis on polyribosomes (1969) Biopolymers, 7, pp. 707-725; Petri, C.A., (1962) Kommunikation mit Automaten, Schriften des IIM Nr. 2, , Institut für Instrumentelle Mathematik, Bonn; Schilstra, M.J., Martin, S.R., Simple stochastic simulation (2009) Methods in Enzymology, pp. 381-409. , Academic Press, M.L. Johnson, L. Brand (Eds.); Shea, M.A., Ackers, G.K., The OR control system of bacteriophage lambda: a physical-chemical model for gene regulation (1985) J. Mol. Biol., 181, p. 211; Wilkinson, D.J., (2006) Stochastic Modelling for Systems Biology, , Chapman & Hall/CRC, London, UK; Zouridis, H., Hatzimanikatis, V., A model for protein translation: polysome self-organization leads to maximum protein synthesis rates (2007) Biophys. J., 92, pp. 717-730\",\"Schilstra, M.J.; Biocomputation Research Group, College Lane, Hatfield AL10 9AB, United Kingdom; email: M.J.1.Schilstra@herts.ac.uk\",,,,,,,,03032647,,BSYMB,\"20655359\",\"English\",\"BioSystems\",Article,\"Final\",\"\",Scopus,2-s2.0-77957279495\n[No author name available],[No author id available],\"Computational Science and Its Applications - ICCSA 2010 - International Conference, Proceedings\",2010,\"Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)\",\"6017 LNCS\",\"PART 2\",,\"\",\"\",2335,,,\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-77952412778&partnerID=40&md5=4322ae14beb74e0dc117fd7e683867b5\",,\"\",\"The proceedings contain 182 papers. The topics discussed include: real estate values, urban centrality, economic activities: a GIS analysis on the city of Swindon (UK); a network based kernel density estimator applied to Barcelona economic activities; a fuzzy cellular automata modeling approach - accessing urban growth dynamics in linguistic terms; the use of shadow regions in multi region FDM: high precision cylindrically symmetric electrostatics; computational study of compressive loading of carbon nanotubes; development of quadruple precision arithmetic toolbox QuPAT on scilab; application of wavelet-basis for solution of the fredholm type integral equations; model driven software development of applications based on web services; a control loop reduction scheme for wireless process control on traffic light networks; performance measurement of a dual-channel intersection switch on the vehicular network; supporting molecular modeling workflows within a grid services cloud; and Hashimoto's thyroiditis with petri nets.\",,,,,,,,,,,,,\"University of Perugia;Kyushu Sangyo University;Monash University;La Trobe University;University of Basilicata\",,\"2010 International Conference on Computational Science and Its Applications, ICCSA 2010\",\"23 March 2010 through 26 March 2010\",\"Fukuoka\",80261,03029743,3642121640; 9783642121647,,,\"English\",\"Lect. Notes Comput. Sci.\",Conference Review,\"Final\",\"\",Scopus,2-s2.0-77952412778\n[No author name available],[No author id available],\"Computational Science and Its Applications - ICCSA 2010 - International Conference, Proceedings\",2010,\"Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)\",\"6019 LNCS\",\"PART 4\",,\"\",\"\",2335,,,\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-77952395878&partnerID=40&md5=5f4d5656be6bb0701c41c74153844495\",,\"\",\"The proceedings contain 182 papers. The topics discussed include: real estate values, urban centrality, economic activities: a GIS analysis on the city of Swindon (UK); a network based kernel density estimator applied to Barcelona economic activities; a fuzzy cellular automata modeling approach - accessing urban growth dynamics in linguistic terms; the use of shadow regions in multi region FDM: high precision cylindrically symmetric electrostatics; computational study of compressive loading of carbon nanotubes; development of quadruple precision arithmetic toolbox QuPAT on scilab; application of wavelet-basis for solution of the fredholm type integral equations; model driven software development of applications based on web services; a control loop reduction scheme for wireless process control on traffic light networks; performance measurement of a dual-channel intersection switch on the vehicular network; supporting molecular modeling workflows within a grid services cloud; and Hashimoto's thyroiditis with petri nets.\",,,,,,,,,,,,,\"University of Perugia;Kyushu Sangyo University;Monash University;La Trobe University;University of Basilicata\",,\"2010 International Conference on Computational Science and Its Applications, ICCSA 2010\",\"23 March 2010 through 26 March 2010\",\"Fukuoka\",80261,03029743,3642121888; 9783642121883,,,\"English\",\"Lect. Notes Comput. Sci.\",Conference Review,\"Final\",\"\",Scopus,2-s2.0-77952395878\n[No author name available],[No author id available],\"Computational Science and Its Applications - ICCSA 2010 - International Conference, Proceedings\",2010,\"Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)\",\"6016 LNCS\",\"PART 1\",,\"\",\"\",2335,,,\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-77952380739&partnerID=40&md5=6cedcee95f38e7b74cab54370234ff45\",,\"\",\"The proceedings contain 182 papers. The topics discussed include: real estate values, urban centrality, economic activities: a GIS analysis on the city of Swindon (UK); a network based kernel density estimator applied to Barcelona economic activities; a fuzzy cellular automata modeling approach - accessing urban growth dynamics in linguistic terms; the use of shadow regions in multi region FDM: high precision cylindrically symmetric electrostatics; computational study of compressive loading of carbon nanotubes; development of quadruple precision arithmetic toolbox QuPAT on scilab; application of wavelet-basis for solution of the fredholm type integral equations; model driven software development of applications based on web services; a control loop reduction scheme for wireless process control on traffic light networks; performance measurement of a dual-channel intersection switch on the vehicular network; supporting molecular modeling workflows within a grid services cloud; and Hashimoto's thyroiditis with petri nets.\",,,,,,,,,,,,,\"University of Perugia;Kyushu Sangyo University;Monash University;La Trobe University;University of Basilicata\",,\"2010 International Conference on Computational Science and Its Applications, ICCSA 2010\",\"23 March 2010 through 26 March 2010\",\"Fukuoka\",80261,03029743,3642121551; 9783642121555,,,\"English\",\"Lect. Notes Comput. Sci.\",Conference Review,\"Final\",\"\",Scopus,2-s2.0-77952380739\n[No author name available],[No author id available],\"Computational Science and Its Applications - ICCSA 2010 - International Conference, Proceedings\",2010,\"Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)\",\"6018 LNCS\",\"PART 3\",,\"\",\"\",2335,,,\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-77952335527&partnerID=40&md5=b6071b1d808ac50964f1a3b778c17301\",,\"\",\"The proceedings contain 182 papers. The topics discussed include: real estate values, urban centrality, economic activities: a GIS analysis on the city of Swindon (UK); a network based kernel density estimator applied to Barcelona economic activities; a fuzzy cellular automata modeling approach - accessing urban growth dynamics in linguistic terms; the use of shadow regions in multi region FDM: high precision cylindrically symmetric electrostatics; computational study of compressive loading of carbon nanotubes; development of quadruple precision arithmetic toolbox QuPAT on scilab; application of wavelet-basis for solution of the fredholm type integral equations; model driven software development of applications based on web services; a control loop reduction scheme for wireless process control on traffic light networks; performance measurement of a dual-channel intersection switch on the vehicular network; supporting molecular modeling workflows within a grid services cloud; and Hashimoto's thyroiditis with petri nets.\",,,,,,,,,,,,,\"University of Perugia;Kyushu Sangyo University;Monash University;La Trobe University;University of Basilicata\",,\"2010 International Conference on Computational Science and Its Applications, ICCSA 2010\",\"23 March 2010 through 26 March 2010\",\"Fukuoka\",80261,03029743,3642121780; 9783642121784,,,\"English\",\"Lect. Notes Comput. Sci.\",Conference Review,\"Final\",\"\",Scopus,2-s2.0-77952335527\n\"Heiner M., Sriram K.\",\"6602723511;57204005035;\",\"Structural analysis to determine the core of hypoxia response network\",2010,\"PLoS ONE\",\"5\",\"1\",\"e8600\",\"\",\"\",,23,\"10.1371/journal.pone.0008600\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-77649280061&doi=10.1371%2fjournal.pone.0008600&partnerID=40&md5=1d480856b17d1b640c22f92a857340d7\",\"Department of Computer Science, Brandenburg University of Technology, Cottbus, Germany; Projet Contraintes, INRIA Rocquencourt, Le Chesnay, France; Institute of Collaborative Biotechnology, University of California Santa Barbara, Santa Barbara, CA, United States\",\"Heiner, M., Department of Computer Science, Brandenburg University of Technology, Cottbus, Germany; Sriram, K., Projet Contraintes, INRIA Rocquencourt, Le Chesnay, France, Institute of Collaborative Biotechnology, University of California Santa Barbara, Santa Barbara, CA, United States\",\"The advent of sophisticated molecular biology techniques allows to deduce the structure of complex biological networks. However, networks tend to be huge and impose computational challenges on traditional mathematical analysis due to their high dimension and lack of reliable kinetic data. To overcome this problem, complex biological networks are decomposed into modules that are assumed to capture essential aspects of the full network's dynamics. The question that begs for an answer is how to identify the core that is representative of a network's dynamics, its function and robustness. One of the powerful methods to probe into the structure of a network is Petri net analysis. Petri nets support network visualization and execution. They are also equipped with sound mathematical and formal reasoning based on which a network can be decomposed into modules. The structural analysis provides insight into the robustness and facilitates the identification of fragile nodes. The application of these techniques to a previously proposed hypoxia control network reveals three functional modules responsible for degrading the hypoxia-inducible factor (HIF). Interestingly, the structural analysis identifies superfluous network parts and suggests that the reversibility of the reactions are not important for the essential functionality. The core network is determined to be the union of the three reduced individual modules. The structural analysis results are confirmed by numerical integration of the differential equations induced by the individual modules as well as their composition. The structural analysis leads also to a coarse network structure highlighting the structural principles inherent in the three functional modules. Importantly, our analysis identifies the fragile node in this robust network without which the switch-like behavior is shown to be completely absent. © 2010 Heiner, Sriram.\",,\"hypoxia inducible factor; article; hydroxylation; kinetics; mathematical analysis; protein structure; structure analysis; anoxia; chemical structure; metabolism; Anoxia; Molecular Structure\",,,,,,,,\"Hartwell, L., Hopfield, J., Leibler, S., Murray, A., From molecular to modular cell biology (1999) Nature, 402, pp. 47-52; Murata, T., Petri nets: Properties, analysis and applications (1989) Proceedings of the IEEE, 77, pp. 541-580; Bause, F., Kritzinger, P., (2002) Stochastic Petri Nets Vieweg; David, R., Alla, H., (2005) Discrete, Continuous, and Hybrid Petri Nets Springer; Goss, P., Peccoud, J., Quantitative modeling of stochastic systems in molecular biology by using stochastic Petri nets (1998) Proceedings of the National Academy of Sciences, 95, pp. 6750-6755; Nagasaki, M., Saito, A., Doi, A., Matsuno, H., Miyano, S., (2009) Foundations of Systems Biology: Using Cell Illustrator and Pathway Databases Springer; Marwan, W., Wagler, A., Weismantel, R., Petri nets as a framework for the reconstruction and analysis of signal transduction pathways and regulatory networks (2009) Natural Computing, , DOI 10.1007/s11047-009-9152-x; Bonzanni, N., Krepska, E., Feenstra, K., Fokkink, W., Kielmann, T., Executing multicellular differentiation: Quantitative predictive modelling of C. elegans vulval development (2009) Bioinformatics, 25, pp. 2049-2056; Chen, L., Masao, N., Kazuko, U., Satoru, M., Simulation-based model checking approach to cell fate specification during Caenorhabditis elegans vulval development by hybrid functional Petri net with extension (2009) BMC Systems Biology, 3, p. 42; Heiner, M., Gilbert, D., Donaldson, R., Petri nets in systems and synthetic biology (2008) LNCS, 5016, pp. 215-264. , Schools on Formal Methods SFM, Springer. pp; Breitling, R., Gilbert, D., Heiner, M., Orton, R., A structured approach for the engineering of biochemical network models, illustrated for signalling pathways (2008) Briefings in Bioinformatics, 9, pp. 404-421; Gilbert, D., Heiner, M., Rosser, S., Fulton, R., Gu, X., A Case Study in Model-driven Synthetic Biology (2008) Proc. 2nd IFIP Conference on Biologically Inspired Collaborative Computing (BICC), IFIP WCC, pp. 163-175. , Milano. pp; Heiner M, Donaldson R, Gilbert D (in Press, 2010) Petri Nets for Systems Biology. In: Iyengar MS, ed (in Press, 2010) Symbolic Systems Biology Theory and Methods, Jones and Bartlett Publishers, Inc; Matsuno, H., Li, C., Miyano, S., Petri Net Based Descriptions for Systematic Understanding of Biological Pathways (2006) IEICE Trans Fundam Electron Commun Comput Sci, E89-A (11), pp. 3166-3174; Chaouiya, C., Petri Net Modelling of Biological Networks (2007) Briefings in Bioinformatics, 8, pp. 210-219; Yu, Y., Wang, G., Simha, R., Peng, W., Turano, F., Pathway switching explains the sharp response characteristic of hypoxia response network (2007) PLoS Comput Biol, 3, pp. e171; Palsson, B., (2006) Systems Biology: Properties of Reconstructed Networks, , Cambridge University Press; Kohn, K., Riss, J., Aprelikova, O., Weinstein, J., Pommier, Y., Properties of Switch-like Bioregulatory Networks Studied by Simulation of the Hypoxia Response Control System (2004) Mol Cell Bio, 15, pp. 3042-3052; Lautenbach, K., Exact Liveness Conditions of a Petri Net Class (in German) (1973) GMD Report, 82. , Bonn; Heiner, M., Understanding network behaviour by structured representations of transition invariants (2009) Natural Computing series, pp. 367-389. , Condon A, et al. eds. Algorithmic Bioprocesses Springer; Vaupel, P., Tumor microenvironmental physiology and its implications for radiation oncology (2004) Seminars in radiation oncology, 14, pp. 198-206. , Elsevier; Saugstad, O., Oxygen and retinopathy of prematurity (2006) Journal of Perinatology, 26, pp. S46-S50; Jiang, B., Semenza, G., Bauer, C., Marti, H., Hypoxia-inducible factor 1 levels vary exponentially over a physiologically relevant range of O2 tension (1996) American Journal of Physiology- Cell Physiology, 271, pp. 1172-1180; Semenza, G., Wang, G., A nuclear factor induced by hypoxia via de novo protein synthesis binds to the human erythropoietin gene enhancer at a site required for transcriptional activation (1992) Mol Cell Bio, 12, pp. 5447-5454; Huang, J., Zhao, Q., Mooney, S., Lee, F., Sequence determinants in hypoxia-inducible factor-1α for hydroxylation by the prolyl hydroxylases PHD1, PHD2, and PHD3 (2002) Journal of Biological Chemistry, 277, pp. 39792-39800; Berra, E., Benizri, E., Ginouvès, A., Volmat, V., Roux, D., HIF prolyl-hydroxylase 2 is the key oxygen sensor setting low steady-state levels of HIF-1α in normoxia (2003) The EMBO journal, 22, pp. 4082-4090; Los, M., Jansen, G., Kaelin, W., Lips, C., Blijham, G., Expression pattern of the von Hippel-Lindau protein in human tissues (1996) Laboratory investigation; a journal of technical methods and pathology, 75, pp. 231-238; Qutub, A., Popel, A., A computational model of intracellular oxygen sensing by hypoxiainduciblefactor HIF1α (2006) Journal of Cell Science, 119, pp. 3467-3480; Dayan, F., Monticelli, M., Pouysségur, J., Pécou, E., Gene regulation in response to graded hypoxia: The non-redundant roles of the oxygen sensors PHD and FIH in the HIF pathway (2009) Journal of Theoretical Biology, 259, pp. 304-316; Gilbert, D., Heiner, M., From Petri nets to differential equations - an integrative approach for biochemical network analysis (2006) LNCS, 4024, pp. 181-200. , Proc. ICATPN, Springer. pp; Heiner, M., Koch, I., Petri Net Based Model Validation in Systems Biology (2004) LNCS, 3099, pp. 216-237. , Proc. ICATPN, Springer. pp; Heiner, M., Richter, R., Schwarick, M., Snoopy - a tool to design and animate/simulate graphbased formalisms (2008) Proc. PNTAP 2008, associated to SIMUTools, , ACM digital library; Charlie Website (2008) A tool for the analysis of place/transition Petri nets. BTU Cottbus, http://www-dssz.informatik.tu-cottbus.de/software/charlie/ charlie. html; Kitano, H., Biological robustness (2004) Nature Reviews Genetics, 5, pp. 826-837; Stelling, J., Sauer, U., Szallasi, Z., Doyle, F., Doyle, J., Robustness of cellular functions (2004) Cell, 118, pp. 675-685; Kitano, H., Towards a theory of biological robustness (2007) Molecular systems biology, 3, pp. 1-7; Kærn, M., Elston, T., Blake, W., Collins, J., Stochasticity in gene expression: From theories to phenotypes (2005) Nature Reviews Genetics, 6, pp. 451-464; Felix, M., Wagner, A., Robustness and evolution: Concepts, insights and challenges from a developmental model system (2006) Heredity, 100, pp. 132-140\",\"Heiner, M.; Department of Computer Science, , Cottbus, Germany; email: monika.heiner@tu-cottbus.de\",,,,,,,,19326203,,,\"20098728\",\"English\",\"PLoS ONE\",Article,\"Final\",\"All Open Access, Gold, Green\",Scopus,2-s2.0-77649280061\n\"Breitling R., Gilbert D., Heiner M., Orton R.\",\"15757011000;7401955910;6602723511;10046378000;\",\"A structured approach for the engineering of biochemical network models, illustrated for signalling pathways\",2008,\"Briefings in Bioinformatics\",\"9\",\"5\",,\"404\",\"421\",,56,\"10.1093/bib/bbn026\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-49949085999&doi=10.1093%2fbib%2fbbn026&partnerID=40&md5=43bc86ca24813cb758633387ced9072b\",\"Bioinformatics Research Centre, University of Glasgow, Glasgow G12 8QQ, United Kingdom; Groningen Bioinformatics Centre, University of Groningen, Groningen, Netherlands; Brandenburg University of Technolgy, Cottbus, Germany; Bioinformatics Research Centre, University of Glasgow, Glasgow, United Kingdom\",\"Breitling, R., Groningen Bioinformatics Centre, University of Groningen, Groningen, Netherlands; Gilbert, D., Bioinformatics Research Centre, University of Glasgow, Glasgow G12 8QQ, United Kingdom; Heiner, M., Brandenburg University of Technolgy, Cottbus, Germany; Orton, R., Bioinformatics Research Centre, University of Glasgow, Glasgow, United Kingdom\",\"Quantitative models of biochemical networks (signal transduction cascades, metabolic pathways, gene regulatory circuits) are a central component of modern systems biology. Building and managing these complex models is a major challenge that can benefit from the application of formal methods adopted from theoretical computing science. Here we provide a general introduction to the field of formal modelling, which emphasizes the intuitive biochemical basis of the modelling process, but is also accessible for an audience with a background in computing science and/or model engineering. We show how signal transduction cascades can be modelled in a modular fashion, using both a qualitative approach - qualitative Petri nets, and quantitative approaches - continuous Petri nets and ordinary differential equations (ODEs). We review the major elementary building blocks of a cellular signalling model, discuss which critical design decisions have to be made during model building, and present a number of novel computational tools that can help to explore alternative modular models in an easy and intuitive manner. These tools, which are based on Petri net theory, offer convenient ways of composing hierarchical ODE models, and permit a qualitative analysis of their behaviour. We illustrate the central concepts using signal transduction as our main example. The ultimate aim is to introduce a general approach that provides the foundations for a structured formal engineering of large-scale models of biochemical networks. © The Author 2008. Published by Oxford University Press.\",\"Biochemical networks; Modelling; Ordinary differential equations; Petri nets; Signal transduction; Systems biology\",\"access to information; article; bioengineering; chemical analysis; chemical engineering; computer interface; computer language; computer program; computer simulation; enzyme conformation; enzyme engineering; enzyme kinetics; mathematical computing; Michaelis Menten kinetics; molecular dynamics; molecular model; negative feedback; network learning; positive feedback; protein dephosphorylation; protein engineering; protein phosphorylation; qualitative analysis; quantitative analysis; signal transduction; Algorithms; Biochemistry; Biomedical Engineering; Computer Simulation; Models, Biological; Programming Languages; Proteome; Signal Transduction; Software\",,\"Proteome\",\"BioNessie; Copasi; Integrated Net Analyzer; MATLAB; Systems Biology Markup Language; Systems Biology Workbench\",,,,,\"Szallasi, Z., Stelling, J., Periwal, V., System Modeling in Cellular Biology (2006) From Concepts to Nuts and Bolts, , Cambridge, MA: MIT Press; Chaouiya, C., Petri net modelling of biological networks (2007) Brief Bioinform, 8, pp. 210-219; Fisher, J., Henzinger, T., Executable cell biology (2007) Nat Biotechnol, 25, pp. 1239-1249; Mendes, P., GEPASI: A software package for modelling the dynamics, steady states and control of biochemical and other systems (1993) Comput Applic Biosci, 9, pp. 563-571; Gilbert, D., Heiner, M., From Petri nets to differential equations - an integrative approach for biochemical network analysis (2006) LNCS, 4024, pp. 181-200. , Proceedings of the 27th ICATPN 2006, Heidelberg, Germany: Springer; Cho, K.-H., Shin, S.-Y., Kim, H.-W., Mathematical modeling of the influence of RKIP on the ERK signaling pathway (2003) Lect Notes Comput Sci, 2602, pp. 127-141; Orton, R., Sturm, O., Vyshemirsky, V., Computational modelling of the tyrosine receptor kinase activated MAPK pathway (2005) Biochem J, 392, pp. 249-261; Schoeberl, B., Eichler-Jonsson, C., Gilles, E., Computational modeling of the dynamics of the MAP kinase cascade activated by surface and internalized EGF receptors (2002) Nat Biotechnol, 20, pp. 370-375; Kolch, W., Calder, M., Gilbert, D., When kinases meet mathematics: The systems biology of MAPK signalling (2005) FEBS Lett, 579, pp. 1891-1895; Breitling, R., Hoeller, D., Current challenges in quantitative modeling of epidermal growth factor signaling (2005) FEBS Lett, 579, pp. 6289-6294; Wiley, H.S., Shvartsman, S.Y., Lauffenburger, D.A., Computational modeling of the EGF-receptor system: A paradigm for systems biology (2003) Trends Cell Biol, 13, pp. 43-50; Huang C. Ferrell J. Ultrasensitivity in the mitogen-activated protein kinase cascade. Proc Natl Acad Sci USA 996;93: 10078-83; Burack, W., Sturgill, T., The activating dual phosphorylation of MAPK by MEK is nonprocessive (1997) Biochemistry, 36, pp. 5929-5933; Kholodenko, B., Demin, O., Moehren, G., Hoek, J., Quantification of short term signaling by the epidermal growth factor receptor (1999) J Biol Chem, 274, pp. 30169-30181; Brightman, F., Fell, D., Differential feedback regulation of the MAPK cascade underlies the quantitative differences in EGF and NGF signalling in PC12 cells (2003) FEBS Lett, 482, pp. 169-174; Ihekwaba, A., Broomhead, D., Grimley, R., Sensitivity analysis of parameters controlling oscillatory signalling in the NF-kappaB pathway: The roles of IKK and IkappaBalpha (2004) Syst Biol (Stevenage), 1, pp. 93-103; Levchenko, A., Bruck, J., Sternberg, P., Scaffold proteins may biphasically affect the levels of mitogen-activated protein kinase signaling and reduce its threshold properties (2000) Proc Natl Acad Sci USA, 97, pp. 5818-5823; Kholodenko, B., Negative feedback and ultrasensitivity can bring about oscillations in the mitogen-activated protein kinase cascades (2000) Eur J Biochem, 267, pp. 1583-1588; Brown, K., Hill, C., Calero, G., The statistical mechanics of complex signaling networks: Nerve growth factor signaling (2004) Phys Biol, 1, pp. 184-195; Yamada, S., Taketomi, T., Yoshimura, A., Model analysis of difference between EGF pathway and FGF pathway (2003) Biochem Biophys Res Commun, 314, pp. 1113-1120; Clarke, E., Grumberg, O., Peled, D., Model checking (2001) Cambridge, MA: MIT Press 1999, third printing; Schröter, C., Schwoon, S., Esparza, J., The model checking kit (2003) LNCS, 2679, pp. 463-472. , Proceeding of ICATPN 2007, Heidelberg, Germany: Springer; Starke, P., Roch, S., Ina - The Intergrated Net Analyzer http://www.informatik.hu-berlin.de/~starke/ina.html, Technical report. Berlin, Germany: Humboldt University Berlin, May 2008, date last accessed; Charlie Website. A Tool for the Analysis of Place/Transition Nets. BTU Cottbus. http://www-dssz.informatik.tu-cottbus.de/software/charlie/ charlie.html (May 2008, date last accessed); Gilbert, D., Heiner, M., Lehrack, S., A unifying framework for modelling and analysing biochemical pathways using Petri nets (2007) Proceeding of CMSB 2007, LNCS/LNBI 4695, pp. 200-216. , Heidelberg, Germany: Springer; Murata, T., Petri nets: Properties, analysis and applications (1989) Proceeding of IEEE, 77, pp. 541-580; Palsson, B.O., (2006) Systems Biology, Properties of Reconstructed Networks, , Cambridge, UK: Cambridge University Press; Angeli, D., De Leenheer, P., Sontag, E., A Petri net approach to persistence analysis in chemical reaction networks (2007) Biology and Control Theory: Current Challenges, Lecture Notes in Control and Information Sciences, pp. 181-216. , Queinnec I, Tarbouriech S, Garcia G, Niculescu S-I, eds, Heidelberg, Germany: Springer; Calzone, L., Chabrier-Rivier, N., Fages, F., Machine learning biochemical networks from temporal logic properties (2006) LNCS, 4220. , Transaction on Compuatational System Biology VI, Heidelberg, Germany: Springer; MC2 Website. MC2 - PLTL Model Checker. University of Glasgow. http://www.brc.dcs.gla.ac.uk/software/mc2/2008 (May 2008, date last accessed); Glendinning, P., (1994) Stability, Instability, and Chaos: An Introduction to the Theory of Nonlinear Differential Equations, , Cambridge, UK: Cambridge University Press; Heinrich k, Schuster S (1996) The Regulation of Cellular Systems, , Heidelberg, Germany: Springer; Alves, R., Antunes, F., Salvador, S., Tools for kinetic modeling of biochemical networks (2006) Nat Biotechnol, 24, pp. 667-672; Hucka, M., Finney, A., Sauro, H.M., The systems biology markup language (SBML): A medium for representation and exchange of biochemical network models (2003) Bioinformatics, 19, pp. 524-531; (2008) A biochemical pathway simulation and analysis tool, , www.bionessie.org, BioNessie, University of Glasgow, May, date last accessed; Hoops, S., Sahle, S., Gauges, R., COPASI - a complex pathway simulator (2006) Bioinformatics, 22, pp. 3067-3074; Shampine, L.F., Reichelt, M.W., The MATLAB ODE suite (1997) SIAM J Sci Comput, 18, pp. 1-22; Bergmann, F.T., Sauro, H.M., SBW - a modular framework for systems biology (2006) Proceedings of the Winter Simulation Conference WSC 2006, Monterey, California, USA, 2006. WSC, pp. 1637-1645. , eds; Sedwards, S., Mazza, T., Cyto-Sim: A formal language model and stochastic simulator of membrane-enclosed biochemical processes (2007) Bioinformatics, 23, pp. 2800-2802; Ermentrout, B., (2002) Simulating, Analyzing, and Animating Dynamical Systems: A Guide to Xppaut for Researchers and Students (Software, Environments, Tools), , Philadelphia, PA: SIAM; (2008) A Tool to Design and Animate Hierarchical Graphs, , www-dssz.informatik.tu-cottbus.de, Snoopy, BTU Cottbus, CS Dep, May, date last accessed\",\"Gilbert, D.; Bioinformatics Research Centre, , Glasgow G12 8QQ, United Kingdom; email: drg@dcs.gla.ac.uk\",,,,,,,,14675463,,,\"18573813\",\"English\",\"Brief. Bioinform.\",Article,\"Final\",\"All Open Access, Bronze, Green\",Scopus,2-s2.0-49949085999\n\"Grunwald S., Speer A., Ackermann J., Koch I.\",\"57523349700;7005250783;57189026922;7006792171;\",\"Petri net modelling of gene regulation of the Duchenne muscular dystrophy\",2008,\"BioSystems\",\"92\",\"2\",,\"189\",\"205\",,57,\"10.1016/j.biosystems.2008.02.005\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-41549085829&doi=10.1016%2fj.biosystems.2008.02.005&partnerID=40&md5=bfe782d854e106fc35b9f5ce3a38ccc1\",\"Technical University of Applied Sciences Berlin, Department V/VI, Biotechnology/Bioinformatics, Seestr. 64, 13347 Berlin, Germany; FluIT Biosystems GmbH, Institutszentrum Schloss Birlinghoven, 53757 St. Augustin, Germany; Max Planck Institute for Molecular Genetics Berlin, Department of Computational Molecular Biology, Ihnestr. 73, 14195 Berlin, Germany\",\"Grunwald, S., Technical University of Applied Sciences Berlin, Department V/VI, Biotechnology/Bioinformatics, Seestr. 64, 13347 Berlin, Germany; Speer, A., Technical University of Applied Sciences Berlin, Department V/VI, Biotechnology/Bioinformatics, Seestr. 64, 13347 Berlin, Germany; Ackermann, J., Technical University of Applied Sciences Berlin, Department V/VI, Biotechnology/Bioinformatics, Seestr. 64, 13347 Berlin, Germany, FluIT Biosystems GmbH, Institutszentrum Schloss Birlinghoven, 53757 St. Augustin, Germany; Koch, I., Technical University of Applied Sciences Berlin, Department V/VI, Biotechnology/Bioinformatics, Seestr. 64, 13347 Berlin, Germany, Max Planck Institute for Molecular Genetics Berlin, Department of Computational Molecular Biology, Ihnestr. 73, 14195 Berlin, Germany\",\"Searching for therapeutic strategies for Duchenne muscular dystrophy, it is of great interest to understand the responsible molecular pathways down-stream of dystrophin completely. For this reason we have performed real-time PCR experiments to compare mRNA expression levels of relevant genes in tissues of affected patients and controls. To bring experimental data in context with the underlying pathway theoretical models are needed. Modelling of biological processes in the cell at higher description levels is still an open problem in the field of systems biology. In this paper, a new application of Petri net theory is presented to model gene regulatory processes of Duchenne muscular dystrophy. We have developed a Petri net model, which is based mainly on own experimental and literature data. We distinguish between up- and down-regulated states of gene expression. The analysis of the model comprises the computation of structural and dynamic properties with focus on a thorough T-invariant analysis, including clustering techniques and the decomposition of the network into maximal common transition sets (MCT-sets), which can be interpreted as functionally related building blocks. All possible pathways, which reflect the complex net behaviour in dependence of different gene expression patterns, are discussed. We introduce Mauritius maps of T-invariants, which enable, for example, theoretical knockout analysis. The resulted model serves as basis for a better understanding of pathological processes, and thereby for planning next experimental steps in searching for new therapeutic possibilities. Availability: Free availability of the Petri net editor and animator Snoopy and the clustering tool PInA via http://www-dssz.informatik.tu-cottbus.de/∼wwwdssz/. The Petri net models used can be accessed via http://www.tfh-berlin.de/bi/duchenne/. © 2008 Elsevier Ireland Ltd. All rights reserved.\",\"Gene regulatory network; Mauritius map; MCT-set; Molecular pathogenesis of Duchenne muscular dystrophy; Petri net; T-invariant\",\"dystrophin; messenger RNA; biology; decomposition; gene expression; muscle; pathogen; pathology; article; cluster analysis; Duchenne muscular dystrophy; dynamics; gene cluster; gene control; gene expression regulation; human; nonhuman; real time polymerase chain reaction; technique; theoretical model; Algorithms; Animals; Computer Simulation; Gene Expression Regulation; Humans; Models, Biological; Muscle Proteins; Muscle, Skeletal; Muscular Dystrophy, Duchenne; Neural Networks (Computer); Signal Transduction\",,\"dystrophin, 116978-02-0; Muscle Proteins\",,,\"Bundesministerium für Bildung und Forschung, BMBF: 0312705D\",\"This work has been partly supported by the Federal German Ministry of Education and Research (BMBF), BCB project 0312705D (Ina Koch), and by the ESF fond of European Union (Jörg Ackermann). Authors acknowledge the support from an operating grant from the German Society of Muscle Diseased Persons and a Studentship from the Hypatia Program, Technical University of Applied Sciences Berlin, Germany, and the Berliner Programm zur Förderung der Chancengleichheit für Frauen in Forschung und Lehre, Humboldt University Berlin, Germany (Stefanie Grunwald).\",,\"Ackermann, J., 2007. Mauritius Maps, personal communication; (2000) Multivariate Analysemethoden, , Backhaus K., Erichson B., Plinke W., and Weiber R. (Eds), Eine anwendungsorientierte Einführung, Berlin (in German); Baumgarten, B., (1996) Petri Nets Basics and Applications. 2nd ed., , Spektrum Akademischer Verlag, Heidelberg, Berlin, Oxford (in German); Chakkalakal, J.V., Stocksley, M.A., Harrison, M.A., Angus, L.M., Schenes-Furry, J., St-Pierre, S., Megeney, L.A., Jasmin, B.J., Expression of utrophin A mRNA correlates with the oxidative capacity of skeletal muscle fiber types and is regulated by calcineurin/NFAT signaling (2003) Proc. Natl. Acad. Sci. U.S.A., 100, pp. 7791-7796; Chakkalakal, J.V., Thompson, J., Parks, R.J., Jasmin, B.J., Molecular, cellular, and pharmacological therapies for Duchenne/Becker muscular dystrophies (2005) FASEB J., 19, pp. 880-891; Chaouiya, C., Remy, E., Ruet, P., Thieffry, D., Qualitative modelling of genetic networks: from logical regulatory graphs to standard Petri nets (2004) ICATPN 2004, LNCS 3099, pp. 137-156; Chen, M., Hofestädt, R., A medical bioinformatics approach for metabolic disorders: biomedical data prediction, modeling, and systematic analysis (2006) J. Biomed. Inform., 12, pp. 147-159; Chin, E.R., Olson, E.N., Richardson, J.A., Yang, Q., Humphries, C., Shelton, J.M., Wu, H., Williams, R.S., A calcineurin-dependent transcriptional pathway controls skeletal muscle fiber type (1998) Genes Dev., 12, pp. 2499-2509; Crabtree, G.R., Olson, E.N., NFAT signaling: choreographing the social lives of cells (2002) Cell, 109, pp. S67-S79; de Jong, H., Modeling and simulation of genetic regulatory systems: a literature review (2002) J. Comp. Biol., 9, pp. 67-103; Endesfelder, S., Krahn, A., Kreuzer, K.-A., Lass, U., Schmidt, C.A., Jahrmarkt, C., von Moers, A., Speer, A., Elevated p21 mRNA level in skeletal muscle of DMD patients and mdx mice indicates either an exhausted satellite cell pool or a higher p21 expression in dystrophin-deficient cells per se (2000) J. Mol. Med., 78, pp. 569-574; Endesfelder, S., Bucher, S., Kliche, A., Reszka, R., Speer, A., Transfection of normal primary human skeletal myoblasts with p21 and p57 antisense oligonucleotides to improve their proliferation: a first step towards an alternative molecular therapy approach of Duchenne muscular dystrophy (2003) J. Mol. Med., 81, pp. 355-362; Endesfelder, S., Kliche, A., Lochmüller, H., von Moers, A., Speer, A., Antisense oligonucleotides and short interfering RNAs silencing the cyclin-dependent kinase inhibitor p21 improve proliferation of Duchenne muscular dystrophy patients' primary skeletal myoblasts (2005) J. Mol. Med., 83, pp. 64-71; Fieber, M., 2004. Design and implementation of a generic and adaptive tool for graph manipulation. Diploma Thesis. Brandenburg University of Technology at Cottbus (in German); Goss, P.J.E., Peccoud, J., Analysis of the stabilizing effect of Rom on the genetic network controlling ColE1 plasmid replication (1999) Proceedings of the Pacific Symposium on Biocomputing 1999, vol. 4, pp. 65-76; Grafahrend-Belau, E., Schreiber, F., Heiner, M., Sackmann, A., Junker, B.H., Stefanie G., Astrid S., Winder, K., Koch, I., 2008. Modularisation of biochemical networks through hierarchical cluster analysis of T-invariants of biochemical Petri nets. BMC Bioinform. 9, 90, doi:10.1186/1471-2105-9-90; Grafahrend-Belau, E., 2006. Classification of T-invariants in biochemical Petri nets based on different cluster analysis techniques. Master's Thesis. Technical University of Applied Sciences Berlin (in German); Grunwald, S., von Moers, A., Koch, I., Hobbiebrunken, E., Wilichowski, E., Speer, A., Identification and characterisation of phenotype modifying genes and pathways in Duchenne muscular dystrophy patients: suggestions for a dystrophin downstream gene therapy (2005) Proceedings of the 13th ESGT Prague 2005, vol. 69, pp. S59; Haq, S., Choukroun, G., Kang, Z.B., Ranu, H., Matsui, T., Rosenzweig, A., Molkentin, J.D., Force, T., Glycogen synthase kinase-3beta is a negative regulator of cardiomyocyte hypertrophy (2000) J. Cell Biol., 151, pp. 117-130; Harary, F., (1974) Graph Theory, , R. Oldenburg Verlag, München, Wien; Harbour, J.W., Luo, R.X., Dei Santi, A., Postigo, A.A., Dean, D.C., Cdk phosphorylation triggers sequential intramolecular interactions that progressively block Rb functions as cells move through G1 (1999) Cell, 98, pp. 859-869; Hardy, S., Robillard, P.N., Modelling and simulation of molecular biology systems using Petri nets: modelling goals of various approaches (2004) J. Bioinform. Comput. Biol., 2 (4), pp. 595-613; Harper, J.W., Adami, G.R., Wei, N., Keyomarsi, K., Elledge, S.J., The p21 Cdk-interacting protein Cip1 is a potent inhibitor of G1 cyclin-dependent kinases (1993) Cell, 75, pp. 805-816; Hattori, N., Kaido, M., Nishigaki, T., Inui, K., Fujimura, H., Nishimura, T., Naka, T., Hazama, T., Undetectable dystrophin can still result in a relatively benign phenotype of dystrophinopathy (1999) Neuromuscul. Disord., 9, pp. 220-226; Heiner, M., Koch, I., Petri net based model validation in systems biology (2004) Proceedings of the 25th International Conference on Applications and Theory of Petri Nets, LCNS 3099, pp. 216-237. , Bologna; Heiner, M., Koch, I., Will, J., Model validation of biological pathways using Petri nets-demonstrated for apoptosis (2004) BioSystems, 75 (1-3), pp. 15-28; Hinkes, B., Wiggins, R.C., Gbadegesin, R., Vlangos, C.N., Seelow, D., Nurnberg, G., Garg, P., Becker, C., Positional cloning uncovers mutations in PLCE1 responsible for a nephrotic syndrome variant that may be reversible (2006) Nature Genet., 38, pp. 1397-1405; Hofestädt, R., Thelen, S., Quantitative modelling of biochemical networks (1998) In Silico Biol., 1, pp. 39-53; Hogan, P.G., Chen, L., Nardone, J., Rao, A., Transcriptional regulation by calcium, calcineurin, and NFAT (2003) Genes Dev., 17, pp. 2205-2232; Hood, L., Heath, J.R., Phelps, N.E., Lin, B., Systems biology and new technologies enable predictive and preventative medicine (2004) Science, 306, pp. 640-643; Im, S.H., Rao, A., Activation and deactivation of gene expression by Ca2+/calcineurin-NFAT-mediated signaling (2004) Mol. Cells, 18, pp. 1-9; Koch, I., Junker, B.H., Heiner, M., Application of Petri net theory for modelling and validation of the sucrose breakdown pathway in the potato tuber (2005) Bioinformatics, 21 (7), pp. 1219-1226; Koch, I., Heiner, M., Petri nets in biological network analysis (2008) Analysis of Biological Networks, pp. 139-179. , Junker B., and Schreiber F. (Eds), Wiley & Sons Book Series on Bioinformatics; Lautenbach, K., 1973. Exact liveness conditions of a Petri Net class. GMD Report 82, Bonn (in German); Macian, F., NFAT proteins: key regulators of T-cell development and function (2005) Nat. Rev. Immunol., 5, pp. 472-484; Matsuno, H., Doi, A., Nagasaki, M., Miyano, S., Hybrid petri net representation of gene regulatory network (2000) Proceedings of the Pacific Symposium on Biocomputing 2000, vol. 5, pp. 338-349; Mesaeli, N., Nakamura, K., Zvaritch, E., Dickie, P., Dziak, E., Krause, K.H., Opas, M., Michalak, M., Calreticulin is essential for cardiac development (1999) J. Cell Biol., 144 (5), pp. 857-868; Murata, T., Petri nets: properties, analysis and applications (1989) Proc. IEEE, 77 (4), pp. 541-580; Oak, S.A., Zhou, Y.W., Jarrett, H.W., Skeletal muscle signaling pathway through the dystrophin glycoprotein complex and Rac1 (2003) J. Biol. Chem., 278, pp. 39287-39295; Peterson, J.L., (1981) Petri Net Theory and the Modeling of Systems, , Prentice-Hall, Inc., New Jersey; Pradhan, S., Valley sign in Becker muscular dystrophy and outliers of Duchenne and Becker muscular dystrophy (2004) Neurol. India, 52, pp. 203-205; Prior, T.W., Bartolo, C., Papp, A.C., Snyder, P.J., Sedra, M.S., Burghes, A.H., Kissel, J.T., Mendell, J.R., Dystrophin expression in a Duchenne muscular dystrophy patient with a frame shift deletion (1997) Neurology, 48, pp. 486-488; Reddy, V.N., Mavrovouniotis, M.L., Liebman, M.N., Petri net representation in metabolic pathways (1993) Proc. Int. Conf. Intell. Syst. Mol. Biol., 1, pp. 328-336; Sackmann, A., Formanowicz, D., Formanowicz, P., Koch, I., Blazewicz, J., An analysis of the Petri net based model of the human body iron homeostasis process (2007) Comp. Biol. Chem., 31, pp. 1-10; Sackmann, A., Heiner, M., Koch, I., Application of Petri net based analysis techniques to signal transduction pathways (2006) BMC Bioinform., 4, p. 482; Santini, M.P., Talora, C., Seki, T., Bolgan, L., Dotto, G.P., Cross talk among calcineurin, Sp1/Sp3, and NFAT in control of p21(WAF1/CIP1) expression in keratinocyte differentiation (2001) Proc. Natl. Acad. Sci. U.S.A., 98, pp. 9575-9580; Schmidt, M., Evellin, S., Weernink, P.A., vom Dorp, D.F., Rehmann, H., Lomasney, J.W., Jakobs, K.H., A new phospholipase-C-calcium signalling pathway mediated by cyclic AMP and a Rap GTPase (2001) Nat. Cell Biol., 3, pp. 1020-1024; Schreiber, M., Kolbus, A., Piu, F., Szabowski, A., Mohle-Steinlein, U., Tian, J., Karin, M., Wagner, E.F., Control of cell cycle progression by c-Jun is p53 dependent (1999) Genes Dev., 13, pp. 607-619; Schulz, R.A., Yutzey, K.E., Calcineurin signaling and NFAT activation in cardiovascular and skeletal muscle development (2004) Dev. Biol., 266, pp. 1-16; Seoane, J., Le, H.-V., Massague, J., Myc suppression of the p21(Cip1) Cdk inhibitor influences the outcome of the p53 response to DNA damage (2002) Nature, 419, pp. 729-734; Shaulian, E., Schreiber, M., Piu, F., Beeche, M., Wagner, E.F., Karin, M., The mammalian UV response: c-Jun induction is required for exit from p53-imposed growth arrest (2000) Cell, 103, pp. 897-907; Sifringer, M., Uhlenberg, B., Lammel, S., Hanke, R., Neumann, B., von Moers, A., Koch, I., Speer, A., Identification of transcripts from a substraction library which might be responsible for the mild phenotype in an intrafamillially variable course of Duchenne muscular dystrophy (2004) Human Genet., 114, pp. 149-156; Starke, P.H., (1990) Analysis of Petri Net Models, , Teubner Verlag, Stuttgart (in German); Starke, P.H., Roch, S., 1999. INA-The Integrated Net Analyzer. Humboldt University, Berlin. http://www2.informatik.hu-berlin.de/∼starke/ina.html; Steinhausen, D., Langer, K., (1977) Cluster Analysis. An Introduction to Methods for Automatic Classification, , Verlag W. de Gruyter, Berlin (in German); Sun, L., Blair, H.C., Peng, Y., Zaidi, N., Adebanjo, O.A., Wu, X.B., Wu, X.Y., Zaidi, M., Calcineurin regulates bone formation by the osteoblast (2005) Proc. Nat. Acad. Sci., 102, pp. 17130-17135; Supplementary material, 2007. http://www.tfh-berlin.de/bi/duchenne; Winnard, A.V., Klein, C.J., Coovert, D.D., Prior, T., Papp, A., Snyder, P., Bulman, D.E., King, W., Characterisation of translational frame exception patients in Duchenne/Becker muscular dystrophy (1993) Hum. Mol. Genet., 2, pp. 737-744; Zhang, J., Gray, J., Wu, L., Leone, G., Rowan, S., Cepko, C.L., Zhu, X., Dyer, M.A., Rb regulates proliferation and rod photoreceptor development in the mouse retina (2004) Nature Genet., 36, pp. 351-360\",\"Koch, I.; Technical University of Applied Sciences Berlin, Seestr. 64, 13347 Berlin, Germany; email: Ina.Koch@tfh-berlin.de\",,,,,,,,03032647,,BSYMB,\"18372101\",\"English\",\"BioSystems\",Article,\"Final\",\"\",Scopus,2-s2.0-41549085829\n\"Barjis I., Gehlot V.\",\"57204224562;6603125366;\",\"Petri net based description and modeling of metabolic pathway\",2007,\"Summer Computer Simulation Conference 2007, SCSC'07, Part of the 2007 Summer Simulation Multiconference, SummerSim'07\",\"2\",,,\"848\",\"851\",,2,,\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-84870211288&partnerID=40&md5=77ac00a0701ea51c839e2d31b2ba3375\",\"Department of Biological Sciences, New York City College of Technology, NY, United States; Department of Computing Sciences, Villanova University, PA, United States\",\"Barjis, I., Department of Biological Sciences, New York City College of Technology, NY, United States; Gehlot, V., Department of Computing Sciences, Villanova University, PA, United States\",\"System Biology is a rapidly developing discipline which utilizes mathematical and computer science techniques to analyze and interpret biological models. Furthermore advances in analytical and computational technologies are driving the transition to a systems biology that deals with the integrated behavior of biomolecular and metabolic networks. In this paper we use Petri nets to model and simulate the process of carbohydrate metabolic pathways in general and the pentose phosphate pathway in particular. Modeling and simulation of carbohydrate metabolism and pentose phosphate pathway will improve the understanding of the structure and the dynamics of these pathways considerably. Petri nets have been proposed as an effective formalism for Systems Biology and modeling of metabolic pathways.\",\"Modeling; Pentose phosphate pathway; Petri net; Simulation\",\"Bio-molecular; Biological models; Carbohydrate metabolism; Computational technology; Metabolic network; Metabolic pathways; Modeling and simulation; Pentose phosphate pathway; Simulation; System biology; Systems biology; Carbohydrates; Computer simulation; Mathematical techniques; Models; Petri nets; Metabolism\",,,,,,,,\"David, R., Alla, H., (2005) Discrete, Continuous, and Hybrid Petri Nets, , Springer Verlag, Heidelberg; Hofestädt, R., A petri net application of metabolic processes (1994) Journal of System Analysis, Modelling and Simulation., 16, pp. 113-122; Hucka, M., Finney, A., Sauro, H., (2001) Systems Biology Markup Language (SBML) Level 1 Version 1 (Final), , 2 March; Martini, F.H., (2006) Fundamentals of Anatomy and Physiology (7th Edition), , Pearson Education, Inc., USA; Murata, T., Petri nets: Properties, analysis and applications (1989) Proc. of the IEEE, 77, pp. 541-580; Reddy, V.N., Mavrovouniotis, M.L., Liebman, M.N., Petri net representation in metabolic pathways (1993) Proceedings of the First International Conference on Intelligent Systems for Molecular Biology, pp. 328-336. , AAAI Press, Menlo Park; Petri, C.A., (1962), PhD Thesis, Institut für Instrumentelle Mathematik, Bonn; Kanehisa, M., Goto, S., KEGG: Kyoto encyclopedia of genes and genomes (2000) Nucleic Acids Res, 28 (1), pp. 27-30; Karp, P.D., Riley, M., Saier, M., Paulsen, I.T., Paley, S.M., Pellegrini-Toole, A., The EcoCyc and MetaCyc databases (2000) Nucleic Acids Res., 28, p. 56; Krull, M., Voss, N., Choi, C., Pistor, S., Potapov, A., Wingender, E., TRANSPATH: An integrated database on signal transduction and a tool for array analysis (2003) Nucleic Acids Res, 31, p. 97; Stryer, L., (1995) Biochemistry, (4th Edition), , Freeman, USA; WWW, , http://www.informatik.uni-hamburg.de/TGI/PetriNets/\",\"Barjis, I.; Department of Biological Sciences, , NY, United States; email: ibarjis@citytech.cuny.edu\",,,,\"Summer Computer Simulation Conference 2007, SCSC 2007, Part of the 2007 Summer Simulation Multiconference, SummerSim 2007\",\"15 July 2007 through 18 July 2007\",\"San Diego, CA\",94046,,9781622763580,,,\"English\",\"Summer Comput. Simul. Conf., SCSC, Part Summer Simul. Multiconference, SummerSim\",Conference Paper,\"Final\",\"\",Scopus,2-s2.0-84870211288\n\"Angeli D., De Leenheer P., Sontag E.D.\",\"35578843500;6602111930;7102557112;\",\"A Petri net approach to the study of persistence in chemical reaction networks\",2007,\"Mathematical Biosciences\",\"210\",\"2\",,\"598\",\"618\",,131,\"10.1016/j.mbs.2007.07.003\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-34548532883&doi=10.1016%2fj.mbs.2007.07.003&partnerID=40&md5=b135e3abd9214c3894874aaea34249bf\",\"Dip. di Sistemi e Informatica, University of Firenze, Italy; Department of Mathematics, University of Florida, Gainesville, FL, United States; Department of Mathematics, Rutgers University, Piscataway, NJ, United States\",\"Angeli, D., Dip. di Sistemi e Informatica, University of Firenze, Italy; De Leenheer, P., Department of Mathematics, University of Florida, Gainesville, FL, United States; Sontag, E.D., Department of Mathematics, Rutgers University, Piscataway, NJ, United States\",\"Persistence is the property, for differential equations in Rn, that solutions starting in the positive orthant do not approach the boundary of the orthant. For chemical reactions and population models, this translates into the non-extinction property: provided that every species is present at the start of the reaction, no species will tend to be eliminated in the course of the reaction. This paper provides checkable conditions for persistence of chemical species in reaction networks, using concepts and tools from Petri net theory, and verifies these conditions on various systems which arise in the modeling of cell signaling pathways. © 2007 Elsevier Inc. All rights reserved.\",\"Biochemical networks; Enzymatic cycles; Nonlinear dynamics; Persistence\",\"Chemical reactions; Computer simulation; Differential equations; Mathematical models; Population dynamics; Biochemical networks; Cell signaling pathways; Enzymatic cycles; Petri nets; chemical reaction; molecular analysis; network analysis; population modeling; theoretical study; article; cell function; chemical reaction; enzyme activity; mathematical computing; mathematical model; stoichiometry; Enzymes; Kinetics; Models, Biological; Models, Chemical; Nonlinear Dynamics\",,\"Enzymes\",,,\"Directorate for Mathematical and Physical Sciences, MPS: 0504557, 0614651\",,,\"Angeli, D., Sontag, E.D., Monotone control systems (2003) IEEE Trans. Autom. Control, 48, p. 1684; Angeli, D., Ferrell Jr., J.E., Sontag, E.D., Detection of multi-stability, bifurcations, and hysteresis in a large class of biological positive-feedback systems (2004) Proc. Natl. Acad. Sci. USA, 101, p. 1822; Aubin, J.-P., Cellina, A., (1984) Differential Inclusions: Set-Valued Maps and Viability Theory, , Springer; Butler, G., Waltman, P., Persistence in dynamical systems (1986) J. Diff. Equ., 63, p. 255; Butler, G., Freedman, H.I., Waltman, P., Uniformly persistent systems (1986) Proc. Am. Math. Soc., 96, p. 425; Chaves, M., Sontag, E.D., Dinerstein, R.J., Steady-states of receptor-ligand dynamics: a theoretical framework (2004) J. Theor. Biol., 227, p. 413; Clarke, B.L., Stability of complex reaction networks (1980) Adv. Chem. Phys., 43, p. 1; Craciun, G., Feinberg, M., Multiple equilibria in complex chemical reaction networks: II. The Species-Reaction Graph (2006) SIAM J. Appl. Math., 66, p. 1321; Craciun, G., Tang, Y., Feinberg, M., Understanding bistability in complex enzyme-driven reaction networks (2006) Proc. Natl. Acad. Sci., 103, p. 8697; David, R., Alla Discrete, H., (2005) Continuous, and Hybrid Petri Nets, , Springer, Berlin; De Leenheer, P., Angeli, D., Sontag, E.D., Monotone chemical reaction networks (2007) J. Math. Chem., 41, p. 295; Feinberg, M., Horn, F.J.M., Dynamics of open chemical systems and algebraic structure of underlying reaction network (1974) Chem. Eng. Sci., 29, p. 775; Feinberg, M., The existence and uniqueness of steady states for a class of chemical reaction networks (1995) Arch. Ration. Mech. Anal., 132, p. 311; Gard, T.C., Persistence in food webs with general interactions (1980) Math. Biosci., 51, p. 165; Genrich, H., Küffner, R., Voss, K., Executable Petri net models for the analysis of metabolic pathways (2001) Int. J. Software Tools Technol. Transfer (STTT), 3, p. 394; Hirsch, M., Smith, H.L., Monotone dynamical systems (2005) Ordinary Differential Equations, second. , Handbook of Differential Equations. Canada A., Drabek P., and Fonda A. (Eds), Elsevier; Hofbauer, J., So, J.W.-H., Uniform persistence and repellors for maps (1989) Proc. Am. Math. Soc., 107, p. 1137; Hofestädt, R., A Petri net application to model metabolic processes (1994) Syst. Anal. Mod. Simul., 16, p. 113; Horn, F.J.M., Jackson, R., General mass action kinetics (1972) Arch. Rational Mech. Anal., 49, p. 81; Huang, C.-Y.F., Ferrell, J.E., Ultrasensitivity in the mitogen-activated protein kinase cascade (1996) Proc. Natl. Acad. Sci. USA, 93, p. 10078; Küffner, R., Zimmer, R., Lengauer, T., Pathway analysis in metabolic databases via differential metabolic display (DMD) (2000) Bioinformatics, 16, p. 825; Asthagiri, A.R., Lauffenburger, D.A., A computational study of feedback effects on signal dynamics in a mitogen-activated protein kinase (MAPK) pathway model (2001) Biotechnol. Prog., 17, p. 227; Markevich, N.I., Hoek, J.B., Kholodenko, B.N., Signaling switches and bistability arising from multisite phosphorilation in protein kinase cascades (2004) J. Cell Biol., 164 (3), p. 353; Oliveira, J.S., Bailey, C.G., Jones-Oliveira, J.B., Dixon, D.A., Gull, D.W., Chandler, M.L.A., A computational model for the identification of biochemical pathways in the Krebs cycle (2003) J. Comput. Biol., 10, p. 57; Peleg, M., Yeh, I., Altman, R., Modeling biological processes using workflow and Petri net models (2002) Bioinformatics, 18, p. 825; Peterson, J.L., (1981) Petri Net Theory and the Modeling of Systems, , Prentice Hall, Lebanon, Indiana; Reddy, V.N., Mavrovouniotis, M.L., Liebman, M.N., Petri net representations in metabolic pathways (1993) Proc. Int. Conf. Intell. Syst. Mol. Biol., 1, pp. 328-336; Sontag, E.D., Structure and stability of certain chemical networks and applications to the kinetic proofreading model of T-cell receptor signal transduction (2001) IEEE Trans. Autom. Control, 46, p. 1028. , Errata in IEEE Trans. Autom. Control 47(2002): 705; Sontag, E.D., (1998) Mathematical Control Theory: Deterministic Finite Dimensional Systems. second ed., , Springer, New York; Thieme, H.R., Uniform persistence and permanence for non-autonomous semiflows in population biology (2000) Math. Biosci., 166, p. 173; Widmann, C., Spencer, G., Jarpe, M.B., Johnson, G.L., Mitogen-activated protein kinase: Conservation of a three-kinase module from yeast to human (1999) Physiol. Rev., 79, p. 143; Zhou, M., (1999) Modeling, Simulation, and Control of Flexible Manufacturing Systems: A Petri Net Approach, , World Scientific Publishing, Hong Kong\",\"Sontag, E.D.; Department of Mathematics, , Piscataway, NJ, United States; email: sontag@math.rutgers.edu\",,,,,,,,00255564,,MABIA,\"17869313\",\"English\",\"Math. Biosci.\",Article,\"Final\",\"All Open Access, Green\",Scopus,2-s2.0-34548532883\n\"Sedwards S., Mazza T.\",\"15122888100;8841993000;\",\"Cyto-Sim: A formal language model and stochastic simulator of membrane-enclosed biochemical processes\",2007,\"Bioinformatics\",\"23\",\"20\",,\"2800\",\"2802\",,25,\"10.1093/bioinformatics/btm416\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-35748973241&doi=10.1093%2fbioinformatics%2fbtm416&partnerID=40&md5=5b0c6862367f0d45e487730d9d3554c7\",\"Microsoft Research, University of Trento, Centre for Computational and Systems Biology, Trento, Italy; Department of Experimental and Clinical Medicine, Magna Græcia University of Catanzaro, Catanzaro, Italy\",\"Sedwards, S., Microsoft Research, University of Trento, Centre for Computational and Systems Biology, Trento, Italy; Mazza, T., Microsoft Research, University of Trento, Centre for Computational and Systems Biology, Trento, Italy, Department of Experimental and Clinical Medicine, Magna Græcia University of Catanzaro, Catanzaro, Italy\",\"Motivation: Compartments and membranes are the basis of cell topology and more than 30% of the human genome codes for membrane proteins. While it is possible to represent compartments and membrane proteins in a nominal way with many mathematical formalisms used in systems biology, few, if any, explicitly model the topology of the membranes themselves. Discrete stochastic simulation potentially offers the most accurate representation of cell dynamics. Since the details of every molecular interaction in a pathway are often not known, the relationship between chemical species in not necessarily best described at the lowest level, i.e. by mass action. Simulation is a form of computer-aided analysis, relying on human interpretation to derive meaning. To improve efficiency and gain meaning in an automatic way, it is necessary to have a formalism based on a model which has decidable properties. Results: We present Cyto-Sim, a stochastic simulator of membrane-enclosed hierarchies of biochemical processes, where the membranes comprise an inner, outer and integral layer. The underlying model is based on formal language theory and has been shown to have decidable properties (Cavaliere and Sedwards, 2006), allowing formal analysis in addition to simulation. The simulator provides variable levels of abstraction via arbitrary chemical kinetics which link to ordinary differential equations. In addition to its compact native syntax, Cyto-Sim currently supports models described as Petri nets, can import all versions of SBML and can export SBML and MATLAB® m-files. © The Author 2007. Published by Oxford University Press. All rights reserved.\",,\"article; biochemistry; cell membrane; computer aided design; computer program; computer simulation; dynamics; genome; language; model; molecular interaction; priority journal; simulator\",,,\"CellDesigner; Cyto-Sim; Dizzy; MATLAB\",,,,,\"Cavaliere, M., Sedwards, S., Modelling cellular processes using membrane systems with peripheral and integral proteins (2006) Lecture Notes in Computer Science, 4210, pp. 108-126; Cyto-Sim web page, http://www.cosbi.eu/Rpty_Soft_CytoSim.php/; Gillespie, D.T., Exact stochastic simulation of coupled chemical reactions (1977) J. Phys. Chem, 81, pp. 2340-2361; Lind, D., Marcus, B., (2005) An Introduction to Symbolic Dynamics and Coding, , Cambridge University Press, ISBN 0521559006; Nutsch, T., A quantitative model of the switch cycle of an archael flagella motor and its sensory control (2005) Biophys. J, 89, pp. 2307-2323; P Systems web page, , http://psystems.disco.unimib.it; PRISM web page, , http://www.prismmodelchecker.org; Vilar, M.G., Mechanisms of noise-resistance in genetic oscillators (2003) Proc. Natl. Acad. Sci, 99, p. 9; Yi, T.-M., A quantitative characterization of the yeast heterotrimeric G protein cycle (2003) Proc. Natl. Acad. Sci, 100, p. 19\",\"Mazza, T.; Microsoft Research, , Trento, Italy; email: t.mazza@unicz.it\",,,\"Oxford University Press\",,,,,13674803,,BOINF,\"17855418\",\"English\",\"Bioinformatics\",Article,\"Final\",\"All Open Access, Bronze, Green\",Scopus,2-s2.0-35748973241\n\"Remy E., Ruet P., Mendoza L., Thieffry D., Chaouiya C.\",\"36776104600;6602218144;35484740700;55874905800;8881504300;\",\"From logical regulatory graphs to standard petri nets: Dnamical roles and functionality of feedback circuits\",2006,\"Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)\",\"4230 LNBI\",,,\"56\",\"72\",,29,\"10.1007/11905455_3\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-38549114452&doi=10.1007%2f11905455_3&partnerID=40&md5=c674d21635dcbe982e0f622b4b644b4f\",\"IML, Campus de Luminy, 13288 Marseille Cedex 9, France; Serono Pharmacological Research Institute, Geneva, Switzerland; LGPD, Campus de Luminy, 13288 Marseille Cedex 9, France\",\"Remy, E., IML, Campus de Luminy, 13288 Marseille Cedex 9, France; Ruet, P., IML, Campus de Luminy, 13288 Marseille Cedex 9, France; Mendoza, L., Serono Pharmacological Research Institute, Geneva, Switzerland; Thieffry, D., LGPD, Campus de Luminy, 13288 Marseille Cedex 9, France; Chaouiya, C., LGPD, Campus de Luminy, 13288 Marseille Cedex 9, France\",\"Logical modelling and Petri nets constitute two complementary approaches for the dynamical modelling of biological regulatory networks. Leaning on a translation of logical models into standard Petri nets, we propose a formalisation of the notion of circuit functionality in the Petri net framework. This approach is illustrated with the modelling and analysis of a molecular regulatory network involved in the control of Th-lymphocyte differentiation. © Springer-Verlag Berlin Heidelberg 2006.\",\"Discrete dynamics; Feedback circuit; Genetic regulatory graphs; Petri nets; Qualitative analysis\",\"Feedback; Formal logic; Function evaluation; Mathematical models; Discrete dynamics; Feedback circuit; Genetic regulatory graphs; Qualitative analysis; Petri nets\",,,,,,,,\"Agnello, D., Lankford, C.S.R., Bream, J., Morinobu, A., Gadina, M., O'Shea, J., Frucht, D.M., Cytokines and transcription factors that regulate T helper cell differentiation: New players and new insights (2003) J. Clin. Immunol, 23, pp. 147-161; Alla, H., David, R., Continuous and hybrid petri nets (1998) Journal of Circuits, Systems, and Computers, 8 -1, pp. 159-188; Aracena, J., Modèles mathématiques discrets associés àdes systèmes biologiques. Application aux réseaux de régulation génétiques, (2001), Thèse de Doctorat Spécialité Mathématiques Appliquées, Université Joseph Fourier, Grenoble; Bergmann, C., Van Hemmen, J.L., Segel, L.A., Th1 or Th2: How an appropriate T helper response can be made (2001) Bull. Math. Biol, 63, pp. 405-430; Bryant, R., Graph-Based Algorithms for Boolean Function Manipulation (1986) IEEE Trans on Computers, C-35 (8), pp. 677-691; Chen, M., Hofestaedt, R., Quantitative Petri net model of gene regulated metabolic networks in the cell (2003) In Silico Biology, 3, p. 0029; Chaouiya C., E. Remy, and D. Thieffry, Petri Net Modelling of Biological Regulatory Networks, IML Research report 2005-20, (2005). Accessible at http://iml.univ-mrs.fr/editions/preprint2005/preprint2005.html; Chaouiya C., E. Remy, P. Ruet and D. Thieffry, Qualitative Modelling of Genetic Networks: From Logical Regulatory Graphs to Standard Petri Nets, ICATPN04, J. Cortadella and W. Reisig (Eds), LNCS 3099 (2004), 137-156; Chaouiya C., E. Remy, B. Mossé and D. Thieffry, Qualitative analysis of regulatory graphs: a computational tool based on a discrete formal framework, L. Benvenuti, A. De Santis, L. Farina (Eds), POSTA03, LNCIS 294 (2003), 119-126; de Jong, H., Modeling and Simulation of Genetic Regulatory Systems: A Literature Review (2002) J. Comp. Biol, 9, pp. 67-103; Doi, A., Fujita, S., Matsuno, H., Nagasaki, M., Miyano, S., Constructing biological pathway models with hybrid functional Petri nets (2004) In Silico Biology, 4, p. 0023; Glass, L., Kauffman, S.A., The logical analysis of continuous, non-linear biochemical control networks (1973) J.Theor.Biol, 39, pp. 103-129; Goss, P.J.E., Peccoud, J., Quantitative modeling of stochastic systems in molecular biology by using stochastic Petri nets (1998) Proc. Natl. Acad. Sci. USA, 95, pp. 6750-6755; Gouzé, J.L., Positive and negative circuits in dynamical systems (1998) J. Biol. Syst, 6, pp. 11-15; Heiner, M., Koch, I., Petri Net Based Model Validation in Systems Biology (2004) LNCS, 3099, pp. 216-237. , J. Cortadella and W. Reisig Eds, ICATPN04; Hofestadt, R., Thelen, S., Quantitative Modeling of Biochemical Networks (1998) In Silico Biology, 1, pp. 39-53; Krueger, G.R.H., Marshall, G.R., Junker, U., Schroeder, H., Buja, L.M., Wang, G., Growth factors, cytokines, chemokines and neuropeptides in the modeling of T-cells (2002) In vivo, 16, pp. 365-386; Küffner, R., Zimmer, R., Lengauer, T., Pathway analysis in metabolic databases via differential metabolic display (DMD) (2000) Bioinformatics, 9, pp. 925-936; Larrinaga, A., Naldi, A., Sánchez, L., Thieffry, D., Chaouiya, C., GINsim: A software suite for the qualitative modelling, simulation and analysis of regulatory networks BioSystems, , in press; Matsuno, H., Tanaka, Y., Aoshima, H., Doi, A., Matsui, M., Miyano, S., Biopathways representation and simulation on hybrid functional Petri net (2003) In Silico Biology, 3, p. 0032; Mendoza, L., A network model for the control of the differentiation process in Th cells BioSystems, , in press; Murata, T., Petri Nets: Properties, Analysis and Applications (1989) Proceedings of the IEEE, 77, pp. 541-580; Murphy, K.M., Reiner, S.L., The lineage decisions on helper T cells (2002) Nat. Rev. Immunol, 2, pp. 933-944; Reddy, V.N., Liebman, M.N., Mavrovouniotis, M.L., Qualitative analysis of biochemical reaction systems (1996) Comput. Biol. Med, 26, pp. 9-24; Remy, E., Mossé, B., Chaouiya, C., Thieffry, D., A description of dynamical graphs associated to elementary regulatory circuits (2003) Bioinformatics, 19. , ii172-178; E. Remy, P. Ruet and D. Thieffry, Graphic requirement for multistability and attractive cycles in a Boolean dynamical framework, IML Research report 2005-08, (2005). Accessible at http://iml.univ-mrs.fr/~ruet/ papiers.html; Remy, E., Ruet, P., (2005) On differentiation and homeostatic behaviours of Boolean dynamical systems, BioConcur; Reisig, W., Petri Nets, S.-V., (1985); Snoussi, E.H., Thomas, R., Logical identification of all steady states : The concept of feedback loop characteristic states (1993) Bul. Math. Biol, 55, pp. 973-991; Snoussi, E.H., Necessary conditions for multistationatity and stable periodicity (1998) J. Biol. Syst, 6, pp. 3-9; Soule, C., Graphic requirements for multistationarity (2003) ComPlexUs, 1, pp. 123-133; Thomas, R., 1994. The role of feedback circuits: positive feedback circuits are a necessary conditions for positive eigenvalues of the Jacobian matrix. Ber. Besenges. Phys. Chem. 98, 1148-1151; Thomas, R., Thieffry, D., Kaufman, M., Dynamical behaviour of biological regulatory networks-I. Biological role of feedback loops and practical use of the concept of the loop-characteristic state (1995) Bull. Math. Biol, 57, pp. 247-276; Weisbuch, G., De Boer, R.J., Perelson, A.S., Localized memories in idiotypic networks (1990) J. theor. Biol, 146, pp. 483-499; Yates, A., Bergman, C., Van Hemmen, J.L., Stark, J., Callard, R., Cytokine-mediated regulation of helper T cell populations (2000) J. theor. Biol, 206, pp. 539-560; Zevedei-Oancea, I., Schuster, S., Topological analysis of metabolic networks based on Petri net theory (2003) In Silico Biology, 3, p. 0029; Integrated Net Analyzer, , http://www.informatik.hu-berlin.de/lehrstuehle/automaten/ina, INA: URL; GINsim: Gene Interaction Network simulation URL: http://www.esil.univ- mrs.fr/~{}chaouiya/GINsim\",\"Remy, E.; IML, , 13288 Marseille Cedex 9, France; email: remy@iml.univ-mrs.fr\",,,\"Springer Verlag\",\"Transactions on Computational Systems Biology VII - BioConcur 2004-2005 Workshops\",,,71293,03029743,3540488375; 9783540488378,,,\"English\",\"Lect. Notes Comput. Sci.\",Conference Paper,\"Final\",\"\",Scopus,2-s2.0-38549114452\n\"Barjis I., Yoel J.W., Barjis J., Berri S., Ru Y.S.\",\"57204224562;12143498200;12143986300;12143257200;55166518500;\",\"Modeling and simulation of Carbohydrate metabolism using Petri net\",2005,\"2005 NSTI Nanotechnology Conference and Trade Show - NSTI Nanotech 2005 Technical Proceedings\",,,,\"536\",\"539\",,2,,\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-32044455979&partnerID=40&md5=351de72cfff03b07d7d89870f60d93d2\",\"Department of Biological Sciences and Mechanical Engineering, New York City College of Technology, United States; Department of Mechanical Engineering, Polytechnic University, United States; Department of Information Technology, Georgia Southern University, United States\",\"Barjis, I., Department of Biological Sciences and Mechanical Engineering, New York City College of Technology, United States; Yoel, J.W., Department of Mechanical Engineering, Polytechnic University, United States; Barjis, J., Department of Information Technology, Georgia Southern University, United States; Berri, S., Department of Biological Sciences and Mechanical Engineering, New York City College of Technology, United States; Ru, Y.S., Department of Biological Sciences and Mechanical Engineering, New York City College of Technology, United States\",\"In this paper, we present discrete-event simulation modeling of biological process. Carbohydrate metabolism, which plays an important role in the regulation of the glucose concentration in the blood, is modeled using Petri nets. In particular, we study application of Petri nets to model the processes of carbohydrate catabolism in a compact notation. The model does not show all the molecular and biochemical reaction that take place in each step. The breakdown of carbohydrate occurs in a series of steps and the final outcome of the carbohydrate anabolism is generation of ATP, water and carbon dioxide as it is shown in figure ?. During this process some of the potential energy stored in the hexose structure is released and used to derive the synthesis of ATP from ADP. There will be give an overview of the carbohydrate metabolism and a Petri net model would be constructed for the carbohydrate metabolism, which will show all the involved pathways in carbohydrate metabolism. However since the emphasis of this paper is on application of Petri net rather than the underlying molecular aspects, the molecular and biological events and reactions are not covered in depth. Only the most important reactions and processes of the carbohydrate metabolism, that are needed as an input data for building a Petri net model, are described. The Petri net model is developed using Petri net tools which allows graphical editing, analysis and simulation of Petri net models.\",\"Carbohydrate; Discrete simulation; Modeling in Biology; Petri net\",\"Biochemical reactions; Discrete simulation; Modeling in Biology; Petri net tools; Carbohydrates; Computer simulation; Molecular dynamics; Petri nets; Physiological models; Metabolism\",,,,,,,,\"Barjis, J., Barjis, I., Formalization of the protein production by means of Petri nets (1999) The Proceedings of the IEEE International Conference on Information, Intelligence and Systems (Symposia) October 31 - November 3, pp. 4-9. , Washington, DC; Barjis, I., Barjis, I., Barjis, J., Simulation of molecular processes using Petri nets: Comparison of mitosis and meiosis (2000) Summer Computer Simulation Conference 2000 (SCSC'00), , July 16-20, Vancouver, B.C. Canada; Jensen, K., Colored Petri net nets (1997) Basic Concepts, Analysis Methods and Practical Use, 1. , Springer-Verslag; Peterson, J.L., (1981) Petri Net Theory and the Modeling of Systems, , Prentice-Hall, Inc., Englewood Cliffs, NJ\",\"Barjis, I.; Department of Biological Sciences and Mechanical Engineering, United States\",\"Laudon M.Romanowicz B.\",\"Motorola;Nanotech Japan;Texas Instruments;General Electric Company;Sigma-Aldrich;et al\",,\"2005 NSTI Nanotechnology Conference and Trade Show - NSTI Nanotech 2005\",\"8 May 2005 through 12 May 2005\",\"Anaheim, CA\",66524,,0976798506; 9780976798507,,,\"English\",\"Nanotechnol. Conf. Trade Show Nanotech Techn. Proc.\",Conference Paper,\"Final\",\"\",Scopus,2-s2.0-32044455979\n\"Barjis I., Berri S., Barjis J.\",\"57204224562;12143257200;12143986300;\",\"Modeling of cellular communication by means of Petri nets\",2005,\"2005 NSTI Nanotechnology Conference and Trade Show - NSTI Nanotech 2005 Technical Proceedings\",,,,\"528\",\"531\",,,,\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-32044444586&partnerID=40&md5=41d39809d0612e9b8955a2c664e14c2b\",\"Department Biological Sciences and Electrical Engineering, New York City College of Technology, United States; Department of Information Technology, Georgia Southern University, United States\",\"Barjis, I., Department Biological Sciences and Electrical Engineering, New York City College of Technology, United States; Berri, S., Department Biological Sciences and Electrical Engineering, New York City College of Technology, United States; Barjis, J., Department of Information Technology, Georgia Southern University, United States\",\"This paper introduces application of Petri nets to cellular biology. In particular, it illustrates how by means of Petri nets the process of cellular communication (cellular signaling) can be modeled, analyzed, and simulated where the model could be used for the research purpose and/ or teaching purposes. In order to develop a Petri net model for cellular communication, firstly the paper explains cellular and molecular reactions of the processes, because the validity of the developed model depends on how well the real processes are identified and highlighted. Since the emphasis of this paper is on application of Petri net rather than the underlying molecular aspects, the molecular and biological events and reactions are not covered in depth. Only the most important reactions and processes of the cellular communication, needed as input data for building a Petri net model, are described. The Petri net model is developed using Colored Petri net tools (CPN), which allows graphical editing, analysis and simulation of Petri net models.\",\"Cellular signaling; Molecular modeling; Petri net\",\"Cellular signaling; Colored Petri net tools (CPN); Molecular modeling; Molecular reactions; Computer simulation; Mathematical models; Molecular dynamics; Petri nets; Signaling; Cellular radio systems\",,,,,,,,\"Alberts, B., Bray, D., Lewis, J., Raff, M., Roberts, K., Watson, J.D., (1994) Molecular Biology of the Cell, (3 rd Edition), , Garland; Barjis, I., Barjis, I., Barjis, J., Modeling of a chimeric protein construction by Means of Petri nets (2000) Proceedings of the IASTED International Conference \"\"Applied Simulation and Modeling (ASM 2000)\"\", pp. 87-90. , July 24-26, Banff, Alberta, Canada, ISBN:0-88986-294-X; Baxevanis, A.D., Ouellette, B.F.F., (1998) Bioinformatics - A Practical Guide to the Analysis of Gene and Proteins, , John Wiley; Dixon, D.A., Romine, M., Oliveira, J., Miller, J., Landvoy, R., Enabling the Silicon Cell: Development of Models of Cell-signaling Pathways and Networks, , http://www.emsl.pnl.gov:2080/docs/tms/annual_report1999/1619b-4q.html; Genrich, H., Kuffner, R., Voss, K., Executable Petri net models for the analyzes of metabolic pathways (2001) International Journal on Software Tools for Technology Transfer, 3 (4), pp. 394-404; Hawkins, J.D., (1997) Gene Structure and Expression, , Cambridge University Press; Heiner, M., Koch, I., Schuster, S., Using time-dependent Petri nets for the analysis of metabolic networks FraInformaticmethoden Zur Analyse, pp. 15-21. , Germany, Preprint Nr. 10/2000; Peterson, J.L., (1981) Petri Net Theory and the Modeling of Systems, , Prentice-Hall, Inc., Englewood Cliffs, NJ; Karp, G., (1996) Cell and Molecular Biology, , Wiley; Konig, R., Weismuller, M., Elis, R., Generating Petri nets for metabolic network modelling (2002) 10 th International Conference on Inteligent System for Molecular Biology (ISMB), , Edmonton, Canada, August; Jensen, K., Colored Petri nets (1997) Basic Concepts, Analysis Methods and Practical Use, 1. , Springer-Verslag; Stryer, L., (1995) Biochemistry, (4 th Edition), , Freeman, USA\",\"Barjis, I.; Department Biological Sciences and Electrical Engineering, United States\",\"Laudon M.Romanowicz B.\",\"Motorola;Nanotech Japan;Texas Instruments;General Electric Company;Sigma-Aldrich;et al\",,\"2005 NSTI Nanotechnology Conference and Trade Show - NSTI Nanotech 2005\",\"8 May 2005 through 12 May 2005\",\"Anaheim, CA\",66524,,0976798506; 9780976798507,,,\"English\",\"Nanotechnol. Conf. Trade Show Nanotech Techn. Proc.\",Conference Paper,\"Final\",\"\",Scopus,2-s2.0-32044444586\n\"Marwan W., Sujatha A., Starostzik C.\",\"7003334072;6507810450;7801371444;\",\"Reconstructing the regulatory network controlling commitment and sporulation in Physarum polycephalum based on hierarchical Petri Net modelling and simulation\",2005,\"Journal of Theoretical Biology\",\"236\",\"4\",,\"349\",\"365\",,44,\"10.1016/j.jtbi.2005.03.018\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-23744463967&doi=10.1016%2fj.jtbi.2005.03.018&partnerID=40&md5=95102e3ccae7ea36651b874ba5fc8a50\",\"Science and Technology Research Institute, University of Hertfordshire, Hatfield AL10 9AB, United Kingdom; Institut für Biologie III, Albert-Ludwigs-Universität, 79104 Freiburg im Breisgau, Germany; Max-Planck-Institut für Biochemie, 82152 Martinsried, Germany; Max-Planck-Institute for Dynamics of Complex Technical Systems, Sandtorstrasse 1, 39106 Magdeburg, Germany; Münchner Medizinische Wochenschrift, Neumarkter Str. 43, 81673 München, Germany\",\"Marwan, W., Science and Technology Research Institute, University of Hertfordshire, Hatfield AL10 9AB, United Kingdom, Max-Planck-Institute for Dynamics of Complex Technical Systems, Sandtorstrasse 1, 39106 Magdeburg, Germany; Sujatha, A., Institut für Biologie III, Albert-Ludwigs-Universität, 79104 Freiburg im Breisgau, Germany; Starostzik, C., Max-Planck-Institut für Biochemie, 82152 Martinsried, Germany, Münchner Medizinische Wochenschrift, Neumarkter Str. 43, 81673 München, Germany\",\"We reconstruct the regulatory network controlling commitment and sporulation of Physarum polycephalum from experimental results using a hierarchical Petri Net-based modelling and simulation framework. The stochastic Petri Net consistently describes the structure and simulates the dynamics of the molecular network as analysed by genetic, biochemical and physiological experiments within a single coherent model. The Petri Net then is extended to simulate time-resolved somatic complementation experiments performed by mixing the cytoplasms of mutants altered in the sporulation response, to systematically explore the network structure and to probe its dynamics. This reverse engineering approach presumably can be employed to explore other molecular or genetic signalling systems where the activity of genes or their products can be experimentally controled in a time-resolved manner. © 2005 Elsevier Ltd. All rights reserved.\",\"Petri Net; Regulatory network; Reverse engineering\",\"modeling; sporulation; article; biochemistry; controlled study; cytoplasm; dynamics; engineering; fungus growth; gene activity; genetics; mutant; nonhuman; Physarum polycephalum; priority journal; simulation; sporogenesis; stochastic model; Animals; Computer Simulation; Gene Expression Regulation, Developmental; Models, Genetic; Monte Carlo Method; Physarum polycephalum; Reproduction; Spores, Protozoan; Physarum polycephalum\",,,,,,,,\"Baumgarten, B., 1996. Petri-Netze - Grundlagen und Anwendungen Spektrum Akademischer Verlag; Burland, T.G., Pallotta, D., Homologous gene replacement in Physarum (1995) Genetics, 139, pp. 147-158; Burland, T.G., Bailey, J., Pallotta, D., Dove, W.F., Stable, selectable, integrative DNA transformation in Physarum (1993) Gene, 132, pp. 207-212; Chen, M., Hofestaedt, R., Quantitative Petri net model of gene regulated metabolic networks in the cell (2003) In Silico Biol., 3, pp. 347-365; Daniel, J.W., Rusch, H.P., Method for inducing sporulation of pure cultures of the myxomycete Physarum polycephalum (1962) J. Bacteriol., 83, pp. 234-240; Dee, J., Genes and development in Physarum (1987) Trends Genet., 3, pp. 208-213; Ge, H., Walhout, A.J.M., Vidal, M., Integrating 'omic' information: A bridge between genomics and systems biology (2003) Trends Genet., 19, pp. 551-560; Golderer, G., Werner, E.R., Leitner, S., Gröbner, P., Werner-Felmayer, G., Nitric oxide synthase is induced in sporulation of Physarum polycephalum (2001) Genes Dev., 15, pp. 1299-1309; Goss, P.J.E., Peccoud, J., Quantitative modeling of stochastic systems in molecular biology by using stochastic Petri nets (1998) Proc. Natl Acad. Sci. USA, 95, pp. 6750-6755; Guttes, E., Guttes, S., Synchronous mitosis in starved plasmodia of the myxomycete Physarum polycephalum (1961) Fed. Proc., 20, p. 419; Guttes, E., Guttes, S., Rusch, H.P., Morphological observations on growth and differentiation of Physarum polycephalum grown in pure culture (1961) Dev. Biol., 3, pp. 588-614; Hald, A., (1952) Statistical Theory with Engineering Applications, , Wiley London; Heiner, M., Koch, I., Petri net based model validation in systems biology (2004) Proceedings of 25th International Conference on Application and Theory of Petri Nets, ICATPN 2004, , Paper presented (Bologna, Italy, Springer, Berlin); Kroneder, R., Cashmore, A.R., Marwan, W., Phytochrome-induced expression of lig1, a homologue of the fission yeast cell cycle checkpoint gene hus1 is associated with the developmental switch in Physarum polycephalum plasmodia (1999) Curr. Genet., 36, pp. 86-93; Laffler, T.G., Wilkins, A., Selvig, S., Warren, N., Kleinschmidt, A., Dove, W.F., Temperature-sensitive mutants of Physarum polycephalum: Viability, growth, and nuclear replication (1979) J. Bacteriol., 138, pp. 499-504; Lamparter, T., Marwan, W., Spectroscopic detection of a phytochrome-like photoreceptor in the Myxomycete Physarum polycephalum and the kinetic mechanism for the photocontrol of sporulation by Pfr (2001) Photochem. Photobiol., 73, pp. 697-702; Lorenz, R.J., 1996. Grundbegriffe der Biometrie Gustav Fischer, Stuttgart; Martel, R., Tessier, A., Pallotta, D., Lemieux, G., Selective gene expression during sporulation of Physarum polycephalum (1988) J. Bacteriol., 170, pp. 4784-4790; Marwan, W., Theory of time-resolved somatic complementation and its use for the analysis of the sporulation control network of Physarum polycephalum (2003) Genetics, 164, pp. 105-115; Marwan, W., Detecting functional interactions in a gene and signaling network by time-resolved somatic complementation analysis (2003) BioEssays, 25, pp. 950-960; Marwan, W., Starostzik, C., The sequence of regulatory events in the sporulation control network of Physarum polycephalum analysed by time-resolved somatic complementation of mutants (2002) Protist, 153, pp. 391-400; Mata, J., Lyne, R., Burns, G., Bähler, J., The transcriptional program of meiosis and sporulation in fission yeast (2002) Nat. Genet., 32, pp. 143-147; Materna, S., Marwan, W., Estimating the number of plasmids taken up by a eukaryotic cell during transfection and evidence that antisense RNA abolishes gene expression in Physarum polycephalum (2005) FEMS Microbiol. Lett., 243, pp. 29-35; Matsuno, H., Tanaka, Y., Aoshima, H., Doi, A., Matsui, M., Miyano, S., Biopathways representation and simulation on hybrid functional Petri net (2003) In Silico Biol., 3, pp. 389-404; Petri, C.A., (1962) Kommunikation Mit Automaten, , Dissertation der Fakultät für Mathematik und Physik, Technische Hochschule Darmstadt, Bonn; Pinney, J.W., Westhead, R.D., McConkey, G.A., Petri Net representations in systems biology (2003) Biochem. Soc. Trans., 31, pp. 1513-1515; Prinz, S., Avila-Campillo, I., Aldridge, C., Srinivasan, A., Dimitrov, K., Siegel, A.F., Galitzki, T., Control of yeast filamentous-form growth by modules in an integrated molecular network (2004) Genome Res., 14, pp. 380-390; Putzer, H., Verfuerth, C., Claviez, M., Schreckenbach, T., Photomorphogenesis in Physarum: Induction of tubulins and sporulation-specific proteins and of their mRNAs (1984) Proc. Natl Acad. Sci. USA, 81, pp. 7117-7121; Reddy, V.N., Mavrovouniotis, M.L., Liebmann, M.N., Petri net representation in metabolic pathways (1993) Proceedings of the First International Conference on Intelligent Systems for Molecular Biology, ISMB 1993, , Paper presented (Bethesda, MD, USA, AAAI Press, Menlo Park); Rosenstengel, B., Winand, U., (1991) Petri-Netze: Eine Anwendungsorientierte Einführung, 4. Auflage, , edn Vieweg, Braunschweig; Rusch, H.P., Sachsenmaier, W., Behrens, K., Gruter, V., Synchronization of mitosis by the fusion of the plasmodia of Physarum polycephalum (1966) J. Cell Biol., 31, pp. 204-209; Sachsenmaier, W., Remy, U., Plattner-Schobel, R., Initiation of synchronous mitosis in Physarum polycephalum (1972) Exp. Cell Res., 73, pp. 41-48; Sauer, H.W., Babcock, K.L., Rusch, H.P., Sporulation in Physarum polycephalum. a model system for studies on differentiation (1969) Exp. Cell Res., 57, pp. 319-327; Srivastava, R., Peterson, M.S., Bentley, W.E., Stochastic kinetic analysis of the Escherichia coli stress circuit using sigma32-targeted antisense (2001) Biotechnol. Bioeng., 75, pp. 120-129; Starostzik, C., Marwan, W., Time-resolved detection of three intracellular signals controlling photomorphogenesis in Physarum polycephalum (1994) J. Bacteriol., 176, pp. 5541-5543; Starostzik, C., Marwan, W., A photoreceptor with characteristics of phytochrome triggers sporulation in the true slime mould Physarum polycephalum (1995) FEBS Lett., 370, pp. 146-148; Starostzik, C., Marwan, W., Functional mapping of the branched signal transduction pathway that controls sporulation in Physarum polycephalum (1995) Photochem. Photobiol., 62, pp. 930-933; Starostzik, C., Marwan, W., Kinetic analysis of a signal transduction pathway by time-resolved somatic complementation of mutants (1998) J. Exp. Biol., 201, pp. 1991-1999; Sujatha, A., Balaji, S., Devi, R., Marwan, W., Isolation of Physarum polycephalum plasmodial mutants altered in sporulation by chemical mutagenesis of flagellates (2005) Eur. J. Protistol., 41, pp. 19-27; Veitia, R.A., Exploring the etiology of haploinsufficiency (2002) BioEssays, 24, pp. 175-184; Voss, K., Heiner, M., Koch, I., Steady state analysis of metabolic pathways using Petri nets (2003) In Silico Biol., 3, pp. 367-387; Zevedei-Oancea, I., Schuster, S., Topological analysis of metabolic networks based on Petri net theory (2003) In Silico Biol., 3, pp. 323-345\",\"Marwan, W.; Max-Planck-Institute for Dynamics of Complex Technical Systems, Sandtorstrasse 1, 39106 Magdeburg, Germany; email: marwan@mpi-magdeburg.mpg.de\",,,,,,,,00225193,,JTBIA,\"15904935\",\"English\",\"J. Theor. Biol.\",Article,\"Final\",\"\",Scopus,2-s2.0-23744463967\n\"Swain M., Hunniford T., Dubitzky W., Mandel J., Palfreyman N.\",\"11139776200;11142080100;6603902423;55909473400;8236082500;\",\"Reverse-engineering gene-regulatory networks using evolutionary algorithms and Grid computing\",2005,\"Journal of Clinical Monitoring and Computing\",\"19\",\"4-5\",,\"329\",\"337\",,8,\"10.1007/s10877-005-0678-x\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-30344481405&doi=10.1007%2fs10877-005-0678-x&partnerID=40&md5=fc23ce36fa4ffffef95f4f591bf9994f\",\"School of Biomedical Sciences, University of Ulster, Cromore Road, Coleraine BT52 1SA, United Kingdom; School of Biomedical Sciences, Weihenstephan University of Applied Sciences, Feising, Germany\",\"Swain, M., School of Biomedical Sciences, University of Ulster, Cromore Road, Coleraine BT52 1SA, United Kingdom; Hunniford, T., School of Biomedical Sciences, University of Ulster, Cromore Road, Coleraine BT52 1SA, United Kingdom; Dubitzky, W., School of Biomedical Sciences, University of Ulster, Cromore Road, Coleraine BT52 1SA, United Kingdom; Mandel, J., School of Biomedical Sciences, Weihenstephan University of Applied Sciences, Feising, Germany; Palfreyman, N., School of Biomedical Sciences, Weihenstephan University of Applied Sciences, Feising, Germany\",\"Objective. Living organisms regulate the expression of genes using complex interactions of transcription factors, messenger RNA and active protein products. Due to their complexity, gene-regulatory networks are not fully understood.However, by building computational models it is possible to gain insight into their function and operation. Methods. Evolutionary algorithms are used to create computational models of gene-regulatory networks based on observed microarray data. These algorithms can be computationally intensive. They will be implemented within an existing grid computing infrastructure, that has been developed for data mining purposes, and which is able to deliver the required com pute power. Results. We discuss how models can built achieved using distributed and grid computing technology. In particular we investigate how Condor and JavaSpaces technology is suited to the requirements of our modeling approach. Conclusions. Determining network models of gene-regulatory networks using evolutionary algorithms not only requires considerable computational power, but also a modeling formalism that can explain the underlying dynamics. © Springer Science + Business Media, Inc. 2005.\",\"Distributed computing; Evolutionary algorithms; Gene-regulatory networks; Grid computing; Mutuality nets; Systems biology\",\"Computational methods; Data mining; Mathematical models; Petri nets; Proteins; Reverse engineering; RNA; Distributed computing; Gene-regulatory networks; Grid computing; Mutuality nets; Systems biology; Evolutionary algorithms; DNA; article; computer analysis; computer model; computer program; data analysis; DNA microarray; genetic algorithm; genetic engineering; genetic regulation; information processing; information system; molecular dynamics; molecular evolution; priority journal; technology; Algorithms; Computational Biology; Computer Communication Networks; Computer Simulation; Gene Expression Regulation; Information Storage and Retrieval\",,\"DNA, 9007-49-2\",\"Condor; JavaGenes; JavaSpaces; JavaUniverse\",,\"004475\",\"This work has been supported by the European Commission’s FP6 IST DataMiningGrid Project (www.DataMiningGrid.org), contract number 004475.\",,\"Akutsu, T., Miyano, S., Kuhara, S., Identification of genetic networks from a small number of gene expression patterns under the Boolean network model (1999) Pacific Symp Biocomp, 4, pp. 17-28; Mandel, J., Palfreyman, N., A Pen-and-Paper Notation for Teaching in the Biosciences (2004) Proc of Int'l Symposium Knowledge Exploration in Life Science Informatics (KELSI 2004), pp. 84-95. , López JA, Benfenati E, Dubitzky W, ed. Milan, Italy: Lecture Notes in Computer Science 3303 Springer Berlin Heidelberg New York; Mandel, J., Palfreyman, N., Lopez, J., Dubitzky, W., Representing Bioinformatic Causality (2004) Briefings in Bioinformatics, 5 (3), pp. 270-283; Matsuno, H., Tanaka, Y., Aoshima, H., Doi, A., Matsui, M., Miyano, S., Biopathways representation and simulation on hybrid functional Petri net (2003) Silico Biol, 3, pp. 32-43; Doyle, J.C., Francis, B.A., Tannenbaum, A.R., Feedback control theory (1992), Macmillan; Forrester, J.W., Principles of Systems Pegasus Communications (1968); Palfreyman, N., The Construction of Meaning in Computational Integrative Biology (2004) OMICS: A Journal of Integrative Biology, Special Issue: Data Mining Meets Integrative Biology- a Symbiosis in the Making., 8 (2), pp. 95-105. , In W. Dubitzky, ed; Platzer, U., Simulation of Genetic Networks in Multicellular Organisms. Heidelberg University Ph.D (2003) Thesis; Koza, J., Bennett, F., Andre, D., Keane, M., Genetic Programming III: Automatic Programming and Automatic Circuit Synthesis (1999), Morgan Kaufmann; D'Haeseleer, P., Reconstructing Gene Networks from Large Scale Gene Expression Data. University of New Mexico: Ph.D (2000) Thesis; Goldberg, D.E., Genetic Algorithms in Search, Optimization, and Machine Learning (Addison-Wesley) (1999); Michalewicz, Z., Genetic Algorithms+Data Structures=Evolution Programs (1996), 3rd edition Springer-Verlag, Berlin; Fogel, D., Applying evolutionary programming to selected control problems (1994) Comp Math App, 11 (27), pp. 89-104; Tomassi, M., Parallel and distributed evolutionary algorithms: A review (1999) Evolutionary Algorithms in Engineering and Computer Science., pp. 113-133. , In Miettinen K, Makela M, Neittaanmaki P, Periaux J, ed. J Wiley and Sons; Arkin, A., Ross, J., McAdams, H., Stochastic kinetic analysis of developmental pathway bifurcation in phage lambda-infected Escherichia coli cells (1998) Genetics, 149 (4), pp. 1633-1648; Kitano, H., Computational systems biology (2002) Nature, 420, pp. 206-210. , 12432404; Chen, T., He, H.L., Church, G.M., Modeling gene expression with differential equations (1999) Proc Pacific Symp Biocomp, pp. 29-40; Edgar, R., Domrachev, M., Lash, A.E., Gene Expression Omnibus: NCBI gene expression and hybridization array data repository (2002) Nucleic Acids Res, 30 (1), pp. 207-210; Tavazole, S., Hughes, J.D., Campbell, M.J., Cho, R.J., Church, G.M., Systematic determination of genetic network architecture (1999) Nature Genetics, 22, pp. 281-285; Wahde, M., Hertz, J., Modeling genetic regulatory dynamics in neural development (2001) J Comput Biol, 8 (4), pp. 492-514; Kikuchi, S., Tominaga, D., Arita, M., Takahashi, Tomita, M., Dynamic modeling of genetic networks using Genetic algorithm and S-system (2003) Bioinformatics, 19 (5), pp. 643-650; Mendes, P., Sha, W., Ye, K., Artificial gene networks for objective comparison of analysis algorithms (2003), 19 (2), pp. 22-29; Thain, D., Tannenbaum, T., Livny, M., Condor and the Grid (2003) Grid Computing: Making The Global Infrastructure a Reality (John Wiley), , Berman F, Hey AJG, Fox G; SGE: Sun Grid Engine http://gridengine.sunsource.net; Globus, A., Langhirt, E., Livny, M., Ramamurthy, R., Solomon, M., Traugott, S., JavaGenes and Condor: Cycle-scavenging genetic algorithms (2000) Proceedings of the ACM Conference on Java Grande, pp. 134-139. , San Francisco, California; Thain, D., Livny, M., Error Scope on a Computational Grid: Theory and Practice (2002) Proceedings of the Eleventh IEEE Symposium on High Performance Distributed Computing (HPDC11), , Edinburgh, Scotland; Freeman, E., Hupfer, S., Arnold, K., JavaSpaces TM Principles, Patterns and Practice. Addison-Wesley Longman Ltd: (1999); Edwards, W.K., Edwards, W., (2000) Core Jini, , (2nd Edition). (Prentice Hall PTR); Gelemter, D., Generative communication in Linda. ACM Transactions on Programming Languages and Systems (1985), 1, pp. 80-112; Setzkorn, C., Paton, R.C., JavaSpaces-An Affordable Technology for the Simple Implementation of Reusable Parallel Evolutionary Algorithms (2004) Proc of Int'l Symposium Knowledge Exploration in Life Science Informatics (KELSI 2004), pp. 84-95. , López JA, Benfenati E, Dubitzky W. Milan, Italy: Lecture Notes in Computer Science 3303. Springer Berlin Heidelberg New York; Han, J., Kamber, M., Data Mining: Concepts and Techniques (2001) Academic Press; http://www.DataMiningGrid.org, DataMiningGrid, DataMiningGrid - Data Mining Tools and Services for Grid Computing Environments at; I Witten E Frank 2000 Data Mining: Practical machine learning tools with Java implementations Morgan Kaufmann San Francisco; Majithia, S., Shields, M.S., Taylor, I.J., Want I. Triana: A Graphical Web Service Composition and Execution Toolkit (2004) Proceedings of the IEEE International Conference on Web Services (ICWS'04), pp. 514-524. , IEEE Computer Society; Systems Biology Markup Language http://SBML.org, at\",\"Swain, M.; School of Biomedical Sciences, Cromore Road, Coleraine BT52 1SA, United Kingdom; email: mt.swain@ulster.ac.uk\",,,,,,,,13871307,,JCMCF,\"16328947\",\"English\",\"J. Clin. Monit. Comput.\",Article,\"Final\",\"\",Scopus,2-s2.0-30344481405\n\"Zevedei-Oancea I., Schuster S.\",\"8244869300;55323844600;\",\"A theoretical framework for detecting signal transfer routes in signalling networks\",2005,\"Computers and Chemical Engineering\",\"29\",\"3\",,\"597\",\"617\",,19,\"10.1016/j.compchemeng.2004.08.026\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-15744389378&doi=10.1016%2fj.compchemeng.2004.08.026&partnerID=40&md5=29ba2f36be235556efd9c6a5817bcc82\",\"Department of Bioinformatics, Max Delbruck Ctr. for Molec. Med., Robert-Rössle-Str 10, 13092 Berlin-Buch, Germany; Institute of Biology, Theoretical Biophysics, Humboldt University Berlin, Invalidenstrasse 42, 10115 Berlin, Germany; Department of Bioinformatics, Faculty of Biology and Pharmaceutics, Friedrich Schiller University Jena, Ernst-Abbe-Platz 2, D-07743 Jena, Germany\",\"Zevedei-Oancea, I., Department of Bioinformatics, Max Delbruck Ctr. for Molec. Med., Robert-Rössle-Str 10, 13092 Berlin-Buch, Germany, Institute of Biology, Theoretical Biophysics, Humboldt University Berlin, Invalidenstrasse 42, 10115 Berlin, Germany; Schuster, S., Department of Bioinformatics, Max Delbruck Ctr. for Molec. Med., Robert-Rössle-Str 10, 13092 Berlin-Buch, Germany, Department of Bioinformatics, Faculty of Biology and Pharmaceutics, Friedrich Schiller University Jena, Ernst-Abbe-Platz 2, D-07743 Jena, Germany\",\"In signalling networks, the presence of multi-part activations/inhibitions and multimolecular reactions results in a highly branched structure. We give a theoretical framework, an algorithm and its implementation - SigNetRouter - for untangling such networks and detecting routes starting with a given initial factor or ending with a desired target. The effects and reactions are here considered as irreversible. If all effects involved in the route are known qualitatively (activation versus inhibition) and both effects and reactions are monomolecular, we can deduce the total effect. The factors acting together and the targets affected on the same route are detected. The cycles and possibly missing reactions are determined. The minimal amounts of each metabolite (in numbers of molecules) required to \"\"move\"\" the signal through each route and the remaining number of molecules are reported. Some theoretical and biological examples, such as the B cell antigen receptor signalling network illustrate the concepts. © 2004 Elsevier Ltd. All rights reserved.\",\"Cyclic route; Petri nets; Signal transduction; Signalling networks; Signalling routes; SigNetRouter\",\"Algorithms; Metabolites; Molecular dynamics; Routers; Multimolecular reactions; Signaling networks; SigNetRouter; Signal detection; B lymphocyte antigen; lymphocyte antigen receptor; biochemical engineering; algorithm; article; mathematical computing; metabolite; qualitative analysis; signal detection; signal transduction; theory\",,,,,,,,\"Aho, A.V., Ullman, J.D., Hopcroft, J.E., (1983) Data Structures and Algorithms, , Addison-Wesley Massachusetts; Berg, J., Tymoczko, J., Stryer, L., (2002) Biochemistry, , Freeman New York; Bhalla, U.S., Iyengar, R., Emergent properties of networks of biological signaling pathways (1999) Science, 283, pp. 381-387; Campbell, K.S., Signal transduction from the B cell antigen-receptor (1999) Current Opinion in Immunology, 11, pp. 256-264; Cormen, T.H., Leiserson, C.E., Rivest, R.L., (1990) Introduction to Algorithms, , McGraw-Hill New York; Cornish-Bowden, A., Hofmeyr, J.-H.S., Cárdenas, M.L., Strategies for manipulating metabolic fluxes in biotechnology (1995) Bioorganic Chemistry, 23, pp. 439-449; Defranco, A.L., Transmembrane signalling by antigen receptors of B and T lymphocytes (1995) Current Opinion in Cell Biology, 7, pp. 163-175; Defranco, A.L., The complexity of signalling pathways activated by the BCR (1997) Current Opinion in Immunology, 9, pp. 296-308; Diestel, R., (2000) Graph Theory, , Springer Berlin; Goldbeter, A., (1996) Biochemical Oscillations and Cellular Rhythms, , University Press Cambridge; Heinrich, R., Neel, B.G., Rapoport, T.A., Mathematical models of protein kinase signal transduction (2002) Molecular Cell, 9, pp. 957-970; Hofestädt, R., A Petri net application to model metabolic processes (1994) Systems Analysis Modelling Simulation, 16, pp. 113-122; Jeong, H., Tombor, B., Albert, R., Oltvai, Z.N., Barabási, A.L., The large-scale organization of metabolic networks (2000) Nature, 407, pp. 651-654; Kholodenko, B.N., Hoek, J.B., Westerhoff, H.V., Brown, G.C., Quantification of information transfer via cellular signal transduction pathways (1997) FEBS Letters, 414, pp. 430-434; Kholodenko, B.N., Kiyatkin, A., Bruggeman, F.J., Sontag, E., Westerhoff, H.V., Hoek, J.B., Untangling the wires: A strategy to trace functional interactions in signaling and gene networks (2002) Proceedings of the National Academy of Sciences of the United States of America, 99, pp. 12841-12846; Knuth, D., (1998) The Art of Computer Programming: Sorting and Searching (Vol. 3), , Addison-Wesley Boston; Livovschi, L., Georgescu, H., (1986) Synthesis and Analysis of Algorithms, , Scientific and Encyclopedic Publishing House Bucharest; Mavrovouniotis, M.L., Stephanopoulos, G., Stephanopoulos, G., Computer-aided synthesis of biochemical pathways (1990) Biotechnology and Bioengineering, 36, pp. 1119-1132; Nitschke, L., Carsetti, R., Ocker, B., Köhler, G., Lamers, M., CD22 is a negative regulator of B cell receptor signalling (1997) Current Biology, 7, pp. 133-143; Oliveira, J.S., Bailey, C.G., Jones-Oliveira, J.B., Dixon, D.A., An algebraic-combinatorial model for the identification and mapping of biochemical pathways (2001) Bulletin of Mathematical Biology, 63, pp. 1163-1196; Pfeiffer, T., Sanchez-Valdenebro, I., Nuño, J.C., Montero, F., Schuster, S., METATOOL: For studying metabolic networks (1999) Bioinformatics, 15, pp. 251-257; Postma, P.W., Lengeler, J.W., Phosphoenolpyruvate:carbohydrate phosphotransferase system of bacteria (1985) Microbiological Reviews, 49 (3), pp. 232-269; Reddy, V.N., Liebmann, M.N., Mavrovouniotis, M.L., Qualitative analysis of biochemical reaction systems (1996) Computers in Biology and Medicine, 26, pp. 9-24; Reisig, W., (1985) Petri Nets: An Introduction, , Springer Berlin; Rzhetsky, A., Koike, T., Kalachikov, S., Gomez, S.M., Krauthammer, M., Kaplan, S.H., A knowledge model for analysis and simulation of regulatory networks (2000) Bioinformatics, 16, pp. 1120-1128; Schuster, S., Hilgetag, C., On elementary flux modes in biochemical reaction systems at steady state (1994) Journal of Biological Systems, 2, pp. 165-182; Schuster, S., Fell, D.A., Dandekar, T., A general definition of metabolic pathways useful for systematic organization and analysis of complex metabolic networks (2000) Nature Biotechnology, 18, pp. 326-332; Schuster, S., Kholodenko, B.N., Westerhoff, H.V., Cellular information transfer regarded from a stoichiometry and control analysis perspective (2000) BioSystems, 55, pp. 73-81; Steffen, M., Petti, A., Aach, J., D'Haeseleer, P., Church, G., Automated modelling of signal transduction networks (2002) BMC Bioinformatics, 3, p. 34; Stelling, J., Klamt, S., Bettenbrock, K., Schuster, S., Gilles, E.D., Metabolic network structure determines key aspects of functionality and regulation (2002) Nature, 420, pp. 190-193; Wiley, H.S., Shvartsman, S.Y., Lauffenburger, D.A., Computational modeling of the EGF-receptor system: A paradigm for systems biology (2003) Trends in Cell Biology, 13, pp. 43-50; Taipale, J., Beachy, P., The Hedgehog and Wnt signalling pathways in cancer (2001) Nature, 411, pp. 349-354; Thieffry, D., Thomas, R., Qualitative analysis of gene networks (1998) Pacific Symposium on Biocomputing, pp. 77-88; Thomas, R., Thieffry, D., Kaufman, M., Dynamical behaviour of biological regulatory networks. I. Biological role of feedback loops and practical use of the concept of the loop-characteristic state (1995) Bulletin of Mathematical Biology, 57 (2), pp. 247-276; Tomescu, I., (1997) Data Structures, , University Press Bucharest\",\"Schuster, S.; Department of Bioinformatics, Robert-Rössle-Str 10, 13092 Berlin-Buch, Germany; email: schuster@minet.uni-jena.de\",,,,,,,,00981354,,CCEND,,\"English\",\"Comput. Chem. Eng.\",Article,\"Final\",\"\",Scopus,2-s2.0-15744389378\n\"Moore J.H., Boczko E.M., Summar M.L.\",\"7405241093;6603083569;7003497387;\",\"Connecting the dots between genes, biochemistry, and disease susceptibility: Systems biology modeling in human genetics\",2005,\"Molecular Genetics and Metabolism\",\"84\",\"2\",,\"104\",\"111\",,27,\"10.1016/j.ymgme.2004.10.006\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-12844277447&doi=10.1016%2fj.ymgme.2004.10.006&partnerID=40&md5=dd1f3396679ffb67471bcaeb4c71e05f\",\"Computational Genetics Laboratory, Department of Genetics, Norris Cotton Cancer Ctr., D., Lebanon, NH 03756, United States; Department of Biomedical Informatics, Vanderbilt University Medical School, Nashville, TN 37232, United States; Department of Pediatrics, Vanderbilt University Medical School, Nashville, TN 37232, United States; Dept. Molec. Physiol. and Biophys., Vanderbilt University Medical School, Nashville, TN 37232, United States; Center for Human Genetics Research, Vanderbilt University Medical School, Nashville, TN 37232, United States\",\"Moore, J.H., Computational Genetics Laboratory, Department of Genetics, Norris Cotton Cancer Ctr., D., Lebanon, NH 03756, United States; Boczko, E.M., Department of Biomedical Informatics, Vanderbilt University Medical School, Nashville, TN 37232, United States; Summar, M.L., Department of Pediatrics, Vanderbilt University Medical School, Nashville, TN 37232, United States, Dept. Molec. Physiol. and Biophys., Vanderbilt University Medical School, Nashville, TN 37232, United States, Center for Human Genetics Research, Vanderbilt University Medical School, Nashville, TN 37232, United States\",\"Understanding how DNA sequence variations impact human health through a hierarchy of biochemical and physiological systems is expected to improve the diagnosis, prevention, and treatment of common, complex human diseases. We have previously developed a hierarchical dynamic systems approach based on Petri nets for generating biochemical network models that are consistent with genetic models of disease susceptibility. This modeling approach uses an evolutionary computation approach called grammatical evolution as a search strategy for optimal Petri net models. We have previously demonstrated that this approach routinely identifies biochemical network models that are consistent with a variety of genetic models in which disease susceptibility is determined by nonlinear interactions between two or more DNA sequence variations. We review here this approach and then discuss how it can be used to model biochemical and metabolic data in the context of genetic studies of human disease susceptibility. © 2004 Elsevier Inc. All rights reserved.\",\"Bioinformatics; Discrete dynamic systems; Epistasis; Gene-gene interactions; Genetic algorithms; Grammatical Evolution; Petri nets; Urea cycle\",\"algorithm; biochemistry; biological model; biology; disease predisposition; DNA sequence; dynamics; evolution; gene expression; gene frequency; gene interaction; gene locus; genetic analysis; genetic epistasis; genetic model; genetic polymorphism; genotype; human; kinetics; mathematical computing; metabolism; molecular interaction; priority journal; pulmonary hypertension; risk assessment; short survey; urea cycle; Computational Biology; Genetic Predisposition to Disease; Genetics, Medical; Humans; Models, Biological\",,,,,\"National Institutes of Health, NIH; National Heart, Lung, and Blood Institute, NHLBI: R01HL065234; National Institute of Allergy and Infectious Diseases, NIAID: R01AI059694; National Institute of Environmental Health Sciences, NIEHS: R01ES009915; Eunice Kennedy Shriver National Institute of Child Health and Human Development, NICHD: R01HD047447\",\"This work was supported by National Institutes of Health Grants HL65234, AI59694, HD047447, and ES09915. We thank Dr. Lance Hahn for his excellent technical assistance in the development, evaluation, and implementation of the Petri net algorithms and software.\",,\"Altmuller, J., Palmer, L.J., Fischer, G., Scherb, H., Wjst, M., Genomewide scans of complex human diseases: True linkage is hard to find (2001) Am. J. Hum. Genet., 69, pp. 936-950; Bateson, W., (1909) Mendel's Principles of Heredity, , Cambridge University Press Cambridge; Chen, M., Hofestadt, R., Quantitative Petri net model of gene regulated metabolic networks in the cell (2003) In Silico Biol., 3, pp. 347-365; Cho, Y.M., Ritchie, M.D., Moore, J.H., Kim, M., Yoon, K.H., Sung, Y.A., Jang, H.C., Park, K.S., Multifactor dimensionality reduction reveals interactions among the UCP2 and PPARγ genes in type 2 diabetes (2004) Diabetologia, 47, pp. 549-554; Desel, J., Juhas, G., What is a Petri net? Informal answers for the informed reader (2001) Unifying Petri Nets, Lecture Notes in Computer Science 2128, , H. Ehrig G. Juhas Springer New York; Di Paolo, E.A., Noble, J., Bullock, S., Simulation models as opaque thought experiments (2000) Artificial Life VI, , M.A. Dedau The MIT Press Cambridge*et al; Falconer, D.S., MacKay, T.F.C., (1996) Introduction to Quantitative Genetics, , Longman Essex; Fogel, L.J., Autonomous automata (1962) Ind. Res., 4, pp. 14-19; Fogel, L.J., Owens, A.J., Walsh, M.J., (1966) Artificial Intelligence Through Simulated Evolution, , Wiley New York; Frankel, W.N., Schork, N.J., Who's afraid of epistasis? (1996) Nat. Genet., 14, pp. 371-373; Goldberg, D.E., (1989) Genetic Algorithms in Search, Optimization, and Machine Learning, , Addison-Wesley Reading, MA; Goss, P.J., Peccoud, J., Quantitative modeling of stochastic systems in molecular biology by using stochastic Petri nets (1998) Proc. Nat. Acad. Sci. USA, 95, pp. 6750-6755; Hahn, L.W., Moore, J.H., Ideal discrimination of discrete clinical endpoints using multilocus genotypes (2004) In Silico Biol., 4, p. 0016; Hahn, L.W., Ritchie, M.D., Moore, J.H., Multifactor dimensionality reduction software for detecting gene-gene and gene-environment interactions (2003) Bioinformatics, 19, pp. 376-382; Hirschhorn, J.N., Lohmueller, K., Byrne, E., Hirschhorn, K., A comprehensive review of genetic association studies (2002) Genet. Med., 4, pp. 45-61; Hoh, J., Wille, A., Ott, J., Trimming, weighting, and grouping SNPs in human case-control association studies (2001) Genome Res., 11, pp. 2115-2119; Holland, J.H., Adaptive plans optimal for payoff-only environments (1969) Proceedings of the 2nd Hawaii International Conference on Systems Sciences, pp. 917-920; Holland, J.H., (1975) Adaptation in Natural and Artificial Systems, , University of Michigan Press Ann Arbor; Jansen, R.C., Studying complex biological systems using multifactorial perturbation (2003) Nat. Rev. Genet., 4, pp. 145-151; Kitagawa, J., Iba, H., Identifying metabolic pathways and gene regulation networks with evolutionary algorithms (2003) Evolutionary Computation and Bioinformatics, , G.B. Fogel D.W. Corne Morgan Kaufmann Publishers San Francisco; Koza, J.R., (1992) Genetic Programming: On the Programming of Computers by Means of Natural Selection, , The MIT Press; Koza, J.R., Mydlowec, W., Lanza, G., Yu, J., Keane, M.A., Reverse engineering of metabolic pathways from observed data using genetic programming (2001) Pacific Symposium on Biocomputing, 6, pp. 434-445; Li, W., Reich, J., A complete enumeration and classification of two-locus disease models (2000) Hum. Hered., 50, pp. 334-349; Marcotty, M., Ledgard, H., (1986) The World of Programming Languages, , Springer Berlin; Merlin, P., (1974) A Study of the Recoverability of Computer Systems, , Ph.D. Thesis, University of California, Irvine; Moore, J.H., The ubiquitous nature of epistasis in determining susceptibility to common human diseases (2003) Hum. Hered., 56, pp. 73-82; Moore, J.H., Hahn, L.W., Grammatical evolution for the discovery of Petri net models of complex genetic systems (2003) Lecture Notes in Computer Science 2724, pp. 2412-2413. , E. Cantu-Paz Springer Berlin*et al; Moore, J.H., Hahn, L.W., Petri net modeling of high-order genetic systems using grammatical evolution (2003) BioSystems, 72, pp. 177-186; Moore, J.H., Evaluation of a discrete dynamic systems approach for modeling the hierarchical relationship between genes, biochemistry, and disease susceptibility (2004) Discrete Contin. Dynam. Sys. B, 4, pp. 275-287; Moore, J.H., Hahn, L.W., An improved grammatical evolution strategy for Petri net modeling of complex genetic systems (2004) Lecture Notes in Computer Science 3005, pp. 62-71. , G.R. Raidl Springer Berlin*et al; Moore, J.H., Hahn, L.W., Systems biology modeling in human genetics using Petri nets and grammatical evolution (2004) Lecture Notes in Computer Science 3102, pp. 392-401. , K. Deb Springer New York*et al; Moore, J.H., Hahn, L.W., Ritchie, M.D., Thornton, T.A., White, B.C., Application of genetic algorithms to the discovery of complex models for simulation studies in human genetics (2002) Proceedings of the Genetic and Evolutionary Computation Conference, , W.B. Langdon Morgan Kaufmann Publishers San Francisco*et al; Moore, J.H., Hahn, L.W., Ritchie, M.D., Thornton, T.A., White, B.C., Routine discovery of high-order epistasis models for simulation studies in human genetics (2004) Appl. Soft Comput., 4, pp. 79-86; Moore, J.H., Ritchie, M.D., The challenges of whole-genome approaches to common diseases (2004) JAMA, 291, pp. 1642-1643; Moore, J.H., Williams, S.M., New strategies for identifying gene-gene interactions in hypertension (2002) Ann. Med., 34, pp. 88-95; Murata, T., Petri nets: Properties, analysis and applications (1989) Proc. IEEE, 77, pp. 541-580; O'Neill, M., Ryan, C., Grammatical evolution (2001) IEEE Trans. Evol. Comput., 5, pp. 349-358; Pearson, D.L., Dawling, S., Walsh, W.F., Haines, J.L., Christman, B.W., Bazyk, A., Scott, N., Summar, M.L., Neonatal pulmonary hypertension-urea-cycle intermediates, nitric oxide production, and carbamoyl-phosphate synthetase function (2001) N. Engl. J. Med., 344, pp. 1832-1838; Ramchandani, C., (1974) Analysis of Asynchronous Concurrent Systems by Timed Petri Nets, , Ph.D. Thesis, MIT, Cambridge; Rechenberg, I., (1965) Cybernetic Solution Path of An Experimental Problem, , Royal Aircraft Establishment, Farnborough, U.K., Library Translation No. 1122; Reif, D., White, B.C., Moore, J.H., Integrated analysis of genetic, genomic, and proteomic data (2004) Exp. Rev. Proteomics, 1, pp. 67-75; Ritchie, M.D., Hahn, L.W., Roodi, N., Bailey, L.R., Dupont, W.D., Parl, F.F., Moore, J.H., Multifactor dimensionality reduction reveals high-order interactions among estrogen metabolism genes in sporadic breast cancer (2001) Am. J. Hum. Genet., 691, pp. 38-147; Ritchie, M.D., Hahn, L.W., Moore, J.H., Power of multifactor dimensionality reduction for detecting gene-gene interactions in the presence of genotyping error, missing data, phenocopy, and genetic heterogeneity (2003) Genet. Epidemiol., 24, pp. 150-157; Schwefel, H.-P., (1965) Kybernetische Evolution Als Strategie der Experimentellen Forschung in der Stromungstechnik, , Diploma Thesis, Technical University of Berlin; Summar, M.L., Hall, L., Christman, B., Barr, F., Smith, H., Kallianpur, A., Brown, N., Cunningham, G., Environmentally determined genetic expression: Clinical correlates with molecular variants of carbamyl phosphate synthetase I (2004) Mol. Genet. Metab., 81, pp. 12-9; Templeton, A.R., Epistasis and complex traits (2000) Epistasis and the Evolutionary Process, pp. 41-57. , J. Wolf E.D. Brodie M.J. Wade Oxford University Press New York; Tsai, C.T., Lai, L.P., Chiang, F.T., Fallin, D., Hwang, J.J., Ritchie, M.D., Moore, J.H., Tseng, Y.Z., Renin-angiotensin system gene polymorphisms and atrial fibrillation (2004) Circulation, 109, pp. 1640-1646; Wille, A., Hoh, J., Ott, J., Sum statistics for the joint detection of multiple disease loci in case-control association studies with SNP markers (2003) Genet. Epidemiol., 25, pp. 350-359; Williams, S.M., Ritchie, M.D., Phillips, J.A., Dawson, E., Prince, M., Dzhura, E., Willis, A., Moore, J.H., Multilocus analysis of hypertension: A hierarchical approach (2004) Hum. Hered., 57, pp. 28-38; Zee, R.Y., Hoh, J., Cheng, S., Reynolds, R., Grow, M.A., Silbergleit, A., Walker, K., Lindpainter, K., Multi-locus interactions predict risk for post-PTCA restenosis: An approach to the genetic analysis of common complex disease (2002) Pharmacogenomics J., 2, pp. 197-201\",\"Moore, J.H.; Computational Genetics Laboratory, , Lebanon, NH 03756, United States; email: jason.h.moore@dartmouth.edu\",,,,,,,,10967192,,MGMEF,\"15670716\",\"English\",\"Mol. Genet. Metab.\",Short Survey,\"Final\",\"\",Scopus,2-s2.0-12844277447\n[No author name available],[No author id available],\"2nd International Symposium on Parallel and Distributed Processing and Applications, ISPA 2004\",2005,\"Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)\",\"3358 LNCS\",,,\"1\",\"1054\",,,,\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-85029937340&partnerID=40&md5=20a99b3143fd1854aad949a454daf498\",,\"\",\"The proceedings contain 119 papers. The special focus in this conference is on Parallel and Distributed Processing and Applications. The topics include: Present and future supercomputer architectures; challenges in P2P computing; multihop wireless Ad Hoc networking: current challenges and future opportunities; an inspector-executor algorithm for irregular assignment; multi-grain parallel processing of data-clustering on programmable graphics hardware; a parallel reed-solomon decoder on the imagine stream processor; asynchronous document dissemination in dynamic Ad Hoc networks; location-dependent query results retrieval in a multi-cell wireless; an efficient mobile data mining model; towards correct distributed simulation of high-level petri nets with fine-grained partitioning; m-guard: a new distributed deadlock detection algorithm based on mobile agent technology; meta-based distributed computing framework; locality optimizations for jacobi iteration on distributed parallel; fault-tolerant cycle embedding in the WK-recursive network; RAIDb: redundant array of inexpensive databases; a fault-tolerant multi-agent development framework; a fault tolerance protocol for uploads: design and evaluation; topological adaptability for the distributed token circulation paradigm in faulty environment; adaptive data dissemination in wireless sensor networks; design and analysis of a k-connected topology control algorithm for Ad Hoc networks; on using temporal consistency for parallel execution of real-time queries in wireless sensor systems; cluster-based parallel simulation for large scale molecular dynamics in microscale thermophysics; parallel checkpoint/recovery on cluster of IA-64 computers; an enhanced message exchange mechanism in cluster-based mobile; a scalable low discrepancy point generator for parallel computing; generalized trellis stereo matching with systolic array.\",,,,,,,,,,,,\"Yang L.T.Guo M.Lau F.Cao J.\",\"Association for Computing Machinery, HK Chapter;IEEE HK Chapter;Springer;The Information Processing Society of Japan\",\"Springer Verlag\",\"2nd International Symposium on Parallel and Distributed Processing and Applications, ISPA 2004\",\"13 December 2004 through 15 December 2004\",,197629,03029743,9783540241287,,,\"English\",\"Lect. Notes Comput. Sci.\",Conference Review,\"Final\",\"\",Scopus,2-s2.0-85029937340\n\"Zevedei-Oancea I., Schuster S.\",\"8244869300;55323844600;\",\"Topological analysis of metabolic networks based on Petri net theory\",2003,\"In Silico Biology\",\"3\",\"3\",,\"323\",\"345\",,86,,\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-0345602990&partnerID=40&md5=a1165fb635962b61a525ff01ede828df\",\"Max Delbruck Center for Molec. Med., Department of Bioinformatics, Robert-Rössle-Str. 10, 13092 Berlin-Buch, Germany\",\"Zevedei-Oancea, I., Max Delbruck Center for Molec. Med., Department of Bioinformatics, Robert-Rössle-Str. 10, 13092 Berlin-Buch, Germany; Schuster, S., Max Delbruck Center for Molec. Med., Department of Bioinformatics, Robert-Rössle-Str. 10, 13092 Berlin-Buch, Germany\",\"Petri net concepts provide additional tools for the modelling of metabolic networks. Here, the similarities between the counterparts in traditional biochemical modelling and Petri net theory are discussed. For example the stoichiometry matrix of a metabolic network corresponds to the incidence matrix of the Petri net. The flux modes and conservation relations have the T-invariants, respectively, P-invariants as counterparts. We reveal the biological meaning of some notions specific to the Petri net framework (traps, siphons, deadlocks, liveness). We focus on the topological analysis rather than on the analysis of the dynamic behaviour. The treatment of external metabolites is discussed. Some simple theoretical examples are presented for illustration. Also the Petri nets corresponding to some biochemical networks are built to support our results. For example, the role of triose phosphate isomerase (TPI) in Trypanosoma brucei metabolism is evaluated by detecting siphons and traps. All Petri net properties treated in this contribution are exemplified on a system extracted from nucleotide metabolism.\",\"Elementary flux mode; Incidence matrix; Metabolic networks; P-invariant; Petri nets; T-invariant\",\"2 phosphoglyceric acid; 3 phosphoglyceric acid; adenosine diphosphate; adenosine triphosphate; antiprotozoal agent; biphosphoglycerate; dihydroxyacetone phosphate; enzyme; fructose 1,6 bisphosphate; glutamic acid; glyceraldehyde 3 phosphate dehydrogenase; glycerol 3 phosphate dehydrogenase; glycerophosphate; glycine; nicotinamide adenine dinucleotide; phosphoenolpyruvate; phosphoglycerate kinase; pyruvic acid; reduced nicotinamide adenine dinucleotide; triosephosphate isomerase; unclassified drug; African trypanosomiasis; article; biochemistry; bioinformatics; comparative study; controlled study; disease severity; enzyme kinetics; enzyme localization; glycolysis; human; mathematical computing; membrane transport; metabolic parameters; metabolism; metabolite; molecular dynamics; molecular model; nonhuman; nucleotide metabolism; reaction analysis; side effect; stoichiometry; structure analysis; theory; Trypanosoma brucei; Algorithms; Animals; Computational Biology; Computer Simulation; Glycolysis; Mathematical Computing; Metabolism; Models, Biological; Triose-Phosphate Isomerase; Trypanosoma brucei brucei\",,\"2 phosphoglyceric acid, 2553-59-5; 3 phosphoglyceric acid, 820-11-1; adenosine diphosphate, 20398-34-9, 58-64-0; adenosine triphosphate, 15237-44-2, 56-65-5, 987-65-5; dihydroxyacetone phosphate, 57-04-5; fructose 1,6 bisphosphate, 488-69-7; glutamic acid, 11070-68-1, 138-15-8, 56-86-0, 6899-05-4; glyceraldehyde 3 phosphate dehydrogenase, 9001-50-7; glycerol 3 phosphate dehydrogenase, 9001-49-4; glycerophosphate, 12040-65-2, 1555-56-2, 17603-42-8, 27082-31-1, 39951-36-5, 57-03-4, 89923-83-1, 91846-83-2; glycine, 56-40-6, 6000-43-7, 6000-44-8; nicotinamide adenine dinucleotide, 53-84-9; phosphoenolpyruvate, 33016-40-9, 5541-93-5, 73-89-2; phosphoglycerate kinase, 9001-83-6; pyruvic acid, 127-17-3, 19071-34-2, 57-60-3; reduced nicotinamide adenine dinucleotide, 58-68-4; triosephosphate isomerase, 9023-78-3; Triose-Phosphate Isomerase, EC 5.3.1.1\",,,,,,\"Alla, H., David, R., Continuous and hybrid Petri nets (1998) J. Circ. Syst. Comp., 8, pp. 159-188; Bakker, B.M., Walsh, M.C., Ter Kuile, B.H., Mensonides, F.I.C., Michels, P.A.M., Opperdoes, F.R., Westerhoff, H.V., Contribution of glucose transport to the control of the glycolytic flux in Trypanosoma brucei (1999) Proc. Natl. Acad. Sci. USA, 96, pp. 10098-10103; Chu, F., Xie, X.-L., Deadlock analysis of Petri nets using siphons and mathematical programming (1997) IEEE Trans. on Robotics and Automation, 13, pp. 793-804; Clarke, B.L., Stability of complex reaction networks (1980) Adv. Chem. Phys., 43, pp. 1-216; Colom, J.M., Silva, M., Convex geometry and semiflows in P/T nets. A comparative study of algorithms for computation of minimal P-semiflows (1990) Advances, pp. 79-112. , in Petri Nets, Rozenberg, G. (ed.), Springer, Berlin; Commoner, F., (1972) Deadlocks in Petri Nets. Technical Report, , Applied data research Inc. Wakefield, Massachusetts; Dandekar, T., Schuster, S., Snel, B., Huynen, M., Bork, P., Pathway alignment: Application to the comparative analysis of glycolytic enzymes (1999) Biochem. J., 343, pp. 115-124; Érdi, P., Tóth, J., (1989) Mathematical Models of Chemical Reactions, , Manchester University Press, Manchester; Fell, D.A., Wagner, A., The small world of metabolism (2000) Nat. Biotechnol., 18, pp. 1121-1122; Förster, J., Gombert, A.K., Nielsen, J., A functional genomics approach using metabolomics and in silico pathway analysis (2002) Biotechnol. Bioeng., 79, pp. 703-712; Genrich, H., Küffner, R., Voss, K., Executable Petri net models for the analysis of metabolic pathways (2001) Int. J. STTT, 3, pp. 394-404; Heiner, M., Koch, I., Schuster, S., Using time-dependent Petri nets for the analysis of metabolic networks (2000) Modellierung und Simulation Metabolischer Netzwerke, pp. 15-21. , Preprint No. 10, Hofestädt R., Lautenbach, K. and Lange, M. (eds), Facultyi of Computer Science, University of Magdeburg; Heiner, M., Koch, I., Voss, K., Analysis and simulation of steady states in metabolic pathways with Petri nets (2001) CPN '01 - Third Workshop and Tutorial on Practical Use of Coloured Petri Nets and the CPN Tools, pp. 15-34. , Jensen, K. (ed), University of Aarhus, Denmark; Heinrich, R., Schuster, S., (1996) The Regulation of Cellular Systems, , Chapman and Hall, New York; Helfert, S., Estevez, A.M., Bakker, B., Michels, P., Clayton, C., Roles of triosephosphate isomerase and aerobic metabolism in Trypanosoma brucei (2001) Biochem. J., 357, pp. 117-125; Hofestädt, R., A petri net application to model metabolic processes (1994) Syst. Anal. Mod. Simul., 16, pp. 113-122; Horn, F., Jackson, R., General mass action kinetics (1972) Arch. Rational Mech. Anal., 47, pp. 81-116; Huang, Y., Jeng, M.D., Xie, Z., Chung, S., Deadlock prevention policy based on Petri nets and siphons (2001) Intern. J. Prod. Res., 39, pp. 283-305; Iordache, M.V., Moody, J.O., Antsaklis, P.J., Automated synthesis of liveness enforcing supervisors using Petri nets Technical Report Isis-00-004, Dept. of Electrical Engr., Univ. of Notre Dame; Jeong, H., Tombor, B., Albert, R., Oltvai, Z.N., Barabási, A.L., The large-scale organization of metabolic networks (2000) Nature, 407, pp. 651-654; Kanehisa, M., Goto, S., KEGG: Kyoto encyclopedia of genes and genomes (2000) Nucl. Acids Res., 28, pp. 27-30; Kemper, P., Linear time algorithm to find a minimal deadlock in a strongly connected free-choice net (1993) Proc. 14th International Conference Application and Theory of Petri Nets, Chicago, 691, pp. 319-338. , M. Ajmone-Marsan (ed.), Springer, LNCS; Klamt, S., Stelling, J., Two approaches for metabolic pathway analysis? (2003) Trends Biotechn., 21, pp. 64-69; Küffner, R., Zimmer, R., Lengauer, T., Pathway analysis in metabolic databases via differential metabolic display (DMD) (2000) Bioinformatics, 16, pp. 825-836; Leiser, J., Blum, J.J., On the analysis of substrate cycles in large metabolic systems (1987) Cell Biophys., 11, pp. 123-138; Liao, J.C., Hou, S.-Y., Chao, Y.-P., Pathway analysis, engineering and physiological considerations for redirecting central metabolism (1996) Biotechnol. Bioeng., 52, pp. 129-140; Matsuno, H., Doi, A., Nagasaki, M., Miyano, S., Hybrid Petri net representation of gene regulatory network (2000) Pac. Symp. Biocomput., 5, pp. 341-352; Mendes, P., Biochemistry by numbers: Simulation of biochemical pathways with Gepasi 3 (1997) Trends Biochem. Sci., 22, pp. 361-363; Moody, J.O., Antsaklis, P.J., Deadlock avoidanc in Petri nets with uncontrollable transitions (1998) Proceedings of 1998 American Control Conference, Philadelphia, pp. 24-26; Oliveira, J.S., Bailey, C.G., Jones-Oliveira, J.B., Dixon, D.A., Gull, D.W., Chandler, M.L., A computational model for the identification of biochemical pathways in the Krebs cycle (2003) J. Comput. Biol., 10, pp. 57-82; Othmer, H.G., The interaction of structure and dynamics in chemical reaction networks (1981) Modelling of Chemical Reaction Systems, pp. 2-19. , Ebert, K. H., Deuflhard, P. and Jäger, W. (eds), Springer, Berlin; Overkamp, K.M., Bakker, B.M., Kötter, P., Luttik, M.A.H., Van Dijken, J.P., Pronk, J.T., Metabolic engineering of glycerol production in Saccharomyces cerevisiae (2002) Appl. Environm. Microbiol., 68, pp. 2814-2821; Peleg, M., Yeh, I., Altman, R., Modeling biological processes using workflow and Petri net models (2002) Bioinformatics, 18, pp. 825-837; Pfeiffer, T., Sánchez-Valdenebro, I., Nuño, J.C., Montero, F., Schuster, S., METATOOL: For studying metabolic networks (1999) Bioinformatics, 15, pp. 251-257; Price, N.D., Papin, J.A., Palsson, B.O., Determination of redundancy and systems properties of the metabolic network of Helicobacter pylori using genome-scale extreme pathway analysis (2002) Genome Res., 12, pp. 760-769; Reddy, V.N., Liebman, M.N., Mavrovouniotis, M.L., Qualitative analysis of biochemical reaction systems (1996) Comput. Biol. Med., 26, pp. 9-24; Reisig, W., (1985) Petri Nets: An Introduction, , Springer, Berlin; Rohwer, J.M., Botha, F.C., Analysis of sucrose accumulation in the sugar cane culm on the basis of in vitro kinetic data (2001) Biochem. J., 358, pp. 437-445; Schmidt, K., (1996) How to Calculate Symbolically Siphons and Traps of Algebraic Petri Nets., A39, pp. 1-40. , Technical Report, Helsinki University of Technology; Schmidt, K., Siphons and traps for algebraic Petri nets (1996) Proc. Workshop CS&P, pp. 157-168. , Berlin; Schuster, S., Hilgetag, C., On elementary flux modes in biochemical reaction systems at steady state (1994) J. Biol. Syst., 2, pp. 165-182; Schuster, S., Hilgetag, C., What information about the conserved-moiety structure of chemical reaction systems can be derived from their stoichiometry? (1995) J. Phys. Chem., 99, pp. 8017-8023; Schuster, S., Höfer, T., Determining all extreme semi-positive conservation relations in chemical reaction systems. A test criterion for conservativity (1991) J. Chem. Soc. Faraday Trans., 87, pp. 2561-2566; Schuster, S., Fell, D.A., Dandekar, T., A general definition of metabolic pathways useful for systematic organization and analysis of complex metabolic networks (2000) Nat. Biotechnol., 18, pp. 326-332; Schuster, S., Pfeiffer, T., Moldenhauer, F., Koch, I., Dandekar, T., Exploring the pathway structure of metabolism: Decomposition into subnetworks and application to Mycoplasma pneumoniae (2002) Bioinformatics, 18, pp. 351-361; Schuster, S., Hilgetag, C., Woods, J.H., Fell, D.A., Reaction routes in biochemical reaction systems: Algebraic properties, validated calculation procedure and example from nucleotide metabolism (2002) J. Math. Biol., 45, pp. 153-181; Selkov, E., Basmanova, S., Gaasterland, T., Goryanin, I., Gretchkin, Y., Maltsev, N., Nenashev, V., Yunus, I., The metabolic pathway collection from EMP: The enzymes and metabolic pathways database (1996) Nucleic Acids Res., 24, pp. 26-28; Selkov, E., Matlsev, N., Olsen, G.J., Overbeek, R., Whitman, W.B., A reconstruction of the metabolism of Methanococcus jannaschii from sequence data (1997) Gene, 197, pp. GC11-GC26; Starke, P.H., (1990) Analyse von Petri-Netz-Modellen, , B. G. Teubner, Stuttgart; Stryer, L., (1995) Biochemistry, , Freeman, New York; Tanimoto, S., Yamauchi, M., Watanabe, T., Finding minimal siphons in general Petri nets (1996) IEICE Trans. Fund. Elec. Comm. Comp. Sci., E79-A, pp. 1817-1824; Teusink, B., Walsh, M.C., Van Dam, K., Westerhoff, H.V., The danger of metabolic pathways with turbo design (1998) Trends Biochem. Sci., 23, pp. 162-169; Van Dien, S.J., Lidstrom, M.E., Stoichiometric model for evaluating the metabolic capabilities of the facultative methylotroph Methylobacterium extorquens AM1, with application to reconstruction of C(3) and C(4) metabolism (2002) Biotechnol. Bioeng., 78, pp. 296-312; Varpaaniemi, K., Efficient detection of deadlock in Petri nets (1993), Licentiate's thesis, Helsinki University of Technology, Department of Computer Science and Engineering, Digital Systems Laboratory; Yamauchi, M., Watanabe, T., Time complexity analysis of the minimal siphon extraction problem of Petri nets (1999) IEICE Trans. on Fundamentals of Electronics, Communications and Computer Sciences, E82-A, pp. 2558-2565; Yamauchi, M., Tanimoto, S., Watanabe, T., Finding a minimal siphon containing specified places in a general Petri net (1996) IEICE Trans. Fund. Elec. Comm. Comp. Sci., E79-A, pp. 1825-1828\",\"Schuster, S.; Max Delbruck Center for Molec. Med., Robert-Rössle-Str. 10, 13092 Berlin-Buch, Germany; email: stschust@mdc-berlin.de\",,,,,,,,13866338,,ISBIF,\"12954094\",\"English\",\"In Silico Biol.\",Article,\"Final\",\"\",Scopus,2-s2.0-0345602990\n[No author name available],[No author id available],\"10th International Workshop on Petri Nets and Performance Models, PNPM 2003\",2003,\"10th International Workshop on Petri Nets and Performance Models, PNPM 2003\",,,,\"\",\"\",152,,,\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-85117692593&partnerID=40&md5=54adb99e6b6d268c4de2cd506958e710\",,\"\",\"The proceedings contain 14 papers. The topics discussed include: modeling networks of molecular interactions in the living cell: structure, dynamics, and applications; computing response time distributions using stochastic petri nets and matrix diagrams; performance evaluation with asynchronously decomposable SWN: implementation and case study; stationary analysis of FSPNs with mutually dependent discrete and continuous parts; discrete-state and fluid stochastic petri net models for open-loop video-on-demand systems: a comparative case study; performance queries on semi-markov stochastic petri nets with an extended continuous stochastic logic; and building petri net scenarios for dependable automation systems.\",,,,,,,,,,,,,,\"Institute of Electrical and Electronics Engineers Inc.\",\"10th International Workshop on Petri Nets and Performance Models, PNPM 2003\",\"2 September 2003 through 5 September 2003\",,172412,,0769519768; 9780769519760,,,\"English\",\"Int. Workshop Petri Nets Perform. Models, PNPM\",Conference Review,\"Final\",\"\",Scopus,2-s2.0-85117692593\n\"Oliveira J.S., Bailey C.G., Jones-Oliveira J.B., Dixon D.A.\",\"7202452362;7402066096;6602928323;35395147000;\",\"An algebraic-combinatorial model for the identification and mapping of biochemical pathways\",2001,\"Bulletin of Mathematical Biology\",\"63\",\"6\",,\"1163\",\"1196\",,25,\"10.1006/bulm.2001.0263\",\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-0035169963&doi=10.1006%2fbulm.2001.0263&partnerID=40&md5=b16f48edb91ac71c1cf6aac0801510f4\",\"Environmental Molecular Sciences Laboratory, Theory, Modeling and Simulation Group, Pacific Northwest National Laboratories, Richland, WA, United States; School of Mathematical and Computing Sciences, Victoria University of Wellington, Wellington, New Zealand\",\"Oliveira, J.S., Environmental Molecular Sciences Laboratory, Theory, Modeling and Simulation Group, Pacific Northwest National Laboratories, Richland, WA, United States; Bailey, C.G., School of Mathematical and Computing Sciences, Victoria University of Wellington, Wellington, New Zealand; Jones-Oliveira, J.B., Environmental Molecular Sciences Laboratory, Theory, Modeling and Simulation Group, Pacific Northwest National Laboratories, Richland, WA, United States; Dixon, D.A., Environmental Molecular Sciences Laboratory, Theory, Modeling and Simulation Group, Pacific Northwest National Laboratories, Richland, WA, United States\",\"We develop the mathematical machinery for the construction of an algebraic-combinatorial model using Petri nets to construct an oriented matroid representation of biochemical pathways. For demonstration purposes, we use a model metabolic pathway example from the literature to derive a general biochemical reaction network model. The biomolecular networks define a connectivity matrix that identifies a linear representation of a Petri net. The sub-circuits that span a reaction network are subject to flux conservation laws. The conservation laws correspond to algebraic-combinatorial dual invariants, that are called S- (state) and T- (transition) invariants. Each invariant has an associated minimum support. We show that every minimum support of a Petri net invariant defines a unique signed sub-circuit representation. We prove that the family of signed sub-circuits has an implicit order that defines an oriented matroid. The oriented matroid is then used to identify the feasible sub-circuit pathways that span the biochemical network as the positive cycles in a hyper-digraph. © 2001 Society for Mathematical Biology.\",,\"article; biochemistry; biological model; chemical model; mathematical analysis; mathematical computing; mathematical model; mathematics; metabolism; molecular dynamics; reaction analysis; statistical model\",,,,,\"U.S. Department of Energy, USDOE: DE-AC06-76RLO 1830; Biological and Environmental Research, BER; Pacific Northwest National Laboratory, PNNL\",\"This research was supported by the Laboratory Directed Research and Develop- ment program office and performed in the William R Wiley Environmental Molec- ular Sciences Laboratory at the Pacific Northwest National Laboratory. The EMSL is funded by the Office of Biological and Environmental Research in the U.S. Department of Energy under Contract DE-AC06-76RLO 1830.\",,\"Alberty, R.A., Conversion of chemical equations to biochemical equations (1992) J. Chem. Ed., 69, p. 493; Alberty, R.A., Review of biochemical thermodynamics (1994) Biochim. Biophys. Acta, 1207, pp. 1-11; Alberty, R.A., Calculation of biochemical net reactions and pathways by using matrix operations (1996) Biophys. J., 71, pp. 507-515; Alberty, R.A., Chemical equations are actually matrix equations (1991) J. Chem. Ed., 68, p. 984; Alberty, R.A., Equilibrium compositions of solutions of biochemical species and heats of biochemical reactions (1991) Proc. Natl Acad. Sci. USA, 88, pp. 3268-3271; Arkin, A., Ross, J., McAdams, H.H., Stochastic kinetic analysis of developmental pathway bifurcation in phage λ-infected Escherichia coli cells (1998) Genetics, 149, pp. 1633-1648; Bailey, C.G., Oliveira, J.S., An axiomatization for cubic algebras (1998) Mathematical Essays in Honor of Gian-Carlo Rota, , B. E. Sagan and R. P. Stanley (Eds), Birkhaüser; Bailey, C.G., Oliveira, J.S., Another Universal Axiomatization of Cubes, , in preparation; Bailey, C.G., Oliveira, J.S., (2001) MV-Algebras and Cubic Algebras, , submitted to the Annals of Combinatorics; Berge, C., (1973) Graphs and Hypergraphs, , New York: American Elsevier Publishing Company; Björner, A., Las Vergnas, M., Sturmfels, B., White, N., Ziegler, G., (1993) Oriented Matroids, , CUP; Clark, B.L., Stoichiometric network analysis (1988) Cell Biophys., 12, pp. 237-253; Diestel, R., (2000) Graphs Theory, 2nd edn, , New York: Springer; Garey, M.R., Johnson, D.S., (1979) Computers and Intractability. A Guide to the Theory of NP- Completeness, , Murray Hill, NJ/San Francisco, CA: Bell Labs./W. H. Freeman and Co; Henriksen, C.M., Christensen, L.H., Nielsen, J., Villadsen, J., Growth energetics and metabolic fluxes in continuous cultures of Penicillium chrysogenum (1996) J. Biotechnol., 45, pp. 149-164; Karp, P.D., EcoCyc: Encyclopedia of Escherichia coli genes and metabolism (1998) Nucleic Acids Res., 26, pp. 43-45; Kauffman, S.A., Gene regulation networks: A theory for their global structure and behavior (1971) Curr. Top. Dev. Biol., 6, p. 145; Kauffman, S.A., (1993) The Origins of Order: Self-organization and Selection in Evolution, , New York, NY: Oxford University Press; Kohn, M.C., Letzkus, W.J., A graph-theoretical analysis of metabolic regulation (1983) J. Theor. Biol., 100, pp. 293-304; Kohn, M.C., Lemieux, D.R., Identification of regulatory properties of metabolic networks by graph theory (1991) J. Theor. Biol., 150, pp. 3-25; Mavrovouniotis, M.L., Stephanopoulos, G., Computer-aided synthesis of biochemical pathways (1990) Biotechnol. Bioeng., 36, pp. 1119-1132; McAdams, H.H., Arkin, A., Stochastic mechanisms in gene expression (1997) Proc. Natl. Acad. Sci. USA, Biochem., 94, pp. 814-819; Metropolis, N., Rota, G.-C., Combinatorial structure of the faces of the n-cube (1978) SIAM J. Appl. Math., 35, pp. 689-694; Oster, G.S., Perelson, A.S., Katchalsky, A., Network thermodynamics: Dynamic modelling of biophysical systems (1973) Q Rev of Biophys., 6, pp. 1-134; Papoutsakis, E., Meyer, C., Equations and calculations of product yields and preferred pathways for butanediol and mixed-acid fermentations (1985) Biotechnol. Bioeng., 27, pp. 50-66; Peusner, L., (1986) Studies in Network Thermodynamics, 5. , Studies in Modem Thermodynamics, Amsterdam: Elsevier; Pons, A., Dussap, C., Pequignot, C., Gros, J., Metabolic flux distribution in Corynebacterium melassecola ATCC 17965 for various carbon sources (1996) Biotechnol. Bioeng., 51, pp. 177-189; Reddy, V.N., Liebman, M.N., Mavrovouniotis, M.L., Qualitative analysis of biochemical reaction systems (1996) Comput. Biol. Med., 26, pp. 9-24; Reisig, W., (1985) Petri Nets, An Introduction, , W. Brauer, G. Rozenberg and A. Salomaa (Eds), New York, NY: Springer-Verlag; Samoilov, M., Arkin, A., Ross, J., On the deduction of chemical reaction pathways from measurements of time series of concentrations (2001) Am. Inst. Phys., 11, pp. 108-114; Schilling, C.H., Palsson, B.O., The underlying pathway structure of biochemical networks (1998) Proc. Natl. Acad. Sci., USA, 95, pp. 4193-4198; Schilling, C.H., Palsson, B.O., Towards metabolic phenomics: Analysis of genomic data using flux balances (1999) Biotechnol. Prog., Am. Chem. Soc. and Am. Inst. Chem. Engr., 15, pp. 288-295; Schilling, C.H., Schuster, S., Palsson, B.O., Heinrichn, R., Metabolic pathway analysis: Basic concepts and scientific applications in the post-genomic era (1999) Biotechnol. Prog., Am. Chem. Soc. and Am. Inst. Chem. Engr., 15, pp. 296-303; Schnakenberg, J., Simple chemical reaction systems with limit cycle behavior (1979) J. Theor. Biol., 81, pp. 389-400; Seressiotis, A., Bailey, J.E., MPS: An artificially intelligent software system for the analysis and synthesis of metabolic pathways (1988) Biotechnol. Bioeng., 31, pp. 587-602; Smith, W.R., Missen, R.W., (1982) Chemical Reaction Equilibrium Analysis: Theory and Algorithms, , New York: Wiley\",\"Oliveira, J.S.; Environ. Molec. Sciences Laboratory, , Richland, WA, United States; email: jso@pnl.gov\",,,\"Academic Press\",,,,,00928240,,BMTBA,\"11732180\",\"English\",\"Bull. Math. Biol.\",Article,\"Final\",\"\",Scopus,2-s2.0-0035169963\n[No author name available],[No author id available],\"Proceedings - 1999 International Conference on Information Intelligence and Systems, ICIIS 1999\",1999,\"Proceedings - 1999 International Conference on Information Intelligence and Systems, ICIIS 1999\",,,,\"\",\"\",691,,,\"https://www.scopus.com/inward/record.uri?eid=2-s2.0-85040521543&partnerID=40&md5=1f56673d381f4aee09d7924038528eb1\",,\"\",\"The proceedings contain 96 papers. The topics discussed include: formalization of the protein production by means of Petri nets; a method of comparing protein structures based on matrix representation of secondary structure pairwise topology; evolutionary potential timetables optimization by means of genetic and greedy algorithms; a computer algorithm for cancer recognition on ultrasound images of prostate tissue; a distributed scheme for efficient pair-wise comparison of complete genomes; adaptive on-line learning of probability distributions from field theories; sensory perception, learning and integration in neural networks; computational vision enhancement through genetic selection of biologically inspired receptive field geometry; confidence measures for evolutionary trees: application to molecular epidemiology; applying EGENET to solve continuous constrained optimization problems: a preliminary report; modelling of robot dynamics based on a multi-dimensional RBF-like neural network; locomotion control using environment information inputs; model based pose estimation for autonomous operations in space; segmentation of range and intensity image sequences by clustering; lithological composition sensor based on digital image feature extraction, genetic selection of features and neural classification; cost-effective design of thermal power plants using intelligent systems; and fingerprint recognition using directional micropattern histograms and LVQ networks.\",,,,,,,,,,,,,\"IEEE Computer Society\",\"Institute of Electrical and Electronics Engineers Inc.\",\"1999 International Conference on Information Intelligence and Systems, ICIIS 1999\",\"31 October 1999 through 3 November 1999\",,132065,,0769504469; 9780769504469,,,\"English\",\"Proc. - Int. Conf. Inf. Intell. Syst., ICIIS\",Conference Review,\"Final\",\"\",Scopus,2-s2.0-85040521543\n"
  },
  {
    "path": "tests/resources/springer.csv",
    "content": "Item Title,Publication Title,Book Series Title,Journal Volume,Journal Issue,Item DOI,Authors,Publication Year,URL,Content Type\n\"Graph-Based Load Balancing Model for Exascale Computing Systems\",\"11th International Conference on Theory and Application of Soft Computing, Computing with Words and Perceptions and Artificial Intelligence - ICSCCW-2021\",\"\",\"\",\"\",\"10.1007/978-3-030-92127-9_33\",\"Araz R. AlievNigar T. Ismayilova\",\"2022\",\"http://link.springer.com/chapter/10.1007/978-3-030-92127-9_33\",\"Chapter\"\n\"11th International Conference on Theory and Application of Soft Computing, Computing with Words and Perceptions and Artificial Intelligence - ICSCCW-2021\",\"Lecture Notes in Networks and Systems\",\"\",\"\",\"\",\"10.1007/978-3-030-92127-9\",\"Prof. Rafik A. AlievProf. Dr. Janusz KacprzykProf. Witold PedryczProf. Mo JamshidiMustafa BabanliProf. Fahreddin M. Sadikoglu\",\"2022\",\"http://link.springer.com/book/10.1007/978-3-030-92127-9\",\"Book\"\n\"Fuzzy Information Processing 2020\",\"Advances in Intelligent Systems and Computing\",\"\",\"\",\"\",\"10.1007/978-3-030-81561-5\",\"Barnabás BedeProf. Martine CeberioDr. Martine De CockProf. Vladik Kreinovich\",\"2022\",\"http://link.springer.com/book/10.1007/978-3-030-81561-5\",\"Book\"\n\"Fuzzy Redundancy Mechanism to Enhance the Resilience of IoT-Based HPC Systems\",\"Fuzzy Information Processing 2020\",\"\",\"\",\"\",\"10.1007/978-3-030-81561-5_17\",\"Amira Abo HozaifaAhmed Shawky Moussa\",\"2022\",\"http://link.springer.com/chapter/10.1007/978-3-030-81561-5_17\",\"Chapter\"\n\"Emerging Research in Computing, Information, Communication and Applications\",\"Lecture Notes in Electrical Engineering\",\"\",\"\",\"\",\"10.1007/978-981-16-1342-5\",\"Dr. N. R. ShettyProf. L. M. PatnaikProf. H. C. NagarajDr. Prasad N. HamsavathDr. N. Nalini\",\"2022\",\"http://link.springer.com/book/10.1007/978-981-16-1342-5\",\"Book\"\n\"Proceedings of Second Doctoral Symposium on Computational Intelligence\",\"Advances in Intelligent Systems and Computing\",\"\",\"\",\"\",\"10.1007/978-981-16-3346-1\",\"Dr. Deepak GuptaDr. Ashish KhannaProf. Vineet KansalProf. Giancarlo FortinoProf. Aboul Ella Hassanien\",\"2022\",\"http://link.springer.com/book/10.1007/978-981-16-3346-1\",\"Book\"\n\"Resistive Switching: Oxide Materials, Mechanisms, Devices and Operations\",\"Electronic Materials: Science & Technology\",\"\",\"\",\"\",\"10.1007/978-3-030-42424-4\",\"Jennifer RuppDr. Daniele IelminiDr. Ilia Valov\",\"2022\",\"http://link.springer.com/book/10.1007/978-3-030-42424-4\",\"Book\"\n\"Programming big data analysis: principles and solutions\",\"Journal of Big Data\",\"\",\"9\",\"1\",\"10.1186/s40537-021-00555-2\",\"Loris BelcastroRiccardo CantiniFabrizio MarozzoAlessio OrsinoDomenico TaliaPaolo Trunfio\",\"2022\",\"http://link.springer.com/article/10.1186/s40537-021-00555-2\",\"Article\"\n\"Efficient detection of silent data corruption in HPC applications with synchronization-free message verification\",\"The Journal of Supercomputing\",\"\",\"78\",\"1\",\"10.1007/s11227-021-03892-4\",\"Guozhen ZhangYi LiuHailong YangDepei Qian\",\"2022\",\"http://link.springer.com/article/10.1007/s11227-021-03892-4\",\"Article\"\n\"A machine-learning-based method for automatizing lattice-Boltzmann simulations of respiratory flows\",\"Applied Intelligence\",\"\",\"\",\"\",\"10.1007/s10489-021-02808-2\",\"Mario RüttgersMoritz WaldmannWolfgang SchröderAndreas Lintermann\",\"2022\",\"http://link.springer.com/article/10.1007/s10489-021-02808-2\",\"Article\"\n\"ICT with Intelligent Applications\",\"Smart Innovation, Systems and Technologies\",\"\",\"\",\"\",\"10.1007/978-981-16-4177-0\",\"Prof. Tomonobu SenjyuProf. Dr. Parikshit N. MahalleDr. Thinagaran PerumalDr. Amit Joshi\",\"2022\",\"http://link.springer.com/book/10.1007/978-981-16-4177-0\",\"Book\"\n\"Nanoparticles’ Preparation, Properties, Interactions and Self-Organization\",\"SpringerBriefs in Applied Sciences and Technology\",\"\",\"\",\"\",\"10.1007/978-3-030-89144-2\",\"Richard DvorskyLadislav SvobodaJiří Bednář\",\"2022\",\"http://link.springer.com/book/10.1007/978-3-030-89144-2\",\"Book\"\n\"Africa and the Fourth Industrial Revolution\",\"Advances in African Economic, Social and Political Development\",\"\",\"\",\"\",\"10.1007/978-3-030-87524-4\",\"Prof. Everisto Benyera\",\"2022\",\"http://link.springer.com/book/10.1007/978-3-030-87524-4\",\"Book\"\n\"Principles of Social Networking\",\"Smart Innovation, Systems and Technologies\",\"\",\"\",\"\",\"10.1007/978-981-16-3398-0\",\"Dr. Anupam BiswasDr. Ripon PatgiriDr. Bhaskar Biswas\",\"2022\",\"http://link.springer.com/book/10.1007/978-981-16-3398-0\",\"Book\"\n\"Comparative Study of Directive-based Programming Models on CPUs and GPUs for Scientific Applications\",\"Emerging Research in Computing, Information, Communication and Applications\",\"\",\"\",\"\",\"10.1007/978-981-16-1342-5_61\",\"C. NavyaH. A. SanjaySanket Salvi\",\"2022\",\"http://link.springer.com/chapter/10.1007/978-981-16-1342-5_61\",\"Chapter\"\n\"State-of-the-Art Power Management Techniques\",\"Proceedings of Second Doctoral Symposium on Computational Intelligence\",\"\",\"\",\"\",\"10.1007/978-981-16-3346-1_18\",\"Maaz AhmedWaseem Ahmed\",\"2022\",\"http://link.springer.com/chapter/10.1007/978-981-16-3346-1_18\",\"Chapter\"\n\"A review on photonic crystal based all-optical logic decoder: linear and nonlinear perspectives\",\"Optical and Quantum Electronics\",\"\",\"54\",\"2\",\"10.1007/s11082-021-03473-y\",\"Anup SharmaKamanashis GoswamiHaraprasad MondalTanmoy DattaMrinal Sen\",\"2022\",\"http://link.springer.com/article/10.1007/s11082-021-03473-y\",\"Article\"\n\"Against the Grain: The Tragedy of Zimbabwe in the Context of 4IR\",\"Africa and the Fourth Industrial Revolution\",\"\",\"\",\"\",\"10.1007/978-3-030-87524-4_4\",\"Umali Saidi\",\"2022\",\"http://link.springer.com/chapter/10.1007/978-3-030-87524-4_4\",\"Chapter\""
  },
  {
    "path": "tests/test_common.py",
    "content": "import litstudy\nimport codecs\n\n\ndef test_robust_open():\n    f = litstudy.common.robust_open\n    expected = \"ABC \\U0001F600\"\n\n    assert f(b\"\").read() == \"\"\n\n    content = expected.encode(\"utf8\")\n    assert f(content).read() == expected\n\n    content = codecs.BOM_UTF8 + expected.encode(\"utf8\")\n    assert f(content).read() == expected\n\n    content = codecs.BOM_UTF16_BE + expected.encode(\"utf_16_be\")\n    assert f(content).read() == expected\n\n    content = codecs.BOM_UTF16_LE + expected.encode(\"utf_16_le\")\n    assert f(content).read() == expected\n\n    # Contains some invalid UTF-8 character, should become U+FFFD\n    content = b\"ABC \\x9f\\x98\\x80 DEF\"\n    assert f(content).read() == \"ABC \\ufffd\\ufffd\\ufffd DEF\"\n"
  },
  {
    "path": "tests/test_nlp_corpus.py",
    "content": "import os\n\nfrom litstudy import load_csv\nfrom litstudy.nlp import build_corpus, Corpus\n\ndef test_build_corpus_should_instantiate_Corpus():\n    path = os.path.dirname(__file__) + \"/resources/scopus.csv\"\n    docs = load_csv(path)\n\n    TestCorpus = build_corpus(docs=docs,\n                              max_tokens=100)\n\n    assert type(TestCorpus) == Corpus\n    assert len(TestCorpus.dictionary.items()) == 100\n\ndef test_build_corpus_should_filter_words():\n    path = os.path.dirname(__file__) + \"/resources/scopus.csv\"\n    docs = load_csv(path)\n\n    remove_words = ['author', 'published']\n    TestCorpusComplete = build_corpus(docs=docs)\n    TestCorpusFiltered = build_corpus(docs=docs, remove_words=remove_words)\n\n    assert len(TestCorpusComplete.dictionary.items()) > 0\n    assert remove_words == [item[1] for item in TestCorpusComplete.dictionary.items() if item[1] in remove_words]\n    assert [] == [item for item in TestCorpusFiltered.dictionary.items() if item[1] in remove_words]\n\n\n"
  },
  {
    "path": "tests/test_sources_arxiv.py",
    "content": "from litstudy.sources.arxiv import search_arxiv\n\n\ndef test_arxiv_query():\n    docs = search_arxiv(\"all:positron\", start=0, max_results=10, batch_size=3)\n\n    assert len(docs) == 10\n"
  },
  {
    "path": "tests/test_sources_crossref.py",
    "content": "from litstudy.sources.crossref import fetch_crossref, search_crossref\nfrom .common import MockSession\n\n\ndef test_fetch_crossref():\n    session = MockSession()\n    doc = fetch_crossref(\"10.1109/SAMOS.2013.6621096\", session=session)\n\n    assert doc.title == \"Rethinking computer architecture for throughput computing\"\n    assert doc.id.title == \"Rethinking computer architecture for throughput computing\"\n    assert doc.id.doi == \"10.1109/samos.2013.6621096\"\n\n\ndef test_search_crossref():\n    session = MockSession()\n    docs = search_crossref(\"litstudy\", session=session)\n\n    assert any(doc.title == \"litstudy: A Python package for literature reviews\" for doc in docs)\n"
  },
  {
    "path": "tests/test_sources_csv.py",
    "content": "from litstudy import load_csv\nimport os\n\n\ndef test_load_ieee_csv():\n    path = os.path.dirname(__file__) + \"/resources/ieee.csv\"\n    docs = load_csv(path)\n    doc = docs[0]\n\n    assert (\n        doc.title\n        == 'Exascale Computing Trends: Adjusting to the \"New Normal\"\\' for Computer Architecture'\n    )\n    assert doc.publication_year == 2013\n    # assert len(doc.keywords) == 37\n    assert \"Transistors\" in doc.keywords\n    assert len(doc.abstract) == 774\n    assert doc.citation_count == 51\n    assert len(doc.authors) == 2\n\n    author = doc.authors[0]\n    assert author.name == \"P. Kogge\"\n\n\ndef test_load_springer_csv():\n    path = os.path.dirname(__file__) + \"/resources/springer.csv\"\n    docs = load_csv(path)\n    doc = docs[0]\n\n    assert doc.title == \"Graph-Based Load Balancing Model for Exascale Computing Systems\"\n    assert doc.publication_year == 2022\n    assert doc.id.doi == \"10.1007/978-3-030-92127-9_33\"\n\n\ndef test_load_scopus_csv():\n    path = os.path.dirname(__file__) + \"/resources/scopus.csv\"\n    docs = load_csv(path)\n    doc = docs[0]\n\n    assert doc.title == \"Scalable molecular dynamics with NAMD\"\n    assert doc.abstract.startswith(\"NAMD is a parallel molecular dynamics code\")\n    assert doc.publication_source == \"Journal of Computational Chemistry\"\n    assert doc.language is None\n    assert doc.publisher == \"John Wiley and Sons Inc.\"\n    assert doc.citation_count == 13169\n    assert doc.keywords == [\"Biomolecular simulation\", \"Molecular dynamics\", \"Parallel computing\"]\n    assert doc.publication_year == 2005\n\n    assert len(doc.authors) == 10\n    assert doc.authors[0].name == \"Phillips J.C.\"\n\ndef test_load_retraction_watch_csv():\n    path = os.path.dirname(__file__) + \"/resources/retraction_watch.csv\"\n\n    # let's also go out of our way to make the date field work:\n    def date_filter(d: dict) -> dict:\n        import datetime\n        try:\n            d[\"date\"] = datetime.datetime.strptime(d[\"OriginalPaperDate\"], \"%m/%d/%Y %H:%M\").date().isoformat()\n            print(d[\"date\"])\n        except ValueError:\n            pass\n        return d\n\n    docs = load_csv(path, doi_field=\"OriginalPaperDOI\", source_field=\"Journal\", filter=date_filter)\n    doc = docs[0]\n\n    assert doc.title == \"Reflections on Research Software\"\n    assert doc.publication_source == \"Journal of Prominent Things\"\n    assert doc.language is None\n    assert doc.publication_year == 2024\n\n    assert len(doc.authors) == 1\n    assert doc.authors[0].name == \"Patrick Bos\"\n"
  },
  {
    "path": "tests/test_sources_ieee.py",
    "content": "from litstudy.sources.ieee import load_ieee_csv\nimport os\n\n\ndef test_load_ieee_csv():\n    path = os.path.dirname(__file__) + \"/resources/ieee.csv\"\n    docs = load_ieee_csv(path)\n    doc = docs[0]\n\n    assert (\n        doc.title\n        == 'Exascale Computing Trends: Adjusting to the \"New Normal\"\\' for Computer Architecture'\n    )\n    assert doc.publication_year == 2013\n    assert len(doc.keywords) == 37\n    assert \"Transistors\" in doc.keywords\n    assert len(doc.abstract) == 774\n    assert doc.citation_count == 51\n    assert len(doc.authors) == 2\n\n    author = doc.authors[0]\n    assert author.name == \"P. Kogge\"\n    assert len(author.affiliations) == 1\n    assert author.affiliations[0].name == \"University of Notre Dame\"\n\n    # For the second document, the number of authors does not match the number of\n    # affiliations. This means we can get the affiliations via `doc.affiliations`,\n    # but the authors do not have affilations themselves\n    doc = docs[1]\n    assert doc.title == \"European HPC Landscape\"\n    assert len(doc.affiliations) == 7\n    assert len(doc.authors) == 6\n    assert doc.authors[0].affiliations is None\n"
  },
  {
    "path": "tests/test_sources_ris.py",
    "content": "from litstudy.sources.ris import load_ris_file\nimport os\n\n\ndef test_load_ris_file():\n    path = os.path.dirname(__file__) + \"/resources/example.ris\"\n    docs = load_ris_file(path)\n\n    assert len(docs) == 25\n\n    doc = docs[0]\n\n    assert doc.title == \"The European Approach to the Exascale Challenge\"\n    assert doc.publication_year == 2019\n    assert len(doc.keywords) == 6\n    assert \"Ecosystems\" in doc.keywords\n    assert len(doc.abstract) == 990\n    assert len(doc.authors) == 2\n\n    author = doc.authors[0]\n    assert author.name == \"G. Kalbe\"\n"
  },
  {
    "path": "tests/test_sources_scopus_csv.py",
    "content": "from litstudy.sources.scopus_csv import load_scopus_csv\nimport os\n\n\ndef test_load_scopus_csv():\n    path = os.path.dirname(__file__) + \"/resources/scopus.csv\"\n    docs = load_scopus_csv(path)\n    for num, doc in enumerate(docs):\n        title = doc.title\n        doc_id_title = doc.id.title\n        doc_id_doi = doc.id.doi\n        doc_id_pubmed = doc.id.pubmed\n        doc_id_scopus = doc.id.scopusid\n        pub_year = doc.publication_year\n        keywords = doc.keywords\n        abstract = doc.abstract\n        citation_count = doc.citation_count\n        publication_source = doc.publication_source\n        source_type = doc.source_type\n        for author in doc.authors:\n            author_name = author.name\n            for aff in author.affiliations:\n                affiliation = aff.name\n        if num == 0:\n            assert title == doc_id_title\n            assert doc.title == \"Scalable molecular dynamics with NAMD\"\n            assert doc.abstract.startswith(\"NAMD is a parallel molecular dynamics code\")\n            assert doc.publication_source == \"Journal of Computational Chemistry\"\n            assert doc.language == \"English\"\n            assert doc.publisher == \"John Wiley and Sons Inc.\"\n            assert doc.citation_count == 13169\n            assert doc.keywords == [\n                \"Biomolecular simulation\",\n                \"Molecular dynamics\",\n                \"Parallel computing\",\n            ]\n            assert doc.publication_year == 2005\n\n            assert len(doc.authors) == 10\n            assert doc.authors[0].name == \"Phillips, J.C. (ID: 57202138757)\"\n"
  },
  {
    "path": "tests/test_sources_semanticscholar.py",
    "content": "from litstudy.sources.semanticscholar import (\n    search_semanticscholar,\n    fetch_semanticscholar,\n    refine_semanticscholar,\n)\nfrom .common import MockSession, example_docs\n\n\ndef test_load_s2_file():\n    session = MockSession()\n\n    docs = search_semanticscholar(\"exascale\", limit=3, session=session)\n    assert len(docs) == 3\n\n    docs = search_semanticscholar(\"litstudy\", session=session)\n    assert any(doc.id.doi == \"10.2139/ssrn.4079400\" for doc in docs)\n\n\ndef test_fetch_semanticscholar():\n    session = MockSession()\n\n    doc = fetch_semanticscholar(\"arXiv:1705.10311\", session=session)\n    assert (\n        doc.title\n        == \"Optimal Multi-Object Segmentation with Novel Gradient Vector Flow Based Shape Priors\"\n    )\n\n    doc = fetch_semanticscholar(\"MAG:112218234\", session=session)\n    assert doc.title == \"Techniques for Measuring Sea Turtles\"\n\n    doc = fetch_semanticscholar(\"ACL:W12-3903\", session=session)\n    assert (\n        doc.title\n        == \"The Study of Effect of Length in Morphological Segmentation of Agglutinative Languages\"\n    )\n\n    doc = fetch_semanticscholar(\"PMID:19872477\", session=session)\n    assert doc.title == \"THE COMBINATION OF GELATIN WITH HYDROCHLORIC ACID\"\n\n\ndef test_refine_semanticscholar():\n    session = MockSession()\n\n    docs = example_docs()\n    found, notfound = refine_semanticscholar(docs, session=session)\n\n    assert len(found) == 1\n    assert found[0].title == docs[0].title\n\n    assert len(notfound) == 1\n    assert notfound[0].title == docs[1].title\n"
  },
  {
    "path": "tests/test_sources_springer.py",
    "content": "from litstudy.sources.springer import load_springer_csv\nimport os\n\n\ndef test_load_springer_csv():\n    path = os.path.dirname(__file__) + \"/resources/springer.csv\"\n    docs = load_springer_csv(path)\n    doc = docs[0]\n\n    assert doc.title == \"Graph-Based Load Balancing Model for Exascale Computing Systems\"\n    assert doc.publication_year == 2022\n    assert doc.id.doi == \"10.1007/978-3-030-92127-9_33\"\n"
  }
]