29

クロスプラットフォームプロジェクトのタスクベースの並列処理で「遊び」を始めることを計画しています。インテルスレッディングビルディングブロックを使用したかったのです。私はWindowsとVisualStudioから始めています。

今のところプロトタイプを作成したいので、Windowsでのみ「再生」することを考えており、互換性のあるすべてのプラットフォームでライブラリを使用するのに十分な知識があります。

VS2010以降、Microsoftは、Intel TBBと(ほぼ)同じインターフェイスを持つ同様のライブラリであるParallelProcessingLibraryを提供していることを学びました。

TBBのチームブログを含むいくつかの情報源は、TBBを一緒に構築し、同じライブラリであると示唆しています。

ただし、2つのライブラリの間に小さな違いがあることがしばしば示唆されるため、実際には明示的ではありません。

それで、もしあれば、それらの違いは何ですか?最後の安定したITBBから直接開始する必要がありますか、それともプロトタイプでMicrosoft PPLを試して、クロスプラットフォームの「実際の」プロジェクトでITBBを使用するのはリスクが低いのでしょうか。

4

1 に答える 1

30

TBBは(VS2010 のように) PPLのスーパーセットであるため、すべての PPL API に加えて、PPL にはない独自の API を提供します。

namespace ConcurrencyVS2010 には、コンカレンシー ランタイム (ConcRT、その上に PPL が構築されている)、非同期エージェントなどの API も含まれていることに注意してくださいcritical_section。非同期エージェントの代替として、最新バージョンの TBB には新しいフロー グラフ APIが搭載されています。

理論的には、PPL から TBB に切り替えるには、ppl.h を取得する場所からパスを置き換え (TBB を使用すると、ヘッダーが入ってきます<tbbdir>/include/tbb/compat)、もちろん TBB DLL にリンクする必要があります。ただし、この場合は PPL API に限定されます。PPL に存在しない「余分な」TBB API ( parallel_pipelineparallel_reduceconcurrent_priority_queueおよびその他など) を使用するには、最初から TBB を使用する必要があります。

于 2011-09-23T10:21:57.220 に答える