Это довольно интересный вопрос, поэтому позвольте мне установить сцену.Я работаю в Национальном музее вычислительной техники, и нам только что удалось запустить суперкомпьютер Cray Y-MP EL с 1992 года, и мы действительно хотим посмотреть, как быстро он может работать!
Мы решили, что лучшеЧтобы сделать это, нужно было написать простую программу на C, которая вычисляла бы простые числа и показывала, сколько времени понадобилось для этого, а затем запускала программу на современном быстром настольном ПК и сравнивала результаты.
Мы быстро пришлис этим кодом для подсчета простых чисел:
#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);
}
, который на нашем двухъядерном ноутбуке с Ubuntu (The Cray работает под UNICOS) работал отлично, получая 100% -ную загрузку ЦП и занимая около 10 минут или около того.Когда я вернулся домой, я решил попробовать его на своем современном шестигранном игровом ПК, и именно здесь у нас появились первые проблемы.
Сначала я адаптировал код для работы в Windows, поскольку именно на этом игровой ПКиспользовал, но был опечален, обнаружив, что процесс получает только около 15% мощности процессора.Я подумал, что Windows должна быть Windows, поэтому я загрузился на Live CD Ubuntu, думая, что Ubuntu позволит запустить процесс с его полным потенциалом, как это было ранее на моем ноутбуке.
Однако я получил только5% использование!Итак, мой вопрос: как я могу адаптировать программу для запуска на моем игровом компьютере в Windows 7 или Linux с 100% загрузкой процессора?Другая вещь, которая была бы хороша, но не обязательна, - это если конечный продукт может быть одним .exe, который можно легко распространять и запускать на компьютерах с Windows.
Большое спасибо!
PS Конечно, этоЭта программа на самом деле не работала со специализированными процессорами Crays 8, и это совсем другая проблема ... Если вы знаете что-нибудь об оптимизации кода для работы на суперкомпьютерах Cray 90-х, напишите нам тоже!