Als «compiler-optimization» getaggte Fragen

Bei der Compileroptimierung wird ein Compiler angepasst, um die Laufzeit oder die Objektgröße oder beides zu reduzieren. Dies kann mithilfe von Compiler-Argumenten (z. B. CFLAGS, LDFLAGS), Compiler-Plugins (z. B. DEHYDRA) oder direkten Änderungen am Compiler (z. B. Ändern des Quellcodes) erreicht werden.


12
Warum optimiert GCC nicht a * a * a * a * a * a bis (a * a * a) * (a * a * a)?
Ich mache eine numerische Optimierung für eine wissenschaftliche Anwendung. Eine Sache, die mir aufgefallen ist, ist, dass GCC den Aufruf pow(a,2)durch Kompilieren optimiert a*a, aber der Aufruf pow(a,6)nicht optimiert ist und tatsächlich die Bibliotheksfunktion aufruft pow, was die Leistung erheblich verlangsamt. (Im Gegensatz dazu eliminiert der ausführbare Intel C ++ …

10
Das Ersetzen eines 32-Bit-Schleifenzählers durch 64-Bit führt auf Intel-CPUs zu verrückten Leistungsabweichungen mit _mm_popcnt_u64
Ich suchte nach dem schnellsten Weg zu popcountgroßen Datenfeldern. Ich habe einen sehr seltsamen Effekt festgestellt : Durch Ändern der Schleifenvariablen von, unsignedum uint64_tdie Leistung auf meinem PC um 50% zu senken. Der Benchmark #include <iostream> #include <chrono> #include <x86intrin.h> int main(int argc, char* argv[]) { using namespace std; if …



1
Warum optimiert der Rust-Compiler den Code nicht unter der Annahme, dass zwei veränderbare Referenzen keinen Alias ​​haben können?
Soweit ich weiß, kann Referenz- / Zeiger-Aliasing die Fähigkeit des Compilers beeinträchtigen, optimierten Code zu generieren, da sie sicherstellen müssen, dass sich die generierte Binärdatei korrekt verhält, wenn die beiden Referenzen / Zeiger tatsächlich Alias ​​sind. Zum Beispiel im folgenden C-Code: void adds(int *a, int *b) { *a += *b; …

12
Wie kompiliere ich Tensorflow mit SSE4.2- und AVX-Anweisungen?
Dies ist die Nachricht, die beim Ausführen eines Skripts empfangen wird, um zu überprüfen, ob Tensorflow funktioniert: I tensorflow/stream_executor/dso_loader.cc:125] successfully opened CUDA library libcublas.so.8.0 locally I tensorflow/stream_executor/dso_loader.cc:125] successfully opened CUDA library libcudnn.so.5 locally I tensorflow/stream_executor/dso_loader.cc:125] successfully opened CUDA library libcufft.so.8.0 locally I tensorflow/stream_executor/dso_loader.cc:125] successfully opened CUDA library libcuda.so.1 locally I …

2
Was ist &&& Betrieb in C.
#include <stdio.h> volatile int i; int main() { int c; for (i = 0; i < 3; i++) { c = i &&& i; printf("%d\n", c); } return 0; } Die Ausgabe des obigen Programms, das mit kompiliert wurde, gccist 0 1 1 Gibt mit der Option -Walloder eine Warnung …

3
Warum generiert GCC eine so radikal unterschiedliche Baugruppe für nahezu denselben C-Code?
Beim Schreiben einer optimierten ftolFunktion habe ich ein sehr merkwürdiges Verhalten festgestellt GCC 4.6.1. Lassen Sie mich Ihnen zuerst den Code zeigen (aus Gründen der Klarheit habe ich die Unterschiede markiert): fast_trunc_one, C: int fast_trunc_one(int i) { int mantissa, exponent, sign, r; mantissa = (i & 0x07fffff) | 0x800000; exponent …




2
Grenzen des Nat-Typs in Shapeless
In Shapeless stellt der Nat-Typ eine Möglichkeit dar, natürliche Zahlen auf Typebene zu codieren. Dies wird beispielsweise für Listen mit fester Größe verwendet. Sie können sogar Berechnungen auf Typebene durchführen, z. B. eine Liste von NElementen an eine Liste von KElementen anhängen und eine Liste zurückerhalten, von der zum Zeitpunkt …



Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.