Commit a6f0ec87 authored by Marco Clemencic's avatar Marco Clemencic

Merge branch 'update-versions' into 'master'

Update versions for v33r2

See merge request !1083
parents d8ce5d79 2aa297bc
Pipeline #1731159 passed with stages
in 43 minutes and 28 seconds
......@@ -87,7 +87,7 @@ build:gcc9:opt:python3:
variables:
BINARY_TAG: x86_64-centos7-gcc9-opt
BUILDDIR: build-opt-python3
HEPTOOLS_VERSION: 97python3
HEPTOOLS_VERSION: 97apython3
script:
- ci-utils/build
artifacts:
......@@ -158,6 +158,7 @@ test:gcc8:opt:
- ${TESTS_REPORT}
when: always
expire_in: 1 week
retry: 2
test:gcc9:opt:
stage: test
......@@ -175,6 +176,7 @@ test:gcc9:opt:
- ${TESTS_REPORT}
when: always
expire_in: 1 week
retry: 2
test:gcc9:dbg:
stage: test
......@@ -192,6 +194,7 @@ test:gcc9:dbg:
- ${TESTS_REPORT}
when: always
expire_in: 1 week
retry: 2
test:gcc9:opt:python3:
stage: test
......@@ -209,6 +212,7 @@ test:gcc9:opt:python3:
- ${TESTS_REPORT}
when: always
expire_in: 1 week
retry: 2
test_public_headers_build:
stage: test
......
......@@ -13,6 +13,51 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
### Fixed
## [v33r2][] - 2020-06-19
This is a bugfix release with just a couple of minor backward compatible improvements.
We also updated the LCG baseline version to [LCG 97a](http://lcginfo.cern.ch/release/97a/) (ROOT 6.20/06).
This is the last release with the legacy CMake configuration. From the next release (v34r0)
we will use a modern CMake configuration (see gaudi/Gaudi!922 and gaudi/Gaudi!986 for details).
### Added
- Improve event context extension management (gaudi/Gaudi!1080)
- Introducing Set-semantics (gaudi/Gaudi!1066)
- Make gitlab use cpp syntax highlighting for icpp files (gaudi/Gaudi!1057)
### Fixed
- Fixes for ROOT master (gaudi/Gaudi!1071)
- Use fmtlib instead of `boost::format` (where possible) (gaudi/Gaudi!1046, gaudi/Gaudi#112)
- Conditions alg test, with stall debug info (gaudi/Gaudi!1092)
- Make sure the TES is cleaned by `EventLoopMgr` before finalize (gaudi/Gaudi!1082, LHCBPS-1850)
- Fix race condition between tests (gaudi/Gaudi!1074)
- Fix propagation of `StopIteration` exception (gaudi/Gaudi!1093, gaudi/Gaudi#129)
- Update HiveDataBroker to use C++20 ranges if available. (gaudi/Gaudi!1089)
- Fixes for C++20 (gaudi/Gaudi!1085)
- Fix thread-safety problem in GaudiHandle (gaudi/Gaudi!1084)
- Misc. sanitiser improvements (gaudi/Gaudi!1081)
- Make `GaudiHandleArray.__str__` consistent with `GaudiHandle.__str__` (gaudi/Gaudi!1070)
- Fix trivial typo in message (gaudi/Gaudi!1087)
- `GaudiConfig2`: fix unpickling of derived Configurables (gaudi/Gaudi!1076, gaudi/Gaudi#124)
- Remove data flow dumps or make them configurable (gaudi/Gaudi!1075)
- Change `StatusCode::orThrow` so that the return value can be ignored (gaudi/Gaudi!1073, gaudi/Gaudi#118)
- Fix bugs in `ThreadPoolSvc` (gaudi/Gaudi!1068)
- Sequence semantics update (gaudi/Gaudi!1069)
- Remove now unused `ATLAS_GAUDI_V21` and `HAVE_GAUDI_PLUGINSVC` definitions (gaudi/Gaudi!1062)
- Few fixes to `GaudiConfig2` (gaudi/Gaudi!1061)
- Fix compatibility with C++ GSL 3 (gaudi/Gaudi!1063, gaudi/Gaudi#121)
- Consolidate and optimize scheduling of blocking tasks (gaudi/Gaudi!1051)
- Do not run public headers build test on generated headers (gaudi/Gaudi!974)
- Add array `operator<<` into `SerializeSTL.h` (gaudi/Gaudi!1049)
- Dereference instead of `operator*` in `get_from_handle` to enable `Gaudi::Ranges` in `MergingTransformer`s (gaudi/Gaudi!1047)
- Fixes for `GetHostBinaryTag` (gaudi/Gaudi!1058)
- Remove unused capture of `this` in `MultiTransformerFilter` (gaudi/Gaudi!1059)
- Fix deprecated copy constructor warning in `StreamBuffer::ContainedLink` (gaudi/Gaudi!1060)
- `AlgExecStateSvc`: require minimum state size to be 1 (gaudi/Gaudi!1055)
- `IncidentSvc`: improve error reporting (gaudi/Gaudi!1054)
- Remove mention of deprecated `tbb::recursive_mutex` (gaudi/Gaudi!1053)
## [v33r1][] - 2020-03-23
This release contains multiple fixes and some ABI changes, in particular:
- `StatusCode` values not checked now produce a compile time warning.
......@@ -482,7 +527,8 @@ Details about old versions of the project can be found in the
[GaudiRelease/doc](GaudiRelease/doc).
[Unreleased]: https://gitlab.cern.ch/gaudi/Gaudi/compare/v33r1...master
[Unreleased]: https://gitlab.cern.ch/gaudi/Gaudi/compare/v33r2...master
[v33r2]: https://gitlab.cern.ch/gaudi/Gaudi/compare/v33r1...v33r2
[v33r1]: https://gitlab.cern.ch/gaudi/Gaudi/compare/v33r0...v33r1
[v33r0]: https://gitlab.cern.ch/gaudi/Gaudi/compare/v32r2...v33r0
[v32r2]: https://gitlab.cern.ch/gaudi/Gaudi/compare/v32r1...v32r2
......
......@@ -37,7 +37,7 @@ endif()
include(${CMAKE_SOURCE_DIR}/cmake/externals.cmake)
# Declare project name and version
gaudi_project(Gaudi v33r1)
gaudi_project(Gaudi v33r2)
# Special hack to make sure downstream projects see fmt::fmt
# This is going to be much cleaner with gaudi/Gaudi!986 (CMake modernization)
......
......@@ -33,12 +33,14 @@ if(VectorClass_INCLUDE_DIR AND NOT VectorClass_VERSION)
set(VectorClass_VERSION 0.0)
file(STRINGS ${VectorClass_INCLUDE_DIR}/instrset.h _vectorclass_guard REGEX "define +INSTRSET_H +[0-9]+")
list(GET _vectorclass_guard 0 _vectorclass_guard)
if(_vectorclass_guard MATCHES "INSTRSET_H +([0-9]+)")
if(_vectorclass_guard MATCHES "INSTRSET_H +([0-9][0-9][0-9][0-9][0-9])")
string(REGEX REPLACE "([0-9]+)([0-9][0-9])([0-9][0-9])" "\\1.\\2.\\3" VectorClass_VERSION "${CMAKE_MATCH_1}")
elseif(_vectorclass_guard MATCHES "INSTRSET_H +([0-9][0-9][0-9])")
string(REGEX REPLACE "([0-9]+)([0-9][0-9])" "\\1.\\2" VectorClass_VERSION "${CMAKE_MATCH_1}")
endif()
set(VectorClass_VERSION "${VectorClass_VERSION}" CACHE INTERNAL "")
endif()
if(NOT VectorClass_INCLUDE_DIR OR VectorClass_VERSION VERSION_LESS 1.25)
if(NOT VectorClass_INCLUDE_DIR OR VectorClass_VERSION VERSION_LESS 2.01.02)
if(VectorClass_INCLUDE_DIR)
message(STATUS "Found VectorClass instrset_detect ${VectorClass_VERSION} at ${VectorClass_INCLUDE_DIR}")
endif()
......
......@@ -28,7 +28,7 @@ int main( int argc, char* argv[] ) {
const std::vector<std::string> sets{// "80386",
"sse", "sse2",
"sse3", // Note: This is reported by Linux as 'pni'
"ssse3", "sse4_1", "sse4_2", "avx", "avx2", "avx512f", "avx512vl", "avx512bw"};
"ssse3", "sse4_1", "sse4_2", "avx", "avx2", "avx512f", "avx512vl"};
if ( argc == 1 ) {
const std::size_t level = System::instructionsetLevel() - 1;
......
This diff is collapsed.
/************************** instrset_detect.cpp ****************************
* Author: Agner Fog
* Date created: 2012-05-30
* Last modified: 2017-05-02
* Version: 1.28
* Project: vector classes
* Description:
* Functions for checking which instruction sets are supported.
*
* (c) Copyright 2012-2017 GNU General Public License http://www.gnu.org/licenses
\*****************************************************************************/
* Author: Agner Fog
* Date created: 2012-05-30
* Last modified: 2019-08-01
* Version: 2.00.00
* Project: vector class library
* Description:
* Functions for checking which instruction sets are supported.
*
* (c) Copyright 2012-2019 Agner Fog.
* Apache License version 2.0 or later.
******************************************************************************/
#include "instrset.h"
......@@ -16,56 +17,21 @@
namespace VCL_NAMESPACE {
#endif
// Define interface to cpuid instruction.
// input: eax = functionnumber, ecx = 0
// output: eax = output[0], ebx = output[1], ecx = output[2], edx = output[3]
static inline void cpuid( int output[4], int functionnumber ) {
#if defined( __GNUC__ ) || defined( __clang__ ) // use inline assembly, Gnu/AT&T syntax
int a, b, c, d;
__asm( "cpuid" : "=a"( a ), "=b"( b ), "=c"( c ), "=d"( d ) : "a"( functionnumber ), "c"( 0 ) : );
output[0] = a;
output[1] = b;
output[2] = c;
output[3] = d;
#elif defined( _MSC_VER ) || defined( __INTEL_COMPILER ) // Microsoft or Intel compiler, intrin.h included
__cpuidex( output, functionnumber, 0 ); // intrinsic function for CPUID
#else // unknown platform. try inline assembly with masm/intel syntax
__asm {
mov eax, functionnumber
xor ecx, ecx
cpuid;
mov esi, output
mov [esi], eax
mov [esi+4], ebx
mov [esi+8], ecx
mov [esi+12], edx
}
#endif
}
// Define interface to xgetbv instruction
static inline int64_t xgetbv( int ctr ) {
static inline uint64_t xgetbv( int ctr ) {
#if ( defined( _MSC_FULL_VER ) && _MSC_FULL_VER >= 160040000 ) || \
( defined( __INTEL_COMPILER ) && __INTEL_COMPILER >= 1200 ) // Microsoft or Intel compiler supporting _xgetbv
// intrinsic
( defined( __INTEL_COMPILER ) && __INTEL_COMPILER >= 1200 )
// Microsoft or Intel compiler supporting _xgetbv intrinsic
return _xgetbv( ctr ); // intrinsic function for XGETBV
return uint64_t( _xgetbv( ctr ) ); // intrinsic function for XGETBV
#elif defined( __GNUC__ ) // use inline assembly, Gnu/AT&T syntax
#elif defined( __GNUC__ ) || defined( __clang__ ) // use inline assembly, Gnu/AT&T syntax
uint32_t a, d;
__asm( "xgetbv" : "=a"( a ), "=d"( d ) : "c"( ctr ) : );
return a | ( uint64_t( d ) << 32 );
#else // #elif defined (_WIN32) // other compiler. try inline assembly with masm/intel/MS
// syntax
#else // #elif defined (_WIN32) // other compiler. try inline assembly with masm/intel/MS syntax
uint32_t a, d;
__asm {
mov ecx, ctr
......@@ -83,7 +49,7 @@ namespace VCL_NAMESPACE {
/* find supported instruction set
return value:
0 = 80386 instruction set
1 or above = SSE (XMM) supported by CPU (not testing for O.S. support)
1 or above = SSE (XMM) supported by CPU (not testing for OS support)
2 or above = SSE2
3 or above = SSE3
4 or above = Supplementary SSE3 (SSSE3)
......@@ -92,8 +58,7 @@ namespace VCL_NAMESPACE {
7 or above = AVX supported by CPU and operating system
8 or above = AVX2
9 or above = AVX512F
10 or above = AVX512VL
11 or above = AVX512BW, AVX512DQ
10 or above = AVX512VL, AVX512BW, AVX512DQ
*/
int instrset_detect( void ) {
......@@ -134,11 +99,10 @@ namespace VCL_NAMESPACE {
cpuid( abcd, 0xD ); // call cpuid leaf 0xD for feature flags
if ( ( abcd[0] & 0x60 ) != 0x60 ) return iset; // no AVX512
iset = 9;
cpuid( abcd, 7 ); // call cpuid leaf 7 for feature flags
if ( ( abcd[1] & ( 1 << 31 ) ) == 0 ) return iset; // no AVX512VL
iset = 10;
cpuid( abcd, 7 ); // call cpuid leaf 7 for feature flags
if ( ( abcd[1] & ( 1 << 31 ) ) == 0 ) return iset; // no AVX512VL
if ( ( abcd[1] & 0x40020000 ) != 0x40020000 ) return iset; // no AVX512BW, AVX512DQ
iset = 11;
iset = 10;
return iset;
}
......@@ -182,6 +146,22 @@ namespace VCL_NAMESPACE {
return ( ( abcd[1] & ( 1 << 27 ) ) != 0 ); // ebx bit 27 indicates AVX512ER
}
// detect if CPU supports the AVX512VBMI instruction set
bool hasAVX512VBMI( void ) {
if ( instrset_detect() < 10 ) return false; // must have AVX512BW
int abcd[4]; // cpuid results
cpuid( abcd, 7 ); // call cpuid function 7
return ( ( abcd[2] & ( 1 << 1 ) ) != 0 ); // ecx bit 1 indicates AVX512VBMI
}
// detect if CPU supports the AVX512VBMI2 instruction set
bool hasAVX512VBMI2( void ) {
if ( instrset_detect() < 10 ) return false; // must have AVX512BW
int abcd[4]; // cpuid results
cpuid( abcd, 7 ); // call cpuid function 7
return ( ( abcd[2] & ( 1 << 6 ) ) != 0 ); // ecx bit 6 indicates AVX512VBMI2
}
#ifdef VCL_NAMESPACE
}
#endif
......@@ -23,7 +23,7 @@
# initial required environment
# - get Python, nosetests and xenv from LHCb installation
source /cvmfs/lhcb.cern.ch/lib/var/lib/LbEnv/prod/${LCG_hostos}/bin/activate
source /cvmfs/lhcb.cern.ch/lib/var/lib/LbEnv/stable/${LCG_hostos}/bin/activate
# - add CMake and Ninja-build
export PATH=${LCG_contrib}/CMake/latest/Linux-x86_64/bin:${LCG_contrib}/ninja/1.7.2.gcc0ea.kitware.dyndep-1/x86_64-slc6:${PATH}
# - use LHCb compiler wrappers
......
......@@ -9,7 +9,7 @@
# or submit itself to any jurisdiction. #
#####################################################################################
# Special wrapper to load the declared version of the heptools toolchain.
set(heptools_version 97)
set(heptools_version 97a)
cmake_minimum_required(VERSION 3.6)
if(NOT "$ENV{HEPTOOLS_VERSION}" STREQUAL "")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment