2012-09-12 20 views
5

Tôi mới về tính toán song song trong MATLAB. Tôi có một chức năng mà tạo ra một phân loại (SVM) và tôi muốn kiểm tra nó với một số tập dữ liệu. Tôi đã có một máy trạm 2 lõi nên tôi muốn chạy thử nghiệm song song. Ai đó có thể giải thích cho tôi sự khác biệt giữa: SPMD so với Parfor

dataset_array={dataset1, dataset2} 
matlabpool open 2 
spmd 
     my_function(dataset(labindex)); 
end 

dataset_array={dataset1, dataset2} 
matlabpool open 2 
parfor i:1=2 
     my_function(dataset(i)); 
end 

Trả lời

10

spmd là một khu vực song song, trong khi parfor là một song song cho vòng lặp. Sự khác biệt là trong vùng spmd bạn có một sự linh hoạt lớn hơn nhiều khi nói đến các tác vụ bạn có thể thực hiện song song. Bạn có thể viết vòng lặp for, bạn có thể hoạt động trên các mảng và vectơ phân tán. Bạn có thể lập trình toàn bộ luồng công việc, nói chung bao gồm nhiều hơn các vòng lặp. Điều này đi kèm với một mức giá: bạn cần phải biết thêm về phân phối công việc và dữ liệu giữa các chủ đề của bạn. Song song các vòng lặp ví dụ đòi hỏi phải phân chia một cách rõ ràng các chỉ số vòng lặp giữa các công nhân (mà bạn đã làm trong mã của bạn bằng cách sử dụng labindex), và có thể tạo mảng phân phối.

Parfor mặt khác chỉ thực hiện điều này - một vòng lặp song song. Tự động song song, bạn có thể thêm, do đó công việc được phân chia giữa các công nhân của MATLAB.

Nếu bạn chỉ muốn chạy một vòng lặp song song và sau đó làm việc trên kết quả trên máy khách cục bộ của bạn, bạn nên sử dụng parfor. Nếu bạn muốn song song toàn bộ chương trình MATLAB, bạn sẽ phải đối phó với sự phức tạp của spmd và phân phối công việc.

+0

Cảm ơn lời giải thích. Nếu tôi không sai, các ví dụ tôi đã viết sẽ cho ra kết quả tương tự theo những cách khác nhau, đúng không? –

+1

@ Lazza87 Có. Trong trường hợp này không có sự khác biệt, bạn có thể sử dụng cả hai phương pháp. – angainor

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