SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

インテルTBB 3.0によるパイプライン処理

lambda-friendlyなパイプライン

  • このエントリーをはてなブックマークに追加

 Visual Studio 2010がリリースされました(パッケージ版は2010年6月18日発売予定)。これに伴い改版されたインテルTBB(Threading Building Blocks)3.0で追加された新機能「parallel_pipeline」を紹介します。

  • このエントリーをはてなブックマークに追加

 Visual Studio 2010がリリースされました(パッケージ版は2010年6月18日発売予定)。評価版と、無償のExpressもマイクロソフト社のWebサイトからダウンロードできます。これに伴い改版されたインテルTBB(Threading Building Blocks)3.0で追加された新機能「parallel_pipeline」を紹介します。

インテルTBB 3.0

 オープンソースのマルチスレッドライブラリ、インテルTBB(Threading Building Blocks、以下TBB)がversion 3.0となりました。Visual C++ 2005(vc8)、2008(vc9)に加え、2010(vc10)にも対応しています。TBBのインストール・ディレクトリを環境変数TBB30_INSTALL_DIRにセットしておけば、インクルード/ライブラリディレクトリの設定はVS2010 IDEのプロジェクト・プロパティでそれぞれ次のようになります。

  • インクルード: $(TBB30_INSTALL_DIR)\include
  • ライブラリ: $(TBB30_INSTALL_DIR)\lib\ia32\vc10

 さらにTBBのDLLが$(TBB30_INSTALL_DIR)\bin\ia32\vc10にありますから、ここにPATHを通すか、DLLをPATHの通ったディレクトリにコピーすれば使えるようになります(64-bitターゲットの場合はライブラリ/DLLディレクトリの「ia32」を「intel64」に置き換えてください)。

 この記事ではCommercial Aligned Release tbb30_018ossを使いました。

パイプラインとは

 TBB 3.0で新たに追加された機能のうち、最も僕の気を引いてくれたのがパイプライン(pipeline)です。パイプラインそのものは以前のバージョンでもサポートしていたのですが、3.0ではlambda式と非常に相性のいいインターフェイスを提供してくれたおかげでパイプラインを簡単に記述/表現できるようになりました。

 パイプラインとは――例えばスーパーマーケットの鮮魚コーナーに並ぶ「おさしみ盛り合わせ」の製造工程を考えてみましょうか。鮮魚コーナーのバックヤードでは、おそらくはパートタイムのオバちゃんが

  • さしみを引いて
  • スチロール皿に盛り
  • ツマを添えて
  • プラスチックのタンポポ(?)をのせる

 なんて作業を繰り返していることでしょう。オバちゃんが一人なら一連の作業を順次処理することになります。が、オバちゃんが数人いれば同時並行作業が可能です。このとき各工程が互いに影響を及ぼさず独立したものであるなら、例えばオバちゃんAがさしみを引いている間にオバちゃんBが(Aが引いたさしみを)皿に盛ることができます。各工程に必要な作業空間が限られていても、数人のオバちゃんが横に並んで左隣から受け取ったものを処理して右隣に引き渡す「流れ作業」で仕事をすれば処理能力はオバちゃん一人よりずっと大きくなります。この「流れ作業」がすなわち「パイプライン」です。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
パイプラインの使い方(1)class pipeline/filter

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
特集記事連載記事一覧

もっと読む

この記事の著者

επιστημη(エピステーメー)

C++に首まで浸かったプログラマ。Microsoft MVP, Visual C++ (2004.01~2018.06) "だった"りわんくま同盟でたまにセッションスピーカやったり中国茶淹れてにわか茶...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5186 2010/06/09 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング