2012-03-06 41 views
5

Tôi có một mô hình xử lý dữ liệu được tạo thành từ nhiều chuỗi thuật toán xử lý khối dữ liệu. Mỗi chuỗi là một đồ thị của các thuật toán, mà tôi đã thực hiện với lớp biểu đồ TBB.Intel TBB: pool of graphs

Bây giờ tôi muốn có thứ gì đó giống như "nhóm đồ thị", nghĩa là một nhóm công việc, mỗi tác vụ chứa biểu đồ tbb ::. Bằng cách này, tôi có thể chạy các chuỗi các thuật toán song song với các khối dữ liệu.

Bạn có thể chỉ ra bất kỳ ví dụ TBB nào về một thứ gì đó tương tự như "nhóm đồ thị" hay bạn có thể đề xuất và gợi ý để triển khai không?

Trả lời

1

Đề xuất của tôi sẽ là bạn sử dụng tbb :: concurrent_queue hoặc tbb :: concurrent_vector, lợi thế của nó là bạn có thể thay đổi kích thước trong nhiều lần truy cập. Gợi ý cá nhân của tôi về điều này, tạo ra một đối tượng khóa/đồ thị để bạn không bao giờ sửa đổi một đối tượng song song.

http://threadingbuildingblocks.org/wiki/index.php?title=Concurrent_Vector

Một ví dụ cho hàng đợi có thể được tìm thấy ở đây: https://sites.google.com/site/samplecodesproject/tbb/containers-3/concurrent_queue

0

Tôi không chắc tôi hoàn toàn hiểu chính xác những gì bạn cố gắng để đạt được, nhưng chúng ta hãy thử :). Có vẻ như điều duy nhất bạn cần là mã nguồn thích hợp (https://www.threadingbuildingblocks.org/docs/help/reference/flow_graph/source_node_cls.htm) để ném các khối dữ liệu mới vào biểu đồ luồng để xử lý. Ví dụ về biểu đồ luồng có thể được coi là thuật toán (ví dụ: tbb :: parallel_pipeline) được viết theo một cách khác. Nó không nên được coi là cấu trúc dữ liệu như danh sách hoặc vectơ. Vì vậy, rất có thể bạn không cần nhóm đồ thị :)