並列プログラミングライブラリ?(+いくつかの機能)


8

:質問はスタックオーバーフローフォーラムには適さないと見なされており、ここに投稿する必要があったため、これは再投稿です。元のトピックはあります。

その作業を実現するために、マルチスレッド、並列処理、および現在利用可能なライブラリについてお話ししたいと思います。特に、この概念を実現するための使いやすいライブラリ(以下を参照)が既に存在するのか、それとも作成する必要があるのか​​、そしてそれがどれほど難しいのかについて疑問に思っています。

私が探しているライブラリの目的

  • エンジニアや高卒者だけでなく、ほとんどの開発者がアクセスできます(これは、開発者がそれを恐れずに使用したいことを意味します)。
  • C ++開発者が利用可能
  • ポータブル(Windows、Mac OS X、Linuxから始めて、モバイルデバイスに拡張)
  • 軽量
  • 使いやすい(アクセシビリティに関連)

私が探している最も重要な機能

  • タスクの並列処理
  • タスクのキャンセル(ソフトで突然の方法)
  • タスクの依存関係

既存の関連ライブラリ

  • スレッドビルディングブロック:使用が非常に複雑で、制限のあるライセンス(GPL /商用)、これは私が見つけた唯一のライブラリで、探しているすべての機能が含まれています
  • Grand Central Dispatch:現在移植性がなく、複雑すぎず、タスクのキャンセルなし(開始後)、タスクの依存関係なし、自動依存関係サポートなし(手動のみ)
  • PFunc:Unixのみ、まだ少し複雑、タスクの依存関係なし、タスクのキャンセルなし
  • Microsoft Task Parallel Library:MSプラットフォームと.NETのみ、ハードキャンセルなし、制限された手動のタスク依存関係(1つのタスクが他の複数のタスクを起動することはできません)
  • OpenCL:現在、すべてのプラットフォームで使用できるわけではありません。GPU並列タスクライブラリほどではありません(希望するほど高レベルではありません)。
  • OpenMP:Visual Studioの無料バージョンを除いて広くサポートされており、タスクのキャンセルや自動タスクの依存関係はありません

これらすべてについてどう思いますか?これらのニーズに対応するライブラリが少ないのはなぜだと思いますか?それとも私はいくつかの素晴らしい図書館を見逃しましたか?そして、それはそれを達成するにはあまりにも多くの仕事を意味すると思いますか?それとも十分に面白くないですか?私が書いた不足は、いくつかの検索で判明したものであり、私はこれらのライブラリの専門家ではありません。

このライブラリの最終的な目的は、たとえそれが夢であったとしても、シーケンシャルプログラミングで通常行うのと同じくらい簡単に並列化された方法でプログラミングすることです。

セイロ


これはフォーラムではありません。
DeadMG

あなたに質問を関連していないが-あなたが見てきましたアーラン
treecoder

@DeadMG-好奇心旺盛ですが、これとフォーラムの違いは何ですか?
Zeke Hansell、2011

違いは、これはQ&Aのみであることです。フォーラムは議論のためのものです。この場所は議論のためではありません。
DeadMG '08 / 08/15

@DeadMG-私の質問に対する答えだと思います。そして私はあなたが私の質問に答えたということだけをあなたに知らせるように言っていると思います。Q&Aサイトでの議論で非難されたくありません。;-)
Zeke Hansell、2011

回答:


6

TBBはほぼすべてが終わりです。boost::threadレベルが低すぎます。ちなみに、Microsoftはネイティブコード用のPPLと呼ばれる別のライブラリを出荷しています。もちろん、Windowsのみをサポートしています。

ただし、TBBの使用が複雑であると思われる場合は、検討している開発者が実際に並列アプリケーションを作成できるかどうかを質問します。TBBには、のような単純なものを扱う、最も使いやすいインターフェイスの1つがありますparallel_for_each。いくつかのラムダに対応できない場合、同時実行性にどのように対応するかを理解するのは難しいと思います。


さて、TBBを詳しく見てきましたが、実際に使用するのはそれほど難しいことではないようです。特にタスクのキャンセルと依存関係に戸惑いましたが、最初のものは達成できますが、依存関係グラフを作成することでタスクグループと2番目のものをキャンセルできます。ありがとう。TBBのライセンスはまだ問題ですが、その並列化の品質が必要な場合は、商用ライセンスを購入しても問題ないと思います。唯一の左の開発者は、オープンソースと商用利用可能なソフトウェアを開発したものです。
Ceylo

認めなければならない、ライセンスは苦痛である可能性があります。学生時代はVisual Studioを無料で提供しているので、買い物をする必要はありませんでした。
DeadMG

どういう意味ですか?TPLを使用していますか、またはTBBはVisual Studioエディションに同梱されていますか?
Ceylo

@Ceylo:回答で述べたように、Microsoftはネイティブコード用のPPLと呼ばれるライブラリを出荷しています。TBBと非常によく似ていますが、まったく同じではなく、非常に優れていますが、移植性の要件を満たしていません。
DeadMG
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.