Commit 8c93a0c9 authored by Bramas, Berenger (bbramas)'s avatar Bramas, Berenger (bbramas)

Merge branch 'update-ci-sde-archs' into 'master'

Update CI -- test with lots of archs using sde

Tests lots of archs for the CI.

This includes AVX (without AVX2) hardware for example.

See merge request !1
parents 0eafe444 6acf6e4d
...@@ -8,16 +8,6 @@ inastemp: ...@@ -8,16 +8,6 @@ inastemp:
tags: tags:
- default - default
inastempsde:
script:
- mkdir build
- cd build
- VERBOSE=1 cmake -DINASTEMP_ISDE_CPU=ON -DINASTEMP_ISDE_UTESTS=ON -DINASTEMP_USE_AVX512KNL=ON ..
- make
- make test
tags:
- sde
inastempclang: inastempclang:
script: script:
- mkdir build - mkdir build
...@@ -48,3 +38,83 @@ inastempgcc49: ...@@ -48,3 +38,83 @@ inastempgcc49:
- make test - make test
tags: tags:
- gcc49 - gcc49
inastempsdep4p:
script:
- mkdir build
- cd build
- VERBOSE=1 cmake -DINASTEMP_ISDE_CPU=ON -DINASTEMP_ISDE_UTESTS=ON -DINASTEMP_ISDE_CPU_ARGS="-p4p" -DINASTEMP_ISDE_UTESTS_ARGS="-p4p" -DARCH_NATIVE_FLAG="" ..
- make
- make test
tags:
- sde
inastempsdemrm:
script:
- mkdir build
- cd build
- VERBOSE=1 cmake -DINASTEMP_ISDE_CPU=ON -DINASTEMP_ISDE_UTESTS=ON -DINASTEMP_ISDE_CPU_ARGS="-mrm" -DINASTEMP_ISDE_UTESTS_ARGS="-mrm" -DARCH_NATIVE_FLAG="" ..
- make
- make test
tags:
- sde
inastempsdepnr:
script:
- mkdir build
- cd build
- VERBOSE=1 cmake -DINASTEMP_ISDE_CPU=ON -DINASTEMP_ISDE_UTESTS=ON -DINASTEMP_ISDE_CPU_ARGS="-pnr" -DINASTEMP_ISDE_UTESTS_ARGS="-pnr" -DARCH_NATIVE_FLAG="" ..
- make
- make test
tags:
- sde
inastempsdenhm:
script:
- mkdir build
- cd build
- VERBOSE=1 cmake -DINASTEMP_ISDE_CPU=ON -DINASTEMP_ISDE_UTESTS=ON -DINASTEMP_ISDE_CPU_ARGS="-nhm" -DINASTEMP_ISDE_UTESTS_ARGS="-nhm" -DARCH_NATIVE_FLAG="" ..
- make
- make test
tags:
- sde
inastempsdewsm:
script:
- mkdir build
- cd build
- VERBOSE=1 cmake -DINASTEMP_ISDE_CPU=ON -DINASTEMP_ISDE_UTESTS=ON -DINASTEMP_ISDE_CPU_ARGS="-wsm" -DINASTEMP_ISDE_UTESTS_ARGS="-wsm" -DARCH_NATIVE_FLAG="" ..
- make
- make test
tags:
- sde
inastempsdesnb:
script:
- mkdir build
- cd build
- VERBOSE=1 cmake -DINASTEMP_ISDE_CPU=ON -DINASTEMP_ISDE_UTESTS=ON -DINASTEMP_ISDE_CPU_ARGS="-snb" -DINASTEMP_ISDE_UTESTS_ARGS="-snb" -DARCH_NATIVE_FLAG="" ..
- make
- make test
tags:
- sde
inastempsdewsm:
script:
- mkdir build
- cd build
- VERBOSE=1 cmake -DINASTEMP_ISDE_CPU=ON -DINASTEMP_ISDE_UTESTS=ON -DINASTEMP_ISDE_CPU_ARGS="-ivb" -DINASTEMP_ISDE_UTESTS_ARGS="-ivb" -DARCH_NATIVE_FLAG="" ..
- make
- make test
tags:
- sde
inastempsdehsw:
script:
- mkdir build
- cd build
- VERBOSE=1 cmake -DINASTEMP_ISDE_CPU=ON -DINASTEMP_ISDE_UTESTS=ON -DINASTEMP_ISDE_CPU_ARGS="-hsw" -DINASTEMP_ISDE_UTESTS_ARGS="-hsw" -DARCH_NATIVE_FLAG="" ..
- make
- make test
tags:
- sde
...@@ -98,9 +98,10 @@ foreach(TYPE ${ALL_TYPES}) ...@@ -98,9 +98,10 @@ foreach(TYPE ${ALL_TYPES})
set(${TYPE}_SUPPORTED_BY_CPU TRUE) set(${TYPE}_SUPPORTED_BY_CPU TRUE)
foreach(RULE ${${TYPE}_CPU_RULES}) foreach(RULE ${${TYPE}_CPU_RULES})
if(NOT DEFINED CPU_INFO_${RULE}) if(NOT DEFINED CPU_INFO_${RULE})
MESSAGE(WARNING "Main -- The variable CPU_INFO_${RULE} is not defined but used as rule for ${TYPE}") MESSAGE(WARNING "Main -- The variable CPU_INFO_${RULE} cannot be read from the current CPU which might be too old. It turns off ${TYPE}.")
endif() set(${TYPE}_SUPPORTED_BY_CPU FALSE)
if(NOT ${CPU_INFO_${RULE}}) break()
elseif(NOT ${CPU_INFO_${RULE}})
set(${TYPE}_SUPPORTED_BY_CPU FALSE) set(${TYPE}_SUPPORTED_BY_CPU FALSE)
break() break()
endif() endif()
......
...@@ -63,7 +63,7 @@ enum RegistersNum { ...@@ -63,7 +63,7 @@ enum RegistersNum {
// GCC Inline Assembly but with the same prototype as windows // GCC Inline Assembly but with the same prototype as windows
void cpuid(unsigned int CPUInfo[4],int InfoTypeEax, int InfoTypeEcx){ void cpuid(unsigned int CPUInfo[4],unsigned int InfoTypeEax, unsigned int InfoTypeEcx){
__asm__ __volatile__ ( __asm__ __volatile__ (
"cpuid": // Execute this instruction "cpuid": // Execute this instruction
"=a" (CPUInfo[EaxRegister]), // Store eax in 0 "=a" (CPUInfo[EaxRegister]), // Store eax in 0
...@@ -128,15 +128,15 @@ std::list<CpuProperty> getProperties(){ ...@@ -128,15 +128,15 @@ std::list<CpuProperty> getProperties(){
// Basic CPUID Information // Basic CPUID Information
cpuid(info, 0, 0); cpuid(info, 0, 0);
// The largest CPUID standard-function input value supported by the processor implementation. // The largest CPUID standard-function input value supported by the processor implementation.
const int limitStandardFunction = info[EaxRegister]; const unsigned int limitStandardFunction = info[EaxRegister];
// Extended Function CPUID Information // Extended Function CPUID Information
cpuid(info, 0x80000000U, 0); cpuid(info, 0x80000000U, 0);
// The largest CPUID extended-function input value supported by the processor implementation // The largest CPUID extended-function input value supported by the processor implementation
unsigned int limitExtendedFunction = info[EaxRegister]; const unsigned int limitExtendedFunction = info[EaxRegister];
// Detect Instruction Set // Detect Instruction Set
if (limitStandardFunction >= 1){ if (limitStandardFunction >= 0x1U){
cpuid(info,0x00000001U, 0); // Basic CPUID Information cpuid(info,0x00000001U, 0); // Basic CPUID Information
/* /*
0x00000001 - EDX : 0x00000001 - EDX :
...@@ -244,7 +244,7 @@ std::list<CpuProperty> getProperties(){ ...@@ -244,7 +244,7 @@ std::list<CpuProperty> getProperties(){
properties.push_back(CpuProperty("FMA3", CPUInfoGetECX(info, 12))); properties.push_back(CpuProperty("FMA3", CPUInfoGetECX(info, 12)));
} }
if (limitExtendedFunction >= 0x80000001U){ if (limitExtendedFunction >= 0x80000004U){
cpuid(info,0x80000001U, 0); // Extended Function CPUID Information cpuid(info,0x80000001U, 0); // Extended Function CPUID Information
/* /*
0x80000001 - EDX : 0x80000001 - EDX :
...@@ -309,7 +309,7 @@ std::list<CpuProperty> getProperties(){ ...@@ -309,7 +309,7 @@ std::list<CpuProperty> getProperties(){
properties.push_back(CpuProperty("XOP", CPUInfoGetECX(info, 11))); properties.push_back(CpuProperty("XOP", CPUInfoGetECX(info, 11)));
} }
if (limitExtendedFunction >= 0x00000007U){ if (/*limitExtendedFunction >= 0x80000008U*/ limitStandardFunction > 0x6U){
cpuid(info,0x00000007U, 0); // Extended Function CPUID Information cpuid(info,0x00000007U, 0); // Extended Function CPUID Information
/* /*
0x00000007 - EBX 0x00000007 - EBX
......
...@@ -274,7 +274,7 @@ void HandVectorizedFunctionSSE3(const size_t nbParticles, const double* __restri ...@@ -274,7 +274,7 @@ void HandVectorizedFunctionSSE3(const size_t nbParticles, const double* __restri
const __m128d distance = _mm_sqrt_pd(dx*dx + dy*dy + dz*dz); const __m128d distance = _mm_sqrt_pd(dx*dx + dy*dy + dz*dz);
const __m128d inv_distance = VecOne/distance; const __m128d inv_distance = VecOne/distance;
const __m128d testRes = _mm_cmp_pd(distance, VecCutDistance, _CMP_LT_OQ); const __m128d testRes = _mm_cmplt_pd(distance, VecCutDistance);
const __m128d sourcesPhysicalValue = _mm_loadu_pd(&physicalValues[idxSource]); const __m128d sourcesPhysicalValue = _mm_loadu_pd(&physicalValues[idxSource]);
...@@ -340,7 +340,7 @@ void HandVectorizedFunctionSSE3(const size_t nbParticles, const float* __restric ...@@ -340,7 +340,7 @@ void HandVectorizedFunctionSSE3(const size_t nbParticles, const float* __restric
const __m128 distance = _mm_sqrt_ps(dx*dx + dy*dy + dz*dz); const __m128 distance = _mm_sqrt_ps(dx*dx + dy*dy + dz*dz);
const __m128 inv_distance = VecOne/distance; const __m128 inv_distance = VecOne/distance;
const __m128 testRes = _mm_cmp_ps(distance, VecCutDistance, _CMP_LT_OQ); const __m128 testRes = _mm_cmplt_ps(distance, VecCutDistance);
const __m128 sourcesPhysicalValue = _mm_loadu_ps(&physicalValues[idxSource]); const __m128 sourcesPhysicalValue = _mm_loadu_ps(&physicalValues[idxSource]);
......
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