spinnaker-pacman

Partition and Configuration Manager for SpiNNaker

https://github.com/spinnakermanchester/pacman

Science Score: 54.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    8 of 18 committers (44.4%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (16.9%) to scientific vocabulary

Keywords

partitioning placement python routing spinnaker

Keywords from Contributors

machine-interface examples pynn
Last synced: 6 months ago · JSON representation ·

Repository

Partition and Configuration Manager for SpiNNaker

Basic Info
  • Host: GitHub
  • Owner: SpiNNakerManchester
  • License: apache-2.0
  • Language: Python
  • Default Branch: master
  • Homepage:
  • Size: 8.07 MB
Statistics
  • Stars: 9
  • Watchers: 17
  • Forks: 7
  • Open Issues: 15
  • Releases: 5
Topics
partitioning placement python routing spinnaker
Created over 11 years ago · Last pushed 6 months ago
Metadata Files
Readme License Citation

README.md

PyPi version CI Check Documentation Status Coverage Status

This package provides utilities for partitioning, placing a routing on a SpiNNaker machine

Requirements

In addition to a standard Python installation, this package depends on:

  • SpiNNMachine

These requirements can be install using pip:

pip install SpiNNMachine

User Installation

If you want to install for all users, run:

sudo pip install PACMAN

If you want to install only for yourself, run:

pip install PACMAN --user

To install in a virtualenv, with the virtualenv enabled, run:

pip install PACMAN

Using a virtual environment is recommended for all SpiNNaker software.

Developer Installation

If you want to be able to edit the source code, but still have it referenced from other Python modules, you can set the install to be a developer install. In this case, download the source code, and extract it locally, or else clone the git repository:

git clone http://github.com/SpiNNakerManchester/PACMAN.git

To install as a development version which all users will then be able to use, run the following where the code has been extracted:

sudo pip install -e .

To install as a development version for only yourself, run:

pip install -e . --user

To install as a development version in a virtualenv, with the virutalenv enabled, run:

pip install -e .

Test Installation

To be able to run the unitests add [Test] to the pip installs above

pip install -e .[Test]

Documentation

PACMAN python documentation
Combined python documentation

PACMAN Executor

PACMAN contains a simple workflow execution system which allows the user to specify a set of available algorithms which, when provided with a set of inputs can produce a set of outputs. The executor will then work out the order in which the algorithms should be run (and indeed if the algorithms can be run) by looking at the inputs required and outputs generated by each algorithm.

As well as parameters required by the algorithms, the workflow system additionally supports the concept of "tokens". A token can be used to represent the action of an algorithm that does not produce a specific output. For example, on a SpiNNaker machine, this might include the loading of data or the loading of application binaries, neither of which produces a Python object as output, but performs and important task in any case. Each token can also be specified to be "part" of a whole task. This allows an algorithm to declare that it has done part of a task, and have a future algorithm require that all of the task has been completed without knowing what parts need to be done. Again, the example of loading of data can be used here where there may be several algorithms that can load data in different ways but all the data must be loaded before the application binaries are loaded; however the application binary loader can just say that all data loading is done before execution, avoiding the need to modify the algorithm in the event that a new algorithm is created.

The arguments of the algorithms that can be represented as Python objects are specified using semantic types. These are simply represented as strings; the values of the strings are only important in that they must match between the inputs and outputs of algorithms in the flow for an algorithm to be recognised as producing an output that another algorithm can use as an input.

Each algorithm to be run by this executor specifies: - The required inputs of the algorithm. This can include both arguments of the algorithm and tokens required. - The optional inputs of the algorithm, again including both arguments and tokens. - The outputs generated by the algorithm, both as semantic types and tokens.

The executor is provided with: - A list of algorithms that must be executed. If it is not possible to execute these, an error is raised. These will be executed regardless of if the output of the algorithm is already available. - A list of algorithms that can be executed optionally to produce an output. If one of these algorithms generates an input type or a partial or complete token that is an optional input to a required algorithm, and no other required algorithm can generate this input, the optional algorithm will be run before that required algorithm. An optional algorithm will not be run if it doesn't generate an output which is an input for another algorithm which isn't already provided in some other way. - A list of inputs to seed the workflow with. This can be used to provide initial inputs to the workflow, or to stop an optional algorithm from executing by providing in advance the output that the algorithm generates. - A list of input tokens to seed the workflow with. These can only be specified as complete tokens which are provided. Partial tokens cannot currently be provided. - A list of required outputs that the workflow must generate. In addition to the list of algorithms to run, these outputs must be generated by the workflow at some stage, or else an error is raised. - A list of required output tokens that the workflow must generate. As with the outputs these must be generated by the workflow at some stage or else an error is raised.

Owner

  • Name: SpiNNaker - University of Manchester
  • Login: SpiNNakerManchester
  • Kind: organization
  • Email: spinnakerusers@googlegroups.com
  • Location: Manchester, UK

Software for the SpiNNaker Million Core Neuromorphic Machine. Part of the Human Brain Project and EBRAINS

Citation (CITATION.cff)

# Copyright (c) 2017 The University of Manchester
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

cff-version: 1.2.0
message: If you use this software, please cite it as below.
preferred-citation:
  type: article
  doi: 10.3389/fnins.2019.00231
  issn: 1662-453X
  url: https://www.frontiersin.org/articles/10.3389/fnins.2019.00231
  title: "SpiNNTools: The Execution Engine for the SpiNNaker Platform"
  journal: Frontiers in Neuroscience
  volume: 13
  year: 2019
  month: 3
  abstract: SpiNNaker is a massively parallel distributed architecture primarily focused on real time simulation of spiking neural networks. The largest realization of the architecture consists of one million general purpose processors, making it the largest neuromorphic computing platform in the world at the present time. Utilizing these processors efficiently requires expert knowledge of the architecture to generate executable code and to harness the potential of the unique inter-processor communications infra-structure that lies at the heart of the SpiNNaker architecture. This work introduces a software suite called SpiNNTools that can map a computational problem described as a graph into the required set of executables, application data and routing information necessary for simulation on this novel machine. The SpiNNaker architecture is highly scalable, giving rise to unique challenges in mapping the problem to the machines resources, loading the generated files to the machine and subsequently retrieving the results of simulation. In this paper we describe these challenges in detail and the solutions implemented.
  authors:
  - given-names: Andrew
    family-names: Rowley
    affiliation: University Of Manchester
    email: Andrew.Rowley@manchester.ac.uk
    orcid: https://orcid.org/0000-0002-2646-8520
    website: https://www.researchgate.net/profile/Andrew_Rowley2
  - given-names: Christian Y.
    family-names: Brenninkmeijer
    affiliation: University Of Manchester
    email: christian.brenninkmeijer@manchester.ac.uk
    orcid: https://orcid.org/0000-0002-2937-7819
    website: https://www.researchgate.net/profile/Christian_Brenninkmeijer
  - given-names: Simon
    family-names: Davidson
    affiliation: University Of Manchester
    orcid: https://orcid.org/0000-0001-5385-442X
    website: https://research.manchester.ac.uk/en/persons/simon.davidson
  - given-names: Donal
    family-names: Fellows
    affiliation: University Of Manchester
    orcid: https://orcid.org/0000-0002-9091-5938
    website: https://www.researchgate.net/profile/Donal-Fellows
  - given-names: Andrew
    family-names: Gait
    affiliation: University Of Manchester
    orcid: https://orcid.org/0000-0001-9349-1096
    website: https://personalpages.manchester.ac.uk/staff/andrew.gait/
  - given-names: David R.
    family-names: Lester
    affiliation: University Of Manchester
    orcid: https://orcid.org/0000-0002-7267-291X
  - given-names: Luis A.
    family-names: Plana
    affiliation: University Of Manchester
    orcid: https://orcid.org/0000-0002-6113-3929
    website: https://research.manchester.ac.uk/en/persons/luis.plana
  - given-names: Oliver
    family-names: Rhodes
    affiliation: University Of Manchester
    orcid: https://orcid.org/0000-0003-1728-2828
    website: https://research.manchester.ac.uk/en/persons/oliver.rhodes
  - given-names: Alan B.
    family-names: Stokes
    affiliation: University Of Manchester
    orcid: https://orcid.org/0000-0002-6110-1484
  - given-names: Steve B.
    family-names: Furber
    affiliation: University Of Manchester
    orcid: https://orcid.org/0000-0002-6524-3367
    website: https://research.manchester.ac.uk/en/persons/steve.furber

title: The Mapping algorthims from a graph to SpiNNaker machine data structures and
  work flow manager for executing said algorithms
authors:
    - name: SpiNNaker Software Team
      alias: For a list of contributors see https://github.com/SpiNNakerManchester/PACMAN/graphs/contributors or for a combined list see https://spinnakermanchester.github.io/latest/LicenseAgreement.html#contributors
      address: University of Manchester, Oxford Road
      city: Manchester
      country: GB
      email: spinnakerusers@googlegroups.com
      post-code: M13 9PL
      website: https://apt.cs.manchester.ac.uk/projects/SpiNNaker/
url: https://spinnakermanchester.github.io/
contact:
- address: University of Manchester, Oxford Road
  city: Manchester
  country: GB
  email: spinnakerusers@googlegroups.com
  name: SpiNNaker Software Team
  post-code: M13 9PL
license: Apache-2.0
repository: https://github.com/SpiNNakerManchester/PACMAN

GitHub Events

Total
  • Issues event: 4
  • Watch event: 1
  • Delete event: 26
  • Issue comment event: 5
  • Push event: 91
  • Pull request review comment event: 2
  • Pull request review event: 7
  • Pull request event: 46
  • Create event: 28
Last Year
  • Issues event: 4
  • Watch event: 1
  • Delete event: 26
  • Issue comment event: 5
  • Push event: 91
  • Pull request review comment event: 2
  • Pull request review event: 7
  • Pull request event: 46
  • Create event: 28

Committers

Last synced: almost 3 years ago

All Time
  • Total Commits: 3,226
  • Total Committers: 18
  • Avg Commits per committer: 179.222
  • Development Distribution Score (DDS): 0.645
Top Committers
Name Email Commits
Christian Y. Brenninkmeijer c****r@m****k 1,144
alan-stokes a****s@g****m 765
Andrew Rowley A****y@m****k 685
Donal Fellows d****s@m****k 321
Petrut Antoniu Bogdan p****8@g****m 106
sara s****a@g****m 72
Christian b****c@c****k 62
Andrew Gait a****t@m****k 26
sergiodavies d****s@c****k 11
Andrew Mundy a****y@i****g 11
zzalsar4 z****4@z****4 7
daviess s****s@g****m 6
Gary c****n@g****m 3
SpiNNaker S****r@1****3 2
Christoph Richter p****h@g****m 2
Petrut Antoniu Bogdan p****n@p****k 1
Arthur g****a@g****m 1
Christian Y. Brenninkmeijer C****B@u****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 46
  • Total pull requests: 164
  • Average time to close issues: about 2 years
  • Average time to close pull requests: 3 months
  • Total issue authors: 5
  • Total pull request authors: 9
  • Average comments per issue: 2.22
  • Average comments per pull request: 0.69
  • Merged pull requests: 126
  • Bot issues: 0
  • Bot pull requests: 2
Past Year
  • Issues: 2
  • Pull requests: 34
  • Average time to close issues: 1 day
  • Average time to close pull requests: 6 days
  • Issue authors: 1
  • Pull request authors: 2
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.09
  • Merged pull requests: 24
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • Christian-B (33)
  • rowleya (8)
  • alan-stokes (2)
  • dkfellows (2)
  • pabogdan (1)
Pull Request Authors
  • Christian-B (161)
  • rowleya (24)
  • dkfellows (12)
  • alan-stokes (3)
  • andrewgait (2)
  • dependabot[bot] (2)
  • jofas (1)
  • Sakuyui (1)
  • lucaperes (1)
Top Labels
Issue Labels
enhancement (14) bug (11) question (9) minor (6) help wanted (1)
Pull Request Labels
enhancement (36) bug (18) minor (8) incomplete_left_for_further_release (5) blocker (4) historic (3) dependencies (2)

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 136 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 1
  • Total versions: 27
  • Total maintainers: 5
pypi.org: spinnaker-pacman

Partition and Configuration Manager

  • Versions: 27
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 136 Last month
Rankings
Dependent packages count: 10.1%
Forks count: 13.3%
Downloads: 13.8%
Average: 15.3%
Stargazers count: 17.7%
Dependent repos count: 21.6%
Last synced: 6 months ago

Dependencies

requirements-test.txt pypi
  • coverage >=4.4,<5.0
  • flake8 *
  • pylint *
  • pytest-cov *
  • sphinx >=4
  • testfixtures *
requirements.txt pypi
  • SpiNNMachine ==1
  • SpiNNUtilities ==1
  • jsonschema *
  • jsonschema <4.4
  • sortedcollections *
setup.py pypi
  • SpiNNMachine *
  • SpiNNUtilities *
  • jsonschema *
  • sortedcollections *
.github/workflows/python_actions.yml actions
  • ./support/actions/check-copyrights * composite
  • ./support/actions/checkout-spinn-deps * composite
  • ./support/actions/pylint * composite
  • ./support/actions/pytest * composite
  • ./support/actions/python-tools * composite
  • ./support/actions/run-setup * composite
  • ./support/actions/sphinx * composite
  • actions/checkout v3 composite
  • actions/setup-python v4 composite