Tôi có một đoạn mã mà xử lý file,Phân phối Haskell trên một cụm
processFiles :: [FilePath] -> (FilePath -> IO()) -> IO()
Chức năng này sinh ra một quá trình async rằng thực hiện một hành động IO. Hành động IO này phải được gửi đến một cụm thông qua một hệ thống lập kế hoạch công việc (ví dụ: Slurm).
Vì tôi phải sử dụng hệ thống lập kế hoạch công việc nên không thể sử dụng cloudHaskell để phân phối đóng. Thay vào đó, chương trình viết Main.hs mới chứa các tính toán mong muốn, được sao chép vào nút cụm cùng với tất cả các mô đun phụ thuộc vào và sau đó nó được thực thi từ xa với "runhaskell Main.hs [opts]". Sau đó, quá trình không đồng bộ nên yêu cầu định kỳ đến hệ thống lập kế hoạch công việc (sử dụng luồngDelay) nếu công việc được thực hiện.
Có cách nào để tránh tạo một Chính mới không? Tôi có thể tuần tự hóa các hành động IO và thực hiện nó bằng cách nào đó trong nút?
Andrew Cowie và Ozgun Ataman đề nghị tôi biên dịch chương trình và gửi nó đến các nút, vì nhị phân biên dịch là khép kín và dễ dàng để rsync. Một ví dụ của việc này là Hadron MapReduce dựa trên Hadron [1] dựa trên các chương trình để cụm các nút tại nơi làm việc, được phát triển bởi Ozgun Ataman. [1] https://github.com/soostone/hadron – felipez