Acovea

Screenshot Software:
Acovea
Szczegóły programowe:
Wersja: 1.0.1
Filmu: 3 Jun 15
Wywoływacz: Scott Robert Ladd
Licencja: Wolny
Popularność: 176

Rating: 2.7/5 (Total Votes: 3)

acovea implementuje algorytm genetyczny do znalezienia "najlepsze" opcje kompilacji programów z GCC C i C ++ kompilatory.
Acovea (Analiza opcji kompilatora poprzez Evolutionary Algorithm) implementuje algorytm genetyczny, aby znaleźć "najlepsze" opcje kompilacji programów z GNU Compiler Collection (GCC), kompilatory C i C ++.
"Best", w tym kontekście, jest zdefiniowane jako te opcje, które produkują najszybszą wykonywalny programu z danego kodu źródłowego. Acovea C ++ jest ramy, które można rozszerzyć do testowania innych języków programowania i kompilatory nie-GCC.
Wyobrażam sobie acovea jako narzędzie do optymalizacji, podobnym celu do profilowania. Tradycyjny profilowanie poziomie identyfikuje funkcja algorytmy najbardziej wpływowych w wydajności danego programu; Acovea następnie stosuje się do tych algorytmów znaleźć flag kompilatora i opcje, które generują najszybszy kod.
Acovea także użyteczne do badania kombinacji flagi dla pesymistycznych oddziaływań oraz testowania niezawodności kompilatora.
Nowoczesne oprogramowanie jest trudne do zrozumienia i weryfikacji przez tradycyjne środki. Miliony linii kodu produkcji skomplikowanych interakcji aplikacji zawierającej, wbrew prosty opis lub brute-force dochodzenie.
Kieruje, deterministyczne podejście do badań opiera się na ludzkich testerów wyobrazić sobie wszystkich możliwych kombinacji działań - nierealne propozycję danego złożoności oprogramowania. Jednak mimo tej złożoności, potrzebujemy odpowiedzi na ważne pytania dotyczące współczesnej, oprogramowania na dużą skalę.
Jakie ważne pytania? Rozważmy GNU Compiler Collection. I pisać artykuły, które odniesienia generowania kodu, zadania pełen trudności z powodu niezliczonych opcji oferowanych przez różnych kompilatorów. Na moje benchmarki mieć żadnego znaczenia, muszę wiedzieć, która kombinacja opcji produkuje najszybszy kod dla danej aplikacji.
Znalezienie "najlepszego" zestaw opcji brzmi jak proste zadanie, biorąc pod uwagę zakres dokumentacji GCC i konwencjonalną mądrość społeczności programistów GCC. Ach, gdyby było tylko tak proste! Dokumentacja GCC, a rozległe, jest również szczerze nieprecyzyjne.
Doceniam ten styl dokumentacji; w przeciwieństwie do wielu komercyjnych dostawców, którzy stanowią wypowiedzi bezwzględnych o "jakości" swoich produktów, dokumentatorzy GCC przyznać wątpliwości w jaki sposób różne opcje zmieniają generowanie kodu. Rzeczywiście, generowanie kodu jest całkowicie zależne od typu aplikacji jest skompilowany i platformy docelowej. Opcja, która produkuje szybki kod wykonywalny dla jednego kodu źródłowego może być szkodliwe dla realizacji innego programu.
"Zdrowy rozsądek" pojawia się w skrzynce odbiorczej, gdy opublikować artykuł. Począwszy od uprzejmy nalegał, aby niegrzeczny, te e-maile zawierają sprzeczne propozycje produkcji szybki kod.
W zdecydowanej większości przypadków, takie niepotwierdzone twierdzenia brak formalnego dowodu ich ważności, a częściej niż nie, zaproponował "poprawa" jest nieskuteczne lub szkodliwe. Staje się coraz bardziej oczywiste, że nikt --myself dołączony - dokładnie wie, w jaki sposób wszystkie GCC opcje działają razem generowania kodu programu.
Szukam Świętego Graala Optimization - ale dokładnie to, co jest optymalizacja? Zrozumienie problemu jest pierwszym krokiem w znalezieniu rozwiązania.
Optymalizacja próbuje wyprodukować "najlepszego" maszyny kodu z kodem źródłowym. "Najlepsze" oznacza różne rzeczy dla różnych zastosowań; a łopaty bazy danych kawałki informacji, podczas gdy aplikacja naukowa związana jest z szybkich i dokładnych wyników; Pierwszy problem dla wbudowanego systemu może być rozmiar kodu.
I to jest całkiem możliwe, że mała kod jest szybki, lub szybki kod dokładne. Optymalizacja jest daleki od bycia nauką ścisłą, ze względu na różnorodność konfiguracji sprzętu i oprogramowania.
Algorytm optymalizacji może być tak proste jak usuwanie niezmiennik pętli, lub tak złożone, jak bada cały program, aby wyeliminować globalnych wspólnych sub-wyrażeń. Wiele optymalizacje zmienić to, co napisał w programista bardziej efektywnej formie, do tego samego rezultatu podczas zmian w bazowych szczegóły dotyczące wydajności; inne "optymalizacje" Kod produkcji, która wykorzystuje specyficzne cechy warstwy sprzętowej, takie jak specjalne zestawów instrukcji.
Architektury pamięci, rurociągi, on- i off-chipie caches - to wszystko wpływa na jakość kodu w sposób, które nie są oczywiste dla programistów korzystających z języka wysokiego poziomu. Optymalizacji, który może wydawać się szybszą produkcję kodu może, w rzeczywistości stworzyć dużą kod powodujący, że więcej Chybienia pamięci podręcznej, co powoduje spadek wydajności.
Nawet najlepsze ręcznie dostrojony kod C zawiera obszary interpretacji; nie ma absolutnej, jeden-do-jednego korespondencja między sprawozdania C i instrukcji maszynowych. Prawie każda sekwencja kodu źródłowego może być skompilowany w inny - ale funkcjonalny odpowiednik - instrukcja maszyna strumieni o różnych rozmiarach i charakterystyce działania.
Inline funkcji jest klasycznym przykładem tego zjawiska: zastąpienie wywołanie funkcji z kodu funkcji samego może dawać szybsze program, ale może również zwiększyć rozmiar programu. Zwiększony rozmiar programu, może z kolei zapobiega algorytm od montażu wewnątrz szybkiej pamięci podręcznej, a tym samym spowolnienie programu z powodu pomyłek cache.
Zauważ moje użycie słowa łasica "może" - inline małe funkcje czasem pozwala Inne algorytmy optymalizacji szansę dalszej poprawy kod warunków lokalnych, produkcji szybsze i mniejsze kod.
Optymalizacja nie jest proste i oczywiste, a kombinacje algorytmów może prowadzić do nieoczekiwanych rezultatów. Co sprowadza mnie z powrotem na pytanie: Dla każdej aplikacji, jakie są najbardziej skuteczne opcje optymalizacji?
Co nowego w tym wydaniu:
• Niewielkie zmiany w licencji non-free.
· Dodano obsługę najnowszych wersji libcoyotl i libevocosm.

Podobne oprogramowanie

nose2
nose2

20 Feb 15

assertEquals
assertEquals

20 Feb 15

pagerunit
pagerunit

11 May 15

cynic
cynic

14 Apr 15

Inne programy z deweloperem Scott Robert Ladd

Acovea/GTK
Acovea/GTK

3 Jun 15

Komentarze do Acovea

Komentarze nie znaleziono
Dodaj komentarz
Włącz zdjęć!