Skip to content

Commit

Permalink
Update README + BUILDING
Browse files Browse the repository at this point in the history
  • Loading branch information
james-d-mitchell committed Nov 15, 2023
1 parent c97f740 commit 25e2142
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 25 deletions.
2 changes: 1 addition & 1 deletion .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
- image: reiniscirpons/hpcombi-env-arm64v8:v1
resource_class: arm.medium
steps:
- run:
- run:
name: "Set up compiler"
environment:
COMPILER_NAME: << parameters.compiler >>
Expand Down
1 change: 0 additions & 1 deletion .github/workflows/runtests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,6 @@ jobs:
- name: "Install dependencies . . ."
run: |
sudo apt-get install --yes ccache
sudo apt-get install --yes libbenchmark-dev
- name: "Configure the HPCombi build . . ."
env:
CC: ${{ env.CC }}
Expand Down
25 changes: 13 additions & 12 deletions BUILDING.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,24 @@
# Building HPCombi

## Build Prerequisites:
Note that HPCombi is a C++17 header-only library, and as such does not need to
be built. The instructions below are only for those who wish to either run the
tests, experiments, examples, or benchmarks.

- CMake 2.8 or later
## Build prerequisites:

- A recent c++ compiler. I have tested the code on
* g++ 5.3.1, 6.2.1 and 7.1.1.
* clang 5.0.0
* g++ 4.8 and 4.9 are known to be broken (I can fix it if needed at the price
of some uglification of the code).
- CMake 3.8 or later

- [optional] : Google sparsehash/dense_hash_map, sparsehash/dense_hash_set.
if not the less efficient standard containers will be used.
- A recent C++ compiler implementing the C++17 standard. We routinely test
HPCombi using:
* gcc 9 to 12; and
* clang 11 to 15
on both x86 and arm processors.

- BOOST.test (shared library version) : needed for testing.
- Your machine must support a small number of builtin functions such as `__builtin_popcnt`.

- Your machine must support AVX instructions.
- [optional] : Google `sparsehash/dense_hash_map` and/or `sparsehash/dense_hash_set`.

- Doxygen for generating the API documentation (in progress).
- [optional] Doxygen for generating the API documentation (in progress).

## Building

Expand Down
36 changes: 25 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,20 @@
# HPCombi
High Performance Combinatorics in C++ using vector instructions v0.0.8

SSE and AVX instruction sets allows for very fast manipulation of
combinatorial objects such as transformations, permutations, boolean matrices
of small size. The goal of this project is to implement various new algorithms
and benchmark them on various compiler and architecture.
HPCombi is a C++17 header-only library using the SSE and AVX instruction sets,
and some equivalents, for very fast manipulation of combinatorial
objects such as transformations, permutations, and boolean matrices of small
size. The goal of this project is to implement various new algorithms and
benchmark them on various compiler and architectures.

HPCombi was initially designed using the SSE and AVX instruction sets, and did
not work on machines without these instructions (such as ARM). From v1.0.0
HPCombi supports processors with other instruction sets also, via
[simd-everywhere](https://github.com/simd-everywhere/simde). It might be the
case that the greatest performance gains are achieved on processors supporting
the SSE and AVX instruction sets, but the HPCombi benchmarks indicate that
there are also still signficant gains on other processors too.
<!-- TODO add link to HPCombi wiki with benchmark graphs -->

## Authors

Expand All @@ -13,12 +23,16 @@ and benchmark them on various compiler and architecture.

## Contributors

- Finn Smith : discussions + BMat8 reference code
- Viviane Pons : algorithms discussions
- Reinis Cirpons : CI
- Reinis Cirpons : CI + benchmark graphs
- Viviane Pons : discussions about algorithms
- Finn Smith : discussions + `BMat8` reference code

## Thanks

## Acknowledgments

- This development is funded by the [OpenDreamKit](http://opendreamkit.org/)
Horizon 2020 European Research Infrastructure project (#676541).
- The development of HPCombi was partly funded by the
[OpenDreamKit](http://opendreamkit.org/) Horizon 2020 European Research
Infrastructure project (#676541), which the authors acknowledge with thanks.
- Thanks also to the
[simd-everywhere](https://github.com/simd-everywhere/simde) and
[catch2](https://github.com/catchorg/Catch2) authors and contributors for
their excellent libraries!

0 comments on commit 25e2142

Please sign in to comment.