# [SOLVED]Intel i5 M560 - jakie optymalizacje?

## canis_lupus

Nie wiem co wybrać, bo:

```
cat /proc/cpuinfo 

processor       : 0

vendor_id       : GenuineIntel

cpu family      : 6

model           : 37

model name      : Intel(R) Core(TM) i5 CPU       M 560  @ 2.67GHz

stepping        : 5

microcode       : 0x3

cpu MHz         : 1199.000

cache size      : 3072 KB

physical id     : 0

siblings        : 4

core id         : 0

cpu cores       : 2

apicid          : 0

initial apicid  : 0

fdiv_bug        : no

hlt_bug         : no

f00f_bug        : no

coma_bug        : no

fpu             : yes

fpu_exception   : yes

cpuid level     : 11

wp              : yes

flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 popcnt aes lahf_lm ida arat dtherm tpr_shadow vnmi flexpriority ept vpid

bogomips        : 5319.81

clflush size    : 64

cache_alignment : 64

address sizes   : 36 bits physical, 48 bits virtual

power management:

```

Wg http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86_002d64-Options.html pasowało by mi:

`corei7'

    Intel Core i7 CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 instruction set support.

Lub 

`corei7-avx'

    Intel Core i7 CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AES and PCLMUL instruction set support. 

Ale nie mam w procu AVX (nie widzę).

Jednocześnie http://en.gentoo-wiki.com/wiki/Safe_Cflags/Intel#Core_i7_and_Core_i5.2C_Xeon_55xx podaje, że corei7 jest dla 64 bitowych profili, a ja syystem mam 32 bitowy, a na stronie gcc nic o tym nie wspominają. [/quote]Jak to w końcu jest?

----------

## SlashBeast

Z tym, ze corei7 jest dla 64bitow to bym raczej sie nie przejmowal, bez -m64 i tak by nawet nie probowalo robic elf64 przy 32bitowym userlandzie, co w ogole nie bylo by do zrobienia bez crossa.

Wrzuc sobie native, mozesz sprawdzic to przez

```
gcc -march=native -E -v - </dev/null 2>&1 | grep cc1 | awk -v FS=" - " '{ print $2 }'
```

W moim wypadku dla i5 sandybridge jest to

```
-march=corei7-avx -mcx16 -msahf -mno-movbe -maes -mpclmul -mpopcnt -mno-abm -mno-lwp -mno-fma -mno-fma4 -mno-xop -mno-bmi -mno-tbm -mavx -msse4.2 -msse4.1 --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=3072 -mtune=corei7-avx

```

Generalnie, jak budujesz stage na sprzecie docelowym, to wrzuc -march=native i nie baw sie w zadne cuda.

----------

## canis_lupus

Własnie native mi wrzuca core2, co na tym procku mi się zupełnie nie podoba i przez co zresztą zgłupiałem...

Edit: Gcc 4.5.4

----------

## Crenshaw

corei7-avx jest od gcc 4.6...

----------

## canis_lupus

O widzisz! To teraz pytanie: przechodzic na nowsze gcc czy czekać. No i na nowszym gcc znowu pytanie jaka optymalizacja bo opisy nadal się nie zgadzają.

----------

## SlashBeast

Native poza core2 wrzuca Ci pewnie tez msse4_1 i msse4_2, to, ze nazywa sie core2 to nie jest problem, to tylko taki alias dla wielu opcji -mXXX, U mnie leci na corei7avx ale tez przez -mno-XXX wylacza ficzery ktore nie obsluguje. Twoj chip nie ma avx wiec nie ma powodu przechlodzic na nowe gcc, native bedzie uzywac tego, co tam masz.

----------

## canis_lupus

Dzieki!

----------

