タグ

c++と並列に関するama9satenaのブックマーク (4)

  • 入門並列プログラミングとMapReduce - Yoshito Komatsu's Blog

    この文書はGoogleの「Introduction to Parallel Programming and MapReduce」を日語に翻訳したものです。 原文のライセンスに従い、この文書はクリエイティブ・コモンズ 表示 2.5 一般 ライセンスの下に提供されています。 なお、誤字脱字、誤訳などありましたらぜひコメント欄などでご指摘ください。 対象読者と前提条件 このチュートリアルは並列プログラミングとMapReduceプログラミングモデルの基をカバーします。 前提として、C++Javaのような言語と、データ構造とアルゴリズムについての相当なプログラミング経験を必要とします。 逐次プログラミングと並列プログラミング コンピューティングの初期には、プログラムは逐次プログラムでした。 逐次プログラムとは、一続きの命令で書かれたプログラムのことで、そこでは各命令はひとつづつ順番に実行されま

  • インテルTBBライブラリを用いた並列処理の実装 - nursの日記

    粒子法シミュレーションに格的にハマっていくうちに、計算時間が気になりだしたので、せっかくCore2Duoのマシンなんだし(Quadでないのが悔やまれた!)、マルチスレッド化でもしてみようかと、インテルのTBBライブラリの、parallel_for機能を使ってみた。粒子法では、同時刻における個々の粒子の挙動は全て互いに独立しているので、並列化にはもってこいの題材でもある。それに、TBBは今やオープンソースだ。 ここから誰でもダウンロード取得できる。 並列化というと何やら面倒そうに聞こえるが、TBBにおいては、その考え方はstlの for_eachを呼ぶのとほとんど同じで、コーディングする上でそれ以上のことを考える必要は一切ない。要はfor_eachのTBB版を呼べば、それが自動的にマルチスレッドで並列して走ってくれるのだ。 parallel_forは簡単に、stl::for_each のT

    インテルTBBライブラリを用いた並列処理の実装 - nursの日記
  • 無差別に技術をついばむ鳥インテルTBBにおける要素数が不定なループの並列化

    対象となる要素の数が不定な場合、一般的に並列化が困難です。何故ならば、単純に要素を分割して、複数のスレッドが個々に処理をするわけにはいかないからです。処理中に要素が増加した時、その要素をどのスレッドが処理をするのかなど、細かなルールを考える必要が生じます。 幸いインテルTBBには、この状況に対応できるparallel_doテンプレートが用意されています。インテルTBB2.0には、parallel_whileテンプレートがありましたが、現在は推奨されていません。parallel_doテンプレートの方を使用しましょう。 parallel_doテンプレートの使い方を示す、極力簡単なサンプルを用意しましたので、先ずはそれを見て下さい。 #include <iostream> #include "tbb/task_scheduler_init.h" #include "tbb/concurrent_

  • C++ 開発者が陥りやすい OpenMP* の 32 の罠 | iSUS

    この記事は、インテル® ソフトウェア・ネットワークに掲載されている「32 OpenMP traps for C++ developers」 (http://software.intel.com/en-us/articles/32-openmp-traps-for-c-developers/) の日語参考訳です。 はじめに マルチコアシステムが急速な広がりをみせており、並列プログラミングへの早急な対応が求められています。しかしながら、経験豊富な多くの開発者にとってもこれは新しい分野です。既存のコンパイラーとコード・アナライザーでも、並列コードの開発中に一部の問題を発見することはできますが、多くの問題は検出できません。この記事では、OpenMP* を使用する並列プログラムが正しく動作しない原因となるさまざまな問題について説明します。 概要 並列プログラミングが登場したのはかなり以前のことです

    C++ 開発者が陥りやすい OpenMP* の 32 の罠 | iSUS
  • 1