Skip to content

Commit

Permalink
Release v2022.03.0
Browse files Browse the repository at this point in the history
**This release is an API/ABI breaking changes release.**

A lot of improvements in QoL, QoI, and API have been made.
Some more breaking ABI changes are planned, including a passive move toward
an include file layout more amenable to future modularization.

See full changelog in the documentation
  • Loading branch information
jfalcou committed Mar 15, 2022
2 parents aeb0900 + 51f0131 commit cfcf03b
Show file tree
Hide file tree
Showing 7,309 changed files with 482,199 additions and 389,568 deletions.
The diff you're trying to view is too large. We only load the first 3000 changed files.
4 changes: 2 additions & 2 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,14 +52,14 @@ commands:
name: Run tests for << parameters.targets >>
command: |
cd build &&
for i in `../cmake/toolchain/filter.sh << parameters.targets >> values`; do ctest -R $i -j 8 ; done;
for i in `../cmake/toolchain/filter.sh << parameters.targets >> values`; do ctest --output-on-failure -R $i -j 8 ; done;
##==================================================================================================
## Jobs setup
##==================================================================================================
random_jobs: &random_jobs
docker:
- image: jfalcou/compilers:latest
- image: jfalcou/compilers:v4
parameters:
tool:
type: string
Expand Down
8 changes: 8 additions & 0 deletions .github/actions/cleanup/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Container image that runs your code
FROM jfalcou/compilers:v3

# Copies your code file from your action repository to the filesystem path `/` of the container
COPY entrypoint.sh /entrypoint.sh

# Code file to execute when the docker container starts up (`entrypoint.sh`)
ENTRYPOINT ["/entrypoint.sh"]
6 changes: 6 additions & 0 deletions .github/actions/cleanup/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# action.yml
name: 'Clean-up build folder'
description: 'Clean-up build folder'
runs:
using: 'docker'
image: 'Dockerfile'
6 changes: 6 additions & 0 deletions .github/actions/cleanup/entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/bin/sh -l

echo "::group::Cleaning external files"
rm -rf build/
echo "::endgroup::"
return 0;
2 changes: 1 addition & 1 deletion .github/actions/run_docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Container image that runs your code
FROM jfalcou/compilers:latest
FROM jfalcou/compilers:v3

# Copies your code file from your action repository to the filesystem path `/` of the container
COPY entrypoint.sh /entrypoint.sh
Expand Down
5 changes: 5 additions & 0 deletions .github/actions/run_docker/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,15 @@ inputs:
description: 'Completion Status'
required: false
default: '1'
cpu: # How much CPU do we use
description: 'CPU Count'
required: false
default: '8'
runs:
using: 'docker'
image: 'Dockerfile'
args:
- ${{ inputs.options }}
- ${{ inputs.cmake-options }}
- ${{ inputs.status }}
- ${{ inputs.cpu }}
20 changes: 10 additions & 10 deletions .github/actions/run_docker/entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ compile_targets()
{
for i in `../cmake/toolchain/filter.sh $1 keys`;
do
compile_target $i 3;
compile_target $i $2;
if [ "$?" -ne "0" ]
then
echo "::error $i can not be compiled!" ;
Expand All @@ -39,7 +39,7 @@ test_targets()
{
for i in `../cmake/toolchain/filter.sh $1 values`;
do
test_target $i 4;
test_target $i $2;
if [ "$?" -ne "0" ]
then
echo "::error $i tests failed!" ;
Expand All @@ -56,25 +56,25 @@ cd build
cmake .. -G Ninja -DEVE_OPTIONS="$1" $2
echo "::endgroup::"

compile_targets ../cmake/toolchain/arch.targets.json
compile_targets ../cmake/toolchain/arch.targets.json $4
if [ "$?" -eq "1" ]
then
exit 1;
fi

test_targets ../cmake/toolchain/arch.targets.json
test_targets ../cmake/toolchain/arch.targets.json $4
if [ "$?" -eq "1" ]
then
exit 1;
fi

compile_targets ../cmake/toolchain/api.targets.json
compile_targets ../cmake/toolchain/api.targets.json $4
if [ "$?" -eq "1" ]
then
exit 1;
fi

test_targets ../cmake/toolchain/api.targets.json
test_targets ../cmake/toolchain/api.targets.json $4
if [ "$?" -eq "1" ]
then
exit 1;
Expand All @@ -83,25 +83,25 @@ fi
if [ "$3" -eq "1" ]
then

compile_targets ../cmake/toolchain/doc.targets.json
compile_targets ../cmake/toolchain/doc.targets.json $4
if [ "$?" -eq "1" ]
then
exit 1;
fi

test_targets ../cmake/toolchain/doc.targets.json
test_targets ../cmake/toolchain/doc.targets.json $4
if [ "$?" -eq "1" ]
then
exit 1;
fi

compile_targets ../cmake/toolchain/real.targets.json
compile_targets ../cmake/toolchain/real.targets.json $4
if [ "$?" -eq "1" ]
then
exit 1;
fi

test_targets ../cmake/toolchain/real.targets.json
test_targets ../cmake/toolchain/real.targets.json $4
if [ "$?" -eq "1" ]
then
exit 1;
Expand Down
2 changes: 1 addition & 1 deletion .github/actions/run_tests/run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ test_targets()
return 0;
}

echo "::group::Running: 'cmake .. -G Ninja -DCMAKE_CXX_FLAGS="$1" $2'"
echo "::group::Running: 'cmake .. -G Ninja -DEVE_OPTIONS="$1" $2'"
mkdir build
cd build
cmake .. -G Ninja -DEVE_OPTIONS="$1" $2
Expand Down
61 changes: 36 additions & 25 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,63 +12,73 @@ concurrency:
cancel-in-progress: true

jobs:
arch-x86:
specials:
runs-on: self-hosted
strategy:
fail-fast: false
matrix:
cfg:
- { comp: clang, arch: x86 , opts: -msse2 , status: 1 }
- { comp: clang, arch: x86 , opts: -mssse3 , status: 1 }
- { comp: clang, arch: x86 , opts: -msse4.2 , status: 1 }
- { comp: clang, arch: x86 , opts: -mavx , status: 1 }
- { comp: clang, arch: x86 , opts: -mavx2 , status: 1 }
- { comp: clang, arch: x86 , opts: -DEVE_NO_SIMD , status: 1 }
- { comp: clang, arch: x86_sde, opts: -march=skylake-avx512 , status: 1 }
- { comp: gcc , arch: x86 , opts: -msse2 , status: 1 }
- { comp: gcc , arch: x86 , opts: -mssse3 , status: 1 }
- { comp: gcc , arch: x86 , opts: -msse4.2 , status: 1 }
- { comp: gcc , arch: x86 , opts: -mavx , status: 1 }
- { comp: gcc , arch: x86 , opts: -mavx2 , status: 1 }
- { comp: gcc , arch: x86 , opts: -DEVE_NO_SIMD , status: 1 }
- { comp: gcc , arch: x86_sde, opts: -march=skylake-avx512 , status: 1 }
- { comp: clang_libcpp, arch: x86 , opts: -msse2 , status: 1 }
- { comp: gcc , arch: aarch64 , opts: -Wno-psabi, status: 1 }
- { comp: gcc , arch: arm , opts: -Wno-psabi, status: 1 }
- { comp: gcc , arch: ppc64 , opts: -Wno-psabi, status: 1 }

steps:
- name: Fetch current branch
uses: actions/checkout@v2
- name: Testing EVE with ${{ matrix.cfg.comp }} on ${{ matrix.cfg.arch }} with ${{ matrix.cfg.opts }}
uses: ./.github/actions/run_tests
uses: ./.github/actions/run_docker
with:
options: '${{ matrix.cfg.opts }}'
cmake-options: '-DCMAKE_TOOLCHAIN_FILE=../cmake/toolchain/${{ matrix.cfg.comp }}.${{ matrix.cfg.arch }}.cmake'
status: '${{ matrix.cfg.status }}'
status: '${{ matrix.cfg.status }}'
cpu: 8
- name: Always execute
if: ${{ always() }}
uses: ./.github/actions/cleanup

arch-arm:
runs-on: ubuntu-latest
mainline:
runs-on: self-hosted
strategy:
fail-fast: false
matrix:
cfg:
- { comp: gcc , arch: aarch64, opts: -Wno-psabi , status: 1 }
- { comp: gcc , arch: arm , opts: -Wno-psabi , status: 0 }
- { comp: clang , arch: x86 , opts: -msse2 , status: 1 }
- { comp: gcc , arch: x86 , opts: -msse2 , status: 1 }
- { comp: clang , arch: x86 , opts: -mssse3 , status: 1 }
- { comp: gcc , arch: x86 , opts: -mssse3 , status: 1 }
- { comp: clang , arch: x86 , opts: -msse4.2 , status: 1 }
- { comp: gcc , arch: x86 , opts: -msse4.2 , status: 1 }
- { comp: clang , arch: x86 , opts: -mavx , status: 1 }
- { comp: gcc , arch: x86 , opts: -mavx , status: 1 }
- { comp: clang , arch: x86 , opts: -mavx2 , status: 1 }
- { comp: gcc , arch: x86 , opts: -mavx2 , status: 1 }
- { comp: clang , arch: x86_sde, opts: -march=skylake-avx512 , status: 1 }
- { comp: gcc , arch: x86_sde, opts: -march=skylake-avx512 , status: 1 }

steps:
- name: Fetch current branch
uses: actions/checkout@v2
- name: Testing EVE with ${{ matrix.cfg.comp }} on ${{ matrix.cfg.arch }} with ${{ matrix.cfg.opts }}
uses: ./.github/actions/run_docker
uses: ./.github/actions/run_tests
with:
options: '${{ matrix.cfg.opts }}'
options: '"${{ matrix.cfg.opts }}"'
cmake-options: '-DCMAKE_TOOLCHAIN_FILE=../cmake/toolchain/${{ matrix.cfg.comp }}.${{ matrix.cfg.arch }}.cmake'
status: '${{ matrix.cfg.status }}'
- name: Always execute
if: ${{ always() }}
uses: ./.github/actions/cleanup

arch-ppc:
supplemental:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
cfg:
- { comp: gcc , arch: ppc64, opts: -Wno-psabi, status: 1 }
- { comp: clang , arch: x86 , opts: -DEVE_NO_SIMD , status: 1 }
- { comp: gcc , arch: x86.ci , opts: -DEVE_NO_SIMD , status: 1 }
- { comp: clang , arch: x86 , opts: "-mavx2 -mbmi2 -DEVE_USE_BMI_ON_AVX2" , status: 1 }
- { comp: gcc , arch: x86.ci , opts: "-mavx2 -mbmi2 -DEVE_USE_BMI_ON_AVX2" , status: 1 }

steps:
- name: Fetch current branch
Expand All @@ -79,3 +89,4 @@ jobs:
options: '${{ matrix.cfg.opts }}'
cmake-options: '-DCMAKE_TOOLCHAIN_FILE=../cmake/toolchain/${{ matrix.cfg.comp }}.${{ matrix.cfg.arch }}.cmake'
status: '${{ matrix.cfg.status }}'
cpu: 3
14 changes: 7 additions & 7 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,14 @@ endif()
## =================================================================================================
## Test and Benchmarks target
## =================================================================================================
include(CTest)
include(target/add_parent_target)
include(target/targets)
include(config/compiler)
include(config/types)
include(config/pch)

if( EVE_BUILD_TEST )
include(CTest)
include(target/add_parent_target)
include(config/compiler)
include(config/types)
include(config/pch)

include(target/targets)
add_subdirectory(${PROJECT_SOURCE_DIR}/test/)
add_subdirectory(${PROJECT_SOURCE_DIR}/examples/)
endif()
Expand Down
32 changes: 21 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
# EVE - the Expressive Vector Engine

[![E.V.E CI](https://github.com/jfalcou/eve/actions/workflows/main.yml/badge.svg)](https://github.com/jfalcou/eve/actions/workflows/main.yml)
[![Licence](https://img.shields.io/github/license/jfalcou/eve?style=plastic)](https://img.shields.io/github/license/jfalcou/eve?style=plastic)
[![Discord](https://img.shields.io/discord/692734675726237696?style=plastic)](https://discord.com/channels/692734675726237696/692735259204124692)
[![Licence](https://img.shields.io/github/license/jfalcou/eve?style=plastic)](https://img.shields.io/github/license/jfalcou/eve?style=plastic)
[![Discord](https://img.shields.io/discord/692734675726237696?style=plastic)](https://discord.gg/8A4Q4HkhcW)

## Purpose

Expand All @@ -21,34 +21,44 @@ needs to change.
## Getting Started

- [Installing and using the library](https://jfalcou.github.io/eve/html/install.html)
- [Fetching EVE using your favorite Package Manager](https://jfalcou.github.io/eve/html/packages.html)
- [Your first SIMD code using EVE](https://jfalcou.github.io/eve/html/simd-101.html)
- [References Documentation](https://jfalcou.github.io/eve/html/modules.html)

## Current status - Advanced BETA
## Video materials

EVE is considered in **advanced beta**: it's usable, has an almost complete feature sets for a sensible amount of instructions sets but it's possible some values or performances issues may still remain. Don't hesitate to report any funky code-gen or bad optimizations so we can deliver the best performance around.
### SIMD in C++20: EVE of a new Era - CppCon 2021

### Current roaster of supported Instructions Sets
[![SIMD in C++20: EVE of a new Era - CppCon 2021](http://img.youtube.com/vi/WZGNCPBMInI/0.jpg)](http://www.youtube.com/watch?v=WZGNCPBMInI "Video Title")

### SIMD Algorithms Design

[![Playlist by Denis Yaroshevskiy](http://img.youtube.com/vi/U1e_k8xmwR0/0.jpg)](https://www.youtube.com/playlist?list=PLYCMvilhmuPEM8DUvY6Wg_jaSFHpmlSBD)

## Current status - Operationnal

EVE is considered **operationnal**: it's usable, has a large feature sets for a sensible amount of instructions sets but it's possible some values or performances issues may still remain. Don't hesitate to report any funky code-gen or bad optimizations so we can deliver the best performance around.

### Current roster of supported Instructions Sets

Full support with tests:
- **Intel**
- SSE2, SSSE3, SSE3, SSE4.1, SSE4.2
- AVX, AVX2, FMA4
- AVX, AVX2, FMA3
- AVX512 Skymake style (F,CD,DQ,BW,VL)
- **ARM**
- NEON (64 & 128 bits)
- AARCH64

Partial/In-progress support with minimal checks:
- **AMD**
- XOP, FMA3
- **PowerPC**
- VMX
- VSX

- We **do not support** ARM SVE as the execution model makes no sense and the current compiler support is not adequate for us.
- We **do not support** GPGPU, this is the job for another tool.

### Current roaster of supported compiler
### Current roster of supported compiler

EVE requires a C++ 20 compliant compiler. The main features from C++17/20 we require are:
- Concepts and requires
Expand All @@ -63,7 +73,7 @@ Here is the current minimal compiler version supported:
| Compiler | Version |
| -------------- | ------------- |
| g++ | 11 or above |
| clang++ | 12 or above |
| clang++ | 13 or above |
| Visual Studio | *TBD* |

Visual Studio support is currently being added. Help on the front of setting up appveyor properly is also welcome.
Expand All @@ -76,7 +86,7 @@ Visual Studio support is currently being added. Help on the front of setting up

- **Why this instead of std::simd or any other libraries?** EVE is a playground for testing proper
design and implementation decisions for such libraries. Vc and its standard version are fine pieces
of work but we aim at pushing the envelop in term of API and implementation without any standard
of work but we aim at pushing the envelope in term of API and implementation without any standard
restriction. We will try, however, to keep up with standard naming as much as possible.

- **Is this Boost.SIMD v42.69?** Yes and no. This reimplementation is based on slightly different
Expand Down
17 changes: 17 additions & 0 deletions appveyor.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
version: 1.0.{build}
os: Previous Visual Studio 2022

environment:
matrix:
- ARCH: x86

build_script:
- mkdir build
- cd build
- cmake -G "Visual Studio 17 2022" -A x64 ..
- cmake --build . --target unit.arch.exe --verbose --config Release
- cmake --build . --target unit.meta.exe --verbose --config Release

test_script:
- ctest -C Release -VV -R ^unit.arch.*.exe
- ctest -C Release -VV -R ^unit.meta.*.exe
3 changes: 3 additions & 0 deletions benchmarks/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
##==================================================================================================
include(benchmark)

add_subdirectory(module/bessel)
add_subdirectory(module/polynomial)

add_subdirectory(module/algorithm)
add_subdirectory(module/core)
add_subdirectory(module/math)
Expand Down
12 changes: 12 additions & 0 deletions benchmarks/bench_pch.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
//==================================================================================================
/**
EVE - Expressive Vector Engine
Copyright : EVE Contributors & Maintainers
SPDX-License-Identifier: MIT
**/
//==================================================================================================
#include <eve/wide.hpp>
#include "experiment.hpp"
#include "generators.hpp"

int main() {}
Loading

0 comments on commit cfcf03b

Please sign in to comment.