Tôi đã nhận thấy rằng một số tính toán đa luồng của tôi chạy nhanh hơn nếu tôi vô hiệu hóa siêu phân luồng trong BIOS.Vô hiệu hóa siêu phân luồng so với việc thay đổi ProcessorAffinity?
Tôi cũng đã học được rằng tôi có thể lập trình vô hiệu hóa (logic) CPU: s bằng cách sửa đổi ái lực xử lý cho quá trình hiện tại, ví dụ như thế này trong C#:
// using System.Diagnostics;
var current = Process.GetCurrentProcess();
var affinity = current.ProcessorAffinity.ToInt32();
current.ProcessorAffinity = new IntPtr(affinity & 0x5555);
Ít nhất từ một điểm hiệu suất xem, sẽ vô hiệu hóa mỗi giây (logic) CPU bằng cách thay đổi ái lực bộ vi xử lý có tác dụng tương tự như vô hiệu hóa siêu phân luồng hoàn toàn?
Hmm, vấn đề quan trọng là: bạn sẽ gửi máy tính dev của bạn cùng với phần mềm của bạn? –
Một xem xét khác có thể là các quy trình của hệ điều hành. Nếu bạn vô hiệu hóa siêu phân luồng trong BIOS và phần mềm của bạn cố gắng sử dụng tất cả các lõi, khi quá trình hệ điều hành (hoặc nền khác) cố gắng chạy, nó sẽ cạnh tranh với phần mềm của bạn để truy cập bộ vi xử lý. Đặt cược tốt nhất có thể là chỉ cần thử và điểm chuẩn cả hai tùy chọn và xem những gì khác biệt bạn tìm thấy trong thời gian quy trình; sự khác biệt có thể không quan trọng để cho phép dễ dàng không vô hiệu hóa siêu phân luồng. LƯU Ý: Nếu bạn không có điều khiển phần cứng, hãy kiểm tra bộ vi xử lý AMD có lõi chuyên dụng mà không cần siêu phân luồng. –
Cảm ơn, Chris, một câu trả lời rất hữu ích. Tôi sẽ làm một số điểm chuẩn hơn để xem liệu có bất kỳ tùy chọn nào sẽ tạo sự khác biệt thực sự trong môi trường người dùng thông thường hay không. –