Dies ist eine ziemlich interessante Frage, also lassen Sie mich die Szene einstellen. Ich arbeite im National Museum of Computing, und wir haben es gerade geschafft, einen Cray Y-MP EL-Supercomputer von 1992 zum Laufen zu bringen, und wir wollen wirklich sehen, wie schnell es gehen kann!
Wir entschieden, dass der beste Weg, dies zu tun, darin bestand, ein einfaches C-Programm zu schreiben, das Primzahlen berechnet und zeigt, wie lange es dafür gedauert hat, das Programm dann auf einem schnellen modernen Desktop-PC auszuführen und die Ergebnisse zu vergleichen.
Wir haben uns schnell diesen Code ausgedacht, um Primzahlen zu zählen:
#include <stdio.h>
#include <time.h>
void main() {
clock_t start, end;
double runTime;
start = clock();
int i, num = 1, primes = 0;
while (num <= 1000) {
i = 2;
while (i <= num) {
if(num % i == 0)
break;
i++;
}
if (i == num)
primes++;
system("clear");
printf("%d prime numbers calculated\n",primes);
num++;
}
end = clock();
runTime = (end - start) / (double) CLOCKS_PER_SEC;
printf("This machine calculated all %d prime numbers under 1000 in %g seconds\n", primes, runTime);
}
Was auf unserem Dual-Core-Laptop mit Ubuntu (The Cray läuft UNICOS) perfekt funktionierte, eine 100% ige CPU-Auslastung erreichte und ungefähr 10 Minuten dauerte. Als ich nach Hause kam, beschloss ich, es auf meinem modernen Hex-Core-Gaming-PC zu versuchen, und hier bekommen wir unsere ersten Ausgaben.
Ich habe den Code zuerst für die Ausführung unter Windows angepasst, da dies vom Gaming-PC verwendet wurde. Ich war jedoch traurig, dass der Prozess nur etwa 15% der CPU-Leistung beanspruchte. Ich dachte, dass Windows Windows sein muss, also startete ich eine Live-CD von Ubuntu und dachte, Ubuntu würde es dem Prozess ermöglichen, sein volles Potenzial auszuschöpfen, wie es zuvor auf meinem Laptop geschehen war.
Allerdings habe ich nur 5% Auslastung! Meine Frage ist also, wie ich das Programm so anpassen kann, dass es auf meinem Spielautomaten unter Windows 7 oder unter Linux mit 100% CPU-Auslastung ausgeführt wird. Eine andere Sache, die großartig, aber nicht notwendig wäre, ist, wenn das Endprodukt eine EXE-Datei sein kann, die einfach verteilt und auf Windows-Computern ausgeführt werden kann.
Danke vielmals!
PS: Natürlich hat dieses Programm mit den Crays 8-Spezialprozessoren nicht wirklich funktioniert, und das ist ein ganz anderes Problem ... Wenn Sie etwas über die Optimierung von Code für die Arbeit mit Cray-Supercomputern der 90er Jahre wissen, rufen Sie uns auch an!