Chúng tôi có một MacPro 12 lõi để thực hiện một số tính toán của Monte Carlo. Bộ vi xử lý Intel Xeon của nó có Hyper-Threading (HT) được kích hoạt, vì vậy trên thực tế, có 24 quy trình chạy song song để làm cho chúng được sử dụng đầy đủ. Tuy nhiên, calcs của chúng tôi hiệu quả hơn để chạy trên 12x100% so với 24x50%, vì vậy chúng tôi đã cố gắng tắt Siêu phân luồng qua ngăn Processor
trong tùy chọn hệ thống để có hiệu suất cao hơn. Người ta cũng có thể biến HT tắt bởiTắt Siêu phân luồng trong Intel Xeon
hwprefs -v cpu_ht=false
Sau đó chúng tôi chạy một số xét nghiệm và đây là những gì chúng tôi đã nhận:
- 12 nhiệm vụ song song chạy đồng thời w/hoặc w/o HT đến sự thất vọng của chúng tôi.
- 24 nhiệm vụ song song lỏng 20% nếu HT tắt (không -50% như chúng ta nghĩ)
- Khi HT được bật, chuyển đổi 24-12 nhiệm vụ giảm hiệu quả bằng 20% (còn đáng ngạc nhiên)
- Khi HT tắt, chuyển đổi từ 24 đến 12 không thay đổi bất cứ điều gì.
Dường như Hyper-Threading chỉ làm giảm hiệu suất cho các phép tính của chúng tôi và không có cách nào để tránh nó. Chương trình chúng tôi sử dụng cho các calcs được viết bằng Fortran và được biên dịch với gfortran
. Có cách nào để làm cho nó hiệu quả hơn với phần cứng này?
Cập nhật: tính toán Monte Carlo của chúng tôi (MCC) thường được thực hiện trong bước này để tránh mất dữ liệu và do nguyên nhân khác (không phải lúc nào có thể để tránh các bước như vậy). Trong trường hợp của chúng tôi, mỗi bước bao gồm nhiều mô phỏng với thời lượng biến đổi. Vì mỗi bước được tách ra giữa một số tác vụ song song, chúng cũng có thời lượng biến đổi. Về cơ bản, tất cả các nhiệm vụ nhanh hơn phải đợi cho đến khi thực hiện chậm nhất. Thực tế này buộc chúng ta phải thực hiện các bước lớn hơn, kết thúc với độ lệch ít hơn theo thời gian do tính trung bình, vì vậy các bộ vi xử lý không lãng phí thời gian chờ đợi. Đây là động cơ của chúng tôi để có 12 * 2,66 GHz thay vì 24 * 1,33 GHz. Nếu có thể tắt HT, thì chúng tôi sẽ đạt hiệu suất + 10% bằng cách chuyển từ 24 tác vụ w/HT thành 12 tác vụ w/o HT. Tuy nhiên, các thử nghiệm cho thấy chúng ta mất 20%. Vì vậy, kết luận của tôi là tính toán là 30% là không hiệu quả.
Đối với các thử nghiệm, tôi đã sử dụng các bước khá lớn, tuy nhiên thường là các bước ngắn hơn, vì vậy hiệu quả trở nên cao hơn nữa.
Có một lý do nữa - một số tính toán của chúng tôi yêu cầu 3-5 GB bộ nhớ, vì vậy bạn có thể thấy mức độ kinh tế của chúng tôi để có 12 tác vụ nhanh. Chúng tôi đang làm việc để triển khai bộ nhớ chia sẻ, nhưng nó sẽ là một dự án dài hạn. Do đó, chúng tôi cần tìm hiểu cách làm cho phần cứng/phần mềm hiện có nhanh nhất có thể.
http://forums.macrumors.com/archive/index.php/t-733238.html – rwong
Thông thường, điều này có thể được tắt trong thiết lập BIOS, nhưng tôi không quen với máy Mac nên có thể không áp dụng được. –
Có điều gì đó kỳ lạ trong câu hỏi của bạn ... Bạn dường như * đạt được * từ HyperThreading, nhưng bạn sẽ vô hiệu hóa nó? Bạn nói rằng tính toán của bạn hiệu quả hơn với 12 // 24, nhưng các thử nghiệm của bạn có vẻ nói khác đi. Vậy tại sao bạn muốn tắt HT? – jv42