これは非常に興味深い質問なので、状況を説明しましょう。私は国立コンピューティング博物館で働いており、1992 年の Cray Y-MP EL スーパー コンピューターを実行することに成功しました。
これを行う最善の方法は、素数を計算して計算にかかった時間を表示する単純な C プログラムを作成し、そのプログラムを最新の高速デスクトップ PC で実行して結果を比較することであると判断しました。
素数を数えるこのコードをすぐに思いつきました。
#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 を実行) では、これは完全に機能し、CPU 使用率が 100% になり、約 10 分ほどかかりました。家に帰って、ヘキサコアの最新のゲーミング PC で試してみることにしました。ここで最初の問題が発生します。
ゲーム用 PC が Windows を使用していたため、最初にコードを Windows で実行するように調整しましたが、プロセスが CPU の能力の約 15% しか得られていないことがわかり、残念でした。WindowsはWindowsであるに違いないと考えたので、UbuntuのLive CDを起動して、以前のラップトップで行ったように、Ubuntuがプロセスを最大限に実行できると考えました。
ただし、使用率は 5% しかありません。私の質問は、Windows 7 またはライブ Linux のいずれかで 100% の CPU 使用率でゲーム マシン上でプログラムを実行するにはどうすればよいでしょうか? もう 1 つの素晴らしいことですが、必須ではありません。最終製品が 1 つの .exe であり、Windows マシンで簡単に配布して実行できる場合です。
どうもありがとう!
PS もちろん、このプログラムは Crays 8 専用プロセッサでは実際には動作しませんでした。それはまったく別の問題です... 90 年代の Cray スーパー コンピューターで動作するようにコードを最適化する方法について何かご存知でしたら、ぜひお知らせください。