2009-10-31 26 views
6

Gần đây tôi có máy tính gia đình của mình được nâng cấp lên CPU quad-core và hệ điều hành 64 bit. Tôi có một số kinh nghiệm cũ với C/C++ và tôi thực sự "ngứa" để thử tập thể dục một số khả năng CPU 64-bit. Chương trình loại "Hello World" tốt thể hiện khả năng đa lõi 64 bit bằng cách thực hiện một số điều đơn giản không hoạt động tốt ở tất cả trong mã lõi đơn 32 bit là gì?Chương trình "Hello World" đa lõi 64 bit tốt là gì?

Tôi chỉ đang cố gắng để có được "cảm giác" về cách các CPU mới này có thể tác động đến hiệu suất của mã C/C++ trong các trường hợp cực đoan.

+3

khá nhiều vẫn 'cout <<" Hello World "<< endl;' – Jherico

Trả lời

2

OpenMP sẽ là cách dễ dàng để phát xung quanh với lập trình đa lõi trong C++. Ví dụ wikipedia không thực sự làm bất cứ điều gì xử lý chuyên sâu, nhưng bạn có thể thay thế 'cout' bằng một số chức năng độc lập, dài hạn.

OpenMP

Theo như 64-bit, rất nhiều tăng hiệu suất của bạn sẽ đến từ một vài nơi.

Tăng thông lượng, vì tất cả các phần tử dữ liệu đều rộng hơn nên bộ xử lý có thể xử lý nhiều dữ liệu hơn trong bất kỳ chu kỳ đồng hồ nào. Hãy xem xét một số tiêu chuẩn của Microsoft cho Exchange Server, bây giờ họ đã chuyển sang hỗ trợ 64-bit chỉ vì tăng thông lượng là đáng kinh ngạc.

Sổ đăng ký khác, vì kiến ​​trúc 64 bit có số lượng lớn đăng ký hầu hết các tham số chức năng và giá trị trả lại có thể được chuyển qua sổ đăng ký.

Trong ABI x86 với một số calling conventions một hoặc hai tham số có thể được chuyển qua thanh ghi và phần còn lại phải được đẩy lên ngăn xếp. Với một quy ước gọi chung như cdecl không phải là một tham số đơn hoặc giá trị trả về được đặt trong thanh ghi. Kể từ khi ngăn xếp được đặt trong bộ nhớ chính này có thể là một hit hiệu suất lớn.

1

Bạn có thể muốn thực hiện điều gì đó để thực hiện các hoạt động tốn kém tính toán với số lượng lớn hoặc bộ nhớ lớn trong một thời trang độc lập, chẳng hạn như chiếu tia hoặc gấp protein. Điều quan trọng cần lưu ý là bộ vi xử lý 64 bit hoặc đa lõi không thể thực sự làm bất cứ điều gì mà bộ xử lý lõi đơn KHÔNG THỂ làm, về cơ bản chúng chỉ làm việc đó nhanh hơn và lớn hơn.

1

Xem xét có bao nhiêu mô hình song song khác nhau và cách chúng được điều chỉnh theo từng nhiệm vụ khác nhau, không có câu trả lời thỏa đáng cho câu hỏi của bạn. Tất cả phụ thuộc vào những gì bạn thực hiện thực sự muốn làm cuối cùng. Bạn nên chọn mô hình phù hợp với những gì bạn muốn làm (nếu nó không mâu thuẫn với ràng buộc trước đó, hãy thử message-passing, nó dễ dàng làm mới so với những người khác).

Tôi sẽ phải nói rằng câu trả lời lưỡi-trong-má của Jherico trong các nhận xét là đúng. Đối với một nhiệm vụ đơn giản như "hello world", mô hình tốt nhất không có tính song song nào cả.

Các vấn đề liên quan