Próbuję dowiedzieć się, jak ustawić odpowiednio opcję -march
, aby zobaczyć, jak duża różnica w wydajności pomiędzy włączoną i wyłączoną opcją może wystąpić na moim komputerze z gcc 4.7.2.Jakie są właściwe opcje specyficzne dla architektury (-m) dla Pentium opartego na Sandy Bridge?
Przed próbą kompilacji, próbowałem znaleźć najlepszą opcję -march
na moim komputerze. Mój komputer ma Pentium G850, którego architekturą jest Sandy Bridge. Tak więc odniosłem się do the gcc 4.7.2 manual i okazało się, że najlepiej wygląda -march=corei7-avx
.
Jednak przypomniałem sobie, że Pentium oparty na Sandy Bridge nie ma obsługi zestawu instrukcji AVX i AES-NI, która jest true for Pentium G850. Tak więc -march=corei7-avx
nie jest odpowiednią opcją.
wymyślić niektórych potencjalnych opcji:
-march=corei7-avx -mno-avx -mno-aes
-march=corei7 -mtune=corei7-avx
-march=native
Pierwsza opcja wygląda rozsądne biorąc pod uwagę informacje mam, ale jestem niespokojny, że nie może brakować funkcji innej niż AVX i AES-NI. Druga opcja wygląda bezpiecznie, ale może zabraknąć drobnych elementów na Sandy Bridge z powodu -march=corei7
. Trzecia opcja zajmie się wszystkimi moimi problemami, ale słyszałem, że ta opcja czasami źle interpretuje funkcje procesora, więc chciałbym wiedzieć, jak to zrobić ręcznie.
Przeszukałem go i przeszukano StackOverflow i SuperUser, ale nie mogę znaleźć żadnych wyraźnych rozwiązań ...
Jakie opcje należy ustawić?
Twoja odpowiedź wygląda tak samo jak moja pierwsza opcja, ponieważ ' -march = cpu-type' implikuje '-mtune = cpu-type' (patrz sekcja" -march = cpu-type "[podręcznika gcc] (http://gcc.gnu.org/onlinedocs/gcc-4.7. 2/gcc/i386-and-x86_002d64-Options.html # i386-and-x86_002d64-Options)). Czy jest różnica między moją pierwszą opcją a twoją? Ponadto, czy nie ma się czym martwić brakującymi funkcjami innymi niż AVX i AES-NI? –
Prawdopodobnie Sandy Mosty niskiej klasy również nie posiadają instrukcji PCLMULQDQ, ale kompilator i tak nie wygeneruje go automatycznie. –
Naprawdę? Myślałem, kod za pomocą takich instrukcji, jeśli kompilator wykrywa, niektóre kod jest szybciej za pomocą tego ... Czy jestem źle? –