2012-12-29 22 views
7

Đối với lập trình đa luồng, với việc cân nhắc kết hợp với ứng dụng HPC (MPI), cái nào tốt hơn, chúng ta có thể nói, về chức năng, TBB của Intel (khối xây dựng luồng) có thể so sánh được với pthread hay không? Tôi chỉ nhận được kinh nghiệm trong mp mở, nhưng tôi nghe cả TBB và Pthread cung cấp kiểm soát thread tốt hơn so với mp mở, nhưng TBB hoặc TBB + OpenMP cung cấp chức năng tương tự so với pthread?pthread vs TBB intel và mối quan hệ của chúng với OpenMP?

Trả lời

4

pthread là một trình bao bọc mỏng bên trên cơ sở hạ tầng của hệ điều hành. Nó cho phép bạn tạo một thread với một hàm main thread đã cho, và một số nguyên gốc đồng bộ hóa (mutexes semaphores etc). Dưới Linux pthread được thực hiện trên đầu trang của cuộc gọi hệ thống clone(2). Sự tương đồng trong Windows được gọi là CreateThread. Tất cả các công cụ luồng khác được xây dựng trên nền tảng này.

Intel TBB cao hơn, cung cấp parallel_forparallel_reduce và các cấu trúc mức cao tương tự như OpenMP nhưng được triển khai dưới dạng thư viện chứ không phải là tiện ích mở rộng ngôn ngữ.

OpenMPI thậm chí còn cao cấp hơn với cơ sở hạ tầng phân phối đa máy, nhưng nó rất lỗi thời và hơi clunky.

Lời khuyên của tôi sẽ là tìm hiểu thư viện pthread trước cho đến khi bạn hoàn toàn hiểu nó và sau đó xem thư viện cấp cao hơn sau đó.

+0

OpenMPI là triển khai cụ thể của Giao diện truyền thông báo. –

2

TBB cho phép bạn viết mã di động ở trên cùng của chức năng luồng gốc, do đó, nó làm cho mã dễ dàng hơn trên các kiến ​​trúc OS khác nhau. Tôi không nghĩ rằng nó "hiệu quả hơn" so với pthread.

Tôi chưa từng sử dụng MP riêng lẻ, nhưng trước đây tôi đã làm việc với các nhà phát triển sử dụng MP mở (như một chuyên gia kỹ thuật về bộ xử lý họ đang sử dụng) và dường như hoạt động tốt nhưng những người khác khó sử dụng hơn trong mp mở hơn là viết mã của riêng bạn. Tất cả phụ thuộc vào chính xác những gì bạn đang làm. Một trong những lợi ích với openmp tất nhiên là bạn luôn có thể biên dịch lại mã mà không có tùy chọn openmp, và mã chỉ hoạt động trực tiếp như bạn mong đợi nó [nhưng không lan ra, tất nhiên].

Với phương pháp tiếp cận luồng chương trình, bạn có thể kiểm soát nhiều hơn chính xác những gì xảy ra trên chuỗi nào, vâng. Nhưng nó cũng có nghĩa là nhiều công việc hơn ...