2009-10-31 15 views
6

Kürzlich habe ich meinen Heim-PC auf eine Quad-Core-CPU und ein 64-Bit-Betriebssystem aufgerüstet. Ich habe einige frühere Erfahrungen mit C/C++ und ich "jucke" wirklich, einige 64-Bit-CPU-Fähigkeiten auszuprobieren. Was ist ein gutes Programm vom Typ "Hello World", das 64-Bit-Multicore-Fähigkeiten demonstriert, indem es einige einfache Dinge tut, die in 32-Bit-Single-Core-Code überhaupt nicht gut funktionieren?Was ist ein gutes Mehrkern-64-Bit-Programm "Hello World"?

Ich versuche nur ein "Gefühl" dafür zu bekommen, wie diese neuen CPUs die Leistung von C/C++ - Code in extremen Fällen beeinflussen können.

+3

so ziemlich immer noch 'cout << "Hallo Welt" << endl;' – Jherico

Antwort

2

OpenMP wäre eine einfache Möglichkeit, mit Multi-Core-Programmierung in C++ zu spielen, um. Das Wikipedia-Beispiel macht wirklich keinen Prozessor-intensiven Prozess, aber Sie können den "cout" durch eine unabhängige, lang laufende Funktion ersetzen.

OpenMP

Soweit 64-Bit, wird von einigen Stellen viel Ihre Leistungssteigerung kommen.

Höherer Durchsatz, da alle Datenelemente breiter sind der Prozessor kann mehr Daten in einem bestimmten Taktzyklus verarbeiten. Werfen Sie einen Blick auf einige der Microsoft-Benchmarks für Exchange Server, die jetzt nur noch 64-Bit-Unterstützung bieten, da der Durchsatz enorm zunimmt.

Weitere Register, da die 64-Bit-Architektur eine große Anzahl von Registern hat die meisten Funktionsparameter und der Rückgabewert kann mit Registern übergeben werden.

In der x86 ABI mit einigen calling conventions konnte ein oder zwei Parameter über Register übergeben werden und der Rest muss auf den Stack geschoben werden. Bei einer gemeinsamen Aufrufkonvention wie cdecl wird kein einzelner Parameter oder Rückgabewert in einem Register abgelegt. Da sich der Stack im Hauptspeicher befindet, kann dies ein großer Leistungshit sein.

1

Wahrscheinlich möchten Sie etwas tun, das rechenintensive Operationen in großen Zahlen oder großen Speicherbereichen unabhängig ausführt, wie zum Beispiel Raytracing oder Proteinfaltung.

Die wichtige Sache zu beachten ist, dass 64-Bit- oder Multicore-Prozessoren nicht wirklich alles tun können, was Single-Core-Prozessoren NICHT tun können, im Wesentlichen tun sie es einfach schneller und zu größeren Zahlen.

1

Wenn man bedenkt, wie viele verschiedene Parallelitätsmodelle es gibt und wie sie jeweils an verschiedene Aufgaben angepasst sind, gibt es keine befriedigende Antwort auf Ihre Frage. Es hängt alles davon ab, was Sie wirklich schließlich tun möchten. Sie sollten das Modell auswählen, das an das angepasst ist, was Sie tun möchten (wenn es nicht der vorherigen Einschränkung widerspricht, versuchen Sie message-passing, es ist erfrischend einfach im Vergleich zu anderen).

Ich würde sagen, dass Jherico Zunge-in-cheek Antwort in den Kommentaren richtig ist. Für eine so einfache Aufgabe wie "Hallo Welt" ist das beste Modell überhaupt keine Parallelität.

Verwandte Themen