2010-08-11 32 views
6

Trong một bài nghiên cứu năm 2005, nó cho biếtĐồng thời Haskell vẫn bị hạn chế đối với một chuỗi hệ điều hành duy nhất?

Haskell đồng thời hiện chỉ được thực hiện cho bộ xử lý đơn. Thời gian chạy lịch trình chủ đề Haskell nhẹ trong một chuỗi hệ điều hành duy nhất. Chủ đề Haskell chỉ bị treo ở “điểm an toàn” tốt; chúng không thể được làm trống trước tại các thời điểm tùy ý.

Điều này đã thay đổi hoặc là Haskell đồng thời vẫn bị giới hạn trong một chuỗi hệ điều hành duy nhất?

+0

bản sao có thể có của [Trạng thái lập trình đa lõi trong Haskell là gì?] (Http://stackoverflow.com/questions/3063652/whats-the-status-of-multicore-programming-in-haskell) –

Trả lời

6

GHC can use multi-cores for Concurrent and Parallel Haskell since 2004. Đồng thời, Parallel, Nested Data Parallel Haskell đều sử dụng cùng thời gian chạy đa luồng.

+0

Liên kết đó là một chút không rõ ràng về vấn đề STM. Bạn có bất cứ điều gì cho thấy chức năng STM của Concurrent Haskell có tương thích với hỗ trợ đa lõi của nó không? –

+0

Tôi không nghĩ có bất cứ điều gì khiến nó không tương thích. Tôi chắc chắn đã sử dụng STM trên nhiều lõi. –

+0

Sự tăng tốc ban đầu của STM không tương thích với đa lõi. Nhưng kể từ khi bạn đăng bình luận của bạn tôi đã đọc ở nơi khác mà nó đã được thay đổi để sử dụng một trong đó sẽ làm việc. –

18

[chỉnh sửa: câu hỏi chỉ đề cập đến Haskell đồng thời, nhưng giấy được tham chiếu là, tôi tin rằng "Giao dịch bộ nhớ tổng hợp", giấy trong đó Haskell STM được mô tả lần đầu tiên. Vui lòng sửa tôi nếu tôi sai ở đây.]

STM hoạt động tốt trên nhiều lõi ngay bây giờ. Việc triển khai song song lần đầu tiên được xuất xưởng trong GHC 6.6 và sử dụng chiến lược khóa hai pha chi tiết; có nghĩa là, để cam kết một giao dịch, việc thực hiện đầu tiên cố gắng khóa mỗi biến có liên quan trong giao dịch, sau đó cam kết các thay đổi và cuối cùng mở khóa tất cả các biến. Nhận được một khóa không chặn: nếu khóa đã được tổ chức, sau đó các giao dịch hủy bỏ và thử lại (điều này tránh được bế tắc khóa-trật tự đảo ngược thông thường sẽ áp dụng nếu khóa mua lại đã bị chặn). Triển khai STM này chắc chắn không phải là nhanh nhất - tài liệu mô tả nhiều kỹ thuật thay thế sẽ mang lại hiệu suất tốt hơn, nhưng việc thực hiện GHC tương đối đơn giản và không liên quan đến bất kỳ khóa toàn cầu nào (các giao dịch hoạt động trên các bộ biến khác nhau có thể tiến hành). song song không có nhiễu).

5

GHC Haskell chạy tốt trên multicores

chương trình GHC Haskell, từ năm 2004, chạy nhiều luồng Haskell trên nhiều chủ đề hệ điều hành, được phân phối trên nhiều lõi.

Ngoài ra, bạn có thể nhận được latest status of multicore Haskell từ câu hỏi SO này.

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