Thư viện lập trình song song? (+ một số tính năng)


8

Lưu ý : đây là một bài đăng lại vì câu hỏi đã được coi là không phù hợp với diễn đàn Stack Overflow và nên được đăng ở đây. Chủ đề ban đầu là ở đó .

Tôi muốn nói về đa luồng, song song và các thư viện có sẵn ngày hôm nay để đạt được công việc đó. Tôi đặc biệt tự hỏi liệu một thư viện dễ sử dụng để đạt được khái niệm này (được đưa ra dưới đây) đã tồn tại chưa, hoặc liệu nó có phải được viết ra không, và nó khó đến mức nào.

Mục đích của thư viện tôi đang tìm kiếm:

  • hầu hết các nhà phát triển có thể truy cập, không chỉ với các kỹ sư hoặc người có bằng tốt nghiệp (điều này có nghĩa là các nhà phát triển MUỐN sử dụng nó, không sợ nó)
  • có sẵn cho các nhà phát triển C ++
  • di động (bắt đầu với Windows, Mac OS X và Linux, sau đó mở rộng sang thiết bị di động)
  • nhẹ
  • dễ sử dụng (liên quan đến khả năng tiếp cận)

Các tính năng quan trọng nhất mà tôi đang tìm kiếm:

  • song song nhiệm vụ
  • hủy bỏ nhiệm vụ (một cách mềm mại và đột ngột)
  • nhiệm vụ phụ thuộc

Các thư viện liên quan hiện có :

  • Các khối xây dựng luồng : thực sự phức tạp để sử dụng và giấy phép khá hạn chế (GPL / thương mại), đó là thư viện duy nhất tôi tìm thấy và bao gồm tất cả các tính năng tôi đang tìm kiếm
  • Grand Central Dispatch : hiện không di động, không quá phức tạp, không hủy nhiệm vụ (một khi đã bắt đầu), không phụ thuộc nhiệm vụ, không hỗ trợ phụ thuộc tự động (chỉ thủ công)
  • PFunc : Chỉ Unix, vẫn hơi phức tạp, không phụ thuộc tác vụ, không hủy tác vụ
  • Thư viện song song của Microsoft : Chỉ dành cho nền tảng MS và .NET, không hủy bỏ cứng, phụ thuộc tác vụ bị hạn chế và thủ công (một tác vụ không thể đánh thức nhiều hơn một tác vụ khác)
  • OpenCL : hiện không có sẵn trên tất cả các nền tảng, không nhiều hơn một thư viện tác vụ song song GPU (không phải mức cao như tôi mong muốn)
  • OpenMP : được hỗ trợ rộng rãi ngoại trừ các phiên bản miễn phí của Visual Studio, không hủy tác vụ cũng như phụ thuộc tác vụ tự động

Vậy suy nghĩ của bạn về tất cả những điều này là gì? Tại sao bạn nghĩ rằng có rất ít thư viện tương ứng với những nhu cầu này? Hay tôi đã bỏ lỡ một thư viện tuyệt vời? Và bạn có nghĩ rằng nó có nghĩa là quá nhiều công việc để đạt được một? Hay không đủ thú vị? Lưu ý rằng những thiếu sót tôi đã viết là những thứ tôi tìm thấy với một số tìm kiếm, tôi không phải là chuyên gia trong bất kỳ thư viện nào trong số này.

Mục đích cuối cùng của thư viện này, ngay cả khi đó chỉ là một giấc mơ, sẽ là lập trình theo cách song song dễ dàng như bạn thường làm với lập trình tuần tự.

Ceylo


Đây không phải là một diễn đàn.
DeadMG

mặc dù không phù hợp với câu hỏi của bạn - bạn đã xem Erlang
treecoder

@DeadMG - chỉ tò mò, sự khác biệt giữa cái này và một diễn đàn là gì?
Zeke Hansell

Sự khác biệt là đây chỉ là Q & A. Diễn đàn là để thảo luận. Nơi này không phải để thảo luận.
DeadMG

@DeadMG - Tôi đoán rằng câu trả lời cho câu hỏi của tôi. Và tôi đoán bằng cách nói như vậy tôi chỉ cho bạn biết rằng bạn đã trả lời câu hỏi của tôi. Tôi sẽ không muốn bị buộc tội vì có một cuộc thảo luận trên trang web Hỏi & Đáp. ;-)
Zeke Hansell

Câu trả lời:


6

TBB là khá nhiều tất cả có đến gần. boost::threadlà mức độ quá thấp. Nhân tiện, bạn đang tìm sai vị trí tại TPL, Microsoft gửi một thư viện riêng gọi là PPL cho mã gốc. Nó, tất nhiên, chỉ hỗ trợ Windows.

Tuy nhiên, nếu bạn thấy TBB phức tạp khi sử dụng, tôi sẽ đặt câu hỏi liệu các nhà phát triển mà bạn nghĩ có thực sự có khả năng tạo các ứng dụng song song hay không. TBB có một trong những giao diện thân thiện nhất với những điều đơn giản như parallel_for_each. Nếu bạn không thể đối phó với một vài lambdas, tôi thấy thật khó để thấy bạn sẽ đối phó với sự tương tranh như thế nào.


Ok tôi đã xem xét kỹ hơn về TBB và thực sự nó không có vẻ khó sử dụng. Tôi đặc biệt bối rối về việc hủy bỏ nhiệm vụ và sự phụ thuộc, nhưng điều đầu tiên có thể đạt được nhưng hủy bỏ nhóm nhiệm vụ và nhóm thứ hai bằng cách xây dựng một biểu đồ phụ thuộc. Cảm ơn. Giấy phép của TBB vẫn còn là một vấn đề nhưng tôi cho rằng khi một người cần chất lượng song song đó, mua giấy phép thương mại là ổn. Các chỉ các nhà phát triển để lại là những phát triển mã nguồn mở và phần mềm thương mại có thể sử dụng.
Ceylo

Phải thừa nhận, giấy phép có thể là một nỗi đau. Khi còn là sinh viên, tôi nhận được Visual Studio miễn phí, vì vậy tôi không bao giờ phải mua sắm xung quanh.
DeadMG

Ý anh là gì? Bạn có sử dụng TPL hoặc TBB được vận chuyển cùng với phiên bản Visual Studio của bạn không?
Ceylo

@Ceylo: Như tôi đã nói trong câu trả lời của mình, Microsoft gửi một thư viện gọi là PPL cho mã gốc. Nó rất giống với TBB, nhưng không giống hệt nhau, rất đẹp, nhưng không đáp ứng yêu cầu về tính di động của bạn.
DeadMG
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.