|
|
|
@@ -79,6 +79,11 @@ extern gotoblas_t gotoblas_EXCAVATOR; |
|
|
|
#else |
|
|
|
extern gotoblas_t gotoblas_HASWELL; |
|
|
|
extern gotoblas_t gotoblas_ZEN; |
|
|
|
#ifndef NO_AVX512 |
|
|
|
extern gotoblas_t gotoblas_SKYLAKEX; |
|
|
|
#else |
|
|
|
#define gotoblas_SKYLAKEX gotoblas_HASWELL; |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
#else |
|
|
|
//Use NEHALEM kernels for sandy bridge |
|
|
|
@@ -286,8 +291,21 @@ static gotoblas_t *get_coretype(void){ |
|
|
|
return &gotoblas_NEHALEM; //OS doesn't support AVX. Use old kernels. |
|
|
|
} |
|
|
|
} |
|
|
|
if (model == 5) { |
|
|
|
// Intel Skylake X |
|
|
|
#ifndef NO_AVX512 |
|
|
|
return $gotoblas_SKYLAKEX; |
|
|
|
#else |
|
|
|
if(support_avx()) |
|
|
|
return &gotoblas_HASWELL; |
|
|
|
else { |
|
|
|
openblas_warning(FALLBACK_VERBOSE, NEHALEM_FALLBACK); |
|
|
|
return &gotoblas_NEHALEM; |
|
|
|
} |
|
|
|
} |
|
|
|
#endif |
|
|
|
//Intel Skylake |
|
|
|
if (model == 14 || model == 5) { |
|
|
|
if (model == 14) { |
|
|
|
if(support_avx()) |
|
|
|
return &gotoblas_HASWELL; |
|
|
|
else{ |
|
|
|
@@ -447,7 +465,8 @@ static char *corename[] = { |
|
|
|
"Haswell", |
|
|
|
"Steamroller", |
|
|
|
"Excavator", |
|
|
|
"Zen" |
|
|
|
"Zen", |
|
|
|
"SkylakeX" |
|
|
|
}; |
|
|
|
|
|
|
|
char *gotoblas_corename(void) { |
|
|
|
@@ -475,7 +494,7 @@ char *gotoblas_corename(void) { |
|
|
|
if (gotoblas == &gotoblas_STEAMROLLER) return corename[21]; |
|
|
|
if (gotoblas == &gotoblas_EXCAVATOR) return corename[22]; |
|
|
|
if (gotoblas == &gotoblas_ZEN) return corename[23]; |
|
|
|
|
|
|
|
if (gotoblas == &gotoblas_SKYLAKEX) return corename[24]; |
|
|
|
return corename[0]; |
|
|
|
} |
|
|
|
|
|
|
|
@@ -505,6 +524,7 @@ static gotoblas_t *force_coretype(char *coretype){ |
|
|
|
|
|
|
|
switch (found) |
|
|
|
{ |
|
|
|
case 24: return (&gotoblas_SKYLAKEX); |
|
|
|
case 23: return (&gotoblas_ZEN); |
|
|
|
case 22: return (&gotoblas_EXCAVATOR); |
|
|
|
case 21: return (&gotoblas_STEAMROLLER); |
|
|
|
|