1- Installation & Quick Start {#install }
1+ Installation & Quick Start {#setup }
22==========================
33
44# Pre-requisites
@@ -10,32 +10,28 @@ Installation & Quick Start {#install}
1010| g++ | 11 or above |
1111| clang++ | 13 or above |
1212
13- <br />
14-
15- In term of SIMD extension sets, we actively supports (ie code is optimized and regularly tested) the following:
13+ In term of SIMD extension sets, the supports status are as follows:
1614
17- - ** Intel**
18- - SSE2, SSSE3, SSE3, SSE4.1, SSE4.2
19- - AVX, AVX2, FMA3
20- - AVX512 in SKylake-AVX512 mode (F, CD, VL, DQ, BW)
21- - ** ARM**
22- - NEON A32 (64 & 128 bits)
23- - NEON A64 (64 & 128 bits)
24- - ASIMD
25- - SVE with fixed sizes of 128, 256 and 512 bits registers.
15+ - Active Support (ie code is optimized and regularly tested)
2616
27- Partial/In-progress support with minimal checks:
28- - ** PowerPC**
29- - VMX
30- - VSX
17+ - ** Intel**
18+ - SSE2, SSSE3, SSE3, SSE4.1, SSE4.2
19+ - AVX, AVX2, FMA3
20+ - AVX512 in SKylake-AVX512 mode (F, CD, VL, DQ, BW)
21+ - ** ARM**
22+ - NEON A32 (64 & 128 bits)
23+ - NEON A64 (64 & 128 bits)
24+ - ASIMD
25+ - SVE with fixed sizes of 128, 256 and 512 bits registers.
3126
32- - We ** do not support** ARM SVE with dynamic size.
33- - We ** do not support** GPGPU, this is the job for another tool.
34- The following instructions are tentatively supported (ie code is incomplete and not tested in depth):
27+ - Partial/In-progress support with minimal checks:
28+ - ** PowerPC**
29+ - Altivec for Power7 to 9
30+ - VSX for Power9
3531
36- - ** PowerPC **
37- - Altivec for Power7 to 9
38- - VSX for Power9
32+ - No Support
33+ - We ** do not support ** ARM SVE with dynamic size.
34+ - We ** do not support ** GPGPU, this is the job for another tool.
3935
4036# Retrieving the source
4137
@@ -90,34 +86,9 @@ Once installed, you can use **EVE** headers directly from your
9086yay -S eve-git
9187```
9288
93- ## Conan
94-
95- [ ** Conan Center** ] ( https://conan.io/center/ ) hosts ** EVE** as the
96- [ ` jfalcou-eve ` package] ( https://conan.io/center/jfalcou-eve ) .
97-
98- To use ** EVE** , just add ` jfalcou-eve/v2021.10.0 ` in the ` [requires] ` section of
99- your ` conanfile.txt `
100-
101- ``` cmake
102- [requires]
103- jfalcou-eve/v2021.10.0
104-
105- [generators]
106- cmake
107- ```
108-
109- ## VCPKG
110-
111- ** EVE** can be fetched from [ VCPKG] ( https://vcpkgx.com/details.html?package=eve ) . Note that, as of
112- now, we still don't support MSVC.
113-
114- ``` bash
115- vcpkg install eve
116- ```
117-
11889# Installation from Source
11990
120- If you didn't fetched ** EVE** from a package manager, you'll need to install it via our CMake
91+ If you didn't fetched ** EVE** from a package manager, you'll need to install it via your CMake
12192system.
12293
12394## Setting up the Library
@@ -153,26 +124,13 @@ using the `doxygen` target:
153124cmake --build build --target doxygen
154125@endcode
155126
156- The resulting HTML files will be available in the ` docs ` folder.
157-
158- You can also build ** EVE** documentation in your build folder by using the ` doxygen-local ` target:
159- <br />
160-
161- @code
162- cmake --build build --target doxygen-local
163- @endcode
164-
165127The resulting HTML files will be available in the ` docs ` folder inside your build folder.
166128
167129# Using the library
168130
169131## Compilation
170132
171- Once installed, you can compile the following code to check if everything is alright.
172-
173- @godbolt {examples/quick-start/sanity-check.cpp}
174-
175- To do so, use your C++20 aware favorite compiler, for example g++.
133+ To compiel code using ** EVE** , use your C++20 aware favorite compiler, for example g++.
176134
177135@verbatim
178136$ g++ test.cpp -std=c++20 -march=native -O3 -DNDEBUG -I/path/to/install/include/eve-<version > -o output
@@ -194,21 +152,17 @@ You can also select a specific instructions set by using the proper option(s) fr
194152$ g++ test.cpp -std=c++20 -msse4.1 -O3 -DNDEBUG -I/path/to/install/include/eve-<version > -o output
195153@endverbatim
196154
155+
197156## Execution
198157
199158Once done, execute the binary. If you compiled for SSE4.1 for example, you'll end up with the
200159following results:
201160
202- @verbatim
203- $ ./output
204- x = (1, 2, 3, 4)
205- 2* x = (2, 4, 6, 8)
206- x^0.5 = (1, 1.41421, 1.73205, 2)
207- @endverbatim
161+ @godbolt {examples/quick-start/sanity-check.cpp}
208162
209163That's it, ** EVE** is properly installed and ready to use.
210164
211- ## Use in CMake
165+ ## Use with CMake
212166
213167Once installed, ** EVE** may be consumed through its config-file ** CMake** package. Simply find and
214168link against ** EVE's** ** CMake** target, as you would any other ** CMake** library, and then
@@ -220,30 +174,31 @@ find_package(eve CONFIG REQUIRED)
220174target_link_libraries(use-eve PRIVATE eve::eve)
221175```
222176
223- > If a custom installation prefix was used, ensure your ** EVE** installation is within ** CMake's**
224- search path with the use of the ** CMake** variables ** eve_ROOT** , ** eve_DIR** , or
225- ** CMAKE_PREFIX_PATH** .
177+ If a custom installation prefix was used, ensure your ** EVE** installation is within ** CMake's**
178+ search path with the use of the ** CMake** variables ** eve_ROOT** , ** eve_DIR** , or
179+ ** CMAKE_PREFIX_PATH** .
226180
227181# Advanced options
228182
229183If you want to dig a bit further, you can pass additional options to ` cmake ` to
230184activate additional features.
231185
232- | Option | Effect | Target |
233- | -------------------------| : --------------------------------------------------------| :-------------|
234- | ` EVE_BUILD_TEST ` | Enable unit tests for ** EVE** (` ON ` by default). | ` unit ` |
235- | ` EVE_BUILD_BENCHMARKS ` | Enable benchmark tests for ** EVE** (` OFF ` by default). | ` benchmarks ` |
236- | ` EVE_BUILD_RANDOM ` | Enable random tests for ** EVE** (` OFF ` by default). | ` random ` |
237- | ` EVE_BUILD_INTEGRATION ` | Enable integration tests for ** EVE ** ( ` OFF ` by default). | ` integration ` |
186+ | Option | Effect | Target |
187+ | --------------------------- | :---- --------------------------------------------------------| :-------------|
188+ | ` EVE_BUILD_TEST ` | Enable unit tests for ** EVE** (` ON ` by default). | ` unit ` |
189+ | ` EVE_BUILD_BENCHMARKS ` | Enable benchmark tests for ** EVE** (` OFF ` by default). | ` benchmarks ` |
190+ | ` EVE_BUILD_RANDOM ` | Enable random tests for ** EVE** (` OFF ` by default). | ` random ` |
191+ | ` EVE_BUILD_DOCUMENTATION ` | Enable the generation of the documentation ( ` ON ` by default).| ` doxygen ` |
238192
239193There is currently over 2000 tests, so compiling all unit tests may require a large machine or some
240194time. We recommend compiling in parallel using ` -j ` .
195+
241196All available ** CMake** targets may be listed via ` cmake --build build --target help ` , each of which
242197may be built individually.
243198
244199Some options are also available to control some other aspects
245200
246- | Option | Effect | Comments |
247- | --------| :-------------| : ---------------------|
248- | ` EVE_USE_BMI_ON_AVX2 ` | Enables using bmi instructions on avx2 | on Intel, it's beneficial, on AMD it's a disaster |
249- | ` EVE_USE_PCH ` | Enable using precompiled headers for ** EVE** tests. | This is ` ON ` by default |
201+ | Option | Effect | Comments |
202+ | ----------------------- | :---------------------------------------------------- | :------------------ ---------------------|
203+ | ` EVE_USE_BMI_ON_AVX2 ` | Enables using bmi instructions on AVX2 | Beneficial on Intel, disastrous on AMD |
204+ | ` EVE_USE_PCH ` | Enable using precompiled headers for ** EVE** tests. | This is ` ON ` by default |
0 commit comments