Đồ họa là một trong những vấn đề "lúng túng song song". Haskell được cho là thực sự, thực sự tốt cho việc xử lý song song. Vì vậy, câu hỏi của tôi là:Xử lý đồ họa song song trong Haskell
Cách tốt nhất để ném nhiều lõi CPU nhất có thể vào vấn đề hiển thị là gì?
Có thể thay thế GPU để thực hiện tác vụ không?
By "render vấn đề", ý tôi là các vấn đề như:
màu của mỗi pixel là một chức năng thuần túy của tọa độ của nó.
Chúng tôi bắt đầu với hình ảnh "đầu vào" hiện tại và mỗi màu của "đầu ra" là một chức năng thuần túy của pixel đầu vào tương ứng hoặc có thể là một vùng nhỏ pixel như vậy.
Về # 1: Đây có vẻ như nó là tầm thường, nhưng thực sự nó không phải là. Có một số lựa chọn có thể có của cấu trúc dữ liệu để lưu trữ các điểm ảnh được tính toán (điều này ảnh hưởng đến cách bạn có thể truy cập vào nó, và bạn có thể dễ dàng kết xuất kết quả vào đĩa hoặc màn hình như thế nào). Có một số cách để thực hiện trên nhiều lõi. Và cứ thế.
Dường như với tôi rằng Dữ liệu song song Haskell sẽ là một lựa chọn lý tưởng cho loại điều này. Tuy nhiên, lần cuối tôi kiểm tra, DPH vẫn chưa hoạt động. Vì vậy, đó là điều đó. Thậm chí giả sử nó đã hoạt động, bạn có thể tạo một mảng song song để giữ các pixel, và sau đó bạn phải sao chép các pixel để hiển thị chúng trên màn hình hoặc ghi chúng vào đĩa.
Tôi sẽ thử phát ra mọi pixel đơn lẻ, nhưng điều đó có thể quá chi tiết. Tôi có thể làm cho các điểm ảnh một danh sách và sử dụng một trong các chiến lược danh sách song song. Hoặc tôi có thể biến nó thành mảng không thay đổi (unboxed?) Và viết một số mã thủ công để bắt đầu tia lửa. Hoặc tôi có thể đi với chủ đề rõ ràng và mảng có thể thay đổi. Hoặc tôi có thể có một loạt các luồng công nhân mà họ truyền các giá trị pixel thông qua một kênh tới một chuỗi chủ để đưa kết quả vào đúng vị trí. Hoặc ...
Tóm lại, có một số khả năng đáng ngạc nhiên ở đây và tôi không chắc chắn điều nào là tốt nhất.
Về # 2: Rõ ràng vấn đề kiểu này là toàn bộ lý do rằng GPU tồn tại ở nơi đầu tiên. Rõ ràng GPU là lý tưởng để tấn công các loại vấn đề này. Câu hỏi của tôi là nhiều hơn "thật khó để làm điều này từ Haskell?"
Tôi không nghĩ rằng nó có thể nhắm mục tiêu GPU, nhưng mục tiêu của Data Parallel Haskell là để có thể làm điều này. –