
* Use gnuconfig package for config file replacement for RISC-V. This extends the changes in #26035 to handle RISC-V. Before this change, many packages fail to configure on riscv64 due to config.guess being too old to know about RISC-V. This is seen out of the box when clingo fails to build from source due to pkgconfig failing to configure, throwing error: "configure: error: cannot guess build type; you must specify one". * Add riscv64 architecture * Update vendored archspec from upstream project. These archspec updates include changes needed to support riscv64. * Update archspec's __init__.py to reflect the commit hash of archspec being used.
82 lines
3.1 KiB
Markdown
82 lines
3.1 KiB
Markdown
[](https://github.com/archspec/archspec/actions)
|
|
[](https://codecov.io/gh/archspec/archspec)
|
|
[](https://archspec.readthedocs.io/en/latest/?badge=latest)
|
|
|
|
|
|
# Archspec (Python bindings)
|
|
|
|
Archspec aims at providing a standard set of human-understandable labels for
|
|
various aspects of a system architecture like CPU, network fabrics, etc. and
|
|
APIs to detect, query and compare them.
|
|
|
|
This project grew out of [Spack](https://spack.io/) and is currently under
|
|
active development. At present it supports APIs to detect and model
|
|
compatibility relationships among different CPU microarchitectures.
|
|
|
|
## Getting started with development
|
|
|
|
The `archspec` Python package needs [poetry](https://python-poetry.org/) to
|
|
be installed from VCS sources. The preferred method to install it is via
|
|
its custom installer outside of any virtual environment:
|
|
```console
|
|
$ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python
|
|
```
|
|
You can refer to [Poetry's documentation](https://python-poetry.org/docs/#installation)
|
|
for further details or for other methods to install this tool. You'll also need `tox`
|
|
to run unit test:
|
|
```console
|
|
$ pip install --user tox
|
|
```
|
|
Finally you'll need to clone the repository:
|
|
```console
|
|
$ git clone --recursive https://github.com/archspec/archspec.git
|
|
```
|
|
|
|
### Running unit tests
|
|
Once you have your environment ready you can run `archspec` unit tests
|
|
using ``tox`` from the root of the repository:
|
|
```console
|
|
$ tox
|
|
[ ... ]
|
|
py27: commands succeeded
|
|
py35: commands succeeded
|
|
py36: commands succeeded
|
|
py37: commands succeeded
|
|
py38: commands succeeded
|
|
pylint: commands succeeded
|
|
flake8: commands succeeded
|
|
black: commands succeeded
|
|
congratulations :)
|
|
```
|
|
|
|
## Citing Archspec
|
|
|
|
If you are referencing `archspec` in a publication, please cite the following
|
|
paper:
|
|
|
|
* Massimiliano Culpo, Gregory Becker, Carlos Eduardo Arango Gutierrez, Kenneth
|
|
Hoste, and Todd Gamblin.
|
|
[**`archspec`: A library for detecting, labeling, and reasoning about
|
|
microarchitectures**](https://tgamblin.github.io/pubs/archspec-canopie-hpc-2020.pdf).
|
|
In *2nd International Workshop on Containers and New Orchestration Paradigms
|
|
for Isolated Environments in HPC (CANOPIE-HPC'20)*, Online Event, November
|
|
12, 2020.
|
|
|
|
## License
|
|
|
|
Archspec is distributed under the terms of both the MIT license and the
|
|
Apache License (Version 2.0). Users may choose either license, at their
|
|
option.
|
|
|
|
All new contributions must be made under both the MIT and Apache-2.0
|
|
licenses.
|
|
|
|
See [LICENSE-MIT](https://github.com/archspec/archspec/blob/master/LICENSE-MIT),
|
|
[LICENSE-APACHE](https://github.com/archspec/archspec/blob/master/LICENSE-APACHE),
|
|
[COPYRIGHT](https://github.com/archspec/archspec/blob/master/COPYRIGHT), and
|
|
[NOTICE](https://github.com/archspec/archspec/blob/master/NOTICE) for details.
|
|
|
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
|
|
|
LLNL-CODE-811653
|