Monday 30 January 2017

Spec 2006 Arm Binäre Optionen

SPEC Benchmarks. SPEC 2000 spec2k. Um SPEC 2000 Binärdateien auf gem5 zu betreiben, kannst du das gem5 spezifische cpu2000 python package. cpu2000 Paket verwenden. Das cpu2000 python Paket definiert Workload Klassen, die verschiedene Benchmarks aus der SPEC 2000 CPU Suite repräsentieren System und gewünschter Eingabesatz als Parameter Das folgende Beispiel ist aus. Dies schafft eine Workload, die den gzip log spec2000 Benchmark darstellt, der für alpha tru64 mit dem smred input Set kompiliert wurde, und weist ihn zu. Workloads, die aus diesem Paket erstellt wurden, erwarten, dass sie ihre Binärdateien und Inputs finden Dateien in den folgenden beiden Verzeichnissen. Syscall Emulation Mode Command Lines. Wenn Sie möchten, um SPEC2K mit Syscall-Emulation-Modus laufen, eine gute Referenz für die richtige Befehlszeile Optionen finden Sie hier. Beachten Sie diese Beispiel-Befehlszeilen aren t für reduzierte minimierte Eingabesätze. Wenn Sie das cpu2000-Paket nicht verwenden können, können Sie immer noch Binärdateien einrichten und ausführen, wie Sie es normalerweise tun würden. Um eine statisch verknüpfte ALPHA-eon-Binärdatei auszuführen, können Sie folgendes verwenden Kommandozeile. SPEC 2006 spec2k6.Wir müssen Bits von Informationen aus SPEC2006benchmarks und begehen einige der Code erwähnt. PyInstaller Manual. This Dokument wurde in der public domain. PyInstaller bündelt eine Python-Anwendung und alle ihre Abhängigkeiten in einem einzigen Paket Der Benutzer kann die verpackte App ohne Installation eines Python-Interpreters oder beliebiger Module ausführen PyInstaller unterstützt Python 2 7 und Python 3 3 und bündelt die großen Python-Pakete wie numpy, PyQt, Django, wxPython und andere. PyInstaller wird getestet Windows, Mac OS X und Linux Allerdings ist es kein Cross-Compiler, um eine Windows App zu machen, die Sie PyInstaller in Windows ausführen, um eine Linux App zu erstellen, die Sie in Linux laufen lassen. PyInstaller wurde succ verwendet Essentiell mit AIX, Solaris und FreeBSD, aber ist nicht gegen sie getestet. Was ist neu Diese Release. Release 3 0 ist ein wichtiges Rewrite, das Python 3-Unterstützung, bessere Code-Qualität durch die Verwendung von automatisierten Tests und Auflösungen für viele alte Probleme hinzufügt. Funktionale Änderungen beinhalten das Entfernen der Unterstützung für Python vor 2 7, eine einfachere Möglichkeit, Datendateien in das Bündel einzubinden. Hinzufügen von Dateien zum Bundle und Änderungen an der Hook-API Verständnis von PyInstaller Hooks. Indices und Tabellen. GCC 4 8 Release Series Änderungen , Neue Funktionen und Fixes. GCC nutzt jetzt C als Implementierungssprache Dies bedeutet, dass man GCC aus Quellen baut, benötigen Sie einen C-Compiler, der C 2003 versteht. Weitere Einzelheiten über die Begründung und spezifische Änderungen finden Sie in der C-Konvertierung Page. Um das Graphit-Framework für Loop-Optimierungen zu aktivieren, benötigen Sie jetzt CLooG Version 0 18 0 und ISL Version 0 11 1 Beide können aus dem GCC-Infrastruktur-Verzeichnis bezogen werden Das Installationshandbuch enthält mehr Informationen über requirem Um GCC. GCC zu bauen, nutzt jetzt eine aggressivere Analyse, um eine obere Grenze für die Anzahl der Iterationen von Schleifen mit Einschränkungen zu erheben, die durch Sprachstandards auferlegt werden. Dies kann dazu führen, dass nicht konforme Programme nicht mehr wie erwartet funktionieren, wie zB SPEC CPU 2006 464 H264ref und eine neue Option, - fno-aggressive-loop-optimisierungen wurde hinzugefügt, um diese aggressive Analyse zu deaktivieren In einigen Schleifen, die eine konstante Anzahl von Iterationen kennen, aber ein undefiniertes Verhalten ist bekannt, dass in der Schleife vor dem Erreichen oder während der letzten Iteration auftreten, GCC wird vor dem undefinierten Verhalten in der Schleife warnen, anstatt die untere obere Grenze der Anzahl der Iterationen für die Schleife abzuleiten. Die Warnung kann mit - Wno-aggressiven Schleifenoptimierungen deaktiviert werden. Bei ARM wurde ein Fehler in GCC s behoben Implementierung der AAPCS-Regeln für das Layout von Vektoren, die zu einem falschen Code führen können, der erzeugt wird. Vektoren, die größer als 8 Bytes sind, sind nun standardmäßig auf eine 8-Byte-Grenze ausgerichtet. Dies ist ein ABI-Änderungscode, der macht Die explizite Verwendung von Vektortypen kann mit binären Objekten, die mit älteren Versionen von GCC erstellt wurden, nicht kompatibel sein. Auto-vektorisiertes Code wird von dieser Änderung nicht betroffen. Beim AVR wurde die Unterstützung für die Befehlszeilenoption - short-Anrufe, die in GCC 4 7 veraltet wurden, entfernt. On AVR, die Konfigurationsoption --with-avrlibc unterstützt seit GCC 4 7 2 wird standardmäßig für alle Nicht-RTEMS-Konfigurationen aktiviert Diese Option arrangiert für eine bessere Integration von AVR Libc mit avr-gcc Für technische Details siehe PR54461 To Deaktivieren Sie die Option in Nicht-RTEMS-Konfigurationen, verwenden Sie --with-avrlibc nein Wenn der Compiler für RTEMS konfiguriert ist, wird die Option immer ausgeschaltet. Weitere Informationen zum Portieren von GCC 4 8 aus früheren Versionen von GCC finden Sie im Porting-Guide für diese Version. General Optimizer Verbesserungen und Änderungen. DWARF4 ist jetzt die Voreinstellung beim Erzeugen von DWARF-Debug-Informationen Wenn - g auf einer Plattform verwendet wird, die DWARF-Debugging-Informationen verwendet, wird GCC nun standardmäßig auf - gdwarf-4 - fno-debug - Typen-Abschnitt GDB 7 5, V Algrind 3 8 0 und elfutils 0 154 Debug-Informationen Konsumenten unterstützen DWARF4 standardmäßig Vor GCC 4 8 wurde die Standardversion verwendet DWARF2 Um GCC 4 8 eine ältere DWARF-Version zu erzeugen, verwenden Sie - g zusammen mit - gdwarf-2 oder - gdwarf-3 Default für Darwin und VxWorks ist immer noch - Gdwarf-2 - Grict-Zwerg. Ein neues, allgemeines Optimierungsniveau, - Og wurde eingeführt. Es richtet sich an die Notwendigkeit einer schnellen Kompilierung und einer überlegenen Debugging-Erfahrung bei gleichzeitiger Bereitstellung einer angemessenen Laufzeit Erfahrung für die Entwicklung sollte besser sein als die Standard-Optimierungsstufe - O0.Eine neue Option - ft-part-pre wurde hinzugefügt, um die partielle Redundanz-Eliminierung zu kontrollieren PRE-Optimierung Diese Option ist standardmäßig auf der Ebene - O3 optimiert aktiviert und macht PRE Aggressiver. Die Option - Fconserve-Space wurde entfernt, es war nicht mehr nützlich für die meisten Ziele, da GCC unterstützt Putting Variablen in BSS, ohne sie gemeinsam. Die Struktur Reorg und Matrix Reorg-Optimierungen comm And-line-Optionen - fipa-struct-reorg und - fipa-matrix-reorg wurden entfernt Sie haben nicht immer richtig funktioniert, noch arbeiteten sie mit Link-Time-Optimierung LTO und waren daher nur für Programme, die aus einer einzigen Übersetzungseinheit bestehen. Several Skalierbare Flaschenhälse wurden aus den GCC-Optimierungspässen entfernt. Die Kompilierung von extrem großen Funktionen, z. B. durch die Verwendung des Flatten-Attributs in der Eigen C-Algebra-Vorlagenbibliothek, ist deutlich schneller als die bisherigen Releases von GCC. Link-time Optimierung LTO-Verbesserungen. LTO-Partitionierung wurde für eine bessere Zuverlässigkeit und Wartbarkeit umgeschrieben Mehrere wichtige Fehler, die zu Verknüpfungsfehlern führen, wurden behoben. Interprocedural Optimierungsverbesserungen. Eine neue Symboltabelle wurde implementiert Es baut auf vorhandenen Callgraph - und Varpool-Modulen auf und stellt eine neue API Unusual bereit Symbol-Sichtbarkeiten und Aliasen werden konsequenter behandelt, was zum Beispiel zu einer aggressiveren, nicht erreichbaren Codeentfernung mit LTO führt E Inline-Heuristik kann nun Grenzwerte für die Größe von Inline-Funktionen umgehen, wenn das Inlining besonders profitabel ist. Dies geschieht beispielsweise, wenn Schleifenschranken oder Array-Fortschritte propagiert werden. Vals, die durch Aggregate entweder durch Wert oder Referenz übergeben werden, werden nun an der Inter - - Procedural-Ebene führt zu besseren Inlining-Entscheidungen zum Beispiel im Falle von Fortran-Array-Deskriptoren und devirtualization. AddressSanitizer ein schneller Speicher-Fehler-Detektor, wurde hinzugefügt und kann über - fsanitize-Adresse aktiviert werden Speicherzugriffsanweisungen werden instrumentiert, um Heap-, Stack zu erkennen - und Global-Pufferüberlauf sowie Use-After-Free-Bugs Um netter Stacktraces zu erhalten, benutze - fno-omit-frame-pointer Der AddressSanitizer ist auf IA-32 x86-64 x32 PowerPC PowerPC64 GNU Linux und auf x86- 64 Darwin. ThreadSanitizer wurde hinzugefügt und kann über - fsanitize Thread aktiviert werden Instruktionen werden zur Erkennung von Datenrassen instrumentiert Der ThreadSanitizer ist auf x86-64 GNU Linux verfügbar Cal register allocator LRA wurde implementiert, der den 26-jährigen Reload-Pass ersetzt und die generierte Code-Qualität verbessert. Jetzt ist er auf den IA-32- und x86-64-Targets aktiv. Auf den folgenden Architekturen wurde die Unterstützung für Transaktionsspeicher implementiert: IA - 32 x86-64, ARM, PowerPC, SH, SPARC und Alpha. Neue Sprachen und sprachspezifische Verbesserungen. Jede Diagnose emittiert nun die ursprüngliche Quellzeile und ein Caret, das die Spalte anzeigt. Die Option - fno-diagnostics-show-caret unterdrückt dies Informationen. Die Option - ftrack-Makro-Erweiterung 2 ist nun standardmäßig aktiviert Dies ermöglicht es dem Compiler, den Makro-Erweiterungsstapel in der Diagnose anzuzeigen Kombiniert mit der Caret-Information, eine Beispiel-Diagnose, die diese beiden Funktionen zeigt. Eine neue - Weizeof-Pointer - Memaccess Warnung wurde hinzugefügt, um - Wall zu aktivieren, um verdächtige Längenparameter auf bestimmte String - und Speicher-eingebaute Funktionen zu warnen, wenn das Argument sizeof verwendet. Diese Warnung warnt zB über memset ptr, 0, siz Eof ptr Wenn ptr kein Array ist, sondern ein Zeiger, und schlägt eine mögliche Korrektur oder über memcpy foo, ptr, sizeof foo. Die neue Option - Wpedantic ist ein Alias ​​für - pedantic, die jetzt veraltet ist Die Formulare - Wno-pedantic - Werror pedantisch und - Wennfehler pedantische Arbeit in der gleichen Weise wie für jede andere - W Option Eine Einschränkung ist, dass - Werror pedantisch ist nicht gleichbedeutend mit - pedantischen-Fehler, da die letzteren in Fehler einige Warnungen, die nicht durch - Wpedantic und das erstere wirkt sich nur auf Diagnosen aus, die bei der Verwendung von - Wno-pedantic deaktiviert sind. Die Option - Washow warnt nicht mehr, wenn eine Deklaration eine Funktionsdeklaration schattiert, es sei denn, die ehemalige deklariert eine Funktion oder einen Zeiger auf Funktion, da dies eine gemeinsame und gültige ist Fall in real-world code. G implementiert nun das C 11 threadlocal Schlüsselwort das unterscheidet sich von der GNU Thread Keyword in erster Linie, dass es ermöglicht dynamische Initialisierung und Zerstörung Semantik Leider erfordert diese Unterstützung eine Laufzeit Strafe für Verweise auf non-funct Ionen-lokale Threadlocal-Variablen, die in einer anderen Übersetzungseinheit definiert sind, auch wenn sie keine dynamische Initialisierung benötigen, so dass Benutzer weiterhin Thread für TLS-Variablen mit statischer Initialisierungssemantik verwenden möchten. Wenn der Programmierer sicher sein kann, dass keine Verwendung der Variablen in Eine nicht definierende TU muss eine dynamische Initialisierung auslösen, entweder weil die Variable statisch initialisiert ist oder eine Verwendung der Variablen in der definierenden TU vor jeder Verwendung in einer anderen TU ausgeführt wird, können sie diesen Overhead mit dem - fno-extern - Tls-init option. OpenMP threadprivate Variablen unterstützen nun auch die dynamische Initialisierung und Zerstörung durch denselben Mechanismus. G implementiert nun die C11-Attributsyntax, z. B. auch den Ausrichtungsspezifizierer, e gG implementiert nun C 11, die Konstruktoren, e g. As von GCC 4 8 1, G implementiert die Änderung der Sende-Semantik von N3276.As von GCC 4 8 1, G implementiert C 11 Ref-Qualifizierer, e gG unterstützt nun eine - std c 1y Option für Experimente mit Features propo Sed für die nächste Revision des Standards, erwartet um 2014 Derzeit ist der einzige Unterschied von - Std c 11 Unterstützung für Rückkehr Typ Abzug in normalen Funktionen, wie in N3386 Status der C 1y-Funktionen in GCC 4 8 vorgeschlagen finden Sie hier G-Namespace-Assoziationserweiterung, Attribut stark wurde abgelehnt Inline-Namespaces sollten stattdessen verwendet werden. G unterstützt nun eine - Flxt-numerisch-Literal-Option, um zu steuern, ob GNU-numerische Literalsuffixe als Erweiterungen akzeptiert oder als C11 benutzerdefinierte numerische Literalsuffixe verarbeitet werden Die Fahne ist auf Gebrauchs-Suffixe für GNU-Literale standardmäßig für - Std-Gnu und - Std c 98 Die Markierung ist aus Gebrauch Suffixe für benutzerdefinierte Literale standardmäßig für - Std c 11 und später. Runtime Library libstdc. Improved experimentelle Unterstützung für die Neue ISO-C-Standard, C 11 einschließlich. forwardlist trifft auf die zuteilerbewussten Containeranforderungen. thisthread Schlaf für Thistfead Schlaflosigkeit und Thisthread Ausbeute sind definiert, ohne dass die Konfigurationsoption --enable-libstdcx erforderlich ist X-time. Improvements to random. SSE optimierte normalverteilung. Unter der Hardware-RNG-Anweisung für randomdevice auf neue x86-Prozessoren erfordert die assembler, um die instruction. und ext random. New zufällige Anzahl Maschine simdfastmersennetwisterengine mit einer optimierten SSE-Implementierung. New zufällige Anzahl Distributionen zu unterstützen Betadistribution normalmvdistribution ricedistribution nakagamidistribution paretodistribution kdistribution arcsinedistribution hoytdistribution. Added --disable-libstdcxx-verbose konfigurieren Option deaktivieren diagnostische Nachrichten ausgestellt, wenn ein Prozess abnormal beendet Dies kann nützlich sein, um eingebettete Systeme, um die Größe von ausführbaren Dateien, die statisch verknüpfen, um die Bibliothekpatibilität Hinweis zu verkleinern. Modul-Dateien Die Version der Modul-Dateien wurde inkrementiert Fortran MODULE s kompiliert von früheren GCC-Versionen müssen neu kompiliert werden, wenn sie USE d von Dateien sind, die mit GCC 4 8 GCC 4 8 kompiliert wurden, ist nicht in der Lage, Dateien zu lesen, die von früheren Versionen erstellt wurden So gibt es ein e Rror message Hinweis Das ABI der produzierten Assembler-Daten selbst hat keine Objektdateien geändert und Bibliotheken sind voll kompatibel mit älteren Versionen, außer wie unten angegeben. ABI Einige interne Namen, die in der Assembler-Objektdatei verwendet wurden, haben sich für Symbole geändert, die im Spezifikationsteil von a deklariert wurden Modul Wenn ein betroffenes Modul oder eine Datei, die es über die Benutzungsverknüpfung verwendet, neu kompiliert wird, müssen das Modul und alle Dateien, die diese Symbole direkt verwenden, neu kompiliert werden. Diese Änderung wirkt sich nur auf die folgenden Modulsymbole aus. Vorgehenszeiger Hinweis C-Interoperable Funktion Zeiger Typ cfunptr sind nicht betroffen, noch sind Prozedur-Zeiger-Komponenten. Deferred-Länge Zeichenfolgen. Die BACKTRACE intrinsische Subroutine wurde hinzugefügt Es zeigt eine Backtrace an einer beliebigen Stelle in Benutzer-Code-Programm-Ausführung setzt sich normal nachher. Die - Wc-Bindung-Typ Warnoption wurde standardmäßig deaktiviert Es warnt, wenn die Variable möglicherweise nicht C interoperabel ist, wenn die Variable hat Wurde mit einem intrinsischen Typ mit Default-Typ deklariert, anstatt einen freundlichen Parameter zu verwenden, der für die C-Interoperabilität im intrinsischen ISOCBinding-Modul definiert wurde. Bevor diese Warnung immer gedruckt wurde, wird die Option - Wc-Bindungstyp durch - Wall aktiviert. - Wealloc-lhs Und - Wealloc-lhs - alle Warnbefehlszeilenoptionen wurden hinzugefügt, die festlegen, wann Code für die automatische Neuzuordnung einer Variablen während der Zuordnung eingefügt wird. Mit dieser Option können Sie entscheiden, ob es sicher ist, - fno-realloc-lhs zu verwenden Darüber hinaus kann es verwendet werden, um die automatische Neuzuordnung in Hot-Loops zu finden. Für Arrays ersetzt das Ersetzen von var durch var die automatische Neuzuordnung. Die Befehlszeilenoption - Wcompare-reals wurde hinzugefügt. Wenn diese Einstellung gesetzt ist, werden Warnungen beim Vergleich von REAL oder COMPLEX-Typen für Gleichheit und Ungleichheit erwägen, ab von abs ab eps mit einem geeigneten eps - Wcompare-Reals zu ersetzen, wird von - Wextra aktiviert. Die - Wtarget-Lifetime-Befehlszeilenoption wurde mit - Wall hinzugefügt, was warnt, wenn das p Ointer in einer Zeigerzuweisung könnte sein Ziel überleben. Lesen Sie Floating-Point-Nummern, die q für die Exponential wie 4 0q0 verwenden, wird nun als Kreditorenerweiterung für eine bessere Kompatibilität mit alten Datendateien unterstützt. Es wird dringend empfohlen, für IO das Äquivalent zu verwenden, aber Standardkonformität E wie 4 0e0. Für Fortran-Quellcode, erwäge, das q in Gleitkomma-Literalen durch einen freundlichen Parameter zu ersetzen, z. B. 4 0e0qp mit einem geeigneten qp Beachten Sie, dass in Fortran Quellcode, der q durch ein einfaches e ersetzt, nicht äquivalent ist. Die GFORTRANTMPDIR-Umgebungsvariable zur Angabe eines nicht - Standardverzeichnis für Dateien, die mit STATUS geöffnet werden SCRATCH wird nicht mehr verwendet Stattdessen überprüft Gfortran die POSIX GNU Standard TMPDIR Umgebungsvariable Wenn TMPDIR nicht definiert ist, fällt Gfortran auf andere Methoden zurück, um das Verzeichnis für temporäre Dateien zu ermitteln, wie es im Benutzerhandbuch dokumentiert ist. Fortran 2003.Support für unbegrenzte polymorphe Variablen CLASS wurde hinzugefügt Nonconstant Zeichen Längen sind noch nicht unterstützt. Assumed Typen TYPE werden nun unterstützt. Experimental Unterstützung für angenommene Rang Arrays Dimension wurde hinzugefügt Hinweis, dass derzeit gfortran eigenen Array-Deskriptor verwendet wird, was anders ist Von der in TS29113 definierten, siehe Gfortran s Header-Datei oder verwenden Sie die Chasm Language Interoperability Tools. GCC 4 8 2 provi Eine vollständige Implementierung der Go 1 1 2 Release. GCC 4 8 0 und 4 8 1 implementiere eine vorläufige Version der Go 1 1 Release Die Bibliotheksunterstützung ist nicht ganz komplett. Go wurde auf GNU Linux und Solaris Plattformen für verschiedene getestet Prozessoren einschließlich x86, x8664, PowerPC, SPARC und Alpha Es kann auch auf anderen Plattformen funktionieren. Neue Ziele und zielspezifische Verbesserungen. Ein neuer Port wurde hinzugefügt, um AArch64, die neue 64-Bit-Architektur von ARM zu unterstützen. Beachten Sie, dass dies ist Ein separater Port aus dem vorhandenen 32-Bit-ARM-Port. Der Port bietet erste Unterstützung für den Cortex-A53 und die Cortex-A57-Prozessoren mit den Befehlszeilenoptionen - mcpu cortex-a53 und - mcpu cortex-a57.As von GCC 4 8 4 ein Workaround für das ARM Cortex-A53 erratum 835769 wurde hinzugefügt und kann mit der Option - mfix-cortex-a53-835769 aktiviert werden. Alternativ kann es standardmäßig aktiviert werden, indem man GCC mit dem --enable-fix-cortex - A53-835769 option. Initial Unterstützung wurde für die AArch32 Erweiterungen definiert hinzugefügt D in der ARMv8-Architektur. Code-Generierung Verbesserungen für die Cortex-A7 und Cortex-A15 CPUs. Eine neue Option, - mcpu marvell-pj4 wurde hinzugefügt, um Code für die Marvell PJ4-Prozessor zu generieren. Der Compiler kann nun automatisch generieren die VFMA VFMS REVSH und REV16 Anweisungen. Ein neues Vectorizer-Kostenmodell für erweiterte SIMD-Konfigurationen zur Verbesserung der verwendeten Auto-Vektorisierungsstrategien. Der Scheduler berücksichtigt nun die Anzahl der Live-Register, um die Menge an Verschüttungen zu reduzieren, die auftreten können. Dies sollte die Code-Performance in großem verbessern Funktionen Die Grenze kann mit der Option - fno-sched-pressure entfernt werden. Es wurden Verbesserungen an der Marvell iWMMX-Codegenerierung vorgenommen und die Unterstützung für die iWMMX2 SIMD-Einheit hinzugefügt. Die Option - mcpu iwmmxt2 kann zur Aktivierung der Codegenerierung verwendet werden Die letzteren. Eine Anzahl von Codegenerierungsverbesserungen für Thumb2, um die Codegröße beim Kompilieren für die M-Profil-Prozessoren zu reduzieren. Der RTEMS-Arm-R31-Port wurde aktualisiert, um das EABI. Code-Gen zu verwenden Ration-Unterstützung für die alten FPA - und Maverick-Gleitkomma-Architekturen wurde entfernt Ports, die zuvor auf diese Features angewiesen sind, wurden ebenfalls entfernt. Dazu gehören die Ziele. arm - - linux-gnu use arm - - linux-gnueabi. arm - - elf use Arm - - eabi. arm - - uclinux use arm - - uclinux eabi. arm - - ecos-elf keine alternative. arm - - freebsd keine alternative. arm - wince-pe keine alternative. Support für die Embedded C Fixpunkt wurde Hinzugefügt Für Details siehe das GCC-Wiki und das Benutzerhandbuch Die Unterstützung ist nicht abgeschlossen. Ein neuer Druckmodifikator r für Registeroperanden im Inline-Assembler wird unterstützt Es wird die Rohregisternummer ohne Registervorwahl ausdrucken Der Inline-Assembler in diesem Beispiel wird Code generieren, vorausgesetzt, C ist R24 zugewiesen und Val ist R8 R15 zugeordnet. Dies funktioniert, weil der GNU-Assembler einfache Registernummern ohne Registerpräfix akzeptiert. Statische Initialisierer mit 3-Byte-Symbolen werden jetzt unterstützt Dies erfordert mindestens Binutils 2 23.Allow - Mpreferred-stack-boun Dary 3 für die x86-64-Architektur mit SSE-Erweiterungen deaktiviert Da das x86-64 ABI eine 16-Byte-Stack-Ausrichtung benötigt, ist dies ABI inkompatibel und soll in kontrollierten Umgebungen eingesetzt werden, in denen Stapelplatz eine wichtige Einschränkung ist. Diese Option führt zu einem falschen Code Wenn Funktionen, die mit 16-Byte-Stack-Ausrichtung kompiliert wurden, wie z. B. Funktionen aus einer Standardbibliothek mit fehlausgerichtetem Stack aufgerufen werden. In diesem Fall können SSE-Befehle zu fehlausgerichteten Speicherzugriffsfallen führen. Darüber hinaus werden variable Argumente für 16 Byte ausgerichtete Objekte, einschließlich x87 lang, falsch behandelt Double und int128, was zu falschen Ergebnissen führt Sie müssen alle Module mit - mpreferred-stack-boundary 3 einschließlich aller Bibliotheken erstellen. Dazu gehören die Systembibliotheken und Startmodule. Support für den neuen Intel Prozessor Codename Broadwell mit RDSEED ADCX ADOX PREFETCHW ist verfügbar durch - Madx - mprfchw - mrdseed Befehlszeilenoptionen. Support für die Intel RTM und HLE intrinsics, integrierte Funktionen und Code gen Die für die Intel FXSR-, XSAVE - und XSAVEOPT-Befehlssätze verfügbar sind. Intrinsics und integrierte Funktionen stehen über - mfxsr - mxsave und - mxsaveopt zur Verfügung. New - Madress-Modus kurze lange Optionen für x32 - Maddress-mode short überschreibt Standard-64-Bit-Adressen auf 32-Bit durch Ausgeben des 0x67-Adreßgrößen-Override-Präfix Dies ist der Standard-Adreßmodus für x32.Neue integrierte Funktionen zur Erkennung von Laufzeit-CPU-Typ und ISA. A - In der Funktion builtincpuis wurde hinzugefügt, um zu erkennen, ob die Laufzeit-CPU von einem bestimmten Typ ist. Es gibt eine positive Ganzzahl auf eine Übereinstimmung zurück und null sonst Es akzeptiert ein String-Literal-Argument, der CPU-Name Beispielsweise baut builtcpuis westmere eine positive ganze Zahl zurück, wenn Die Laufzeit-CPU ist ein Intel Core i7 Westmere-Prozessor Bitte beachten Sie die Bedienungsanleitung für die Liste der gültigen CPU-Namen erkannt. Eine eingebaute Funktion builtincpusupports wurde hinzugefügt, um zu erkennen, ob die Laufzeit-CPU eine bestimmte ISA-Funktion unterstützt Rückkehr Sa Positiv-Integer auf einem Match und null sonst Es akzeptiert ein String-Literal-Argument, die ISA-Funktion Beispiel: builtincpusupports ssse3 gibt eine positive Ganzzahl zurück, wenn die Laufzeit-CPU SSSE3-Befehle unterstützt. Bitte beachten Sie die Bedienungsanleitung für die Liste der gültigen ISA-Namen Erkannt. Caveat Wenn diese eingebauten Funktionen aufgerufen werden, bevor statische Konstruktoren aufgerufen werden, wie bei der IFUNC-Initialisierung, dann muss die CPU-Erkennungsinitialisierung explizit mit dieser neu bereitgestellten integrierten Funktion ausgeführt werden. Builtincpuinit Die Initialisierung muss nur einmal durchgeführt werden Zum Beispiel ist das so, wie der Aufruf in einem IFUNC-Initialisierer aussehen würde. Funktions-Multiversioning-Unterstützung mit G. Es ist nun möglich, mehrere Funktionsversionen zu erstellen, die jeweils auf einen bestimmten Prozessor ausgerichtet sind, und ISA-Funktionsversionen haben dieselbe Signatur, aber unterschiedliche Zielattribute für Beispiel, hier ist ein Programm mit Funktionsversionen. Bitte beziehen Sie sich auf dieses Wiki für weitere Informationen. Die x86 zurück Ende wurde verbessert, um die Option - fschedule-insns zuverlässig zu verarbeiten. Diese Option kann verwendet werden, um die Anweisungen besser zu planen und führt zu einer verbesserten Leistung in bestimmten Fällen. Windows MinGW-w64-Ziele - w64-mingw benötigen mindestens r5437 aus dem Mingw-w64 Trunk. Support für neue AMD Familie 15h Prozessoren Steamroller Kern ist jetzt verfügbar durch die - March bdver3 und - mtune bdver3 options. Support für neue AMD Familie 16h Prozessoren Jaguar Kern ist jetzt verfügbar durch die - March btver2 und - mtune btver2 options. This Ziel Jetzt unterstützt die - fstack-use-Befehlszeile option. GCC kann nun Code speziell für die R4700-, Broadcom XLP - und MIPS 34kn-Prozessoren generieren. Die dazugehörigen - Mail-Optionen sind - März r4700 - März xlp und - march 34kn.- GCC generiert jetzt besser DSP-Code für MIPS 74k-Cores dank weiterer Scheduling-Optimierungen. Der MIPS-Port unterstützt jetzt die - Fack-Check-Option. GCC übergibt nun die - mmcu und - mno-mcu Optionen an den assembler. Previous Versionen von GCC wäre s Ilently akzeptieren - fpic und - fPIC für - mno-abicalls Ziele wie mips - elf Diese Kombination wurde nicht beabsichtigt oder unterstützt, und nicht generieren Position-unabhängige Code GCC 4 8 berichtet jetzt einen Fehler, wenn diese Kombination verwendet wird. PowerPC PowerPC64 RS6000. SVR4-Konfigurationen GNU Linux, FreeBSD, NetBSD nicht mehr speichern, wiederherstellen oder aktualisieren Sie das VRSAVE-Register standardmäßig Die jeweiligen Betriebssysteme verwalten das VRSAVE-Register direkt. Große TOC-Unterstützung wurde für AIX über die Befehlszeilenoption - mcmodel large hinzugefügt. Native Thread - Lokale Speicherunterstützung wurde für AIX. VMX hinzugefügt Altivec - und VSX-Befehlssätze werden jetzt implizit aktiviert, wenn Prozessoren, die diese Hardware-Features auf AIX 6 1 und höher unterstützen. Dieses Ziel wird nun eine Warnmeldung ausgeben, wenn mehrere schnelle Interrupt-Handler gefunden werden Die gleiche Kompilierungseinheit Diese Funktion kann durch die neue Befehlszeilenoption - mno-warn-multiple-fast-interrupts deaktiviert werden. S 390, System z. Support für die IBM zEnterprise z EC12-Prozessor wurde hinzugefügt Wenn Sie die Option - zähler zEC12 verwenden, wird der Compiler Code generieren, der die folgenden neuen Anweisungen verwendet. Lade - und Trap-Anweisungen.2 Neue Vergleichs - und Trap-Befehle. Rotieren und Einfügen ausgewählter Bits - ohne CC clobber. The - Mtune zEC12-Option ermöglicht zEC12 spezifische Befehlsplanung ohne Verwendung von neuen Anweisungen. Register druckempfindliche Befehlsplanung ist standardmäßig aktiviert. Das ifunc-Funktionsattribut wird standardmäßig aktiviert. Memcpy und memcmp-Aufrufe auf großen Speicher-Chunks oder mit Laufzeitlängen werden nicht generiert Inline mehr bei der Abstimmung auf z10 oder höher Der Zweck ist, die IFUNC-optimierten Versionen in Glibc zu nutzen. Die Standard-Ausrichtungseinstellungen wurden reduziert, um weniger aggressiv zu sein. Dies führt zu kompakteren Code für Optimierungsstufen außer - OsImproved Unterstützung für Die atomar eingebauten Funktionen. Eine neue Option - Modom-Modell-Modell wählt das Modell für die generierten Atomsequenzen Das folgende Modell S werden unterstützt Soft-Gusa Software GUSA Sequenzen SH3 und SH4 nur Auf SH4A-Targets werden nun auch die movco l und movli l-Anweisungen teilweise genutzt. Dies ist die Voreinstellung, wenn das Ziel sh3 - - linux oder sh4 - - linux Hardllcs Hardware ist Movco l movli l sequenzen SH4A nur soft-tcb Software Thread Control Block Sequenzen Soft-Imask Software Interrupt Flip Sequenzen nur privilegierten Modus Dies ist die Voreinstellung, wenn das Ziel sh1 - - linux oder sh2 - - linux keine Generiert Funktionsaufrufe an den jeweiligen Atom Eingebaute Funktionen Dies ist die Voreinstellung für SH64-Ziele oder wenn das Ziel nicht sh--Oxux ist. Die Option - soft-atomic wurde veraltet Es ist jetzt ein Alias ​​für - matomic-model soft-gusa. Eine neue Option - mtas Macht den Compiler die tas b-Anweisung für die atomestestandset eingebaute Funktion unabhängig vom ausgewählten Atommodell. Die Synchronisationsfunktionen in libgcc reflektieren nun das ausgewählte Atommodell beim Aufbau der Toolchain. Added Unterstützung für den mov b und mov w instru Ctions mit Verschiebung adressing. Added Unterstützung für die SH2A Anweisungen movu b und movu w. Various Verbesserungen an Code generiert für Integer Arithmetik. Erweiterungen an bedingte Zweige und Code, der das T-Bit beinhaltet Eine neue Option - Mzdcbranch sagt dem Compiler, um Null-Verschiebung zu bevorzugen Filialen Dies ist standardmäßig für SH4-Targets aktiviert. Die Pref-Instruktion wird nun von der eingebauten Funktion für SH3-Targets emittiert. Die fmac-Anweisung wird nun von der fmaf-Standardfunktion und der eingebauten integrierten Funktion ausgegeben. Mfused-madd-Option wurde zugunsten der maschinenunabhängigen - ffp-Vertragsoption veraltet. Beachten Sie, dass die fmac-Anweisung nun standardmäßig für Ausdrücke wie abc generiert wird. Dies ist aufgrund der Compiler-Standardeinstellung - ffp-contract quick. Added new Optionen - mfsrra und - mfsca, um den Compiler mit den fsrra - und fsca-Anweisungen auf anderen Zielen als SH4A zuzulassen, wo sie bereits standardmäßig aktiviert sind Builtinbswap32 integrierte Funktion Es wird nun als eine Sequenz von Swap b und Swap w Anweisungen anstelle eines Bibliotheksfunktion Aufruf erweitert. Das Verhalten der Option - mieee wurde behoben und die negative Form - mno-ieee wurde hinzugefügt, um die zu kontrollieren IEEE-Konformität von Gleitkomma-Vergleichen Standardmäßig ist - mieee nun aktiviert und die Option - ffinite-math-only implizit setzt - mno-ieee. Added Unterstützung für die eingebauten Funktionen builtinthreadpointer und builtinsetthreadpointer Dies setzt voraus, dass GBR verwendet wird, um den Thread zu halten Zeiger des aktuellen Threads Der Speicher lädt und speichert relativ zu der von builtinthreadpointer zurückgegebenen Adresse wird nun auch GBR-basierte Verschiebungsadressenmodi verwenden. Die Option - mdiv für andere Ziele als SHmedia wurde behoben und dokumentiert. Erwünschte optimierte Befehlsplanung für Niagara4.Added Unterstützung Für die Befehlszeilenoption - mcmodel MODEL Die unterstützten Modelle sind klein und groß. Dieses Ziel unterstützt nun die E3V5-Architektur über die Verwendung des neuen - mv850 E3v5-Befehlszeilenoption Es hat auch experimentelle Unterstützung für die e3v5 LOOP-Anweisung, die über die new - mloop-Befehlszeilenoption aktiviert werden kann. Dieses Ziel unterstützt nun die Befehlszeilenoption - fstack-use. Operating Systems. Support für OpenBSD amd64 X8664- - openbsd wurde hinzugefügt und die Unterstützung für OpenBSD i386 i386- - openbsd wurde verjüngt. Windows Cygwin. Executables sind nun gegen freigegebene libgcc standardmäßig verknüpft Der vorherige Standard war, statisch zu verknüpfen, was noch durch explizite Angabe von - static erfolgen kann Oder statisch-libgcc auf der Kommandozeile Allerdings wird es dringend empfohlen, da es Probleme für jede Anwendung, die Gebrauch von DLLs von GCC kompiliert wird, es sollte in Ordnung für eine monolithische eigenständige Anwendung, die nur Links gegen die Windows-DLLs, Aber bietet wenig oder gar keine Vorteile. Dies ist die Liste der Problemberichte PRs von GCC s Bug-Tracking-System, die bekanntermaßen in der 4 8 1 Release behoben werden Diese Liste ist möglicherweise nicht vollständig, dass es möglich ist Dass einige PRs, die behoben wurden, hier nicht aufgeführt sind. Die C 11 chrono std chrono systemclock und std chrono steadyclock Klassen haben ABI in GCC 4 8 1 geändert, beide sind jetzt getrennt nie typedefs von einander, beide verwenden std chrono nanosekunden Auflösung , Bei den meisten GNU-Linux-Konfigurationen std chrono steadyclock ist nun endlich monoton, und beide Klassen sind anders verstreut als in den vorherigen GCC-Releases std chrono systemclock jetzt mit std chrono microseconds bzw. std chrono Sekundenauflösung wird immer noch für rückwärts kompatibilität mit standardmäßig konfigurierten libstdc exportiert Hinweis Dass libstdc konfiguriert mit --enable-libstdcxx-Zeit verwendet wird, um ABI inkompatibel mit standardmäßig konfiguriert libstdc für diese beiden Klassen und keine ABI-Kompatibilität kann für diese Konfigurationen angeboten werden, so dass jeder C 11-Code, der diese Klassen verwendet und wurde kompiliert und verknüpft Gegen libstdc, konfiguriert mit der nicht standardmäßigen --enable-libstdcxx-time-Konfigurationsoption muss neu kompiliert werden. Dies ist der lis T der Problemberichte PRs von GCC s Bug Tracking System, die bekanntermaßen in der 4 8 2 Release fixiert werden Diese Liste ist möglicherweise nicht vollständig, dh es ist möglich, dass einige PRs, die behoben wurden, hier nicht aufgeführt sind. Dies ist die Liste der Problemberichte PRs von GCC s Bug Tracking System, die bekanntermaßen in der 4 8 3 Release behoben werden Diese Liste ist möglicherweise nicht vollständig, dh es ist möglich, dass einige PRs, die behoben wurden, hier nicht aufgeführt sind. Support für die new powerpc64le-linux platform has been added It defaults to generating code that conforms to the ELFV2 ABI. This is the list of problem reports PRs from GCC s bug tracking system that are known to be fixed in the 4 8 4 release This list might not be complete that is, it is possible that some PRs that have been fixed are not listed here. This is the list of problem reports PRs from GCC s bug tracking system that are known to be fixed in the 4 8 5 release This list might not be complete that is, it is possible that some PRs that have be en fixed are not listed here. For questions related to the use of GCC, please consult these web pages and the GCC manuals If that fails, the mailing list might help Comments on these web pages and the development of GCC are welcome on our developer list at All of our lists have public archives. Copyright C Free Software Foundation, Inc Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. SPEC CPU2006 Changes in V1 1.Last updated Date 2008-05-13 09 00 38 -0500 Tue, 13 May 2008 by Author john. To check for possible updates to this document, please see. Introduction Who Wants V1 1.SPEC CPU2006 V1 1 is an incremental update to SPEC CPU2006 V1 0 Results generated with V1 1 are comparable to results from V1 0 and vice versa V1 1 is intended to improve compatibility, stability, documentation and ease of use Changes are intended to be useful to several kinds of users. For users of new platforms. Updates to 12 benchmarks primarily to improve portability. For anyone who reads or produces a result. For researchers and developers. Documentation of the monitor hooks. Easier investigation of alternate sources or workloads, via the converttodevelopment utility. For testers of large systems. A group of 6 features to make the setup phase faster on big systems. Refinements of the submit and bind features and greatly expanded documentation thereof. For new users of the suite. Clarifications and additions to the documentation. Updated example config files. For those who test many platforms. Fewer unexpected rebuilds. The ability to bundle up a set of binaries and their associated config file, for easy transportation and use on other systems. Many other features intended to make benchmarking easier, more productive, and less error-prone, as summarized in the table of contents Depending on the level of detail at which you count, there are approximately 60 new, updated, or newly-documented user-visible features in V1 1.If you have already used SPEC CPU2006 V1 0 and already have configuration files, it is recommended that you read through this document, so as to avoid surprises during use of V1 1 Among the changes that you are likely to be affected by are the change to build directory locations the reporting of parallel flags the automatic setting of test date and the addition of debug logs If you still have USER numbers, it s time to stop now. This table of contents proceeds in rough order of time for a user of the suite you acquire a platform, ensure that you are familiar with the rules, build the benchmarks, run them, generate reports, and occasionally use utilities and other features.4 Submit lines continued.6 Trailing spaces in config files. Note links to SPEC CPU2006 documents on this web page assume that you are reading the page from a directory that also contains the other SPEC CPU2006 documents If by some chance you are reading this web page from a location where the links do not work, try accessing the referenced documents at one of the following locations. The SPEC Docs Unix or SPEC Docs Windows directory on a system where SPEC CPU2006 has been installed. The Docs directory on your SPEC CPU2006 distribution DVD. New systems supported. With this release of SPEC CPU2006, new support is added for. HP-UX 11iv1 on PA-RISC systems. MacOS X 10 1 on PowerPC systems. Systems no longer supported. With this release of SPEC CPU2006, su pport is removed for. RHAS 3r2 to RHAS 4r3 on Itanium systems. Linux on PowerPC-based systems with GLIBC 2 2 1-2 2 4.Changes to benchmarks. The following benchmark changes were made in V1 1.Added new portability flag - DSPECCPUNEEDPOSIXIDS to include the POSIX symbols uidt gidt and modet on Windows Note that this flag is the default for some Windows compilerspiling on Solaris with gcc, or gcc-compatible compilers, used to fail with messages such as because of a change in the Solaris FILE structure This problem has been fixed by removing the outdated code. Under V1 0 of SPEC CPU2006, if you compiled with gcc on ia64 Linux, the benchmark would sometimes abort abnormally with an unaligned access error, due to a jmpbuf on some Linux systems whose alignment violated the ABI You can now optionally set SPECCPUIA64GCCALIGNMENT to force jmpenv in scope h to be better aligned. Removed line directives from c-parse c. Several code segments which were protected by if defined SPECCPU2006 should have said S PECCPU and were fixed The effect of the change is to increase the degree to which both gcc and non-gcc compilers are presented with the same souce code when compiling. Internal system calls which set the OS scheduling priority were disabled The effect of this change is minimal, because when it is run from the SPEC harness, the GROMACS line option - nice 0 is included, which also disables these system calls For V1 0, a user studying outside the runspec harness might have encountered inconsistent measurements if - nice 0 was not used. Replaced a GPL version of the C99 math function erfc with a public domain version. Added new portability flag - DSPECCPUHAVEERF to have the benchmark use a system s erfc library function instead of the version included with the benchmark This flag is the default on some platforms. Rename getoptinternal to getoptinternal to avoid possible name clash user functions are not supposed to start with underscore. Added explicit inclusion of cstring header file. Added explic it inclusion of cstring header file in. Added some missing prototypes in quadrature h and tria h. In V1 0, some output was written to stderr That output is now written to regular files SPEC s validation has been adjusted to validate the new output. In V1 0, approximately 25,000 lines of output were duplicated to both the log file and to standard error The duplicate output has been elimated from stderr. In config h, there is a list of platforms that have complex h included Additional platforms can now be accomodated by setting - DSPECCPUNEEDCOMPLEXH. Some compilers object to having TRUE and FALSE used in this enum in parsetcommon h. which implicitly redefines FALSE to 0 and TRUE to 1 Although these are the same values they already had, some compilers object to the redefinition A simple solution is to undefine these just before the enum, which can be done by setting the new flag - DSPECCPUREDEFTRUEFALSE. Renamed random h to avoid clashes with system headers. Added new portability flag - DSPECCPUNEE DIOH to include the header file io h on Windows Previously, io h was only included if MSCVER was defined by the compiler. Fixed a Fortran 90 standards violation where two associated dummy arguments were defined during the execution of a subprogram Note that this update used the same fix as WRF version 2 2 is based on WRF version 2 1.In a bit more detail There is a subroutine in moduleblysu F90 that is called in violation of the Fortran standard about variable overlapping The routine tridin has three variables cu, r1,r2 that are passed in the same parameters as au, a1,a2 in both calls The new code has fixed this problem by making copies of the read-only versions of the duplicated parameters before the call. Added explicit inclusion of cstring header file. Multiple portability changes for use with the PGI C compiler on Windows. Added multiple portability changes for use with the ParallelNavi compiler on Solaris To use, you ll need to set - DSPECCPUPARANAVI. Run Rules Changes. Explain a philosophy of estimates in rule 1 6 and clarify marking of estimates in rule 4 8.Tweak rule 2 1 1 to clarify that the rule is discussing benchmark source code. Clarify documentation of system state and tuning, in rules 3 1 2 4 2 3 paragraphs b and g , and 4 2 4 paragraphs f, g. Add rule 3 2 5 for parallel setup and parallel test. Expand rule 4 2 3 on automatic parallelization and reporting thereof. Add new rule 4 2 6 regarding disclosure of configurations for user-built systems. In rule 4 3 2 allow conversions in both directions between SPECspeed metrics and 1 copy SPECrate metrics. In rule 4 6 note that a required disclosure is considered public information. Building Benchmarks. Build directories separated Benchmarks are now built in directories named or, on Windows, , rather than under the benchmark s run subdirectory The change is intended to make it easier to copy, backup, or delete build and run directories separately from each other It may also make problem diagnosis easier in some situations, sin ce your habit of removing all the run directories will no longer destroy essential evidence 10 minutes before the compiler developer says Wait - what exactly happened at build time. If you prefer the V1 0 behavior, you can revert to it by setting buildinbuilddir to 0.You can now bundle up a set of binaries and their associated config file, for easy transportation and use on other systems. WARNING Although the features to create and use bundles are intended to make it easier to run SPEC CPU2006, the tester remains responsible for compliance with the run rules And, of course, both the creators and the users of bundles are responsible for compliance with any applicable software licenses. Parallel builds on Windows too Users of Microsoft Windows systems can now use multiple processors to do parallel builds, by setting makeflags for example. This feature has worked with SPEC CPU testing on Unix for many years what s new in CPU2006 V1 1 is the ability to use it on Windows Note that requesting a parallel build with makeflags - j N causes multiple processors to be used at build time It has no effect on whether multiple processors are used at run time, and so does not affect how you report on parallelism. Unexpected rebuilds reduced In V1 0, the tools were much more likely to trigger automatic rebuilds of the benchmark binaries than they are in V1 1, because unrecognized options e g a mis-spelled CXXOPTIMZIE or a user-defined option such as MYOPTS would be passed to specmake and the tools had no way to know what specmake did with such options Now, the tools record only what is actually used by specmake plus the options that are sent to the shell e g via fdopre0 With this more careful recording, config file changes do not trigger rebuilds unless they actually affect the generated binary. Running Benchmarks. Parallel Setup For reportable runs, substantial time may be required during the setup phase, as the tools write run directories for every copy, and validate that benchmark binarie s get the correct answers for the non-timed test train workloads SPEC CPU2006 V1 1 provides several new features to allow these operations to complete more quickly by optionally doing more operations in parallel parallelsetup paralleltest parallelsetuptype parallelsetupprefork benchpostsetup and postsetup. During testing of V1 1, a very large server with over 600 hwthreads was observed to complete the binary validation phase about 8x faster using paralleltest, and the ref directory setup phase more than 2x faster with parallelsetup The net time saved on this very large server was more than 10 hours. Your mileage may vary. The effects of these options are much less pronounced on small servers. The effects are strongly affected by your disk setup. Asking your disk system to do more than it can handle may make your setup phase slower, not faster For example, asking a disk with a single actuator arm to do parallel setup of 30 copies may cause the disk to spend most of its time seeking. When cons idering your disk layout options, bear in mind that the run rules require use of a single file system. Note that these setup features parallelsetup paralleltest parallelsetuptype and parallelsetupprefork control parallelism during the preparation phase for running the benchmarks, not the actual runs Therefore, they have no effect on the setting of the report field. Auto Parallel Yes No. Per-benchmark basepeak and copies - behavior change If you select basepeak 1 for an individual benchmark, the number of copies in peak will be forced to be the same as in base Note that in SPEC CPU2006 V1 0, you could set basepeak for a benchmark, and still change the number of copies in peak this was deemed to be an error If you want to run the same tuning in both base and peak, while changing the number of copies, you will need to build two binaries with the same compiler switches. Per-benchmark bind The bind list can now differ on a per-benchmark basis in peak Allowing this difference was viewed as a con venience, since the run rules already allow the submit command to differ on a per-benchmark basis in peak. The PreENV config file option allows setting of environment variables prior to the exectuion of runspec. Run-time monitoring The monitor hooks have been a little-known feature of the SPEC CPU toolset for many years They were first described in the ACM SIGARCH article SPEC CPU2006 Benchmark Tools and are now further described in The monitor hooks allow advanced users to instrument the suite in a variety of ways SPEC can provide only limited support for their use if your monitors break files or processes that the suite expects to find, you should be prepared to do significant diagnostic work on your own. SPECUSERNUM no longer recognized The field SPECUSERNUM was deprecated in V1 0 of SPEC CPU2006, in favor of SPECOPYNUM SPECUSERNUM is no longer recognized in V1 1 No error message is printed If you still have user numbers lurking in your config file, make them into copy numbers, please. Auto Parallel - changes to handle common cases If benchmarks are automatically optimized to use multiple threads, cores, and or chips at run time, the tester needs to indicate this in the report as. Auto Parallel Yes. For V1 0, it was sometimes difficult to ensure that reports were accurate, in part because there can be multiple sources of run-time parallelism as described in the run rules. With SPEC CPU2006 V1 1, the V1 0 method of filling out the above field, swautoparallel has been retired, and three new features have been introduced to better reflect these sources of parallelism. When writing a flags file, the parallel flag attribute should be set for compiler flags that cause binaries to be multi-threade d Then, when binaries that use those flags are run, the report type will be listed as Auto Parallel Yes. The config file field swparallelother should be set when there are other non-compiler sources of parallelism. A rawfile-only field, swparalleldefeat can be used to indicate that, despite any other settings, a tested system has been forced to run in a single-threaded mode for example, by removing all but one processor. The intent is that the most common case will be handled automaticallymonly, the SPEC tools will use i to automatically determine whether the run is parallel For this case, ii and iii will not be needed. If your source of parallelism is not visible to the SPEC toolset, you can set ii. Rarely, you can take a software stack which appears to be parallel, but explain with iii why it was not. Overall, the setting of the Auto Parallel field in reports can be thought of as if it were derived from this logic. or for the benefit of those readers who think in FORTRAN, it is as if the de rivation were. CSV format updated - If you populate spreadsheets from your runs, you probably shouldn t be doing cut paste of text files you ll get more accurate data by using --outputformat csv The V1 1 CSV output now has a format that includes much more of the information in the other reports All runs times are now included, and the selected run times are listed separately The flags used are also included Although details of the new features are not shown in the documentation, you should explore them, by taking the new CSV out for a test drive It is hoped that you will find the V1 1 format more complete and more useful. Flag reporting - multiple files supported, flag order preserved, report readability There are several changes to reporting on compiler flags. You can now format a single result using multiple flags files This feature is intended to make it easier for multiple results to share what should be shared, while separating what should be separated Common elements such as a certa in version of a compiler can be placed into one flags file, while the elements that differ from one system to another such as platform notes can be maintained separately Suggestions on use of this feature can be found in. The flag reporter now does a better job of reporting flags in the same order in which they appeared on the command line. Flag reporting has been re-organized in an attempt to improve readability. Within the Optimization Flags section, the report no longer prints phrases such as Fortran benchmarks except as noted below because readers may not remember which benchmarks are in Fortran Instead, all the Fortran benchmarks are enumerated, and if some use the same flags as others, that fact is noted in line, rather than at the top of the list. Within the Portability Flags section, benchmarks appear in order by number, rather than ordered by language. When the reporter detects that base and peak are sufficiently different from each other e g different compilers, or different porta bility options the flags report is ordered to put all the base information first, then all the peak information - for example. Graphs cleaned up. Graphs have been changed to reduce the amount of shading, and to reduce painting of other pixels that were not essential to the data being presented with a tip of the hat to Professor Tufte s notion of reducing chartjunk , or apologies, depending on the reader s opinion of the change. Report names have changed. In CPU2006 V1 0, final reports had names of the form. for example, and so forth The form of the file names has changed to now be. for example. There are two reasons for this change. For CPU2006, all reportable runs use a workload named ref , but this is not necessarily true for other benchmarks that use the same toolset Designating the workload in the file name reduces possible ambiguity. If you select the test or train workloads with the --size switch , output files for V1 0 were already tagged with the workload designator this change causes r ef to match the other two. Note For V1 0, a reportable run would generate three files and For V1 1, for a reportable run, you will see only You won t see or unless you say --size test or --size train in your runspec command. Seconds are reported with more digits. Background For certain values, the SPEC tools print 3 significant digits This is intentional For example, if one system has a SPECintrate2006 performance of 1234 456 and another has a SPECintrate2006 performance of 1229 987, it is arguable that the performance of these systems is not materially different Given the reality of run-to-run variation which is, sometimes, on the order of 1 , it makes sense to report both systems SPECintrate2006 as 1230.Although there is agreement that it is acceptable to round SPEC s computed metrics to 3 significant digits, it has been noted that the argument is weaker for rounding of original observations In particular, if we wish to acknowledge the reality of run to run variation, then it seems reas onable to report a time of 1234 456 seconds using an integral number of seconds 1234 , rather than rounding to the three significant digits, which in this case would be rounding to the nearest 10 seconds 1230.Change made Ever since the release of V1 0 of SPEC CPU2006, results posted on SPEC s web site such as the HTML, PDF, and text formats have used 3 significant digits for computed metrics, and seconds larger than 1000 have been reported as an integral number of seconds As of V1 1, reports produced on your own test systems now behave the same way. The Submission Check report is now automatically included in the outputformat list when using rawformat This change was made because the typical use of rawformat is to create final submission quality reports Even if you don t plan to submit your result to SPEC, the checks that are done by Submission Check can help you to create reports that are more complete and more readable. The testdate is now automatically set from the system clock, and y ou should not set it yourself. New Utilities Features. Convert to Development In order to assist with compliance with the run rules so that results are meaningful and comparable , the SPEC CPU tools perform various checks to ensure that benchmark code, workloads, and tools match the original distribution Sometimes, though, researchers or developers may want to work in an environment without these checks, for example, when modifying code to add performance instrumentation. Prior to V1 1, doing so typically required that you abandon the tools With V1 1, you now have another choice you can continue using the SPEC supplied toolset in a development sandbox, via the converttodevelopment utility. Dump alternative source dumpsrcalt is a utility which shows you the content of. The index utility remains UNSUPPORTED, but is now documented for the first time. Make alternative source makesrcalt is a utility which is used to create packages with newly developed alternative sources This utility is ehanced in, and is documented for the first time in, V1 1.ogo top If you type ogo without any parameters, or if you type ogo top the command sets your current directory to GO instead of to SPEC. The portprogress utility is documented now. The specrxp utility validates flags files It is called automatically, or you can call it directly if you wish. SPECspeed metrics from SPECrate test Using rawformat, you can now convert a 1-copy SPECrate result to a SPECspeed result. Other New and Changed Tools Features. Benchmark lists and sets Two formerly undocumented features are now documented your config file can reference benchmark lists and sets Set references use the various bset files that are found SPEC benchspec CPU2006 or SPEC benchspec CPU2006 If you are a user who already has noticed this feature, please note that the definitions of the bsets have changed, and the number of bsets has been reduced. Debug logs Failed runs now leave behind additional detail, in files such as Temporary files are also left behind after a failed run If you are managing disk space on a tight budget, you ll need to adjust your cleaning methods. Keeping temporaries If you are having trouble debugging your test setup for example, if your new submit command or paralleltest option is failing , you may want to try the new keeptmp feature When this option is set, the above-mentioned debug log is kept, along with the various temporary files that it mentions. If you leave keeptmp at its default setting, temporary files will be automatically deleted after a successful run If you are managing disk space on a tight budget, and keeping temporaries, you ll almost certainly need to adjust your cleaning methods. submit lines continued It is now possible to append a numeral to submit lines, to continue your submit commands over several lines This feature is intended to improve the readability of your config file when using the submit feature. Submit notes The tools will now automatically insert a section with notes on your su bmit command for runs that use submit You can customize the section. Trailing spaces are now stripped in config files, unless preceded by a backslash, as described in the section on whitespace. Documentation Updates. Documentation has been added for the new features mentioned in this document Most of the changes are linked from the descriptions above A few items might not be immediately obvious from the above links, and are called out here. A new chapter About Alternate Sources was added. A new section on automatic rebuilds suggests a way to test whether proposed changes would force a rebuild without actually doing the build. More examples are provided for how to specify a bind list, including use of a here document. Explain that you are allowed to change the feedback options and show how to find out the default options Provide a couple of examples of fdo modification. The discussion of free form notes for readers has been substantially expanded. The documentation now tells you what happens wit h macros that aren t defined if you try to use them. All options that affect runspec are described together In V1 0, there were two tables, one for the options that could be mentioned either on the command line or in the config file, and a separate table for options that can only be mentioned in a config file. A sidebar about quoting was added, to try to help reduce confusion when you are trying to ensure that variables are interpreted by the correct software. The documentation of log files now suggests some useful search strings that can help you as you try to find your way through a log. The documentation of submit was rewritten and expanded. Flag file types have been clarified, using an example that points to the three files for result 00001, as posted at. A complete example is provided to show how you can edit a flags file and use rawformat to incorporate it. A Recommended Practices section has been added. The discussions of replacement of example text - both example and exreplacement - ha s been considerably expanded to explain the difference between the two, and examples of their use are shown. The description of directory sharing via outputroot now starts with a simple summary of the steps. More details are given about --review. The documentation now describes the run order for reportable runs. The output format subcheck is explained. The description of --update now explains that additional items might be updated, not just your flags files. Updated Feature Index. These user-visible features are new, updated, or newly documented for SPEC CPU2006 V1 1.To compile SPEC CPU2006 benchmark suite for SimpleScalar based simulators. More generically, compile SPEC CPU2006 suite for Alpha-OSF based systems. Possible Solutionspile applications on a system which is Alpha-dec-OSF and use the binary AS IS for SimpleScalar However c code of SPEC 2K6 seems quite complex which are hard to compile with older version of glibc This means that one requires not just a system with Alpha-dec-OSF but al l the latest compilers on that system to compile c, c and Fortran source code. Use a cross-compiler, there are many available in Internet, which compiles c, c and Fortran code for alpha-dec-osf Most of the cross compilers are based on gcc. My Approachpiling all the source code on a alpha-dec-osf machine would be ideal However I don t have access to any such machine at the moment so I gave an attempt to compile SPEC 2K6 using a cross-compiler There are two options either build one or use one if someone has already built a cross-compiler for the exact system in which you want to compile the applications. Cross-Compiler Approach. Sreepathi Pai describes a method to build a cross-compiler from gcc, glibc, and Alpha OSF 1 system headers Here is the link to his project page if you wish to repeat the experiment We have build a cross-compiler using his method Here it is. Dan Kegel describes how to build cross-tools for almost any ISA-OS pair here. M5Sim project page also have few cross-compilers and their pre-complied binaries here. One of the latest and best cross-compiler is crosstool-ng which is available here We built a cross-compiler for alpha-linux-gnu system and successfully compiled 27 applications out of 29 from SPEC 2K6 suites However, Alpha-Linux ISA OS generates elf64-alpha format whereas SimpleScalar Alpha-OSF requires ecoff-littlealpha format One can use objcopy utility to translate among those two formats, however, the biggest challenge is system calls implementation in SimpleScalar More about this is in Alpha-Linux Support in SimpleScalar Section. Alpha-Linux Support in SimpleScalar. One of the challenges with current SimpleScalar tool is that it only accepts alpha-osf binaries and it is hard to find out good up-to-date tool-chain for this architecture OS Most systems have Alpha-Linux and an up-to-date tool-chain is also available for this tuple Hashem Hashemi ported SimpleScalar for Alpha-Linux and if you want it, here is the link to his project page Although he doe sn t mention about the changes which he has to make, in order to support alpha-linux, it is not so difficult Look into syscall c, loader c located in target-alpha-linux folder An additional file elf64 c is also added which adds support for elf64 format as oppose to ecoff c which was originally there to support ecoff-littlealpha format. System Requirements for SPEC CPU2006.32-bit system with at least 1 GB of memory.64-bit system with at least 2 GB of memory. At least 8 GB of disk space. Anything less would cause problems and you may end up measuring the speed of your system paging rather than actual benchmarks speed. Installation of SPEC CPU2006.Copy the whole folder called spec-cpu2006 from DVD to your home or destination folder wherever you wish to keep them. In order to install invoke the from. If the installation package is able to identify your architecture and configuration correctly it would return with success. Next step is to source cshrc from the. spec-cpu2006 folder This would load the additional evars which are needed for suite. Multiple Inputs for Same Benchmark. Some benchmarks have multiple inputs For example gcc the GNU C Compiler has 7 different inputs in the form of different data files to be used during execution I believe that it is common practice to select one of the inputs to use with SimpleScalar, although a true SPEC run on a machine requires all of the inputs be run I think That is, results are reported for one input set for gcc in a paper, not for every input set Some people indicate which input set they use by suffixing the benchmark name with the input set name for example, gcc-scilabpilation of SPEC CPU2006.Although you can locate the source code of individual benchmarks from benchspec folder and try to compile each benchmarks manually but that s not the preferred way SPEC also provides few tools to build run the benchmarks on your system and create desired binaries All tools are located in bin folder We will u se those tools to build and run some of the applications. Clean up all the run and build directories if you need to in order to re-claim space. runspec --action scrub all. Build for alpha-linux using the base configuration. runspec --action build --tune base bzip2.Upon successful building, log is created in. result folder and binary in. Run a benchmark for test input. runspec --size test --tune base --noreportable --iterations 1 bzip2.Run a benchmark for full run with reference input. runspec --size ref --noreportable --iterations 1 bzip2.Build all the benchmarks. runspec --size ref all. Execute a reportable run of whole suite. runspec --action validate all. Build, runs and validates all the benchmarks for correct output. SPEC CPU2006 Run on ACALSRV. ACALSRV is a Quad core machine in our lab Each core is two-way SMT and it is 64-bit linux box In order to test its compute power we ran few benchmarks on this machine and compared the timing with a reference machine Base Ref is time taken to run the ap plication on SPEC2K6 prescribed base machine and Base Run Time is time taken to run the application on ACALSRV machine. ACALSRV is approx 14x faster than SPEC2K6 base reference machine. Cross Compilation of SPEC CPU Benchmarks. In order to cross-compile SPEC CPU 2K6 for alpha architecture change the configuration file in config folder Look for CC, CXX and FC flags and supply the correct path of cross-compiler We have following cross-compilers at the moment. alpha-dec-osf4-gcc cross compiles c source codes to alpha-osf binary. alpha-dec-osf4-g77 cross compiles Fortran source codes to alpha-osf binary. For c we don t have any cross compiler at present. Alpha OSF4 ecoff Binaries. If you don t have inputs which you are suppose to purchase from spec corp for the applications then you can t use them You can use the command lines from this page to simulate the spec 2k6 benchmarks. Single Thread Simulation Results. Finally, the experience brings some results too We were able to compile and simulate 12 a pplications 5 INT and 7 FP for single thread using SimpleScalar. Simulator Configurations. Simulation window 100 Million INS. Issue Decode Commit 8 4 6.L1 Cache Size 32 KB 64B word, 4-Way. L2 Cache Size 1 MB 128B word, 8-Way. Base configuration and reference inputs.


No comments:

Post a Comment