# README
This is a Python package for the Arm open source [CMSIS-Stream library](https://github.com/ARM-software/CMSIS-Stream).
You can install it with:
`pip install cmsis-stream`
Then you can follow the [documentation](https://github.com/ARM-software/CMSIS-Stream) to learn how to:
* Define new compute nodes
* Connect them into a dataflow graph to process streams
* Generate at build time a static C scheduler to run the graph on your target (no need of an RTOS)
# Change history
## Version 1.14.0:
* More customization possible for the FIFO class:
* It is no more described with a string but now uses a Python class to give the name of the C++ class implementing the FIFO and the additional arguments used by the C++ constructor of this FIFO.
* Having a custom FIFO with additional arguments may require to change the definitions in `GenericNodes.h`
## Version 1.13.0:
* New option to prevent a custom buffer from being shared
## Version 1.12.0:
* Corrected issues with Duplicate node buffer optimizations
* Added a new callback mode
* Added new option for memory optimization (graph coloring algorithm to use)
## Version 1.11.0:
* With memory optimization mode, the constraints on Duplicate nodes are relaxed to avoid copies as much as possible
## Version 1.10.0:
* A specific memory buffer can now be assigned to a FIFO (so buffer external to this framework)
* New option to dynamically allocate the FIFO buffers using custom memory allocator
* And some corrections applied to 1.9.2
## Version 1.9.2:
* A specific memory buffer can now be assigned to a FIFO (so buffer external to this framework)
* New option to dynamically allocate the FIFO buffers using custom memory allocator
* (Version number not correct - the middle number should have been increased)
## Version 1.9.1:
* Correction to the management of sharing buffer states. It makes it easier to use this feature from the Python
## Version 1.9.0:
* Introduced a C++ namespace for the nodes
* Introduced some support for static reference counting (in type system). It is to help with use of buffers in a graph and detect at build time some problems. See `example12` and documentation about [buffers](../Documentation/Buffer.md)
## Version 1.8.0:
* Introduction of a new asynchronous mode : `fullyAsynchronous`
* Previous asynchronous mode is deprecated and will be removed in a future version
## Version 1.7.0:
* Improvements to GenericNodes.h when building with gcc
* `addLiteral` can now also use `bool` values from Python
* Naming of the function to get a node was not consistent between the C and CPP APIs
## Version 1.6.1:
* Correction to 1.6.0 : Missing YAML module
## Version 1.6.0:
* SDS sensor and recorder nodes to interact with the [Arm SDS Framework](https://github.com/ARM-software/SDS-Framework/tree/main) to record stream of samples and replay them in Arm Virtual Hardware
* YAML import / export of a graph and its code generation settings
## Version 1.5.1:
* Wrong `GenericNodes.h` was included in version 1.5.0
* 1.5.0 is no more available for download and has been replaced by 1.5.1 correction
## Version 1.5.0:
* Corrections to the heap mode
* Added possibility to identify and access nodes from the outside of the scheduler (it implies the heap mode). See documentation for more information
## Version 1.4.0:
* Possibility to customize the style of the graph pictures (colors, fonts ...)
* Graph picture can now also be generated before schedule computation (useful to debug an incorrect graph before trying to compute a schedule)
* Possibility to use more **pure** C functions in the graph. The `GenericFunction` node can now easily be used to plug more kind of C functions without having to write a C++ wrapper
* `Dsp` node has been removed. Instead use the `Unary`, `Binary` or the more flexible `GenericFunction` node
## Version 1.3.0:
* New nodes `GenericToMany`, `GenericFromMany`, `GenericManyToMany`
* `Duplicate` node implementation now using `GenericToMany`
* Possibility to change the name of IOs in `Binary`, `Unary` and `Dsp` nodes
## Version 1.2.1:
* Correct an issue in 1.2.0. Some templates needed
by the new command line tool had not been included in the
package.
## Version 1.2.0:
* The file cg_status.h can now also be created from
the python package
* A new heapAllocate option has been introduced. When true,
FIFO and node objects are allocated on the heap and no more
on the stack. Two new functions are generated in the scheduler to initialize or free those objects
* A new command line tool cmsis-stream is available. It can be used to quickly create a project with : cmsis-stream create TestFolder. The folder will contain makefiles for windows, mac and linux. It will also contain a CMSIS build tool solution file to build for Arm Virtual Hardware CS 300
## Version 1.1.0:
* The file GenericNodes.h can now be created from the
python package. Like that, it is possible to start using
CMSIS-Stream by only installing the Python package.
Of course, if other specifics nodes are required (FFT, MFCC) the CMSIS-Stream repository will have to be used to get the headers
* Duplicate node and duplicate insertion has been improved: one-to-many connections are now fully supported. Before it was automatically supported up to 3 outputs and for more outputs, Duplicate nodes had to be inserted manually.
## Version 1.0.0:
* First version (originally it was the compute graph library part of the CMSIS-DSP library)
Raw data
{
"_id": null,
"home_page": "https://github.com/ARM-software/CMSIS-Stream",
"name": "cmsis-stream",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": "development, dsp, cmsis, CMSIS-Stream, Arm, signal processing, maths, ml, cortex-m, cortex-a",
"author": "Copyright (C) 2010-2023 ARM Limited or its affiliates. All rights reserved.",
"author_email": "christophe.favergeon@arm.com",
"download_url": null,
"platform": "any",
"description": "# README\r\n\r\nThis is a Python package for the Arm open source [CMSIS-Stream library](https://github.com/ARM-software/CMSIS-Stream).\r\n\r\nYou can install it with:\r\n\r\n`pip install cmsis-stream`\r\n\r\nThen you can follow the [documentation](https://github.com/ARM-software/CMSIS-Stream) to learn how to:\r\n\r\n* Define new compute nodes\r\n* Connect them into a dataflow graph to process streams\r\n* Generate at build time a static C scheduler to run the graph on your target (no need of an RTOS)\r\n\r\n# Change history\r\n\r\n## Version 1.14.0:\r\n\r\n* More customization possible for the FIFO class:\r\n * It is no more described with a string but now uses a Python class to give the name of the C++ class implementing the FIFO and the additional arguments used by the C++ constructor of this FIFO.\r\n * Having a custom FIFO with additional arguments may require to change the definitions in `GenericNodes.h`\r\n\r\n## Version 1.13.0:\r\n\r\n* New option to prevent a custom buffer from being shared\r\n\r\n## Version 1.12.0:\r\n\r\n* Corrected issues with Duplicate node buffer optimizations\r\n* Added a new callback mode\r\n* Added new option for memory optimization (graph coloring algorithm to use)\r\n\r\n## Version 1.11.0:\r\n\r\n* With memory optimization mode, the constraints on Duplicate nodes are relaxed to avoid copies as much as possible\r\n\r\n## Version 1.10.0:\r\n\r\n* A specific memory buffer can now be assigned to a FIFO (so buffer external to this framework)\r\n* New option to dynamically allocate the FIFO buffers using custom memory allocator\r\n* And some corrections applied to 1.9.2\r\n\r\n## Version 1.9.2:\r\n\r\n* A specific memory buffer can now be assigned to a FIFO (so buffer external to this framework)\r\n* New option to dynamically allocate the FIFO buffers using custom memory allocator\r\n* (Version number not correct - the middle number should have been increased)\r\n\r\n## Version 1.9.1:\r\n\r\n* Correction to the management of sharing buffer states. It makes it easier to use this feature from the Python\r\n\r\n## Version 1.9.0:\r\n\r\n* Introduced a C++ namespace for the nodes\r\n* Introduced some support for static reference counting (in type system). It is to help with use of buffers in a graph and detect at build time some problems. See `example12` and documentation about [buffers](../Documentation/Buffer.md)\r\n\r\n## Version 1.8.0:\r\n\r\n* Introduction of a new asynchronous mode : `fullyAsynchronous`\r\n* Previous asynchronous mode is deprecated and will be removed in a future version\r\n\r\n## Version 1.7.0:\r\n\r\n* Improvements to GenericNodes.h when building with gcc\r\n* `addLiteral` can now also use `bool` values from Python\r\n* Naming of the function to get a node was not consistent between the C and CPP APIs\r\n\r\n## Version 1.6.1:\r\n\r\n* Correction to 1.6.0 : Missing YAML module \r\n\r\n## Version 1.6.0:\r\n\r\n* SDS sensor and recorder nodes to interact with the [Arm SDS Framework](https://github.com/ARM-software/SDS-Framework/tree/main) to record stream of samples and replay them in Arm Virtual Hardware\r\n* YAML import / export of a graph and its code generation settings\r\n\r\n## Version 1.5.1:\r\n\r\n* Wrong `GenericNodes.h` was included in version 1.5.0\r\n* 1.5.0 is no more available for download and has been replaced by 1.5.1 correction\r\n\r\n## Version 1.5.0:\r\n\r\n* Corrections to the heap mode\r\n* Added possibility to identify and access nodes from the outside of the scheduler (it implies the heap mode). See documentation for more information\r\n\r\n## Version 1.4.0:\r\n\r\n* Possibility to customize the style of the graph pictures (colors, fonts ...)\r\n* Graph picture can now also be generated before schedule computation (useful to debug an incorrect graph before trying to compute a schedule)\r\n* Possibility to use more **pure** C functions in the graph. The `GenericFunction` node can now easily be used to plug more kind of C functions without having to write a C++ wrapper\r\n* `Dsp` node has been removed. Instead use the `Unary`, `Binary` or the more flexible `GenericFunction` node\r\n\r\n## Version 1.3.0:\r\n\r\n* New nodes `GenericToMany`, `GenericFromMany`, `GenericManyToMany`\r\n* `Duplicate` node implementation now using `GenericToMany`\r\n* Possibility to change the name of IOs in `Binary`, `Unary` and `Dsp` nodes\r\n\r\n## Version 1.2.1:\r\n\r\n* Correct an issue in 1.2.0. Some templates needed\r\nby the new command line tool had not been included in the\r\npackage.\r\n\r\n## Version 1.2.0:\r\n\r\n* The file cg_status.h can now also be created from\r\nthe python package\r\n\r\n* A new heapAllocate option has been introduced. When true,\r\nFIFO and node objects are allocated on the heap and no more\r\non the stack. Two new functions are generated in the scheduler to initialize or free those objects\r\n\r\n* A new command line tool cmsis-stream is available. It can be used to quickly create a project with : cmsis-stream create TestFolder. The folder will contain makefiles for windows, mac and linux. It will also contain a CMSIS build tool solution file to build for Arm Virtual Hardware CS 300\r\n\r\n## Version 1.1.0:\r\n\r\n* The file GenericNodes.h can now be created from the\r\npython package. Like that, it is possible to start using\r\nCMSIS-Stream by only installing the Python package.\r\nOf course, if other specifics nodes are required (FFT, MFCC) the CMSIS-Stream repository will have to be used to get the headers\r\n\r\n* Duplicate node and duplicate insertion has been improved: one-to-many connections are now fully supported. Before it was automatically supported up to 3 outputs and for more outputs, Duplicate nodes had to be inserted manually.\r\n\r\n\r\n## Version 1.0.0:\r\n\r\n* First version (originally it was the compute graph library part of the CMSIS-DSP library)\r\n",
"bugtrack_url": null,
"license": "License :: OSI Approved :: Apache Software License",
"summary": "CMSIS-Stream graph description",
"version": "1.14.0",
"project_urls": {
"Bug Reports": "https://github.com/ARM-software/CMSIS-Stream/issues",
"Homepage": "https://github.com/ARM-software/CMSIS-Stream",
"Source": "https://github.com/ARM-software/CMSIS-Stream"
},
"split_keywords": [
"development",
" dsp",
" cmsis",
" cmsis-stream",
" arm",
" signal processing",
" maths",
" ml",
" cortex-m",
" cortex-a"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "74c37fb4953a54b7e8d3e7581fc28efce5c8fda84867e701da45854cabe4d07f",
"md5": "ffdacdfbf566a153781481e84bd1d85a",
"sha256": "70cea66df475d1e73e04dc79e280beaa839e1c590104fe524e5336079449fee2"
},
"downloads": -1,
"filename": "cmsis_stream-1.14.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "ffdacdfbf566a153781481e84bd1d85a",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 100208,
"upload_time": "2024-05-03T11:54:15",
"upload_time_iso_8601": "2024-05-03T11:54:15.094292Z",
"url": "https://files.pythonhosted.org/packages/74/c3/7fb4953a54b7e8d3e7581fc28efce5c8fda84867e701da45854cabe4d07f/cmsis_stream-1.14.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-05-03 11:54:15",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "ARM-software",
"github_project": "CMSIS-Stream",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "cmsis-stream"
}