From 25e2142108e621aea2aa1dca7e333931f7e6dea6 Mon Sep 17 00:00:00 2001 From: "James D. Mitchell" Date: Wed, 15 Nov 2023 15:07:04 +0000 Subject: [PATCH] Update README + BUILDING --- .circleci/config.yml | 2 +- .github/workflows/runtests.yml | 1 - BUILDING.md | 25 +++++++++++------------ README.md | 36 +++++++++++++++++++++++----------- 4 files changed, 39 insertions(+), 25 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index d0fa20f8..5a2f0cb4 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -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 >> diff --git a/.github/workflows/runtests.yml b/.github/workflows/runtests.yml index e3ae23b4..4e1d26f6 100644 --- a/.github/workflows/runtests.yml +++ b/.github/workflows/runtests.yml @@ -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 }} diff --git a/BUILDING.md b/BUILDING.md index 08d10227..cd6bb1f4 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -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 diff --git a/README.md b/README.md index e431e19c..0fabb0b5 100644 --- a/README.md +++ b/README.md @@ -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. + ## Authors @@ -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!