Đây là một câu hỏi khá thú vị vì vậy hãy để tôi đặt bối cảnh. Tôi làm việc tại Bảo tàng Máy tính Quốc gia và chúng tôi vừa tìm được một siêu máy tính Cray Y-MP EL từ năm 1992 đang chạy và chúng tôi thực sự muốn xem nó có thể chạy nhanh đến mức nào!
Chúng tôi quyết định cách tốt nhất để làm điều này là viết một chương trình C đơn giản sẽ tính toán các số nguyên tố và cho biết mất bao lâu để làm như vậy, sau đó chạy chương trình trên một máy tính để bàn hiện đại nhanh và so sánh kết quả.
Chúng tôi đã nhanh chóng đưa ra mã này để đếm các số nguyên tố:
#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);
}
Tính năng nào trên máy tính xách tay lõi kép chạy Ubuntu (Cray chạy UNICOS) của chúng tôi, hoạt động hoàn hảo, sử dụng 100% CPU và mất khoảng 10 phút hoặc lâu hơn. Khi về nhà, tôi quyết định dùng thử trên PC chơi game hiện đại lõi sáu của mình và đây là nơi chúng tôi nhận được các vấn đề đầu tiên.
Lần đầu tiên tôi điều chỉnh mã để chạy trên Windows vì đó là những gì PC chơi game đang sử dụng, nhưng rất buồn khi thấy rằng quá trình này chỉ nhận được khoảng 15% sức mạnh của CPU. Tôi nhận ra rằng Windows phải là Windows, vì vậy tôi khởi động vào Live CD của Ubuntu với suy nghĩ rằng Ubuntu sẽ cho phép quá trình chạy với toàn bộ tiềm năng của nó như nó đã làm trước đó trên máy tính xách tay của tôi.
Tuy nhiên tôi chỉ nhận được 5% sử dụng! Vì vậy, câu hỏi của tôi là, làm thế nào tôi có thể điều chỉnh chương trình để chạy trên máy chơi game của mình trong Windows 7 hoặc Linux trực tiếp ở mức sử dụng 100% CPU? Một điều khác sẽ tuyệt vời nhưng không cần thiết là nếu sản phẩm cuối cùng có thể là một .exe có thể dễ dàng phân phối và chạy trên các máy Windows.
Cảm ơn rất nhiều!
PS Tất nhiên chương trình này không thực sự hoạt động với bộ vi xử lý chuyên dụng Crays 8, và đó là một vấn đề hoàn toàn khác ... Nếu bạn biết bất cứ điều gì về tối ưu hóa mã để hoạt động trên các siêu máy tính Cray của 90, hãy cho chúng tôi biết!