2016-04-28 3 views
0

Ich verstehe, dass die Antwort auf diese Frage Compiler/OS spezifisch sein kann, also habe ich versucht, so viel Details im Titel wie möglich zur Verfügung zu stellen.Was ist das Standardverhalten für g ++ kompilierten Code in Bezug auf Threads auf einem Intel-Prozessor (Linux)?

Sagen wir, ich kompiliere eine sehr einfache Schleife wie die Summe aller Zahlen von eins zu einer Million. Wenn dieser Code auf einem Intel-Prozessor (i7-3770k) ausgeführt wird, wird er standardmäßig mehrere Threads nutzen? Stehe ich auf, um mehr Leistung zu erzielen, indem ich die Schleife explizit parallel mache?

+0

Code für Threading muss explizit geschrieben werden. Aber der i7 könnte Code auf nichtlineare Weise ausführen, siehe [Out-of-Order-Ausführung] (https://en.wikipedia.org/wiki/Out-of-order_execution). –

+0

Ich habe nichts schnell in Bezug auf Threads gesehen. Aber ... von gcc.gnu.org "Vektorisierung wird durch das Flag -tretre-vectorize und standardmäßig bei -O3 aktiviert." Sie erhalten also eine Vektorisierung, ohne danach zu fragen. – Matt

Antwort

0

C++ verwendet das Idiom, das Sie nur für das bezahlen, was Sie verwenden. Multi-Threading implizit zu aktivieren würde diejenigen bestrafen, die dies nicht tun. Sie müssen es also selbst aktivieren.

Das heißt, in C++ 17 erhalten wir parallel algorithms oder Sie können eine schreiben - es ist nicht so schwer.

Verwandte Themen