Browse Source

Refs #401. Added NO_AVX2 flag for old binutils (e.g. RHEL6)

tags/v0.2.10
Zhang Xianyi 12 years ago
parent
commit
c94762bb56
4 changed files with 35 additions and 1 deletions
  1. +3
    -0
      Makefile.rule
  2. +12
    -1
      Makefile.system
  3. +16
    -0
      cpuid_x86.c
  4. +4
    -0
      driver/others/dynamic.c

+ 3
- 0
Makefile.rule View File

@@ -99,6 +99,9 @@ NO_AFFINITY = 1
# and OS. However, the performance is low. # and OS. However, the performance is low.
# NO_AVX = 1 # NO_AVX = 1


# Don't use Haswell optimizations if binutils is too old (e.g. RHEL6)
# NO_AVX2 = 1

# Don't use parallel make. # Don't use parallel make.
# NO_PARALLEL_MAKE = 1 # NO_PARALLEL_MAKE = 1




+ 12
- 1
Makefile.system View File

@@ -109,6 +109,10 @@ ifeq ($(BINARY), 32)
GETARCH_FLAGS += -DNO_AVX GETARCH_FLAGS += -DNO_AVX
endif endif


ifeq ($(NO_AVX2), 1)
GETARCH_FLAGS += -DNO_AVX2
endif

ifeq ($(DEBUG), 1) ifeq ($(DEBUG), 1)
GETARCH_FLAGS += -g GETARCH_FLAGS += -g
endif endif
@@ -385,7 +389,10 @@ endif
ifeq ($(ARCH), x86_64) ifeq ($(ARCH), x86_64)
DYNAMIC_CORE = PRESCOTT CORE2 PENRYN DUNNINGTON NEHALEM OPTERON OPTERON_SSE3 BARCELONA BOBCAT ATOM NANO DYNAMIC_CORE = PRESCOTT CORE2 PENRYN DUNNINGTON NEHALEM OPTERON OPTERON_SSE3 BARCELONA BOBCAT ATOM NANO
ifneq ($(NO_AVX), 1) ifneq ($(NO_AVX), 1)
DYNAMIC_CORE += SANDYBRIDGE BULLDOZER PILEDRIVER HASWELL
DYNAMIC_CORE += SANDYBRIDGE BULLDOZER PILEDRIVER
endif
ifneq ($(NO_AVX2), 1)
DYNAMIC_CORE += HASWELL
endif endif
endif endif


@@ -777,6 +784,10 @@ ifeq ($(BINARY), 32)
CCOMMON_OPT += -DNO_AVX CCOMMON_OPT += -DNO_AVX
endif endif


ifeq ($(NO_AVX2), 1)
CCOMMON_OPT += -DNO_AVX2
endif

ifdef SMP ifdef SMP
CCOMMON_OPT += -DSMP_SERVER CCOMMON_OPT += -DSMP_SERVER




+ 16
- 0
cpuid_x86.c View File

@@ -1062,7 +1062,11 @@ int get_cpuname(void){
case 12: case 12:
case 15: case 15:
if(support_avx()) if(support_avx())
#ifndef NO_AVX2
return CPUTYPE_HASWELL; return CPUTYPE_HASWELL;
#else
return CPUTYPE_SANDYBRIDGE;
#endif
else else
return CPUTYPE_NEHALEM; return CPUTYPE_NEHALEM;
} }
@@ -1072,7 +1076,11 @@ int get_cpuname(void){
case 5: case 5:
case 6: case 6:
if(support_avx()) if(support_avx())
#ifndef NO_AVX2
return CPUTYPE_HASWELL; return CPUTYPE_HASWELL;
#else
return CPUTYPE_SANDYBRIDGE;
#endif
else else
return CPUTYPE_NEHALEM; return CPUTYPE_NEHALEM;
} }
@@ -1471,7 +1479,11 @@ int get_coretype(void){
case 12: case 12:
case 15: case 15:
if(support_avx()) if(support_avx())
#ifndef NO_AVX2
return CORE_HASWELL; return CORE_HASWELL;
#else
return CORE_SANDYBRIDGE;
#endif
else else
return CORE_NEHALEM; return CORE_NEHALEM;
} }
@@ -1481,7 +1493,11 @@ int get_coretype(void){
case 5: case 5:
case 6: case 6:
if(support_avx()) if(support_avx())
#ifndef NO_AVX2
return CORE_HASWELL; return CORE_HASWELL;
#else
return CORE_SANDYBRIDGE;
#endif
else else
return CORE_NEHALEM; return CORE_NEHALEM;
} }


+ 4
- 0
driver/others/dynamic.c View File

@@ -66,7 +66,11 @@ extern gotoblas_t gotoblas_BOBCAT;
extern gotoblas_t gotoblas_SANDYBRIDGE; extern gotoblas_t gotoblas_SANDYBRIDGE;
extern gotoblas_t gotoblas_BULLDOZER; extern gotoblas_t gotoblas_BULLDOZER;
extern gotoblas_t gotoblas_PILEDRIVER; extern gotoblas_t gotoblas_PILEDRIVER;
#ifdef NO_AVX2
#define gotoblas_HASWELL gotoblas_SANDYBRIDGE
#else
extern gotoblas_t gotoblas_HASWELL; extern gotoblas_t gotoblas_HASWELL;
#endif
#else #else
//Use NEHALEM kernels for sandy bridge //Use NEHALEM kernels for sandy bridge
#define gotoblas_SANDYBRIDGE gotoblas_NEHALEM #define gotoblas_SANDYBRIDGE gotoblas_NEHALEM


Loading…
Cancel
Save