2011-09-07 8 views
10

Tôi có một chức năng compute() đã song song nhân ma trận bên trong của nó sử dụng OpenMPOpenMP - Chạy mã song song bên trong mã song song

#pragma omp parallel for 

Chức năng này được gọi là nhiều lần trong một vòng lặp - mà tôi muốn chạy trong song song, tương đông. Sẽ có bất kỳ vấn đề nào khi chạy mã song song bên trong mã song song khác không?

Đây là C++ được biên soạn trên Ubuntu.

Trả lời

9

Nó sẽ hoạt động tốt, nhưng bạn sẽ cần phải kích hoạt tính năng OpenMP làm tổ để nó hoạt động.

Gọi

omp_set_nested(1); 

vào lúc bắt đầu của chương trình và nó sẽ cho phép bạn có lồng vùng song song.

Tuy nhiên: Hãy lưu ý rằng bạn có thể kết thúc chạy nhiều chuỗi hơn những gì bạn muốn. Vì vậy, bạn sẽ muốn giới hạn số lượng các chuỗi của cả hai vùng trên cùng và bên trong song song.

+4

Điều này thật tuyệt vời. Tôi quên từ lồng nhau, và không thể tìm thấy bất cứ điều gì hữu ích. – Mikhail